/******************************************************************************* * LogDruid : Generate charts and reports using data gathered in log files * Copyright (C) 2016 Frederic Valente (frederic.valente@gmail.com) * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. *******************************************************************************/ package logdruid.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JSeparator; import javax.swing.JSpinner; import javax.swing.JSplitPane; import javax.swing.JButton; import javax.swing.JTree; import javax.swing.SpinnerDateModel; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import java.awt.Color; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import logdruid.data.Preferences; import logdruid.data.Repository; import logdruid.data.Source; import logdruid.data.mine.ChartData; import logdruid.data.mine.DataVault; import logdruid.engine.Miner; import logdruid.ui.chart.GraphPanel; import logdruid.ui.dialog.FileChooserDialog; import logdruid.ui.dialog.FileSaverDialog; import logdruid.ui.editor.DateEditor; import logdruid.ui.mainpanel.EventRecordingSelectorPanel; import logdruid.ui.mainpanel.MetadataRecordingSelectorPanel; import logdruid.ui.mainpanel.PreferencePanel; import logdruid.ui.mainpanel.RecordingList; import logdruid.ui.mainpanel.ReportPanel; import logdruid.ui.mainpanel.ReportRecordingSelectorPanel; import logdruid.ui.mainpanel.SourceInfoPanel; import logdruid.ui.mainpanel.SourcePanel; import logdruid.ui.mainpanel.StatRecordingSelectorPanel; import logdruid.util.DataMiner; import logdruid.util.Persister; import logdruid.util.Tools; import javax.swing.event.TreeSelectionListener; import javax.swing.event.TreeSelectionEvent; import org.apache.log4j.Logger; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.io.File; import java.util.Date; import java.util.Iterator; import java.util.ArrayList; import java.awt.Font; import javax.swing.JProgressBar; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import javax.swing.BoxLayout; import java.awt.Insets; public class MainFrame extends JFrame { private static Logger logger = Logger.getLogger(DataMiner.class.getName()); private String treeSelected = ""; private GraphPanel graphPanel = null; private ReportPanel reportPanel = null; JPanel panel_1; JPanel panel_2; final JTree tree; private JPanel contentPane; private Repository repository; private DefaultMutableTreeNode DMTnode_sources; public File configFile; private JSpinner startTimeSpinner; private JSpinner.DateEditor timeEditor; private JSpinner endTimeSpinner; private JSpinner.DateEditor timeEditor2; public String currentRepositoryFile = "New"; public static ChartData cd; private MainFrame thiis; JProgressBar progressBar; int progressBarValue; boolean working=false; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainFrame() { thiis = this; repository = new Repository(); cd = new ChartData(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 1024, 768); Preferences.load(); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnFile = new JMenu("File"); menuBar.add(mnFile); JMenuItem mntmNewSource = new JMenuItem("New"); mntmNewSource.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { repository = new Repository(); currentRepositoryFile = "New"; thiis.setTitle("LogDruid - " + currentRepositoryFile); updateTreeSources(repository.getSources()); treeSelected(); } }); mnFile.add(mntmNewSource); thiis.setTitle("LogDruid"); JMenuItem mntmOpen = new JMenuItem("Open"); mntmOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { FileSaverDialog fileChooserDialog = new FileSaverDialog(repository); if ((fileChooserDialog != null) && (fileChooserDialog.isValidate())) { // repository.open(fileChooserDialog.getSelectedFile()); TreePath tp = tree.getSelectionPath(); File file = fileChooserDialog.getSelectedFile(); configFile = fileChooserDialog.getSelectedFile(); repository = (Repository) Persister.open(fileChooserDialog.getSelectedFile()); thiis.setTitle("LogDruid - " + file.getName() + " - " + ((repository.getBaseSourcePath()!=null) ? repository.getBaseSourcePath():"")); updateTreeSources(repository.getSources()); Thread t =new Thread() { public void run() { if (working==false){ working=true; try{ if (treeSelected.equals("<html><font color=\"blue\" size=3>Chart</font></html>")) { graphPanel=null; reportPanel=null; thiis.setValueNow(0); progressBarValue=0; File test=new File (repository.getBaseSourcePath()); if (test.exists()){ cd = DataMiner.gatherSourceData(repository,false); DataVault.setMineResultSet(Miner.gatherMineResultSet(cd,repository,thiis)); } thiis.setValueNow(progressBarValue); } else if (treeSelected.equals("<html>Reports</html>")) { reportPanel=null; graphPanel=null; thiis.setValueNow(0); progressBarValue=0; File test=new File (repository.getBaseSourcePath()); if (test.exists()){ cd = DataMiner.gatherSourceData(repository,false); DataVault.setMineResultSet(Miner.gatherMineResultSet(cd,repository,thiis));} thiis.setValueNow(progressBarValue); } } catch (Exception e){ logger.error("exception: ", e); } working=false; treeSelected(); }} }; t.start(); } } }); mnFile.add(mntmOpen); JMenuItem mntmSave = new JMenuItem("Save"); mntmSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Persister.save(configFile, (Repository) repository); } }); mnFile.add(mntmSave); JMenuItem mntmSaveAs = new JMenuItem("Save as"); mntmSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { FileSaverDialog fileChooserDialog = new FileSaverDialog(repository); if ((fileChooserDialog != null) && (fileChooserDialog.isValidate())) { Persister.save(fileChooserDialog.getSelectedFile(), (Repository) repository); thiis.setTitle("LogDruid - " + fileChooserDialog.getSelectedFile().getName() + " - " + repository.getBaseSourcePath()); configFile = fileChooserDialog.getSelectedFile(); } } }); mnFile.add(mntmSaveAs); JMenuItem mntmGenerateFlatFiles = new JMenuItem("Export to one file per source group"); mntmGenerateFlatFiles.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { File folder = new File(repository.getBaseSourcePath()); if (!folder.exists()) { logger.info("base path did, not exist defaulting to current: " + System.getProperty("user.dir")); folder = new File(System.getProperty("user.dir"));} FileChooserDialog fileChooserDialog = new FileChooserDialog(folder); if ((fileChooserDialog != null) && (fileChooserDialog.isValidate())) { Tools.generateFlatFiles(repository, fileChooserDialog.getSelectedFile()); } } }); mnFile.add(mntmGenerateFlatFiles); /* * JMenuItem mntmExportData = new JMenuItem("Export Data"); * mntmExportData.addActionListener(new ActionListener() { public void * actionPerformed(ActionEvent e) { FileSaverDialog fileChooserDialog = * new FileSaverDialog(); if ((fileChooserDialog != null) && * (fileChooserDialog.isValidate())) { * Persister.save(fileChooserDialog.getSelectedFile(), * DataMiner.exportData(repository)); // * repository.open(fileChooserDialog.getSelectedFile()); // * repository=(Repository * )persister.open(fileChooserDialog.getSelectedFile()); } } }); * mnFile.add(mntmExportData); */ JMenuItem mntmExit = new JMenuItem("Exit"); mnFile.add(mntmExit); mntmExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(NORMAL); } }); JMenu mnEdit = new JMenu("Edit"); menuBar.add(mnEdit); JMenuItem mntmPreferences = new JMenuItem("Preferences"); mnEdit.add(mntmPreferences); mntmPreferences.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tree.setSelectionRow(2); treeSelected(); } }); JMenu mnChartMenu = new JMenu("Chart"); menuBar.add(mnChartMenu); JMenuItem mntmVisualize = new JMenuItem("Visualize"); mntmVisualize.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tree.setSelectionRow(tree.getRowCount() - 1); treeSelected(); } }); mnChartMenu.add(mntmVisualize); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); JPanel panel = new JPanel(); contentPane.add(panel); JButton btnNewButton = new JButton("New button"); panel.add(btnNewButton); JButton btnNewButton_1 = new JButton("New button"); panel.add(btnNewButton_1); JPanel panel_7 = new JPanel(); panel_1 = new JPanel(); JSplitPane splitPane = new JSplitPane(); splitPane.setOneTouchExpandable(true); contentPane.add(splitPane, BorderLayout.CENTER); splitPane.setRightComponent(panel_1); splitPane.setLeftComponent(panel_7); panel_1.setLayout(new BorderLayout(0, 0)); panel_2 = new JPanel(); FlowLayout flowLayout = (FlowLayout) panel_2.getLayout(); flowLayout.setAlignment(FlowLayout.LEFT); contentPane.add(panel_2, BorderLayout.NORTH); DMTnode_sources = new DefaultMutableTreeNode("<html><font size=3>Sources</font></html>"); panel_7.setLayout(new BorderLayout(0, 0)); panel_7.setSize(150, 10000); panel_7.setMinimumSize(new Dimension(137, 1000)); tree = new JTree(); panel_7.add(tree); DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer(); // renderer.setTextSelectionColor(Color.white); // renderer.setBackgroundSelectionColor(Color.blue); renderer.setFont(new Font("SansSerif", Font.PLAIN, 11)); //setBorderSelectionColor(Color.black); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent arg0) { treeSelected(); } }); tree.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //String comp = e.getComponent().toString(); // logger.info(comp); } }); tree.setForeground(Color.WHITE); // defaultTreeModel.reload(node); tree.setModel( new DefaultTreeModel(new DefaultMutableTreeNode("All") { { DefaultMutableTreeNode DMTnode_1; DMTnode_1 = new DefaultMutableTreeNode("<html><font size=3>Configuration</font></html>"); DMTnode_1.add(new DefaultMutableTreeNode("DateFormat")); DMTnode_1.add(new DefaultMutableTreeNode("Preferences")); DMTnode_1.add(new DefaultMutableTreeNode("Recordings")); add(DMTnode_1); add(DMTnode_sources); add(new DefaultMutableTreeNode("<html><font color=\"blue\" size=3>Chart</font></html>")); add(new DefaultMutableTreeNode("<html><font color=\"blue\" size=3>Report</font></html>")); } })); tree.setSelectionRow(0); tree.setSelectionRow(0); tree.setRootVisible(false); tree.setSelectionRow(1); JPanel panel_8 = new JPanel(); panel_7.add(panel_8, BorderLayout.SOUTH); panel_8.setLayout(new BoxLayout(panel_8, BoxLayout.PAGE_AXIS)); JSeparator separator_1 = new JSeparator(); panel_8.add(separator_1); final JCheckBox checkBoxStat = new JCheckBox("Stat"); checkBoxStat.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Preferences.setPreference("gatherstats", ((Boolean)checkBoxStat.isSelected()).toString()); } }); checkBoxStat.setSelected(Preferences.getBooleanPreference("gatherstats")); panel_8.add(checkBoxStat); checkBoxStat.setFont(new Font("Dialog", Font.PLAIN, 11)); final JCheckBox checkBoxEvent = new JCheckBox("Event"); checkBoxEvent.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Preferences.setPreference("gatherevents", ((Boolean)checkBoxEvent.isSelected()).toString()); } }); checkBoxEvent.setSelected(Preferences.getBooleanPreference("gatherevents")); checkBoxEvent.setFont(new Font("Dialog", Font.PLAIN, 11)); panel_8.add(checkBoxEvent); final JCheckBox checkBoxReport = new JCheckBox("Report"); checkBoxReport.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Preferences.setPreference("gatherreports", ((Boolean)checkBoxReport.isSelected()).toString()); } }); checkBoxReport.setSelected(Preferences.getBooleanPreference("gatherreports")); checkBoxReport.setFont(new Font("Dialog", Font.PLAIN, 11)); panel_8.add(checkBoxReport); JButton btnMain = new JButton("Gather"); btnMain.setForeground(Color.BLUE); btnMain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Thread t =new Thread() { public void run() { if (working==false){ working=true; try{ reportPanel=null; graphPanel=null; thiis.setValueNow(0); progressBarValue=0; File test=new File (repository.getBaseSourcePath()); if (test.exists()){ cd = DataMiner.gatherSourceData(repository,false); DataVault.setMineResultSet(Miner.gatherMineResultSet(cd,repository,thiis)); } thiis.setValueNow(progressBarValue); } catch (Exception e){ logger.error("exception: ", e); working=false; } working=false; tree.setSelectionRow(tree.getRowCount() - 2); treeSelected(); } }}; t.start(); /* if (working==false){ Thread t =new Thread() { public void run() { working=true; try { graphPanel = null; reportPanel = null; thiis.setValueNow(0); progressBarValue=0; DataVault.setMineResultSet(Miner.gatherMineResultSet(repository,thiis)); cd = DataMiner.gatherSourceData(repository); thiis.setValueNow(progressBarValue); } catch (Exception e){ logger.error("exception: ", e); } working=false; tree.setSelectionRow(tree.getRowCount() - 2); } }; t.start(); }*/ } }); btnMain.setFont(new Font("Dialog", Font.BOLD, 11)); btnMain.setHorizontalAlignment(SwingConstants.LEFT); // btnMain.setVisible(false); panel_2.add(btnMain); JSeparator separator = new JSeparator(SwingConstants.VERTICAL); panel_2.add(separator); startTimeSpinner = new JSpinner(new SpinnerDateModel()); timeEditor = new JSpinner.DateEditor(startTimeSpinner, "dd-MM-yyyy HH:mm:ss"); startTimeSpinner.setEditor(timeEditor); startTimeSpinner.setValue(new Date()); panel_2.add(startTimeSpinner); endTimeSpinner = new JSpinner(new SpinnerDateModel()); timeEditor2 = new JSpinner.DateEditor(endTimeSpinner, "dd-MM-yyyy HH:mm:ss"); endTimeSpinner.setEditor(timeEditor2); endTimeSpinner.setValue(new Date()); panel_2.add(endTimeSpinner); JCheckBox chckbxRelative = new JCheckBox("relative"); chckbxRelative.setFont(new Font("Dialog", Font.BOLD, 11)); chckbxRelative.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (treeSelected.equals("<html><font color=\"blue\" size=3>Chart</font></html>")) { graphPanel.loadGroupCheckbox(panel_2); graphPanel.load(panel_2); } } }); JButton btnRefresh = new JButton("Reset"); btnRefresh.setFont(new Font("Dialog", Font.BOLD, 11)); btnRefresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (treeSelected.equals("<html><font color=\"blue\" size=3>Chart</font></html>")) { graphPanel.resetTimePeriod(panel_2); graphPanel.loadGroupCheckbox(panel_2); graphPanel.load(panel_2); } } }); panel_2.add(btnRefresh); panel_2.add(chckbxRelative); JButton btnReset = new JButton("Refresh"); btnReset.setFont(new Font("Dialog", Font.BOLD, 11)); btnReset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (treeSelected.equals("<html><font color=\"blue\" size=3>Chart</font></html>")) { graphPanel.loadGroupCheckbox(panel_2); graphPanel.load(panel_2); } } }); panel_2.add(btnReset); JPanel panel_3 = new JPanel(); panel_3.setLayout(new BorderLayout(0, 0)); contentPane.add(panel_3, BorderLayout.SOUTH); panel_3.setPreferredSize(new Dimension(200,18)); JPanel panel_4 = new JPanel(); JPanel panel_4a = new JPanel(); panel_4a.setMaximumSize(new Dimension(1,0)); panel_4a.setPreferredSize(new Dimension(0,4)); FlowLayout flowLayout_1 = (FlowLayout) panel_4.getLayout(); flowLayout_1.setVgap(0); panel_3.add(panel_4, BorderLayout.EAST); panel_3.add(panel_4a, BorderLayout.NORTH); MemInspector mi = new MemInspector(); mi.setPreferredSize(new Dimension(200,14)); panel_4.add(mi); JPanel panel_5 = new JPanel(); panel_3.add(panel_5, BorderLayout.CENTER); panel_5.setLayout(new BorderLayout(0, 0)); JPanel panel_6 = new JPanel(); panel_5.add(panel_6); GridBagLayout gbl_panel_6 = new GridBagLayout(); gbl_panel_6.columnWidths = new int[] { 100, 100,300,0 }; gbl_panel_6.rowHeights = new int[] { 0, 0 }; gbl_panel_6.columnWeights = new double[] { 1.0,1.0,1.0,Double.MIN_VALUE }; gbl_panel_6.rowWeights = new double[] { 0.0, Double.MIN_VALUE }; panel_6.setLayout(gbl_panel_6); progressBar = new JProgressBar(); GridBagConstraints gbc_progressBar = new GridBagConstraints(); gbc_progressBar.fill = GridBagConstraints.HORIZONTAL; gbc_progressBar.insets = new Insets(0, 0, 0, 5); gbc_progressBar.gridx = 2; gbc_progressBar.gridy = 0; progressBar.setVisible(true); panel_6.add(progressBar, gbc_progressBar); /* * startTimeSpinner.setEnabled(false); endTimeSpinner.setEnabled(false); * btnReset.setEnabled(false); btnRefresh.setEnabled(false); * chckbxRelative.setEnabled(false); */ tree.expandPath(tree.getPathForRow(0)); } void updateProgress(final int newValue) { thiis.setValueNow(newValue); } void updateProgress2() { progressBar.setValue(progressBarValue++); logger.debug("progressBarValue " + progressBarValue); } public void setMaxProgress(final int newValue) { progressBar.setMaximum(newValue); } public void setValue(final int j) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { progressBar.setValue(j); logger.info("setValue " + j); } }); } public void setValueNow(final int j) { progressBar.setValue(j); /* logger.info("setValueNow " + j); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); for(int i=0; i<elements.length; i++) { logger.debug(elements[i]); }*/ } public void progress() { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { updateProgress2(); } }); } public void updateTreeSources(ArrayList<Source> sources) { TreePath initialTreePath = tree.getSelectionPath(); DefaultMutableTreeNode DMTNsources_child; DMTnode_sources.removeAllChildren(); // ((DefaultTreeModel)tree.getModel()).reload(); for (int i = 0; i < sources.size(); i++) { if (((Source) sources.get(i)).getActive()) { String name = ((Source) sources.get(i)).getSourceName(); DMTNsources_child = new DefaultMutableTreeNode(name); DMTNsources_child.add(new DefaultMutableTreeNode("<html>File Grouping</html>")); DMTNsources_child.add(new DefaultMutableTreeNode("<html>Stats</html>")); DMTNsources_child.add(new DefaultMutableTreeNode("<html>Events</html>")); DMTNsources_child.add(new DefaultMutableTreeNode("<html>Reports</html>")); DMTnode_sources.add(DMTNsources_child); DMTnode_sources.getParent(); } } // DMTnode_sources. // ((DefaultTreeModel)tree.getModel()).reload(); // ((DefaultTreeModel)tree.getModel()).nodeStructureChanged(DMTnode_sources.getPath()); TreeNode[] t = DMTnode_sources.getPath(); ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(t[(t.length - 1)]); tree.setSelectionPath(initialTreePath); tree.expandPath(initialTreePath); // tree.fireTreeExpanded(initialTreePath); tree.revalidate(); tree.repaint(); } private void treeSelected() { DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (node != null) { logger.debug(node.toString()); treeSelected = node.toString(); if (treeSelected.equals("<html><font size=3>Sources</font></html>")) { panel_1.removeAll(); panel_1.add(new SourcePanel(repository, thiis)); panel_1.revalidate(); } else if (treeSelected.equals("Recordings")) { panel_1.removeAll(); panel_1.add(new RecordingList(repository)); panel_1.revalidate(); } else if (treeSelected.equals("Preferences")) { panel_1.removeAll(); panel_1.add(new PreferencePanel(repository)); panel_1.revalidate(); } else if (treeSelected.equals("<html>Stats</html>")) { panel_1.removeAll(); panel_1.add(new StatRecordingSelectorPanel(repository, (Source) repository.getSource(node.getParent().toString()))); panel_1.revalidate(); } else if (treeSelected.equals("<html>Events</html>")) { panel_1.removeAll(); panel_1.add(new EventRecordingSelectorPanel(repository, (Source) repository.getSource(node.getParent().toString()))); panel_1.revalidate(); } else if (treeSelected.equals("<html>Reports</html>")) { panel_1.removeAll(); panel_1.add(new ReportRecordingSelectorPanel(repository, (Source) repository.getSource(node.getParent().toString()))); panel_1.revalidate(); } else if (treeSelected.equals("<html><font color=\"blue\" size=3>Report</font></html>")) { Thread t =new Thread() { public void run() { if (working==false){ working=true; try { logger.debug("Reports panel loading "); if (DataVault.getMineResultSet() == null) { thiis.setValueNow(0); progressBarValue=0; cd = DataMiner.gatherSourceData(repository,false); DataVault.setMineResultSet(Miner.gatherMineResultSet(cd,repository,thiis)); logger.info("gathering source data"); thiis.setValueNow(progressBarValue); } if (reportPanel == null) { logger.info(" new graph Panel"); //cd = DataMiner.gatherSourceData(repository); reportPanel = new ReportPanel(repository, DataVault.getMineResultSet()); } panel_1.removeAll(); panel_1.add(reportPanel); panel_1.validate(); panel_1.repaint(); logger.debug("Report panel loaded "); } catch (Exception e){ logger.error("exception: ", e); working=false; } working=false; } }}; t.start(); } else if (treeSelected.equals("<html>File Grouping</html>")) { panel_1.removeAll(); panel_1.add(new MetadataRecordingSelectorPanel(repository, (Source) repository.getSource(node.getParent().toString()))); panel_1.revalidate(); } else if (treeSelected.equals("DateFormat")) { panel_1.removeAll(); panel_1.add(new DateEditor(repository)); panel_1.revalidate(); } else if (treeSelected.equals("<html><font color=\"blue\" size=3>Chart</font></html>")) { if (working==false){ Thread t =new Thread() { public void run() { if (working==false){ working=true; try{ logger.debug("Chart panel loading "); if (DataVault.getMineResultSet() == null) { thiis.setValueNow(0); progressBarValue=0; cd = DataMiner.gatherSourceData(repository,false); DataVault.setMineResultSet(Miner.gatherMineResultSet(cd,repository,thiis)); logger.info("gathering source data"); thiis.setValueNow(progressBarValue); } if (graphPanel == null) { logger.info(" new graph Panel"); graphPanel = new GraphPanel(repository, panel_2, DataVault.getMineResultSet(), cd, thiis); } panel_1.removeAll(); panel_1.add(graphPanel); panel_1.validate(); panel_1.repaint(); logger.debug("Chart panel loaded "); } catch (Exception e){ logger.error("exception: ", e); } working=false; }} }; t.start(); } } else { ArrayList sources = repository.getSources(); Iterator it = sources.iterator(); while (it.hasNext()) { Source src = (Source) it.next(); if (src.getSourceName().equals(treeSelected)) { panel_1.removeAll(); panel_1.add(new SourceInfoPanel(repository, src)); panel_1.revalidate(); } } } } } } /* * * DefaultMutableTreeNode node_1; DefaultMutableTreeNode node_2; node_1 = new * DefaultMutableTreeNode("Configuration"); node_1.add(new * DefaultMutableTreeNode("DateFormat")); node_1.add(new * DefaultMutableTreeNode("Recordings")); node_1.add(new * DefaultMutableTreeNode("Groups")); node_1.add(new * DefaultMutableTreeNode("Chartting")); node_1.add(new * DefaultMutableTreeNode("Reporting")); node_1.add(new * DefaultMutableTreeNode("Advanced")); add(node_1); node_1 = new * DefaultMutableTreeNode("<html><font size=3>Sources</font></html>"); node_2 = new * DefaultMutableTreeNode("Method Servers"); node_2.add(new * DefaultMutableTreeNode("File Pattern")); node_2.add(new * DefaultMutableTreeNode("Recordings")); node_2.add(new * DefaultMutableTreeNode("Date Format")); node_1.add(node_2); add(node_1); * add(new DefaultMutableTreeNode("<html><font color=\"blue\" size=3>Chart</font></html>")); add(new * DefaultMutableTreeNode("<html><font color=\"blue\" size=3>Report</font></html>")); */