Mainpublic class Main extends JFrame
Fields Summary |
---|
private static final int | DEFAULT_PORTthe default port number to listen on | public static final String | PORT_PROP_NAMEname of property for port name | private static final Logger | LOGuse to log messages |
Constructors Summary |
---|
private Main()Creates a new Main instance.
super("CHAINSAW - Log4J Log Viewer");
// create the all important model
final MyTableModel model = new MyTableModel();
//Create the menu bar.
final JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
final JMenu menu = new JMenu("File");
menuBar.add(menu);
try {
final LoadXMLAction lxa = new LoadXMLAction(this, model);
final JMenuItem loadMenuItem = new JMenuItem("Load file...");
menu.add(loadMenuItem);
loadMenuItem.addActionListener(lxa);
} catch (NoClassDefFoundError e) {
LOG.info("Missing classes for XML parser", e);
JOptionPane.showMessageDialog(
this,
"XML parser not in classpath - unable to load XML events.",
"CHAINSAW",
JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
LOG.info("Unable to create the action to load XML files", e);
JOptionPane.showMessageDialog(
this,
"Unable to create a XML parser - unable to load XML events.",
"CHAINSAW",
JOptionPane.ERROR_MESSAGE);
}
final JMenuItem exitMenuItem = new JMenuItem("Exit");
menu.add(exitMenuItem);
exitMenuItem.addActionListener(ExitAction.INSTANCE);
// Add control panel
final ControlPanel cp = new ControlPanel(model);
getContentPane().add(cp, BorderLayout.NORTH);
// Create the table
final JTable table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
final JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBorder(BorderFactory.createTitledBorder("Events: "));
scrollPane.setPreferredSize(new Dimension(900, 300));
// Create the details
final JPanel details = new DetailPanel(table, model);
details.setPreferredSize(new Dimension(900, 300));
// Add the table and stack trace into a splitter
final JSplitPane jsp =
new JSplitPane(JSplitPane.VERTICAL_SPLIT, scrollPane, details);
getContentPane().add(jsp, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent aEvent) {
ExitAction.INSTANCE.actionPerformed(null);
}
});
pack();
setVisible(true);
setupReceiver(model);
|
Methods Summary |
---|
private static void | initLog4J()initialise log4j
final Properties props = new Properties();
props.setProperty("log4j.rootLogger", "DEBUG, A1");
props.setProperty("log4j.appender.A1",
"org.apache.log4j.ConsoleAppender");
props.setProperty("log4j.appender.A1.layout",
"org.apache.log4j.TTCCLayout");
PropertyConfigurator.configure(props);
| public static void | main(java.lang.String[] aArgs)The main method.
initLog4J();
new Main();
| private void | setupReceiver(org.apache.log4j.chainsaw.MyTableModel aModel)Setup recieving messages.
int port = DEFAULT_PORT;
final String strRep = System.getProperty(PORT_PROP_NAME);
if (strRep != null) {
try {
port = Integer.parseInt(strRep);
} catch (NumberFormatException nfe) {
LOG.fatal("Unable to parse " + PORT_PROP_NAME +
" property with value " + strRep + ".");
JOptionPane.showMessageDialog(
this,
"Unable to parse port number from '" + strRep +
"', quitting.",
"CHAINSAW",
JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}
try {
final LoggingReceiver lr = new LoggingReceiver(aModel, port);
lr.start();
} catch (IOException e) {
LOG.fatal("Unable to connect to socket server, quiting", e);
JOptionPane.showMessageDialog(
this,
"Unable to create socket on port " + port + ", quitting.",
"CHAINSAW",
JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
|
|