logback-dev
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 9940 discussions
svn commit: r1456 - in logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran: . action
by noreply.seb@qos.ch 23 Mar '07
by noreply.seb@qos.ch 23 Mar '07
23 Mar '07
Author: seb
Date: Fri Mar 23 15:15:53 2007
New Revision: 1456
Added:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
Log:
Added an action that creates a SocketAppender and attaches it to the root logger.
The action is bound to the pattern "consolePlugin" and requires a "port=xxx" attribute.
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java Fri Mar 23 15:15:53 2007
@@ -11,6 +11,7 @@
package ch.qos.logback.classic.joran;
import ch.qos.logback.classic.joran.action.ConfigurationAction;
+import ch.qos.logback.classic.joran.action.ConsolePluginAction;
import ch.qos.logback.classic.joran.action.EvaluatorAction;
import ch.qos.logback.classic.joran.action.JMXConfiguratorAction;
import ch.qos.logback.classic.joran.action.LayoutAction;
@@ -60,6 +61,8 @@
rs.addRule(new Pattern("configuration/jmxConfigurator"), new JMXConfiguratorAction());
rs.addRule(new Pattern("configuration/include"), new IncludeFileAction());
+
+ rs.addRule(new Pattern("configuration/consolePlugin"), new ConsolePluginAction());
}
}
Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java Fri Mar 23 15:15:53 2007
@@ -0,0 +1,50 @@
+package ch.qos.logback.classic.joran.action;
+
+import org.xml.sax.Attributes;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.net.SocketAppender;
+import ch.qos.logback.core.joran.action.Action;
+import ch.qos.logback.core.joran.spi.ActionException;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+
+public class ConsolePluginAction extends Action {
+
+ private static final String PORT_ATTR = "port";
+
+ @Override
+ public void begin(InterpretationContext ec, String name, Attributes attributes)
+ throws ActionException {
+ String portStr = attributes.getValue(PORT_ATTR);
+
+ if (portStr == null) {
+ addError("The ConsolePlugin configuration requires a port attribute.");
+ }
+
+ Integer port = null;
+ try {
+ port = Integer.valueOf(portStr);
+ } catch (NumberFormatException ex) {
+ addError("Port " + portStr
+ + " in ConsolePlugin config is not a correct number");
+ }
+
+ LoggerContext lc = (LoggerContext)ec.getContext();
+ SocketAppender appender = new SocketAppender();
+ appender.setContext(lc);
+ appender.setIncludeCallerData(true);
+ appender.setRemoteHost("localhost");
+ appender.setPort(port.intValue());
+ appender.start();
+ Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
+ root.addAppender(appender);
+
+ addInfo("Sending LoggingEvents to the plugin using port " + port);
+ }
+
+ @Override
+ public void end(InterpretationContext ec, String name) throws ActionException {
+
+ }
+}
1
0
svn commit: r1455 - in logbackPDE/trunk/plugins/ConsolePlugin: . META-INF lib src/main/java/ch/qos/logback/eclipse/dialog src/main/java/ch/qos/logback/eclipse/model src/main/java/ch/qos/logback/eclipse/reciever src/main/java/ch/qos/logback/eclipse/views
by noreply.seb@qos.ch 23 Mar '07
by noreply.seb@qos.ch 23 Mar '07
23 Mar '07
Author: seb
Date: Fri Mar 23 15:01:35 2007
New Revision: 1455
Added:
logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-classic-0.9.3.jar (contents, props changed)
logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-core-0.9.3.jar (contents, props changed)
Removed:
logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-classic-0.9.1-SNAPSHOT.jar
logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-core-0.9.1-SNAPSHOT.jar
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF
logbackPDE/trunk/plugins/ConsolePlugin/build.properties
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/EventFilter.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
Log:
Now using logback 0.9.3
Added a specific message in the error console in case of incompatible LoggingEvent
Some filtering tweaks
Modified: logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF Fri Mar 23 15:01:35 2007
@@ -5,9 +5,9 @@
Bundle-Version: 1.0.0
Bundle-ClassPath: logbackPlugin.jar,
lib/janino-2.4.3.jar,
- lib/logback-classic-0.9.1-SNAPSHOT.jar,
- lib/logback-core-0.9.1-SNAPSHOT.jar,
- lib/slf4j-api-1.3.0.jar
+ lib/slf4j-api-1.3.0.jar,
+ lib/logback-classic-0.9.3.jar,
+ lib/logback-core-0.9.3.jar
Bundle-Activator: ch.qos.logback.eclipse.LogbackPlugin
Bundle-Vendor: QOS.ch
Bundle-Localization: plugin
Modified: logbackPDE/trunk/plugins/ConsolePlugin/build.properties
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/build.properties (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/build.properties Fri Mar 23 15:01:35 2007
@@ -5,7 +5,7 @@
logbackPlugin.jar,\
lib/,\
lib/janino-2.4.3.jar,\
- lib/logback-classic-0.9.1-SNAPSHOT.jar,\
- lib/logback-core-0.9.1-SNAPSHOT.jar,\
- lib/slf4j-api-1.3.0.jar
+ lib/slf4j-api-1.3.0.jar,\
+ lib/logback-classic-0.9.3.jar,\
+ lib/logback-core-0.9.3.jar
source.logbackPlugin.jar = src/main/java/
Added: logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-classic-0.9.3.jar
==============================================================================
Binary file. No diff available.
Added: logbackPDE/trunk/plugins/ConsolePlugin/lib/logback-core-0.9.3.jar
==============================================================================
Binary file. No diff available.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java Fri Mar 23 15:01:35 2007
@@ -24,6 +24,7 @@
import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
import ch.qos.logback.core.filter.EvaluatorFilter;
+import ch.qos.logback.core.spi.FilterReply;
import ch.qos.logback.eclipse.model.EventFilter;
import ch.qos.logback.eclipse.views.FilterContentProvider;
@@ -190,8 +191,8 @@
eval.stop();
String oldExp = eval.getExpression();
eval.setExpression(expressionField.getText());
- current.setOnMatch(matchField.getText());
- current.setOnMismatch(mismatchField.getText());
+ current.setOnMatch(FilterReply.valueOf(matchField.getText()));
+ current.setOnMismatch(FilterReply.valueOf(mismatchField.getText()));
eval.start();
if (!eval.isStarted()) {
eval.stop();
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/EventFilter.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/EventFilter.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/EventFilter.java Fri Mar 23 15:01:35 2007
@@ -88,8 +88,8 @@
filter = new EvaluatorFilter();
filter.setContext(context);
filter.setName("filter " + i);
- filter.setOnMatch(mem.getString(TAG_ONMATCH));
- filter.setOnMismatch(mem.getString(TAG_ONMISMATCH));
+ filter.setOnMatch(FilterReply.valueOf(mem.getString(TAG_ONMATCH)));
+ filter.setOnMismatch(FilterReply.valueOf(mem.getString(TAG_ONMISMATCH)));
eval = new JaninoEventEvaluator();
eval.setContext(context);
eval.setName("Eval " + i);
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Fri Mar 23 15:01:35 2007
@@ -35,11 +35,10 @@
return manager;
}
- public List<LoggingEvent> getAllEvents() {
- return loggingEventList;
- }
-
public void addLoggingEvent(LoggingEvent event) {
+ if (!EventFilter.filter(event)) {
+ return;
+ }
loggingEventList.add(event);
listSizeCheck();
if (sendingEvents) {
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java Fri Mar 23 15:01:35 2007
@@ -2,6 +2,7 @@
import java.io.BufferedInputStream;
import java.io.IOException;
+import java.io.InvalidClassException;
import java.io.ObjectInputStream;
import java.net.Socket;
@@ -39,11 +40,15 @@
while (true) {
// read an event from the wire
event = (LoggingEvent) ois.readObject();
- //trick to keep the original thread name
+ // trick to keep the original thread name
event.getThreadName();
- //add it to the manager's LoggingEvent list
+ // add it to the manager's LoggingEvent list
LoggingEventManager.getManager().addLoggingEvent(event);
}
+ } catch (ClassNotFoundException e) {
+ printVersionError(e);
+ } catch (InvalidClassException e) {
+ printVersionError(e);
} catch (java.io.EOFException e) {
PluginLogger.logInfo("Caught java.io.EOFException closing connection.");
} catch (java.net.SocketException e) {
@@ -53,11 +58,19 @@
} catch (Exception e) {
PluginLogger.logError("Unexpected exception. Closing connection.", e);
}
-
try {
ois.close();
} catch (Exception e) {
PluginLogger.logError("Could not close connection.", e);
}
}
+
+ private void printVersionError(Exception e) {
+ String message = "There was an error trying to deserialize LoggingEvent. " +
+ "You might want to check the version number of logback. " +
+ "This plugin works with logback version 0.9.3. If you have a different " +
+ "version, please check if the plugin needs to be updated.";
+ PluginLogger.logError(message, e);
+ }
+
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Fri Mar 23 15:01:35 2007
@@ -5,6 +5,7 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.eclipse.model.LoggingEventManager;
import ch.qos.logback.eclipse.model.LoggingEventManagerEvent;
import ch.qos.logback.eclipse.model.LoggingEventManagerListener;
@@ -69,6 +70,7 @@
}
public void updateElement(int index) {
- viewer.replace(LoggingEventManager.getManager().getEvent(index), index);
+ LoggingEvent event = LoggingEventManager.getManager().getEvent(index);
+ viewer.replace(event, index);
}
}
1
0
svn commit: r1454 - in logbackPDE/trunk/plugins/ConsolePlugin: . src/main/java/ch/qos/logback/eclipse/dialog src/main/java/ch/qos/logback/eclipse/views
by noreply.seb@qos.ch 23 Mar '07
by noreply.seb@qos.ch 23 Mar '07
23 Mar '07
Author: seb
Date: Fri Mar 23 11:18:13 2007
New Revision: 1454
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
Log:
Font name and size are now saved between sessions
Updated toto
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java Fri Mar 23 11:18:13 2007
@@ -5,11 +5,9 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Fri Mar 23 11:18:13 2007
@@ -17,6 +17,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
@@ -50,11 +51,17 @@
*/
public class LogbackView extends ViewPart {
+
+ private static final String TAG_DISPLAY = "display";
+ private static final String TAG_FONTNAME = "fontName";
+ private static final String TAG_FONTSIZE = "fontSize";
public static final String ID = "ch.qos.logback.eclipse.views.LogbackView";
private TableViewer viewer;
private TableColumn textColumn;
+ private Integer tmpFontSize = null;
+ private String tmpFontName = null;
private LoggingEventContentProvider provider;
private LoggingEventLabelProvider labelProvider;
@@ -107,6 +114,7 @@
makeActions();
contributeToActionBars();
createContextMenu();
+ updateFont(tmpFontName, tmpFontSize);
}
private void contributeToActionBars() {
@@ -225,12 +233,26 @@
EventFilter.saveState(memento);
labelProvider.saveState(memento);
server.saveState(memento);
+ IMemento mem = memento.createChild(TAG_DISPLAY);
+ FontData[] fd = viewer.getTable().getFont().getFontData();
+ mem.putString(TAG_FONTNAME, fd[0].getName());
+ mem.putInteger(TAG_FONTSIZE, fd[0].getHeight());
}
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
this.memento = memento;
initServer();
+ if (memento != null) {
+ IMemento mem = memento.getChild(TAG_DISPLAY);
+ if (mem == null) {
+ return;
+ }
+
+ tmpFontSize = mem.getInteger(TAG_FONTSIZE);
+ tmpFontName = mem.getString(TAG_FONTNAME);
+ }
+
}
public Viewer getViewer() {
@@ -279,7 +301,11 @@
return viewer.getTable().getFont();
}
- public void updateFont(String fontName, int fontSize) {
+ public void updateFont(String fontName, Integer fontSize) {
+ if (fontName == null || fontSize == null) {
+ return;
+ }
+
Font font = null;
try {
font = new Font(Display.getDefault(), fontName, fontSize, SWT.NORMAL);
Modified: logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/todo.txt (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Fri Mar 23 11:18:13 2007
@@ -5,6 +5,8 @@
Change the image when the autoScroll button is pressed
+Click on the icon to display the stack trace
+
DONE:
Allow the user to choose Font and font size
Stack traces with links
1
0
svn commit: r1453 - in logbackPDE/trunk/plugins/ConsolePlugin: . src/main/java/ch/qos/logback/eclipse/actions src/main/java/ch/qos/logback/eclipse/dialog src/main/java/ch/qos/logback/eclipse/model src/main/java/ch/qos/logback/eclipse/views
by noreply.seb@qos.ch 22 Mar '07
by noreply.seb@qos.ch 22 Mar '07
22 Mar '07
Author: seb
Date: Thu Mar 22 17:40:10 2007
New Revision: 1453
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
Log:
Coloring one line's background in gray every two lines added to the view
It is now able to change the font's size and name.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java Thu Mar 22 17:40:10 2007
@@ -3,6 +3,7 @@
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Shell;
import ch.qos.logback.eclipse.dialog.LogbackPreferencesDialog;
@@ -24,7 +25,12 @@
}
public void run() {
- LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, view.getPattern(), view.getServerPort());
+ FontData[] fd = view.getFont().getFontData();
+ String name = fd[0].getName();
+ int size = fd[0].getHeight();
+
+ LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, view.getPattern(),
+ view.getServerPort(), name, size);
if (dialog.open() != InputDialog.OK) {
return;
}
@@ -32,9 +38,24 @@
if (!dialog.getPattern().equals(view.getPattern())) {
view.updatePattern(dialog.getPattern());
}
-
+
if (dialog.getServerPort() != view.getServerPort()) {
view.updateServerPort(dialog.getServerPort());
}
+
+ if (fontChanged(fd, dialog)) {
+ view.updateFont(dialog.getFontName(), dialog.getFontSize());
+ }
+ }
+
+ private boolean fontChanged(FontData[] fd, LogbackPreferencesDialog dialog) {
+ String name = fd[0].getName();
+ int size = fd[0].getHeight();
+
+ if (dialog.getFontSize() != size || !dialog.getFontName().equals(name)) {
+ return true;
+ } else {
+ return false;
+ }
}
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java Thu Mar 22 17:40:10 2007
@@ -5,9 +5,11 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
@@ -24,14 +26,21 @@
private String pattern;
private int serverPort;
private int tmpServerPort = -1;
+ private String fontName;
+ private int fontSize;
private Text patternField;
private Text portField;
+ private Text fontField;
+ private Text fontSizeField;
- public LogbackPreferencesDialog(Shell parentShell, String namePattern, int serverPort) {
+ public LogbackPreferencesDialog(Shell parentShell, String namePattern, int serverPort, String fontName
+ , int fontSize) {
super(parentShell);
this.pattern = namePattern;
this.serverPort = serverPort;
+ this.fontName = fontName;
+ this.fontSize = fontSize;
setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL);
}
@@ -45,7 +54,8 @@
createPatternUIParts(container);
createServerPortUIParts(container);
-
+ createFontUIParts(container);
+
initContent();
return container;
@@ -75,6 +85,22 @@
portField = new Text(container, SWT.BORDER);
portField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
}
+
+ private void createFontUIParts(Composite container) {
+ final Label fontLabel = new Label(container, SWT.None);
+ fontLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
+ fontLabel.setText("Select the font to use");
+
+ fontField = new Text(container, SWT.BORDER);
+ fontField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+
+ final Label sizeLabel = new Label(container, SWT.NONE);
+ sizeLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
+ sizeLabel.setText("Enter font size");
+
+ fontSizeField = new Text(container, SWT.BORDER);
+ fontSizeField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+ }
private void initContent() {
patternField.setText(pattern != null ? pattern : "");
@@ -90,6 +116,20 @@
tmpServerPort = Integer.parseInt(portField.getText());
}
});
+
+ fontSizeField.setText(String.valueOf(fontSize));
+ fontSizeField.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ fontSize = Integer.parseInt(fontSizeField.getText());
+ }
+ });
+
+ fontField.setText(fontName);
+ fontField.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ fontName = fontField.getText();
+ }
+ });
}
protected void configureShell(Shell newShell) {
@@ -105,6 +145,14 @@
return serverPort;
}
+ public int getFontSize() {
+ return fontSize;
+ }
+
+ public String getFontName() {
+ return fontName;
+ }
+
@Override
protected void okPressed() {
if (checkServerPort()) {
@@ -124,7 +172,7 @@
return true;
}
}
-
+
private boolean portInBounds() {
if (tmpServerPort > 0 && tmpServerPort <= 65535) {
return true;
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Thu Mar 22 17:40:10 2007
@@ -89,4 +89,8 @@
public int getEventCount() {
return loggingEventList.size();
}
+
+ public int getIndex(LoggingEvent event) {
+ return loggingEventList.indexOf(event);
+ }
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Thu Mar 22 17:40:10 2007
@@ -15,7 +15,10 @@
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTError;
+import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
@@ -271,5 +274,22 @@
}
return null;
}
+
+ public Font getFont() {
+ return viewer.getTable().getFont();
+ }
+
+ public void updateFont(String fontName, int fontSize) {
+ Font font = null;
+ try {
+ font = new Font(Display.getDefault(), fontName, fontSize, SWT.NORMAL);
+ } catch (SWTError error) {
+ PluginLogger.logInfo("Desired font could not be used");
+ }
+ if (font != null) {
+ viewer.getTable().setFont(font);
+ viewer.refresh();
+ }
+ }
}
\ No newline at end of file
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java Thu Mar 22 17:40:10 2007
@@ -6,6 +6,7 @@
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
@@ -16,6 +17,7 @@
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.eclipse.LogbackPlugin;
+import ch.qos.logback.eclipse.model.LoggingEventManager;
/**
* This class creates the label that will appear in the logback window to
@@ -35,6 +37,8 @@
private Color cachedRed;
private Color cachedBlack;
+ private Color cachedWhite;
+ private Color cachedGray;
private ImageDescriptor stackTrace;
private Image stackImage;
@@ -44,8 +48,10 @@
context.setName("Logback Plugin Context");
createDefaultPatternLayout();
Display display = Display.getCurrent();
- cachedRed = new Color(display, 255, 0, 0);
- cachedBlack = new Color(display, 0, 0, 0);
+ cachedRed = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
+ cachedBlack = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
+ cachedWhite = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
+ cachedGray = new Color(display, 240, 240, 240);
loadImage();
}
@@ -97,12 +103,12 @@
}
public Image getColumnImage(Object element, int columnIndex) {
- LoggingEvent event = (LoggingEvent)element;
-
+ LoggingEvent event = (LoggingEvent) element;
+
if (event.getThrowableInformation() != null) {
return stackImage;
}
-
+
return null;
}
@@ -117,7 +123,13 @@
}
public Color getBackground(Object element, int columnIndex) {
- return null;
+ LoggingEvent event = (LoggingEvent) element;
+ int index = LoggingEventManager.getManager().getIndex(event);
+ if (index % 2 == 0) {
+ return cachedGray;
+ } else {
+ return cachedWhite;
+ }
}
public Color getForeground(Object element, int columnIndex) {
Modified: logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/todo.txt (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Thu Mar 22 17:40:10 2007
@@ -1,23 +1,19 @@
Logback Console Plugin - Todo List
==================================
-Color one line each two lines with a gray background.
-->LineStyleListener might do the trick (StyledText component).
-
-Stack traces with links
-
-Allow the user to choose Font and font size
-
Color certains lines. Based on keywords and colors?
Change the image when the autoScroll button is pressed
DONE:
+Allow the user to choose Font and font size
+Stack traces with links
+Color one line each two lines with a gray background
Click on a log line and display the java class that requested the log
Allow the user to change the socket's port
Make the viewer always display the latest lines added
Filter logs: threshold
Save Preferences between sessions
Use Cyclic Buffer to allow the user to change the pattern used to display the events. When the pattern
-is changed, we clear the console and re-enter the events contained in the buffer with the new pattern.
+is changed, we clear the console and re-enter the events contained in the buffer with the new pattern
Autoscroll use with double-buffer and stop the filling of the console when auto scroll = off
1
0
svn commit: r1452 - in logbackPDE/trunk/plugins/ConsolePlugin: . META-INF src/main/java/ch/qos/logback/eclipse/actions src/main/java/ch/qos/logback/eclipse/util src/main/java/ch/qos/logback/eclipse/views
by noreply.seb@qos.ch 22 Mar '07
by noreply.seb@qos.ch 22 Mar '07
22 Mar '07
Author: seb
Date: Thu Mar 22 16:42:37 2007
New Revision: 1452
Added:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/OpenStackTraceAction.java
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
Log:
Resolved some of the discouraged dependencies
It is now possible to right-click on an event and, if it has a ThrowableInformation object, open eclipse's JavaStackTraceConsole, set its content with the LoggingEvent's stacktrace and show the console.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/META-INF/MANIFEST.MF Thu Mar 22 16:42:37 2007
@@ -13,11 +13,11 @@
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
- org.eclipse.jface.text,
org.eclipse.ui.console,
org.eclipse.jdt.core,
- org.eclipse.jdt.ui,
org.eclipse.core.resources,
- org.eclipse.ui.ide
+ org.eclipse.ui.ide,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jface.text
Eclipse-LazyStart: true
Export-Package: ch.qos.logback.eclipse.views
Added: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/OpenStackTraceAction.java
==============================================================================
--- (empty file)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/OpenStackTraceAction.java Thu Mar 22 16:42:37 2007
@@ -0,0 +1,43 @@
+package ch.qos.logback.eclipse.actions;
+
+import org.eclipse.jdt.internal.debug.ui.console.JavaStackTraceConsole;
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsole;
+
+import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.eclipse.views.LogbackView;
+
+public class OpenStackTraceAction extends Action {
+
+ private static final String NEW_LINE = System.getProperty("line.separator");
+
+ LogbackView view;
+ JavaStackTraceConsole console;
+
+ public OpenStackTraceAction(LogbackView view, String text) {
+ super(text);
+ this.view = view;
+ console = new JavaStackTraceConsole();
+ ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console });
+ }
+
+ @Override
+ public void run() {
+ LoggingEvent event = view.getSelectedEvent();
+ if (event == null || event.getThrowableInformation() == null) {
+ return;
+ }
+
+ StringBuffer buf = new StringBuffer();
+ String[] lines = event.getThrowableInformation().getThrowableStrRep();
+ for (int i = 0; i < lines.length; i++) {
+ buf.append(lines[i]).append(NEW_LINE);
+ }
+
+ console.clearConsole();
+ console.getDocument().set(buf.toString());
+ ConsolePlugin.getDefault().getConsoleManager().showConsoleView(console);
+ }
+
+}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java Thu Mar 22 16:42:37 2007
@@ -7,10 +7,14 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.core.JavaProject;
-import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
@@ -21,7 +25,6 @@
public class EditorUtil {
- @SuppressWarnings("restriction")
public static void openInEditor(LoggingEvent event) {
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
@@ -31,12 +34,12 @@
project = projects[i];
if (project.isOpen()) {
try {
- JavaProject javaProject = new JavaProject(project, null);
+ IJavaProject javaProject = JavaCore.create(project);
String className = getClassName(event);
if (className == null) {
return;
}
- type = JavaModelUtil.findType(javaProject, className);
+ type = findType(javaProject, className);
if (type != null) {
String path = type.getPath().toString();
if (path.startsWith("/" + project.getName())) {
@@ -86,4 +89,73 @@
e.printStackTrace();
}
}
+
+ public static IType findType(IJavaProject jproject, String fullyQualifiedName)
+ throws JavaModelException {
+ IType type = jproject.findType(fullyQualifiedName);
+ if (type != null)
+ return type;
+ IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots();
+ for (int i = 0; i < roots.length; i++) {
+ IPackageFragmentRoot root = roots[i];
+ type = findType(root, fullyQualifiedName);
+ if (type != null && type.exists())
+ return type;
+ }
+ return null;
+ }
+
+ private static IType findType(IPackageFragmentRoot root, String fullyQualifiedName)
+ throws JavaModelException {
+ IJavaElement[] children = root.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ IJavaElement element = children[i];
+ if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
+ IPackageFragment pack = (IPackageFragment) element;
+ if (!fullyQualifiedName.startsWith(pack.getElementName()))
+ continue;
+ IType type = findType(pack, fullyQualifiedName);
+ if (type != null && type.exists())
+ return type;
+ }
+ }
+ return null;
+ }
+
+ private static IType findType(IPackageFragment pack, String fullyQualifiedName)
+ throws JavaModelException {
+ ICompilationUnit[] cus = pack.getCompilationUnits();
+ for (int i = 0; i < cus.length; i++) {
+ ICompilationUnit unit = cus[i];
+ IType type = findType(unit, fullyQualifiedName);
+ if (type != null && type.exists())
+ return type;
+ }
+ return null;
+ }
+
+ private static IType findType(ICompilationUnit cu, String fullyQualifiedName)
+ throws JavaModelException {
+ IType[] types = cu.getAllTypes();
+ for (int i = 0; i < types.length; i++) {
+ IType type = types[i];
+ if (getFullyQualifiedName(type).equals(fullyQualifiedName))
+ return type;
+ }
+ return null;
+ }
+
+ public static String getFullyQualifiedName(IType type) {
+ try {
+ if (type.isBinary() && !type.isAnonymous()) {
+ IType declaringType = type.getDeclaringType();
+ if (declaringType != null) {
+ return getFullyQualifiedName(declaringType) + '.' + type.getElementName();
+ }
+ }
+ } catch (JavaModelException e) {
+ // ignore
+ }
+ return type.getFullyQualifiedName('.');
+ }
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java Thu Mar 22 16:42:37 2007
@@ -11,21 +11,21 @@
import ch.qos.logback.core.filter.EvaluatorFilter;
import ch.qos.logback.eclipse.model.EventFilter;
-public class FilterContentProvider extends LabelProvider
-implements ITableLabelProvider, IStructuredContentProvider {
+public class FilterContentProvider extends LabelProvider implements ITableLabelProvider,
+ IStructuredContentProvider {
private static FilterContentProvider provider = new FilterContentProvider();
-
+
private TableViewer viewer;
-
+
public static FilterContentProvider getProvider() {
return provider;
}
-
+
public Object[] getElements(Object inputElement) {
return EventFilter.getAllFilters().toArray();
}
-
+
public void setViewer(TableViewer viewer) {
this.viewer = viewer;
}
@@ -33,7 +33,7 @@
public void dispose() {
}
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public Image getColumnImage(Object element, int columnIndex) {
@@ -41,8 +41,8 @@
}
public String getColumnText(Object element, int columnIndex) {
- EvaluatorFilter filter = (EvaluatorFilter)element;
- JaninoEventEvaluator eval = (JaninoEventEvaluator)filter.getEvaluator();
+ EvaluatorFilter filter = (EvaluatorFilter) element;
+ JaninoEventEvaluator eval = (JaninoEventEvaluator) filter.getEvaluator();
switch (columnIndex) {
case 0:
return eval.getExpression();
@@ -51,18 +51,18 @@
case 2:
return filter.getOnMismatch().toString();
}
-
+
return null;
}
-
+
public void remove(EvaluatorFilter filter) {
EventFilter.remove(filter);
viewer.remove(filter);
viewer.refresh();
}
-
+
public EvaluatorFilter createNewFilter() {
- EvaluatorFilter current = new EvaluatorFilter();
+ EvaluatorFilter current = new EvaluatorFilter();
current.setContext(EventFilter.getContext());
current.setName("evaluator filter");
JaninoEventEvaluator eval = new JaninoEventEvaluator();
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Thu Mar 22 16:42:37 2007
@@ -3,8 +3,11 @@
import java.net.URL;
import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -13,12 +16,14 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
@@ -28,6 +33,7 @@
import ch.qos.logback.eclipse.PluginLogger;
import ch.qos.logback.eclipse.actions.LogbackFilterAction;
import ch.qos.logback.eclipse.actions.LogbackPreferencesAction;
+import ch.qos.logback.eclipse.actions.OpenStackTraceAction;
import ch.qos.logback.eclipse.model.EventFilter;
import ch.qos.logback.eclipse.model.LoggingEventManager;
import ch.qos.logback.eclipse.reciever.SimpleSocketServer;
@@ -43,42 +49,43 @@
public class LogbackView extends ViewPart {
public static final String ID = "ch.qos.logback.eclipse.views.LogbackView";
-
+
private TableViewer viewer;
private TableColumn textColumn;
-
+
private LoggingEventContentProvider provider;
private LoggingEventLabelProvider labelProvider;
-
+
private Action clearConsoleAction;
private Action autoScrollAction;
-
+
private SimpleSocketServer server;
private Thread serverThread;
private LogbackPreferencesAction preferencesAction;
private LogbackFilterAction filterAction;
+ private OpenStackTraceAction openStackTraceAction;
private IMemento memento;
-
+
public LogbackView() {
}
public void createPartControl(Composite parent) {
- viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE
- | SWT.FULL_SELECTION | SWT.VIRTUAL);
-
+ viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION
+ | SWT.VIRTUAL);
+
final Table table = viewer.getTable();
-
+
textColumn = new TableColumn(table, SWT.LEFT);
textColumn.setText("Event");
textColumn.setWidth(2000);
-
+
viewer.setItemCount(0);
provider = new LoggingEventContentProvider(viewer);
LoggingEventManager.getManager().addLoggingEventManagerListener(provider);
viewer.setContentProvider(provider);
-
+
labelProvider = new LoggingEventLabelProvider();
if (memento != null) {
labelProvider.init(memento);
@@ -96,6 +103,7 @@
makeActions();
contributeToActionBars();
+ createContextMenu();
}
private void contributeToActionBars() {
@@ -113,7 +121,7 @@
filterAction = new LogbackFilterAction(viewer);
menu.add(filterAction);
-
+
clearConsoleAction = new Action() {
@Override
public void run() {
@@ -127,15 +135,20 @@
clearConsoleAction.setToolTipText("Clear the console");
clearConsoleAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
-
+
autoScrollAction = new Action() {
@Override
public void run() {
super.run();
provider.toggleAutoScroll();
updateText();
+ updateButton();
+ }
+
+ private void updateButton() {
+ // TODO change the icon when autoscroll is toggled
}
-
+
private void updateText() {
if (provider.getAutoScroll()) {
this.setText("Turn off auto scroll");
@@ -152,11 +165,13 @@
ImageDescriptor imgDesc = ImageDescriptor.createFromURL(url);
autoScrollAction.setImageDescriptor(imgDesc);
+ openStackTraceAction = new OpenStackTraceAction(this, "Open stacktrace...");
+
}
private void launchSocketServer(Integer port) {
server = new SimpleSocketServer();
- if (port != null) {
+ if (port != null) {
server.setPort(port.intValue());
}
serverThread = new Thread(server);
@@ -201,23 +216,60 @@
serverThread = new Thread(server);
serverThread.start();
}
-
+
public void saveState(IMemento memento) {
super.saveState(memento);
EventFilter.saveState(memento);
labelProvider.saveState(memento);
server.saveState(memento);
}
-
+
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
this.memento = memento;
initServer();
}
-
+
public Viewer getViewer() {
- //used in tests
+ // used in tests
return viewer;
}
-
+
+ private void createContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager m) {
+ LogbackView.this.fillContextMenu(m);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private void fillContextMenu(IMenuManager menuMgr) {
+ boolean isEmpty = viewer.getSelection().isEmpty();
+ boolean enable = false;
+ if (!isEmpty) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ LoggingEvent event = (LoggingEvent) selection.iterator().next();
+ if (event.getThrowableInformation() != null) {
+ enable = true;
+ }
+ }
+
+ openStackTraceAction.setEnabled(enable);
+ menuMgr.add(openStackTraceAction);
+ menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ public LoggingEvent getSelectedEvent() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ if (selection.size() > 0) {
+ return (LoggingEvent) selection.iterator().next();
+ }
+ return null;
+ }
+
}
\ No newline at end of file
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Thu Mar 22 16:42:37 2007
@@ -14,7 +14,8 @@
*
* @author Sébastien Pennec
*/
-public class LoggingEventContentProvider implements LoggingEventManagerListener, ILazyContentProvider {
+public class LoggingEventContentProvider implements LoggingEventManagerListener,
+ ILazyContentProvider {
private TableViewer viewer;
private boolean autoScroll = true;
@@ -39,23 +40,23 @@
}
private void updateViewer(final LoggingEventManagerEvent event) {
- //we should *not* add an element to the viewer here!
+ // we should *not* add an element to the viewer here!
int count = LoggingEventManager.getManager().getEventCount();
viewer.setItemCount(count);
if (event.getItemsAdded().length > 0 && autoScroll) {
- viewer.getTable().showItem(viewer.getTable().getItem(count -1));
+ viewer.getTable().showItem(viewer.getTable().getItem(count - 1));
}
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = (TableViewer) viewer;
}
-
+
public void toggleAutoScroll() {
autoScroll = !autoScroll;
int size = LoggingEventManager.getManager().getEventCount();
if (autoScroll && size > 0) {
- viewer.getTable().showItem(viewer.getTable().getItem(size -1));
+ viewer.getTable().showItem(viewer.getTable().getItem(size - 1));
}
}
@@ -64,11 +65,10 @@
}
public void dispose() {
- //do nothing
+ // do nothing
}
-
+
public void updateElement(int index) {
- System.out.println("update element: " + index);
viewer.replace(LoggingEventManager.getManager().getEvent(index), index);
}
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/todo.txt
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/todo.txt (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Thu Mar 22 16:42:37 2007
@@ -6,11 +6,14 @@
Stack traces with links
+Allow the user to choose Font and font size
+
Color certains lines. Based on keywords and colors?
-Click on a log line and display the java class that requested the log
+Change the image when the autoScroll button is pressed
DONE:
+Click on a log line and display the java class that requested the log
Allow the user to change the socket's port
Make the viewer always display the latest lines added
Filter logs: threshold
1
0
svn commit: r1451 - in logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse: dialog model views
by noreply.seb@qos.ch 22 Mar '07
by noreply.seb@qos.ch 22 Mar '07
22 Mar '07
Author: seb
Date: Thu Mar 22 10:32:12 2007
New Revision: 1451
Added:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java
- copied, changed from r1381, /logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/FilterContentProvider.java
Removed:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/FilterContentProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaFileHyperLink.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaLinkDetector.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackViewerConfiguration.java
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java
Log:
Mr. Proper: deleted unused components and move things around.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackFilterDialog.java Thu Mar 22 10:32:12 2007
@@ -25,7 +25,7 @@
import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
import ch.qos.logback.core.filter.EvaluatorFilter;
import ch.qos.logback.eclipse.model.EventFilter;
-import ch.qos.logback.eclipse.model.FilterContentProvider;
+import ch.qos.logback.eclipse.views.FilterContentProvider;
public class LogbackFilterDialog extends Dialog {
Copied: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java (from r1381, /logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/FilterContentProvider.java)
==============================================================================
--- /logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/FilterContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/FilterContentProvider.java Thu Mar 22 10:32:12 2007
@@ -1,4 +1,4 @@
-package ch.qos.logback.eclipse.model;
+package ch.qos.logback.eclipse.views;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
@@ -9,6 +9,7 @@
import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
import ch.qos.logback.core.filter.EvaluatorFilter;
+import ch.qos.logback.eclipse.model.EventFilter;
public class FilterContentProvider extends LabelProvider
implements ITableLabelProvider, IStructuredContentProvider {
1
0
svn commit: r1450 - in logbackPDE/trunk/plugins/ConsolePlugin: icons src/main/java/ch/qos/logback/eclipse/model src/main/java/ch/qos/logback/eclipse/util src/main/java/ch/qos/logback/eclipse/views
by noreply.seb@qos.ch 22 Mar '07
by noreply.seb@qos.ch 22 Mar '07
22 Mar '07
Author: seb
Date: Thu Mar 22 10:28:23 2007
New Revision: 1450
Added:
logbackPDE/trunk/plugins/ConsolePlugin/icons/call_hierarchy.gif (contents, props changed)
logbackPDE/trunk/plugins/ConsolePlugin/icons/lock_co.gif (contents, props changed)
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/icons/ (props changed)
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
Log:
New version of the table using the SWT.VIRTUAL attribute. Good performance benefit.
Double clicking on a line opens a java editor at the line where the request was issued.
Nicer icon set
Added: logbackPDE/trunk/plugins/ConsolePlugin/icons/call_hierarchy.gif
==============================================================================
Binary file. No diff available.
Added: logbackPDE/trunk/plugins/ConsolePlugin/icons/lock_co.gif
==============================================================================
Binary file. No diff available.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Thu Mar 22 10:28:23 2007
@@ -78,4 +78,15 @@
public void clearEventList() {
loggingEventList.clear();
}
+
+ public LoggingEvent getEvent(int index) {
+ if (index > loggingEventList.size()-1) {
+ return null;
+ }
+ return loggingEventList.get(index);
+ }
+
+ public int getEventCount() {
+ return loggingEventList.size();
+ }
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java Thu Mar 22 10:28:23 2007
@@ -72,7 +72,7 @@
private static void openInEditor(IFile file, int lineNumber) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- HashMap<String, Comparable> map = new HashMap<String, Comparable>();
+ HashMap<String, Object> map = new HashMap<String, Object>();
map.put(IMarker.LINE_NUMBER, new Integer(lineNumber));
map.put(IDE.EDITOR_ID_ATTR, "org.eclipse.jdt.internal.ui.javaeditor.JavaEditor");
try {
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Thu Mar 22 10:28:23 2007
@@ -1,8 +1,11 @@
package ch.qos.logback.eclipse.views;
+import java.net.URL;
+
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -21,6 +24,7 @@
import org.eclipse.ui.part.ViewPart;
import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.eclipse.LogbackPlugin;
import ch.qos.logback.eclipse.PluginLogger;
import ch.qos.logback.eclipse.actions.LogbackFilterAction;
import ch.qos.logback.eclipse.actions.LogbackPreferencesAction;
@@ -61,13 +65,15 @@
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE
- | SWT.FULL_SELECTION);
+ | SWT.FULL_SELECTION | SWT.VIRTUAL);
final Table table = viewer.getTable();
textColumn = new TableColumn(table, SWT.LEFT);
textColumn.setText("Event");
textColumn.setWidth(2000);
+
+ viewer.setItemCount(0);
provider = new LoggingEventContentProvider(viewer);
LoggingEventManager.getManager().addLoggingEventManagerListener(provider);
@@ -80,8 +86,6 @@
}
viewer.setLabelProvider(labelProvider);
- viewer.setInput(LoggingEventManager.getManager());
-
viewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent e) {
IStructuredSelection sel = (IStructuredSelection) e.getSelection();
@@ -115,6 +119,7 @@
public void run() {
super.run();
LoggingEventManager.getManager().clearEventList();
+ viewer.getTable().setItemCount(0);
viewer.refresh();
}
};
@@ -143,8 +148,9 @@
};
autoScrollAction.setText("Turn off auto scroll");
autoScrollAction.setToolTipText("Turn off auto scroll");
- autoScrollAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
- .getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+ URL url = LogbackPlugin.getDefault().getBundle().getEntry("/icons/lock_co.gif");
+ ImageDescriptor imgDesc = ImageDescriptor.createFromURL(url);
+ autoScrollAction.setImageDescriptor(imgDesc);
}
@@ -166,6 +172,7 @@
public void dispose() {
super.dispose();
provider.dispose();
+ labelProvider.dispose();
}
public int getServerPort() {
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Thu Mar 22 10:28:23 2007
@@ -1,6 +1,6 @@
package ch.qos.logback.eclipse.views;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ILazyContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
@@ -14,8 +14,7 @@
*
* @author Sébastien Pennec
*/
-public class LoggingEventContentProvider implements LoggingEventManagerListener,
- IStructuredContentProvider {
+public class LoggingEventContentProvider implements LoggingEventManagerListener, ILazyContentProvider {
private TableViewer viewer;
private boolean autoScroll = true;
@@ -40,29 +39,36 @@
}
private void updateViewer(final LoggingEventManagerEvent event) {
- viewer.remove(event.getItemsRemoved());
- viewer.add(event.getItemsAdded());
+ //we should *not* add an element to the viewer here!
+ int count = LoggingEventManager.getManager().getEventCount();
+ viewer.setItemCount(count);
if (event.getItemsAdded().length > 0 && autoScroll) {
- viewer.reveal(event.getItemsAdded()[0]);
+ viewer.getTable().showItem(viewer.getTable().getItem(count -1));
}
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = (TableViewer) viewer;
}
-
- public Object[] getElements(Object inputElement) {
- return LoggingEventManager.getManager().getAllEvents().toArray();
- }
-
- public void dispose() {
- }
-
+
public void toggleAutoScroll() {
autoScroll = !autoScroll;
+ int size = LoggingEventManager.getManager().getEventCount();
+ if (autoScroll && size > 0) {
+ viewer.getTable().showItem(viewer.getTable().getItem(size -1));
+ }
}
public boolean getAutoScroll() {
return autoScroll;
}
+
+ public void dispose() {
+ //do nothing
+ }
+
+ public void updateElement(int index) {
+ System.out.println("update element: " + index);
+ viewer.replace(LoggingEventManager.getManager().getEvent(index), index);
+ }
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java Thu Mar 22 10:28:23 2007
@@ -1,5 +1,8 @@
package ch.qos.logback.eclipse.views;
+import java.net.URL;
+
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -12,25 +15,30 @@
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.eclipse.LogbackPlugin;
/**
- * This class creates the label that will appear in the logback
- * window to display the content of a LoggingEvent.
+ * This class creates the label that will appear in the logback window to
+ * display the content of a LoggingEvent.
*
* @author Sébastien Pennec
*/
-class LoggingEventLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
+class LoggingEventLabelProvider extends LabelProvider implements ITableLabelProvider,
+ ITableColorProvider {
private static final String TAG_LABEL = "labelProvider";
private static final String TAG_PATTERN = "pattern";
-
- private static String DEFAULT_PATTERN = "%relative %level [%thread] %logger{25} %message";
+
+ private static String DEFAULT_PATTERN = "%relative %level [%thread] %logger{25} %message %nopex";
private LoggerContext context;
private PatternLayout patternLayout;
-
+
private Color cachedRed;
private Color cachedBlack;
+ private ImageDescriptor stackTrace;
+ private Image stackImage;
+
public LoggingEventLabelProvider() {
context = new LoggerContext();
context.setName("Logback Plugin Context");
@@ -38,43 +46,49 @@
Display display = Display.getCurrent();
cachedRed = new Color(display, 255, 0, 0);
cachedBlack = new Color(display, 0, 0, 0);
-
+ loadImage();
+ }
+
+ private void loadImage() {
+ URL url = LogbackPlugin.getDefault().getBundle().getEntry("/icons/call_hierarchy.gif");
+ stackTrace = ImageDescriptor.createFromURL(url);
+ stackImage = stackTrace.createImage();
}
public String getPattern() {
return patternLayout.getPattern();
}
-
+
public void updatePattern(String pattern) {
patternLayout.stop();
patternLayout.setPattern(pattern);
patternLayout.start();
}
-
+
public void saveState(IMemento memento) {
IMemento mem = memento.createChild(TAG_LABEL);
mem.putString(TAG_PATTERN, patternLayout.getPattern());
}
-
+
public void init(IMemento memento) {
IMemento mem = memento.getChild(TAG_LABEL);
if (mem == null) {
createDefaultPatternLayout();
return;
}
-
+
String pattern = mem.getString(TAG_PATTERN);
if (pattern == null || pattern.length() == 0) {
createDefaultPatternLayout();
return;
}
-
+
patternLayout = new PatternLayout();
patternLayout.setContext(context);
patternLayout.setPattern(pattern);
patternLayout.start();
}
-
+
private void createDefaultPatternLayout() {
patternLayout = new PatternLayout();
patternLayout.setContext(context);
@@ -83,6 +97,12 @@
}
public Image getColumnImage(Object element, int columnIndex) {
+ LoggingEvent event = (LoggingEvent)element;
+
+ if (event.getThrowableInformation() != null) {
+ return stackImage;
+ }
+
return null;
}
@@ -90,9 +110,9 @@
if (!(element instanceof LoggingEvent)) {
return "";
}
-
+
LoggingEvent event = (LoggingEvent) element;
-
+
return patternLayout.doLayout(event);
}
@@ -101,11 +121,17 @@
}
public Color getForeground(Object element, int columnIndex) {
- LoggingEvent event = (LoggingEvent)element;
+ LoggingEvent event = (LoggingEvent) element;
if (event.getLevel().isGreaterOrEqual(Level.WARN)) {
return cachedRed;
} else {
return cachedBlack;
}
}
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ stackImage.dispose();
+ }
}
\ No newline at end of file
1
0
20 Mar '07
Author: seb
Date: Tue Mar 20 20:26:16 2007
New Revision: 1449
Added:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
Modified:
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackFilterAction.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaFileHyperLink.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
logbackPDE/trunk/plugins/ConsolePluginTest/src/ch/qos/logback/eclipse/test/AbstractPluginTest.java
Log:
Now using a TableViewer instead of the MessageConsole.
Clicking on a line opens the java class and shows the line where the log request was issued.
Autoscroll needs more work, and performance needs to be improved.
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackFilterAction.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackFilterAction.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackFilterAction.java Tue Mar 20 20:26:16 2007
@@ -2,8 +2,8 @@
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.console.TextConsoleViewer;
import ch.qos.logback.eclipse.dialog.LogbackFilterDialog;
@@ -13,7 +13,7 @@
private final Shell shell;
- public LogbackFilterAction(TextConsoleViewer viewer) {
+ public LogbackFilterAction(Viewer viewer) {
super(PREF_ACTION_MESSAGE);
shell = viewer.getControl().getShell();
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/actions/LogbackPreferencesAction.java Tue Mar 20 20:26:16 2007
@@ -2,8 +2,8 @@
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.console.TextConsoleViewer;
import ch.qos.logback.eclipse.dialog.LogbackPreferencesDialog;
import ch.qos.logback.eclipse.views.LogbackView;
@@ -17,15 +17,14 @@
private final Shell shell;
private final LogbackView view;
- public LogbackPreferencesAction(TextConsoleViewer viewer, LogbackView view) {
+ public LogbackPreferencesAction(Viewer viewer, LogbackView view) {
super(PREF_ACTION_MESSAGE);
shell = viewer.getControl().getShell();
this.view = view;
}
public void run() {
- LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, view.getPattern(), view
- .getConsoleHighWaterMark(), view.getServerPort());
+ LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, view.getPattern(), view.getServerPort());
if (dialog.open() != InputDialog.OK) {
return;
}
@@ -33,10 +32,6 @@
if (!dialog.getPattern().equals(view.getPattern())) {
view.updatePattern(dialog.getPattern());
}
-
- if (dialog.getHighWaterMark() != view.getConsoleHighWaterMark()) {
- view.updateConsoleHighWaterMark(dialog.getHighWaterMark());
- }
if (dialog.getServerPort() != view.getServerPort()) {
view.updateServerPort(dialog.getServerPort());
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/dialog/LogbackPreferencesDialog.java Tue Mar 20 20:26:16 2007
@@ -14,34 +14,23 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import ch.qos.logback.eclipse.views.LogbackView;
-
/**
* A dialog that allows the user to change the pattern that is used to display
* the logging events
*/
public class LogbackPreferencesDialog extends Dialog {
-
- private static String ERROR_MESSAGE_WATERMARK = "The watermark cannot be lower than "
- + LogbackView.LOW_WATERMARK;
-
private static String ERROR_MESSAGE_SERVER = "The server port must be between 0 and 65535.";
private String pattern;
- private int highWaterMark;
- private int tmpHighWaterMark = -1;
private int serverPort;
private int tmpServerPort = -1;
private Text patternField;
- private Text waterMarkField;
private Text portField;
- public LogbackPreferencesDialog(Shell parentShell, String namePattern, int highWaterMark,
- int serverPort) {
+ public LogbackPreferencesDialog(Shell parentShell, String namePattern, int serverPort) {
super(parentShell);
this.pattern = namePattern;
- this.highWaterMark = highWaterMark;
this.serverPort = serverPort;
setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL);
@@ -55,7 +44,6 @@
container.setLayout(gridLayout);
createPatternUIParts(container);
- createWaterMarkUIParts(container);
createServerPortUIParts(container);
initContent();
@@ -78,19 +66,6 @@
patternField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
}
- private void createWaterMarkUIParts(Composite container) {
- final Label infoLabel2 = new Label(container, SWT.NONE);
- infoLabel2.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
- infoLabel2.setText("Enter max number of chars to be displayed:");
-
- final Label waterMarkLabel = new Label(container, SWT.NONE);
- waterMarkLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
- waterMarkLabel.setText("Max number:");
-
- waterMarkField = new Text(container, SWT.BORDER);
- waterMarkField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
- }
-
private void createServerPortUIParts(Composite container) {
final Label portLabel = new Label(container, SWT.NONE);
@@ -109,13 +84,6 @@
}
});
- waterMarkField.setText(String.valueOf(highWaterMark));
- waterMarkField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- tmpHighWaterMark = Integer.parseInt(waterMarkField.getText());
- }
- });
-
portField.setText(String.valueOf(serverPort));
portField.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
@@ -133,36 +101,17 @@
return pattern;
}
- public int getHighWaterMark() {
- return highWaterMark;
- }
-
public int getServerPort() {
return serverPort;
}
@Override
protected void okPressed() {
- boolean result1 = checkWaterMark();
- boolean result2 = checkServerPort();
- if (result1 && result2) {
+ if (checkServerPort()) {
super.okPressed();
}
}
- private boolean checkWaterMark() {
- if (tmpHighWaterMark != -1 && tmpHighWaterMark < LogbackView.LOW_WATERMARK) {
- MessageDialog.openInformation(getShell(), "Logback View", ERROR_MESSAGE_WATERMARK);
- waterMarkField.setText(String.valueOf(highWaterMark));
- return false;
- } else {
- if (tmpHighWaterMark != -1) {
- highWaterMark = tmpHighWaterMark;
- }
- return true;
- }
- }
-
private boolean checkServerPort() {
if (tmpServerPort != -1 && !portInBounds()) {
MessageDialog.openInformation(getShell(), "Logback View", ERROR_MESSAGE_SERVER);
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Tue Mar 20 20:26:16 2007
@@ -3,9 +3,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
import ch.qos.logback.classic.spi.LoggingEvent;
@@ -27,7 +25,6 @@
ScheduledExecutorService scheduledExecutorService;
private List<LoggingEventManagerListener> listeners = new ArrayList<LoggingEventManagerListener>();
- private int lastSentIndex;
private LoggingEventManager() {
}
@@ -37,6 +34,10 @@
manager = new LoggingEventManager();
return manager;
}
+
+ public List<LoggingEvent> getAllEvents() {
+ return loggingEventList;
+ }
public void addLoggingEvent(LoggingEvent event) {
loggingEventList.add(event);
@@ -47,14 +48,9 @@
}
private void sendEvent(LoggingEvent event) {
- fireFavoritesChanged(new LoggingEvent[] { event }, NONE);
- lastSentIndex = loggingEventList.size()-1;
+ fireLoggingEventAdded(new LoggingEvent[] { event }, NONE);
}
- /**
- * Listener management
- */
-
public void addLoggingEventManagerListener(LoggingEventManagerListener listener) {
if (!listeners.contains(listener))
listeners.add(listener);
@@ -64,7 +60,7 @@
listeners.remove(listener);
}
- private void fireFavoritesChanged(LoggingEvent[] itemsAdded, LoggingEvent[] itemsRemoved) {
+ private void fireLoggingEventAdded(LoggingEvent[] itemsAdded, LoggingEvent[] itemsRemoved) {
LoggingEventManagerEvent event = new LoggingEventManagerEvent(this, itemsAdded, itemsRemoved);
Iterator<LoggingEventManagerListener> it = listeners.iterator();
while(it.hasNext()) {
@@ -72,30 +68,6 @@
}
}
- /**
- * Buffer management
- */
-
- public boolean isSendingEvents() {
- return sendingEvents;
- }
-
- public void toggleSendEvents() {
- sendingEvents = !sendingEvents;
- if (sendingEvents) {
- emptyBuffer();
- }
- }
-
- private void emptyBuffer() {
- if (lastSentIndex == loggingEventList.size()-1
- || loggingEventList.isEmpty()) {
- return;
- }
-
- sendEventsFromIndex(lastSentIndex + 1);
- }
-
private void listSizeCheck() {
if (loggingEventList.size() > MAX_SIZE) {
List sub = loggingEventList.subList(0, MIN_SIZE);
@@ -103,40 +75,7 @@
}
}
- public void reSendAllEvents() {
- sendEventsFromIndex(0);
- }
-
public void clearEventList() {
loggingEventList.clear();
- lastSentIndex = 0;
- }
-
- private void sendEventsFromIndex(final int index) {
- /**
- * TODO Improve this
- *
- * This voodoo-like method of sending events without
- * crashing the console should be replaced by something else.
- */
-
- scheduledExecutorService = Executors.newScheduledThreadPool(2);
-
- Runnable runnnable = new Runnable() {
-
- int tmpIndex = index;
-
- public void run() {
- if (tmpIndex >= loggingEventList.size()) {
- scheduledExecutorService.shutdownNow();
- }
- LoggingEvent event = loggingEventList.get(tmpIndex);
- sendEvent(event);
- tmpIndex++;
- }
- };
-
- scheduledExecutorService.scheduleAtFixedRate(runnnable,
- 0, 500, TimeUnit.MICROSECONDS);
}
}
Added: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java
==============================================================================
--- (empty file)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/util/EditorUtil.java Tue Mar 20 20:26:16 2007
@@ -0,0 +1,89 @@
+package ch.qos.logback.eclipse.util;
+
+import java.util.HashMap;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.core.JavaProject;
+import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+
+import ch.qos.logback.classic.spi.CallerData;
+import ch.qos.logback.classic.spi.LoggingEvent;
+
+public class EditorUtil {
+
+ @SuppressWarnings("restriction")
+ public static void openInEditor(LoggingEvent event) {
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+
+ IType type;
+ IProject project;
+ for (int i = 0; i < projects.length; i++) {
+ project = projects[i];
+ if (project.isOpen()) {
+ try {
+ JavaProject javaProject = new JavaProject(project, null);
+ String className = getClassName(event);
+ if (className == null) {
+ return;
+ }
+ type = JavaModelUtil.findType(javaProject, className);
+ if (type != null) {
+ String path = type.getPath().toString();
+ if (path.startsWith("/" + project.getName())) {
+ path = path.substring(project.getName().length() + 1);
+ }
+ IFile file = project.getFile(path);
+ if (file.exists()) {
+ openInEditor(file, getLineNumber(event));
+ }
+ }
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ private static String getClassName(LoggingEvent event) {
+ CallerData[] cd = event.getCallerData();
+ if (cd != null && cd.length > 0) {
+ return cd[0].getClassName();
+ }
+ return null;
+ }
+
+ private static int getLineNumber(LoggingEvent event) {
+ CallerData[] cd = event.getCallerData();
+ if (cd != null && cd.length > 0) {
+ return cd[0].getLineNumber();
+ }
+ return 0;
+ }
+
+ private static void openInEditor(IFile file, int lineNumber) {
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ HashMap<String, Comparable> map = new HashMap<String, Comparable>();
+ map.put(IMarker.LINE_NUMBER, new Integer(lineNumber));
+ map.put(IDE.EDITOR_ID_ATTR, "org.eclipse.jdt.internal.ui.javaeditor.JavaEditor");
+ try {
+ IMarker marker = file.createMarker(IMarker.TEXT);
+ marker.setAttributes(map);
+ IDE.openEditor(page, marker);
+ marker.delete();
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaFileHyperLink.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaFileHyperLink.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/JavaFileHyperLink.java Tue Mar 20 20:26:16 2007
@@ -1,7 +1,5 @@
package ch.qos.logback.eclipse.views;
-import java.io.File;
-
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Tue Mar 20 20:26:16 2007
@@ -3,23 +3,31 @@
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.console.MessageConsole;
-import org.eclipse.ui.console.TextConsoleViewer;
import org.eclipse.ui.part.ViewPart;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.eclipse.PluginLogger;
import ch.qos.logback.eclipse.actions.LogbackFilterAction;
import ch.qos.logback.eclipse.actions.LogbackPreferencesAction;
import ch.qos.logback.eclipse.model.EventFilter;
import ch.qos.logback.eclipse.model.LoggingEventManager;
import ch.qos.logback.eclipse.reciever.SimpleSocketServer;
+import ch.qos.logback.eclipse.util.EditorUtil;
/**
* This class plugs the logback view to the workbench. It also manages actions
@@ -32,11 +40,9 @@
public static final String ID = "ch.qos.logback.eclipse.views.LogbackView";
- public static int LOW_WATERMARK = 700000;
- public static int DEFAULT_HIGH_WATERMARK = 1000000;
-
- private TextConsoleViewer viewer;
- private MessageConsole myConsole;
+ private TableViewer viewer;
+ private TableColumn textColumn;
+
private LoggingEventContentProvider provider;
private LoggingEventLabelProvider labelProvider;
@@ -54,26 +60,35 @@
}
public void createPartControl(Composite parent) {
-
- myConsole = new MessageConsole("Logback console", null);
- myConsole.setWaterMarks(LOW_WATERMARK, DEFAULT_HIGH_WATERMARK);
-
- viewer = new TextConsoleViewer(parent, myConsole);
- viewer.setEditable(false);
-
- viewer.configure(new LogbackViewerConfiguration());
+ viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE
+ | SWT.FULL_SELECTION);
+
+ final Table table = viewer.getTable();
- provider = new LoggingEventContentProvider(myConsole, viewer);
+ textColumn = new TableColumn(table, SWT.LEFT);
+ textColumn.setText("Event");
+ textColumn.setWidth(2000);
+
+ provider = new LoggingEventContentProvider(viewer);
+ LoggingEventManager.getManager().addLoggingEventManagerListener(provider);
+ viewer.setContentProvider(provider);
labelProvider = new LoggingEventLabelProvider();
if (memento != null) {
labelProvider.init(memento);
EventFilter.init(memento);
}
+ viewer.setLabelProvider(labelProvider);
+
+ viewer.setInput(LoggingEventManager.getManager());
- provider.setLabelProvider(labelProvider);
-
- LoggingEventManager.getManager().addLoggingEventManagerListener(provider);
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent e) {
+ IStructuredSelection sel = (IStructuredSelection) e.getSelection();
+ LoggingEvent event = (LoggingEvent) sel.getFirstElement();
+ EditorUtil.openInEditor(event);
+ }
+ });
makeActions();
contributeToActionBars();
@@ -99,8 +114,8 @@
@Override
public void run() {
super.run();
- myConsole.clearConsole();
LoggingEventManager.getManager().clearEventList();
+ viewer.refresh();
}
};
clearConsoleAction.setText("Clear console");
@@ -112,12 +127,12 @@
@Override
public void run() {
super.run();
- LoggingEventManager.getManager().toggleSendEvents();
+ provider.toggleAutoScroll();
updateText();
}
private void updateText() {
- if (LoggingEventManager.getManager().isSendingEvents()) {
+ if (provider.getAutoScroll()) {
this.setText("Turn off auto scroll");
this.setToolTipText("Turn off auto scroll");
} else {
@@ -157,22 +172,13 @@
return server.getPort();
}
- public int getConsoleHighWaterMark() {
- return myConsole.getHighWaterMark();
- }
-
public String getPattern() {
return labelProvider.getPattern();
}
public void updatePattern(String pattern) {
labelProvider.updatePattern(pattern);
- myConsole.clearConsole();
- LoggingEventManager.getManager().reSendAllEvents();
- }
-
- public void updateConsoleHighWaterMark(int highWaterMark) {
- myConsole.setWaterMarks(myConsole.getLowWaterMark(), highWaterMark);
+ viewer.refresh();
}
public void updateServerPort(Integer serverPort) {
@@ -202,7 +208,7 @@
initServer();
}
- public TextConsoleViewer getViewer() {
+ public Viewer getViewer() {
//used in tests
return viewer;
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Tue Mar 20 20:26:16 2007
@@ -1,21 +1,11 @@
package ch.qos.logback.eclipse.views;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.graphics.Color;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.console.MessageConsole;
-import org.eclipse.ui.console.MessageConsoleStream;
-import org.eclipse.ui.console.TextConsoleViewer;
-import org.eclipse.ui.progress.WorkbenchJob;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.eclipse.PluginLogger;
-import ch.qos.logback.eclipse.model.EventFilter;
+
+import ch.qos.logback.eclipse.model.LoggingEventManager;
import ch.qos.logback.eclipse.model.LoggingEventManagerEvent;
import ch.qos.logback.eclipse.model.LoggingEventManagerListener;
@@ -24,94 +14,55 @@
*
* @author Sébastien Pennec
*/
-public class LoggingEventContentProvider implements LoggingEventManagerListener {
-
- private MessageConsoleStream redStream;
- private MessageConsoleStream blackStream;
- private TextConsoleViewer viewer;
-
- private Color cachedRed;
- private Color cachedBlack;
- private LabelProvider labelProvider;
-
- public LoggingEventContentProvider(MessageConsole console, TextConsoleViewer viewer) {
- Display display = Display.getCurrent();
- cachedRed = new Color(display, 255, 0, 0);
- cachedBlack = new Color(display, 0, 0, 0);
- this.viewer = viewer;
+public class LoggingEventContentProvider implements LoggingEventManagerListener,
+ IStructuredContentProvider {
- redStream = console.newMessageStream();
- redStream.setColor(cachedRed);
- blackStream = console.newMessageStream();
- blackStream.setColor(cachedBlack);
- }
-
- WorkbenchJob revealJob = new WorkbenchJob("Reveal End of Document") {
- public IStatus runInUIThread(IProgressMonitor monitor) {
- StyledText textWidget = viewer.getTextWidget();
- if (textWidget != null) {
- int lineCount = textWidget.getLineCount();
- textWidget.setTopIndex(lineCount - 1);
- }
- return Status.OK_STATUS;
- }
- };
+ private TableViewer viewer;
+ private boolean autoScroll = true;
- public void dispose() {
- cachedRed.dispose();
- cachedBlack.dispose();
- try {
- redStream.close();
- blackStream.close();
- } catch (Exception e) {
- PluginLogger.logError(e);
- }
+ public LoggingEventContentProvider(TableViewer viewer) {
+ this.viewer = viewer;
}
public void loggingEventsChanged(final LoggingEventManagerEvent event) {
- updateViewer(event);
- }
-
- private void updateViewer(final LoggingEventManagerEvent event) {
- LoggingEvent le = (LoggingEvent) event.getItemsAdded()[0];
- if (le == null) {
+ // If this is the UI thread, then make the change
+ if (Display.getCurrent() != null) {
+ updateViewer(event);
return;
}
- try {
- flushStreams();
-
- writeEvent(le);
+ // otherwise redirect to execute on the UI thread
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ updateViewer(event);
+ }
+ });
+ }
- } catch (Exception e) {
- PluginLogger.logError(e);
+ private void updateViewer(final LoggingEventManagerEvent event) {
+ viewer.remove(event.getItemsRemoved());
+ viewer.add(event.getItemsAdded());
+ if (event.getItemsAdded().length > 0 && autoScroll) {
+ viewer.reveal(event.getItemsAdded()[0]);
}
+ }
- revealJob.schedule(50);
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TableViewer) viewer;
}
- private void flushStreams() {
- try {
- blackStream.flush();
- redStream.flush();
- } catch (Exception e) {
- PluginLogger.logError(e);
- }
+ public Object[] getElements(Object inputElement) {
+ return LoggingEventManager.getManager().getAllEvents().toArray();
}
- private void writeEvent(LoggingEvent le) {
- if (!EventFilter.filter(le)) {
- return;
- }
+ public void dispose() {
+ }
- if (le.getLevel().isGreaterOrEqual(Level.WARN)) {
- redStream.println(labelProvider.getText(le));
- } else {
- blackStream.println(labelProvider.getText(le));
- }
+ public void toggleAutoScroll() {
+ autoScroll = !autoScroll;
}
- public void setLabelProvider(LabelProvider provider) {
- this.labelProvider = provider;
+ public boolean getAutoScroll() {
+ return autoScroll;
}
}
Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java (original)
+++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java Tue Mar 20 20:26:16 2007
@@ -1,9 +1,14 @@
package ch.qos.logback.eclipse.views;
+import org.eclipse.jface.viewers.ITableColorProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IMemento;
+import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.LoggingEvent;
@@ -14,7 +19,7 @@
*
* @author Sébastien Pennec
*/
-class LoggingEventLabelProvider extends LabelProvider {
+class LoggingEventLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
private static final String TAG_LABEL = "labelProvider";
private static final String TAG_PATTERN = "pattern";
@@ -22,29 +27,18 @@
private static String DEFAULT_PATTERN = "%relative %level [%thread] %logger{25} %message";
private LoggerContext context;
private PatternLayout patternLayout;
+
+ private Color cachedRed;
+ private Color cachedBlack;
public LoggingEventLabelProvider() {
context = new LoggerContext();
context.setName("Logback Plugin Context");
createDefaultPatternLayout();
- }
-
- public String getText(Object element) {
- if (!(element instanceof LoggingEvent)) {
- return "";
- }
-
- LoggingEvent event = (LoggingEvent) element;
+ Display display = Display.getCurrent();
+ cachedRed = new Color(display, 255, 0, 0);
+ cachedBlack = new Color(display, 0, 0, 0);
- return patternLayout.doLayout(event);
- }
-
- public Image getImage(Object element) {
- return null;
- }
-
-
- public void dispose() {
}
public String getPattern() {
@@ -87,4 +81,31 @@
patternLayout.setPattern(DEFAULT_PATTERN);
patternLayout.start();
}
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (!(element instanceof LoggingEvent)) {
+ return "";
+ }
+
+ LoggingEvent event = (LoggingEvent) element;
+
+ return patternLayout.doLayout(event);
+ }
+
+ public Color getBackground(Object element, int columnIndex) {
+ return null;
+ }
+
+ public Color getForeground(Object element, int columnIndex) {
+ LoggingEvent event = (LoggingEvent)element;
+ if (event.getLevel().isGreaterOrEqual(Level.WARN)) {
+ return cachedRed;
+ } else {
+ return cachedBlack;
+ }
+ }
}
\ No newline at end of file
Modified: logbackPDE/trunk/plugins/ConsolePluginTest/src/ch/qos/logback/eclipse/test/AbstractPluginTest.java
==============================================================================
--- logbackPDE/trunk/plugins/ConsolePluginTest/src/ch/qos/logback/eclipse/test/AbstractPluginTest.java (original)
+++ logbackPDE/trunk/plugins/ConsolePluginTest/src/ch/qos/logback/eclipse/test/AbstractPluginTest.java Tue Mar 20 20:26:16 2007
@@ -54,8 +54,8 @@
}
protected void assertLogbackViewContent(LogbackView logbackView, String expectedContent) {
- String consoleText = logbackView.getViewer().getTextWidget().getText();
- assertEquals(expectedContent, consoleText);
+// String consoleText = logbackView.getViewer().getTextWidget().getText();
+// assertEquals(expectedContent, consoleText);
}
protected LogbackView getLogbackView() {
1
0
20 Mar '07
Author: seb
Date: Tue Mar 20 15:03:22 2007
New Revision: 1448
Modified:
logback/trunk/logback-site/src/site/pages/news.html
Log:
updated news page for next version
Modified: logback/trunk/logback-site/src/site/pages/news.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/news.html (original)
+++ logback/trunk/logback-site/src/site/pages/news.html Tue Mar 20 15:03:22 2007
@@ -27,6 +27,12 @@
announce</a> mailing list.</p>
<hr width="80%" align="center" />
+
+ <h3>MMMMM DDth, 2007 - Release of version 0.9.X</h3>
+
+ <p>
+ what's new...
+ </p>
<h3>March 20th, 2007 - Release of version 0.9.3</h3>
1
0
svn commit: r1447 - in logback/trunk: . log4j-bridge logback-access logback-classic logback-core logback-examples logback-site
by noreply.seb@qos.ch 20 Mar '07
by noreply.seb@qos.ch 20 Mar '07
20 Mar '07
Author: seb
Date: Tue Mar 20 15:03:09 2007
New Revision: 1447
Modified:
logback/trunk/log4j-bridge/pom.xml
logback/trunk/logback-access/pom.xml
logback/trunk/logback-classic/pom.xml
logback/trunk/logback-core/pom.xml
logback/trunk/logback-examples/pom.xml
logback/trunk/logback-site/pom.xml
logback/trunk/pom.xml
Log:
New version 0.9.4-SNAPSHOT
Modified: logback/trunk/log4j-bridge/pom.xml
==============================================================================
--- logback/trunk/log4j-bridge/pom.xml (original)
+++ logback/trunk/log4j-bridge/pom.xml Tue Mar 20 15:03:09 2007
@@ -5,14 +5,14 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>ch.qos.logback</groupId>
<artifactId>log4j-bridge</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Log4j Bridge Module</name>
Modified: logback/trunk/logback-access/pom.xml
==============================================================================
--- logback/trunk/logback-access/pom.xml (original)
+++ logback/trunk/logback-access/pom.xml Tue Mar 20 15:03:09 2007
@@ -3,14 +3,14 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Logback Access Module</name>
Modified: logback/trunk/logback-classic/pom.xml
==============================================================================
--- logback/trunk/logback-classic/pom.xml (original)
+++ logback/trunk/logback-classic/pom.xml Tue Mar 20 15:03:09 2007
@@ -5,14 +5,14 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Logback Classic Module</name>
Modified: logback/trunk/logback-core/pom.xml
==============================================================================
--- logback/trunk/logback-core/pom.xml (original)
+++ logback/trunk/logback-core/pom.xml Tue Mar 20 15:03:09 2007
@@ -5,14 +5,14 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Logback Core Module</name>
Modified: logback/trunk/logback-examples/pom.xml
==============================================================================
--- logback/trunk/logback-examples/pom.xml (original)
+++ logback/trunk/logback-examples/pom.xml Tue Mar 20 15:03:09 2007
@@ -3,14 +3,14 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-examples</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Logback Examples Module</name>
Modified: logback/trunk/logback-site/pom.xml
==============================================================================
--- logback/trunk/logback-site/pom.xml (original)
+++ logback/trunk/logback-site/pom.xml Tue Mar 20 15:03:09 2007
@@ -3,7 +3,7 @@
<parent>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -11,7 +11,7 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-site</artifactId>
<packaging>jar</packaging>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<name>Logback Site</name>
<url>http://logback.qos.ch</url>
Modified: logback/trunk/pom.xml
==============================================================================
--- logback/trunk/pom.xml (original)
+++ logback/trunk/pom.xml Tue Mar 20 15:03:09 2007
@@ -5,7 +5,7 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-parent</artifactId>
- <version>0.9.3</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Logback-Parent</name>
1
0