import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import javax.swing.text.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.net.*;
import java.io.*;
public class IRRj extends JFrame implements ActionListener{
public static IrrdTextArea ita = new IrrdTextArea(20, 40);
public static JTextArea log = new JTextArea(12, 30);
public static GetRequest gr;
IrrdSearchPane sPane = new IrrdSearchPane(this);
JButton backButton;
JButton forButton;
Font smallFont = new Font("Monospaced", Font.PLAIN, 11);
protected JButton stopButton;
public static OptionsWindow optWin;
public static JProgressBar jpb = new JProgressBar(0, 100);
public static Properties prop = new Properties();
public final static String newLine = "\n";
public static Hashtable iconHash = new Hashtable();
public FindWindow finder = new FindWindow();
public IRRj(){
super("IRRj 2.0");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1);
}
});
buildLayout();
sPane.input.addKeyListener (new KeyAdapter () {
public void keyPressed (KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER)
handleSubmit();
}
});
loadIcons();
loadDefaults();
ita.setSearchPane(sPane);
ita.setSelectionColor(Color.red);
log.setEditable(false);
jpb.setStringPainted(true);
jpb.setString("Ready");
pack();
setVisible(true);
}
public static void main(String args[]){
Thread t = new Thread(){
public void run(){
new IRRj();
}
};
t.start();
}
public static void loadDefaults(){
try{
FileInputStream in = new FileInputStream("defaults.irr");
prop.load(in);
in.close();
}
catch(Exception e){}
String server = prop.getProperty("queryserver", "whois.radb.net");
int port = Integer.valueOf(prop.getProperty("queryport", "43")).intValue();
gr = new GetRequest(server, port, GetRequest.STAY_CONNECTED);
optWin = new OptionsWindow();
}
public void loadIcons(){
iconHash.put("undoIcon", loadJarImage("Undo24.gif"));
iconHash.put("redoIcon", loadJarImage("Redo24.gif"));
iconHash.put("copyIcon", loadJarImage("Copy24.gif"));
iconHash.put("pasteIcon", loadJarImage("Paste24.gif"));
iconHash.put("saveIcon", loadJarImage("Save24.gif"));
iconHash.put("loadIcon", loadJarImage("Open24.gif"));
iconHash.put("copyIconSmall", loadJarImage("Copy16.gif"));
iconHash.put("clearIcon", loadJarImage("Delete16.gif"));
}
public void buildLayout(){
buildMenuBar();
buildToolBar();
JButton qButton = new JButton("Submit");
qButton.setFont(smallFont);
qButton.addActionListener(this);
sPane.add(qButton, BorderLayout.EAST);
JPanel centerPane = new JPanel();
centerPane.setLayout(new BorderLayout());
centerPane.add(sPane, BorderLayout.NORTH);
JScrollPane jsp = new JScrollPane(ita);
centerPane.add(jsp, BorderLayout.CENTER);
getContentPane().add(centerPane, BorderLayout.CENTER);
getContentPane().add(jpb, BorderLayout.SOUTH);
}
public void buildMenuBar(){
JMenuBar topMenuBar = new JMenuBar();
setJMenuBar(topMenuBar);
JMenu fileMenu = new JMenu("File");
topMenuBar.add(fileMenu);
JMenu editMenu = new JMenu("Edit");
topMenuBar.add(editMenu);
JMenuItem newMenuItem = new JMenuItem("New Object");
fileMenu.add(newMenuItem);
newMenuItem.addActionListener(this);
JMenuItem exitMenuItem = new JMenuItem("Exit");
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
exitMenuItem.addActionListener(this);
JMenuItem copyMenuItem = new JMenuItem("Copy");
editMenu.add(copyMenuItem);
copyMenuItem.addActionListener(this);
JMenuItem prefMenuItem = new JMenuItem("Preferences...");
prefMenuItem.setActionCommand("Pref");
editMenu.addSeparator();
editMenu.add(prefMenuItem);
prefMenuItem.addActionListener(this);
}
public void buildToolBar(){
JToolBar topToolBar = new JToolBar();
topToolBar.setFloatable(false);
ImageIcon backIcon = loadJarImage("Back24.gif");
backButton = new JButton(backIcon);
backButton.setEnabled(false);
backButton.setToolTipText("Back");
backButton.setActionCommand("Back");
backButton.addActionListener(this);
ImageIcon forIcon = loadJarImage("Forward24.gif");
forButton = new JButton(forIcon);
forButton.setEnabled(false);
forButton.setToolTipText("Forward");
forButton.setActionCommand("Forward");
forButton.addActionListener(this);
ImageIcon findIcon = loadJarImage("Find24.gif");
JButton findButton = new JButton(findIcon);
findButton.setToolTipText("Find");
findButton.setActionCommand("Find");
findButton.addActionListener(this);
ImageIcon prefIcon = loadJarImage("Preferences24.gif");
JButton prefButton = new JButton(prefIcon);
prefButton.setToolTipText("Preferences");
prefButton.setActionCommand("Pref");
prefButton.addActionListener(this);
ImageIcon stopIcon = loadJarImage("Stop24.gif");
stopButton = new JButton(stopIcon);
stopButton.setEnabled(false);
stopButton.setToolTipText("Stop");
stopButton.setActionCommand("Stop");
stopButton.addActionListener(this);
topToolBar.add(backButton);
topToolBar.add(forButton);
topToolBar.add(findButton);
topToolBar.add(prefButton);
topToolBar.add(stopButton);
getContentPane().add(topToolBar, BorderLayout.NORTH);
}
public ImageIcon loadJarImage(String name){
URL url = getClass().getResource("images/" + name);
if (url != null) {
Image image = Toolkit.getDefaultToolkit().getImage(url);
if (image != null) {
return new ImageIcon(image);
}
}
return null;
}
public synchronized void handleSubmit(){
if(sPane.getRequest() == null)
return;
Cursor curs = new Cursor (Cursor.WAIT_CURSOR);
setCursor (curs);
stopButton.setEnabled(true);
backButton.setEnabled(false);
jpb.setString("Working...");
Thread s = new Thread(){
public void run(){
gr.getNewRequest(sPane.getRequest(), ita, jpb);
sPane.handleSubmit(ita.getText());
setCursor (Cursor.getDefaultCursor());
jpb.setString("Ready");
stopButton.setEnabled(false);
backButton.setEnabled(true);
jpb.setValue(0);
}
};
s.start();
}
public void actionPerformed(ActionEvent e){
String event = e.getActionCommand();
if(event.equals("Submit"))
handleSubmit();
else if(event.equals("Exit")){
System.exit(1);
}
else if(event.equals("Back")){
String doc = sPane.back();
if(doc != null){
ita.setText(doc);
forButton.setEnabled(true);
}
else
backButton.setEnabled(false);
}
else if(event.equals("Forward")){
String doc = sPane.forward();
if(doc != null){
ita.setText(doc);
backButton.setEnabled(true);
}
else
forButton.setEnabled(false);
}
else if(event.equals("Copy"))
ita.copy();
else if(event.equals("Stop")){
log.append("Action Stopped\n");
gr.stopQuery();
}
else if(event.equals("Find"))
finder.setVisible(true);
else if(event.equals("New Object"))
new EditorWindow();
else if(event.equals("Pref"))
optWin.setVisible(true);
}
}
syntax highlighted by Code2HTML, v. 0.9.1