Author: slotia
Date: 2009-05-29 08:34:04 -0700 (Fri, 29 May 2009)
New Revision: 16850

Added:
   
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
   
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
   
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/QueueAppender.java
   core3/log-swing/trunk/src/main/resources/README-ICONS
   core3/log-swing/trunk/src/main/resources/console-error.png
   core3/log-swing/trunk/src/main/resources/console-info.png
   core3/log-swing/trunk/src/main/resources/console-warning.png
   core3/log-swing/trunk/src/main/resources/console.png
   core3/log-swing/trunk/src/main/resources/consoledialogbase.html
Removed:
   
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/TestTaskFactory.java
Modified:
   core3/log-swing/trunk/pom.xml
   
core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Added Cytoscape Console


Modified: core3/log-swing/trunk/pom.xml
===================================================================
--- core3/log-swing/trunk/pom.xml       2009-05-29 14:19:49 UTC (rev 16849)
+++ core3/log-swing/trunk/pom.xml       2009-05-29 15:34:04 UTC (rev 16850)
@@ -98,15 +98,10 @@
                        <version>1.0-snapshot</version>
                </dependency>
                <dependency>
-                       <groupId>org.ops4j.pax.logging</groupId>
-                       <artifactId>pax-logging-api</artifactId>
-                       <version>1.3.0</version>
+                       <groupId>log4j</groupId>
+                       <artifactId>log4j</artifactId>
+                       <version>1.2.15</version>
                </dependency>
-               <dependency>
-                       <groupId>org.ops4j.pax.logging</groupId>
-                       <artifactId>pax-logging-service</artifactId>
-                       <version>1.3.0</version>
-               </dependency>
        </dependencies>
 
 </project>

Added: 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
===================================================================
--- 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
   2009-05-29 14:19:49 UTC (rev 16849)
+++ 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleDialog.java
   2009-05-29 15:34:04 UTC (rev 16850)
@@ -0,0 +1,108 @@
+package org.cytoscape.log.internal;
+
+import java.io.*;
+import java.util.*;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.text.*;
+import javax.swing.text.html.*;
+
+class ConsoleDialog extends JDialog
+{
+       final static String COLOR_PARITY_TRUE  = "ffffff";
+       final static String COLOR_PARITY_FALSE = "eeeeee";
+       final static String ENTRY_TEMPLATE
+               = "<html><body bgcolor=\"#%s\">"
+               + "<table border=0 width=\"100%%\" cellspacing=5>"
+               + "<tr><td width=\"0%%\"><img src=\"%s\"></td>"
+               + "<td><h3>%s</h3></td></tr>"
+               + "<tr><td></td><td><font size=\"-2\" color=\"#555555\">"
+               + "%s</font></td></tr></table></body></html>";
+       final static Map<String,String> ICON_NAMES = new 
TreeMap<String,String>();
+       static
+       {
+               ICON_NAMES.put("error",         "console-error.png");
+               ICON_NAMES.put("info",          "console-info.png");
+               ICON_NAMES.put("warning",       "console-warning.png");
+       }
+       final static String BASE_HTML_PATH = "/consoledialogbase.html";
+
+       JEditorPane editorPane;
+       HTMLDocument document;
+       Element root;
+       boolean colorParity = true;
+       JScrollPane scrollPane;
+
+       public ConsoleDialog()
+       {
+               super((java.awt.Frame) null, "Console", false);
+               setDefaultCloseOperation(HIDE_ON_CLOSE);
+               setPreferredSize(new Dimension(650, 350));
+               setLayout(new BorderLayout());
+               editorPane = new JEditorPane();
+               editorPane.setEditable(false);
+               clearConsole();
+               scrollPane = new JScrollPane(editorPane);
+
+               add(scrollPane, BorderLayout.CENTER);
+               JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+               JButton clearButton = new JButton("  Clear  ");
+               clearButton.addActionListener(new ClearAction());
+               buttons.add(clearButton);
+               add(buttons, BorderLayout.PAGE_END);
+               pack();
+       }
+
+       class ClearAction implements ActionListener
+       {
+               public void actionPerformed(ActionEvent e)
+               {
+                       clearConsole();
+               }
+       }
+
+
+       void append(String iconName, String message, String timeStamp)
+       {
+               final String bgColor = (colorParity ? COLOR_PARITY_TRUE : 
COLOR_PARITY_FALSE);
+               try
+               {
+                       document.insertBeforeEnd(root,
+                               String.format(ENTRY_TEMPLATE,
+                                               bgColor, 
ICON_NAMES.get(iconName),
+                                               message, timeStamp));
+                       scrollToBottom();
+               }
+               catch (BadLocationException e) {}
+               catch (IOException e) {}
+               colorParity = !colorParity;
+       }
+
+       void scrollToBottom()
+       {
+               SwingUtilities.invokeLater(new Runnable()
+               {
+                       public void run()
+                       {
+                               JScrollBar scrollBar = 
scrollPane.getVerticalScrollBar();
+                               if (scrollBar != null)
+                                       
scrollBar.setValue(scrollBar.getMaximum());
+                       }
+               });
+       }
+
+       void clearConsole()
+       {
+               editorPane.setText("");
+               editorPane.setContentType("text/html");
+               try
+               {
+                       
editorPane.setPage(getClass().getResource(BASE_HTML_PATH));
+               }
+               catch (IOException e) {}
+               document = (HTMLDocument) editorPane.getDocument();
+               root = document.getRootElements()[0];
+               colorParity = true;
+       }
+}

Added: 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
===================================================================
--- 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
      2009-05-29 14:19:49 UTC (rev 16849)
+++ 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/ConsoleTaskFactory.java
      2009-05-29 15:34:04 UTC (rev 16850)
@@ -0,0 +1,93 @@
+package org.cytoscape.log.internal;
+
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskMonitor;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.Level;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.Appender;
+
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.Date;
+import java.text.DateFormat;
+
+public class ConsoleTaskFactory implements TaskFactory
+{
+       Task task = new ConsoleTask();
+
+       public Task getTask()
+       {
+               return task;
+       }
+}
+
+class ConsoleTask implements Task
+{
+       ConsoleDialog dialog = null;
+
+       public void run(TaskMonitor taskMonitor)
+       {
+               if (dialog == null)
+               {
+                       dialog = new ConsoleDialog();
+               }
+               dialog.setVisible(true);
+       }
+
+       public void cancel()
+       {
+       }
+}
+
+class ConsoleDialogUpdater implements Runnable
+{
+       static final Map<Integer,String> LEVEL_TO_ICON_MAP = new 
TreeMap<Integer,String>();
+       static
+       {
+               LEVEL_TO_ICON_MAP.put(Level.DEBUG.toInt(),      "info");
+               LEVEL_TO_ICON_MAP.put(Level.ERROR.toInt(),      "error");
+               LEVEL_TO_ICON_MAP.put(Level.FATAL.toInt(),      "error");
+               LEVEL_TO_ICON_MAP.put(Level.INFO.toInt(),       "info");
+               LEVEL_TO_ICON_MAP.put(Level.TRACE.toInt(),      "info");
+               LEVEL_TO_ICON_MAP.put(Level.WARN.toInt(),       "warning");
+       }
+       ConsoleDialog dialog;
+
+       public ConsoleDialogUpdater(ConsoleDialog dialog)
+       {
+               this.dialog = dialog;
+       }
+
+       public void run()
+       {
+               BlockingQueue<LoggingEvent> queue = new 
LinkedBlockingQueue<LoggingEvent>();
+               Appender appender = new QueueAppender(queue);
+               Logger logger = Logger.getLogger("org.cytoscape.userlog");
+               logger.setAdditivity(false);
+               logger.addAppender(appender);
+
+               while (true)
+               {
+                       LoggingEvent event = null;
+                       try
+                       {
+                               event = queue.take();
+                       }
+                       catch (InterruptedException e)
+                       {
+                               break;
+                       }
+                       String message = event.getMessage().toString();
+                       String icon = 
LEVEL_TO_ICON_MAP.get(event.getLevel().toInt());
+                       if (icon == null)
+                               icon = "info";
+                       String timeStamp = DateFormat.getInstance().format(new 
Date(event.getTimeStamp()));
+                       dialog.append(icon, message, timeStamp);
+               }
+       }
+}

Added: 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/QueueAppender.java
===================================================================
--- 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/QueueAppender.java
   2009-05-29 14:19:49 UTC (rev 16849)
+++ 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/QueueAppender.java
   2009-05-29 15:34:04 UTC (rev 16850)
@@ -0,0 +1,43 @@
+package org.cytoscape.log.internal;
+
+import java.util.Queue;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.spi.Filter;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.Layout;
+
+class QueueAppender extends AppenderSkeleton implements Appender
+{
+       final Queue<LoggingEvent> queue;
+
+       public QueueAppender(Queue<LoggingEvent> queue)
+       {
+               this.queue = queue;
+       }
+
+       public void append(LoggingEvent event)
+       {
+               for (Filter     filter = getFirstFilter();
+                               filter != null;
+                               filter = filter.getNext())
+               {
+                       final int result = filter.decide(event);
+                       if (result == Filter.ACCEPT)
+                               break;
+                       else if (result == Filter.DENY)
+                               return;
+               }
+               queue.offer(event);
+       }
+
+       public boolean requiresLayout()
+       {
+               return false;
+       }
+
+       public void close()
+       {
+       }
+}

Deleted: 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/TestTaskFactory.java
===================================================================
--- 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/TestTaskFactory.java
 2009-05-29 14:19:49 UTC (rev 16849)
+++ 
core3/log-swing/trunk/src/main/java/org/cytoscape/log/internal/TestTaskFactory.java
 2009-05-29 15:34:04 UTC (rev 16850)
@@ -1,30 +0,0 @@
-package org.cytoscape.log.internal;
-
-import org.cytoscape.work.Task;
-import org.cytoscape.work.TaskFactory;
-import org.cytoscape.work.TaskMonitor;
-
-import org.apache.log4j.Logger;
-
-public class TestTaskFactory implements TaskFactory
-{
-       public TestTaskFactory()
-       {
-       }
-
-       public Task getTask()
-       {
-               return new Task()
-               {
-                       public void run(TaskMonitor taskMonitor)
-                       {
-                               Logger logger = 
Logger.getLogger(TestTaskFactory.class);
-                               logger.info("wow!");
-                       }
-
-                       public void cancel()
-                       {
-                       }
-               };
-       }
-}

Modified: 
core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
    2009-05-29 14:19:49 UTC (rev 16849)
+++ 
core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
    2009-05-29 15:34:04 UTC (rev 16850)
@@ -4,11 +4,11 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                       http://www.springframework.org/schema/osgi 
http://www.springframework.org/schema/osgi/spring-osgi-1.0.xsd";
        default-lazy-init="false">
-       <osgi:service id="testTaskFactoryService" ref="testTaskFactory"
+       <osgi:service id="consoleTaskFactoryService" ref="consoleTaskFactory"
                interface="org.cytoscape.work.TaskFactory">
                <osgi:service-properties>
-                       <entry key="title" value="Test Blah"/>
-                       <entry key="preferredMenu" value="File"/>
+                       <entry key="title" value="Console"/>
+                       <entry key="preferredMenu" value="Help"/>
                </osgi:service-properties>
        </osgi:service>
 </beans>

Modified: 
core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context.xml 
2009-05-29 14:19:49 UTC (rev 16849)
+++ core3/log-swing/trunk/src/main/resources/META-INF/spring/bundle-context.xml 
2009-05-29 15:34:04 UTC (rev 16850)
@@ -16,6 +16,6 @@
 
        <context:annotation-config />
 
-       <bean id="testTaskFactory" 
class="org.cytoscape.log.internal.TestTaskFactory">
+       <bean id="consoleTaskFactory" 
class="org.cytoscape.log.internal.ConsoleTaskFactory">
        </bean>
 </beans>

Added: core3/log-swing/trunk/src/main/resources/README-ICONS
===================================================================
--- core3/log-swing/trunk/src/main/resources/README-ICONS       2009-05-29 
14:19:49 UTC (rev 16849)
+++ core3/log-swing/trunk/src/main/resources/README-ICONS       2009-05-29 
15:34:04 UTC (rev 16850)
@@ -0,0 +1,3 @@
+All icons, which are all files in this directory with the .png extension, are
+credited to the Free Desktop's Tango Project at http://tango.freedesktop.org.
+This project's icons are public domain.

Added: core3/log-swing/trunk/src/main/resources/console-error.png
===================================================================
(Binary files differ)


Property changes on: core3/log-swing/trunk/src/main/resources/console-error.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: core3/log-swing/trunk/src/main/resources/console-info.png
===================================================================
(Binary files differ)


Property changes on: core3/log-swing/trunk/src/main/resources/console-info.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: core3/log-swing/trunk/src/main/resources/console-warning.png
===================================================================
(Binary files differ)


Property changes on: 
core3/log-swing/trunk/src/main/resources/console-warning.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: core3/log-swing/trunk/src/main/resources/console.png
===================================================================
(Binary files differ)


Property changes on: core3/log-swing/trunk/src/main/resources/console.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: core3/log-swing/trunk/src/main/resources/consoledialogbase.html
===================================================================
--- core3/log-swing/trunk/src/main/resources/consoledialogbase.html     
2009-05-29 14:19:49 UTC (rev 16849)
+++ core3/log-swing/trunk/src/main/resources/consoledialogbase.html     
2009-05-29 15:34:04 UTC (rev 16850)
@@ -0,0 +1,2 @@
+<html>
+</html>


--~--~---------~--~----~------------~-------~--~----~
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