package antLogger.logServer;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.JSlider;
import javax.swing.table.TableModel;
import javax.swing.JScrollPane;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableColumn;
import javax.swing.JButton;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.table.JTableHeader;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.filechooser.FileFilter;
import javax.swing.JFileChooser;
import java.io.FileReader;
/**
* Copyright (c) 2002
* LogViewer
* GUI to show messages of the antLogger
* @author Pascal Mengelt
* @version 1.0 - 25. april 2002
*/
public class LogViewer extends JFrame
{
private JMenuBar jMenuBar1 = new JMenuBar();
private JMenu jMenu1 = new JMenu();
private JMenuItem jMIClose = new JMenuItem();
private JMenuItem jMIOpenOldMessages = new JMenuItem();
private JMenuItem jMIRemoveOldMessages = new JMenuItem();
private JPanel jPanel1 = new JPanel();
private JPanel jPanel2 = new JPanel();
private JPanel jPanel3 = new JPanel();
private JPanel jPanel4 = new JPanel();
private JPanel jPanel5 = new JPanel();
private JLabel jLabel1 = new JLabel();
private JTable jTable;
private TablePanelModel tm;
private JRadioButton jRBError = new JRadioButton();
private JRadioButton jRBWarning = new JRadioButton();
private JRadioButton jRBMessage = new JRadioButton();
private JRadioButton jRBInfo = new JRadioButton();
private JLabel jLabel2 = new JLabel();
private JPanel jPanel6 = new JPanel();
private JTextField dateFrom = new JTextField(5);
private JTextField dateTo = new JTextField(5);
private JLabel jLabel3 = new JLabel();
private JLabel jLabel4 = new JLabel();
private JLabel jLabel5 = new JLabel();
private JLabel jLabel6 = new JLabel();
private JTextField jTFApplic = new JTextField(12);
private JTextField jTFMessage = new JTextField(12);
private JTextField jTFModul = new JTextField(12);
private JLabel jLabel7 = new JLabel();
private JSlider jSRefreshTime = new JSlider();
private JLabel jLabel8 = new JLabel();
private JSlider jSNumberOfFiles = new JSlider();
private JLabel jLabel9 = new JLabel();
private JSlider jSSizeOfFiles = new JSlider();
private JPanel jPanel7 = new JPanel();
private JScrollPane jScrollPane1 = new JScrollPane();
private JButton jBApplyChanges = new JButton();
private JLabel jLabel10 = new JLabel();
private JPanel jPanel8 = new JPanel();
private JButton jBFilter = new JButton();
private JLabel jLabel11 = new JLabel();
private LogServer logServer;
private TableLoader tableLoader;
/** @param logServer Class to get the messages from */
LogViewer(LogServer logServer)
{
this.logServer = logServer;
initGUI();
pack();
// Fit to screen
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(dim.width / 8, dim.height / 8, 830, 600);
setVisible(true);
tableLoader = new TableLoader(this, new LogBuffer(new BufferedReader(new InputStreamReader(logServer.getReadPipe()))));
tableLoader.start();
tableLoader.fillTable();
}
/** initialize the GUI */
public void initGUI()
{
addWindowListener(new LogViewerWindowAdapter(logServer));
tm = new TablePanelModel();
jTable = new JTable(tm);
jScrollPane1.getViewport().add(jTable);
jScrollPane1.setDoubleBuffered(true);
jTable.setRowHeight(20);
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel tcm = jTable.getColumnModel();
TableColumn tc = tcm.getColumn(4);
tc.setMinWidth(550);
// set a mouseListener to the header of the JTable
// to sort the JTable
// doesn't work with dynamic table
/*
JTableHeader hdr = (JTableHeader)jTable.getTableHeader();
hdr.addMouseListener(
new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
TableColumnModel tcm = jTable.getColumnModel();
int vc = tcm.getColumnIndexAtX(e.getX());
int mc = jTable.convertColumnIndexToModel(vc);
if(tm.isSortUp()&& tm.getActiveColumn()==mc)
tm.setSortUp(false);
else
tm.setSortUp(true);
// tm.allocate();
tm.sort(mc);
}
});
*/
jBApplyChanges.setText("apply changes");
jBApplyChanges.setToolTipText("Änderungen anwenden.");
jLabel3.setText("to");
jLabel2.setText("date: ");
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jRBInfo.setText("INFO");
jRBInfo.setActionCommand("INFO");
jRBInfo.setToolTipText("Listet alle Infos auf.");
jRBMessage.setText("MESSAGE");
jRBMessage.setActionCommand("MESSAGE");
jRBMessage.setSelected(true);
jRBMessage.setToolTipText("Listet alle Messages auf.");
jRBWarning.setText("WARNING");
jRBWarning.setActionCommand("WARNING");
jRBWarning.setToolTipText("Listet alle Warnings auf.");
jRBWarning.setSelected(true);
jLabel1.setText("priority:");
jLabel1.setFont(new java.awt.Font("SansSerif", java.awt.Font.PLAIN, 11));
jMenu1.setText("File");
jMenu1.setActionCommand("File");
jMenu1.add(jMIClose);
jMenu1.add(jMIOpenOldMessages);
jMenu1.add(jMIRemoveOldMessages);
setTitle("antLogger LogViewer");
setIconImage((new javax.swing.ImageIcon("logo.jpg")).getImage());
setJMenuBar(jMenuBar1);
setResizable(false);
jMenuBar1.add(jMenu1);
jMIClose.setText("close");
jMIOpenOldMessages.setText("open old messages");
jMIOpenOldMessages.setActionCommand("open old messages");
jMIOpenOldMessages.setToolTipText("Öffnen einer Sicherungsdatei von 'alten' Nachrichten.");
jMIRemoveOldMessages.setText("remove old messages");
jMIRemoveOldMessages.setActionCommand("remove old messages");
getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(212, 208, 200), 3));
jPanel1.add(jPanel7, java.awt.BorderLayout.CENTER);
jPanel1.add(jPanel2, java.awt.BorderLayout.WEST);
jPanel1.add(jPanel3, java.awt.BorderLayout.EAST);
jPanel2.setLayout(new java.awt.BorderLayout());
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153), 1),
"filter", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("SansSerif", 0, 11),
new java.awt.Color(60, 60, 60)));
jPanel2.add(jPanel8, java.awt.BorderLayout.EAST);
jPanel2.add(jPanel4, java.awt.BorderLayout.WEST);
jPanel2.add(jPanel5, java.awt.BorderLayout.CENTER);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153), 1),
"options", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("SansSerif", 0, 11),
new java.awt.Color(60, 60, 60)));
jPanel3.setLayout(new java.awt.GridLayout(4, 2));
jPanel3.add(jLabel7);
jPanel3.add(jSRefreshTime);
jPanel3.add(jLabel8);
jPanel3.add(jSNumberOfFiles);
jPanel3.add(jLabel9);
jPanel3.add(jSSizeOfFiles);
jPanel3.add(jLabel10);
jPanel3.add(jBApplyChanges);
jPanel4.setLayout(new java.awt.GridLayout(5, 1));
jPanel4.add(jLabel1);
jPanel4.add(jRBError);
jPanel4.add(jRBWarning);
jPanel4.add(jRBMessage);
jPanel4.add(jRBInfo);
jRBError.setText("ERROR");
jRBError.setActionCommand("ERROR");
jRBError.setSelected(true);
jRBError.setToolTipText("Listet alle Errors auf.");
jPanel5.setLayout(new java.awt.GridLayout(4, 2));
jPanel5.add(jLabel2);
jPanel5.add(jPanel6);
jPanel5.add(jLabel4);
jPanel5.add(jTFApplic);
jPanel5.add(jLabel6);
jPanel5.add(jTFModul);
jPanel5.add(jLabel5);
jPanel5.add(jTFMessage);
dateFrom.setText("");
dateFrom.setColumns(7);
jPanel6.setAlignmentX(0.0f);
jPanel6.setAlignmentY(0.0f);
jPanel6.add(dateFrom);
jPanel6.add(jLabel3);
jPanel6.add(dateTo);
dateTo.setText("");
dateTo.setColumns(7);
dateTo.setToolTipText("Datum, bis zu welchem gesucht wird. Format: JJJJ:MM:TT:SS");
jLabel4.setText("application:");
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText("message: ");
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel6.setText("modul: ");
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jTFApplic.setText("");
jTFApplic.setToolTipText("");
jTFApplic.setMinimumSize(new java.awt.Dimension(12, 20));
jTFApplic.setColumns(18);
jTFMessage.setText("");
jTFMessage.setMinimumSize(new java.awt.Dimension(12, 20));
jTFModul.setText("");
jTFModul.setMinimumSize(new java.awt.Dimension(34, 20));
jLabel7.setText("refresh time:");
jLabel8.setText("number of files:");
jLabel9.setText("size of files:");
jSRefreshTime.setPaintLabels(true);
jSRefreshTime.setPreferredSize(new java.awt.Dimension(100, 16));
jSRefreshTime.setMajorTickSpacing(10);
jSRefreshTime.setMinimum(5);
jSRefreshTime.setMaximum(65);
jSRefreshTime.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 6));
jSRefreshTime.setToolTipText("Refresh Zeit der Daten in Sekunden");
jSRefreshTime.setValue(5);
jSNumberOfFiles.setPreferredSize(