Author: rozagh
Date: 2012-03-15 15:28:58 -0700 (Thu, 15 Mar 2012)
New Revision: 28558

Modified:
   
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/AdvancedLogViewer.java
   
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
   
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
Log:
fixes #762 The advanced log view is set to be the default viewer. Options for 
choosing different log levels are added. The level option is removed from the 
filtering combo box. 

Modified: 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/AdvancedLogViewer.java
===================================================================
--- 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/AdvancedLogViewer.java
     2012-03-15 22:00:37 UTC (rev 28557)
+++ 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/AdvancedLogViewer.java
     2012-03-15 22:28:58 UTC (rev 28558)
@@ -8,6 +8,7 @@
 import java.util.concurrent.*;
 import java.util.regex.*;
 import javax.swing.*;
+import javax.swing.border.EtchedBorder;
 import javax.swing.event.*;
 import javax.swing.tree.*;
 import javax.swing.table.*;
@@ -18,14 +19,19 @@
 import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.TaskManager;
 import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
  * @author Pasteur
  */
 class AdvancedLogViewer {
-       static final String[] COLUMNS = { "Time", "Log", "Level", "Thread", 
"Message" };
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(AdvancedLogViewer.class);
 
+       static final String[] COLUMNS = { "Time", "Log", "Thread", 
"Message"};//, "Level" };
+
        /**
         * Contains all log events (except those deleted with the Clear button) 
that were added with the
         * <code>addLogEvent</code> method.
@@ -65,7 +71,10 @@
        final LogViewer         logViewer;
        final JComboBox         filterTargetComboBox;
        final JPanel            contents;
+       final JCheckBox trace, debug, info, warn, error;
+       final ArrayList<JCheckBox> levelsList;
 
+
        public AdvancedLogViewer(TaskManager taskManager, LogViewer logViewer) {
                this.taskManager = taskManager;
                this.logViewer = logViewer;
@@ -82,6 +91,7 @@
                logsTree.addTreeSelectionListener(new 
LogsTreeSelectionListener());
 
                filterTargetComboBox = new JComboBox(COLUMNS);
+               filterTargetComboBox.setSelectedIndex(3);//to show the message 
as default
                filterTargetComboBox.addActionListener(new 
FilterTargetUpdater());
 
                JScrollPane logsTreeScrollPane = new JScrollPane(logsTree);
@@ -99,15 +109,78 @@
                panel1.add(element1, new GridBagConstraints(2, 0, 1, 1, 0, 0, 
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 4, 4, 2), 
0, 0));
                panel1.add(filterTargetComboBox, new GridBagConstraints(3, 0, 
1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new 
Insets(4, 4, 4, 2), 0, 0));
                contents.add(panel1, new GridBagConstraints(0, 0, 1, 1, 1, 0, 
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 
0, 0));
-               JSplitPane splitpane0 = new 
JSplitPane(JSplitPane.HORIZONTAL_SPLIT, logsTreeScrollPane, 
logViewer.getComponent());
-               splitpane0.setResizeWeight(0.2);
-               contents.add(splitpane0, new GridBagConstraints(0, 1, 1, 1, 1, 
1, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 
0));
+               
+               JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
+               panel3.setBorder(BorderFactory.createTitledBorder("Log Level"));
+               trace = new JCheckBox();
+               trace.setText("trace");
+               trace.addActionListener(new LevelSelectionListener());
+               panel3.add(trace);
+               debug = new JCheckBox();
+               debug.setText("debug");
+               debug.setSelected(true);
+               debug.addActionListener(new LevelSelectionListener());
+               panel3.add(debug);
+               info = new JCheckBox();
+               info.setText("info");
+               info.setSelected(true);
+               info.addActionListener(new LevelSelectionListener());
+               panel3.add(info);
+               warn = new JCheckBox();
+               warn.setText("warn");
+               warn.setSelected(true);
+               warn.addActionListener(new LevelSelectionListener());
+               panel3.add(warn);
+               error = new JCheckBox();
+               error.setText("error");
+               error.addActionListener(new LevelSelectionListener());
+               panel3.add(error);
+       
+               contents.add(panel3, new GridBagConstraints(0, 2, 1, 1, 0, 0, 
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 
0, 0));
+               JSplitPane splitpane1 = new 
JSplitPane(JSplitPane.HORIZONTAL_SPLIT, logsTreeScrollPane, 
logViewer.getComponent());
+               splitpane1.setResizeWeight(0.2);
+               contents.add(splitpane1, new GridBagConstraints(0, 3, 1, 1, 1, 
1, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 
0));
                JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
                panel2.add(clearButton);
                panel2.add(exportButton);
-               contents.add(panel2, new GridBagConstraints(0, 2, 2, 1, 1, 0, 
GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 
0));
+               contents.add(panel2, new GridBagConstraints(0, 4, 3, 1, 1, 0, 
GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 
0));
+               
+               levelsList = new ArrayList<JCheckBox>();
+               levelsList.add(debug);
+               levelsList.add(error);
+               levelsList.add(trace);
+               levelsList.add(info);
+               levelsList.add(warn);
+               
+               //test();
        }
 
+
+       /**
+        * this function is only for testing whether logs 
+        * in different levels are displayed and filtered
+        * correctly or not
+        */
+       private void test() {
+               // TODO Auto-generated method stub
+               logger.debug("test for debug");
+               logger.error("test fo error");
+               logger.info("test for info");
+               logger.trace("test for trace");
+               logger.warn("test for warn");
+       }
+
+
+       /**
+        * This function is to calculate the seleted filter based on the event 
array from combobox.
+        * Since the level is removed from filter the indexes has been changed 
for the last two items.
+        * @return index of the filter parameter according to event array 
structure.
+        */
+       private int getSelectedFilterIndex(){
+               int index = filterTargetComboBox.getSelectedIndex();
+               return (index>1? index+1:index);
+       }
+
        public JComponent getComponent()
        {
                return contents;
@@ -127,7 +200,7 @@
        {
                allLogEvents.add(event);
                updateLogs(event[1]);
-               if (logEventMatches(event, 
filterTargetComboBox.getSelectedIndex(), getSelectedLog()))
+               if (logEventMatches(event, getSelectedFilterIndex(), 
getSelectedLog()))
                {
                        solicitedLogEvents.add(event);
                        logViewer.append(event[2].toUpperCase(), event[4], 
formatEvent(event));
@@ -215,6 +288,16 @@
 
                parent.insert(newChild, childIndex);
        }
+       
+       private ArrayList<String> getLevels(){
+               ArrayList<String> selectedLevels = new ArrayList<String>();
+               for(JCheckBox cb : levelsList){
+                       if (cb.isSelected())
+                               selectedLevels.add(cb.getText());
+               }
+               return selectedLevels;
+               
+       }
 
        /**
         * Updates <code>solicitedLogEvents</code> by filtering out 
<code>allLogEvents</code>.
@@ -229,15 +312,18 @@
                {
                        logViewer.clear();
                        solicitedLogEvents.clear();
-                       final int target = 
filterTargetComboBox.getSelectedIndex();
+                       final int target = getSelectedFilterIndex();
                        final String selectedPath = getSelectedLog();
+                       final  ArrayList<String> logLevels = getLevels();
                        for (int i = 0; (i < allLogEvents.size()) && (!cancel); 
i++)
                        {
                                final String[] event = allLogEvents.get(i);
-                               if (logEventMatches(event, target, 
selectedPath))
-                               {
-                                       solicitedLogEvents.add(event);
-                                       
logViewer.append(event[2].toUpperCase(), event[4], formatEvent(event));
+                               if (logLevels.contains(event[2])){
+                                       if (logEventMatches(event, target, 
selectedPath))
+                                       {
+                                               solicitedLogEvents.add(event);
+                                               
logViewer.append(event[2].toUpperCase(), event[4], formatEvent(event));
+                                       }
                                }
                        }
                }
@@ -362,6 +448,12 @@
                        logViewer.clear();
                }
        }
+       
+       class LevelSelectionListener implements ActionListener {
+               public void actionPerformed(ActionEvent e) {
+                       refreshSolicitedLogEvents();
+               }
+       }
 
        class ExportAction implements ActionListener {
                public void actionPerformed(ActionEvent e) {

Modified: 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
===================================================================
--- 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
 2012-03-15 22:00:37 UTC (rev 28557)
+++ 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
 2012-03-15 22:28:58 UTC (rev 28558)
@@ -26,10 +26,11 @@
                this.simpleLogViewer = simpleLogViewer;
 
                contents = new JPanel(new CardLayout());
+               contents.add(advancedLogViewer.getComponent(), "advanced");
                contents.add(simpleLogViewer.getComponent(), "simple");
-               contents.add(advancedLogViewer.getComponent(), "advanced");
 
                viewSelection = new JCheckBox("Show All Messages");
+               viewSelection.setSelected(true);
                viewSelection.addActionListener(new ViewSelectionAction());
 
                getContentPane().add(contents, BorderLayout.CENTER);

Modified: 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
===================================================================
--- 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
    2012-03-15 22:00:37 UTC (rev 28557)
+++ 
core3/impl/trunk/log-swing-impl/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
    2012-03-15 22:28:58 UTC (rev 28558)
@@ -136,6 +136,7 @@
                formattedEvent[3] = event.getThreadName();
                formattedEvent[4] = event.getMessage().toString();
 
+
                advancedLogViewer.addLogEvent(formattedEvent);
        }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to