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