svn commit: r1340 - in logbackRCP/trunk/plugins/LogbackPlugin: . META-INF src/main/java/ch/qos/logback/eclipse src/main/java/ch/qos/logback/eclipse/model src/main/java/ch/qos/logback/eclipse/reciever src/main/java/ch/qos/logback/eclipse/views

Author: seb Date: Thu Feb 22 14:34:45 2007 New Revision: 1340 Added: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/LogbackPlugin.java Modified: logbackRCP/trunk/plugins/LogbackPlugin/ (props changed) logbackRCP/trunk/plugins/LogbackPlugin/META-INF/MANIFEST.MF logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java Log: Colored warn and error messages First version of buffered console Modified: logbackRCP/trunk/plugins/LogbackPlugin/META-INF/MANIFEST.MF ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/META-INF/MANIFEST.MF (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/META-INF/MANIFEST.MF Thu Feb 22 14:34:45 2007 @@ -11,5 +11,8 @@ Bundle-Vendor: QOS.ch Bundle-Localization: plugin Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime + org.eclipse.core.runtime, + org.eclipse.jface.text, + org.eclipse.jdt.core, + org.eclipse.ui.console Eclipse-LazyStart: true Added: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/LogbackPlugin.java ============================================================================== --- (empty file) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/LogbackPlugin.java Thu Feb 22 14:34:45 2007 @@ -0,0 +1,64 @@ +package ch.qos.logback.eclipse; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class LogbackPlugin extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "ch.qos.logback.eclipse"; + + // The shared instance + private static LogbackPlugin plugin; + + /** + * The constructor + */ + public LogbackPlugin() { + plugin = this; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static LogbackPlugin getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given plug-in + * relative path + * + * @param path + * the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} Modified: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Thu Feb 22 14:34:45 2007 @@ -17,9 +17,9 @@ static LoggingEvent[] NONE = new LoggingEvent[] {}; private static LoggingEventManager manager; - - private Collection loggingEventCollection = new ArrayList(); - private List listeners = new ArrayList(); + + private Collection<LoggingEvent> loggingEventCollection = new ArrayList<LoggingEvent>(); + private List<LoggingEventManagerListener> listeners = new ArrayList<LoggingEventManagerListener>(); public static LoggingEventManager getManager() { if (manager == null) Modified: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java Thu Feb 22 14:34:45 2007 @@ -19,7 +19,7 @@ public void run() { try { ServerSocket serverSocket = new ServerSocket(port); - PluginLogger.logInfo("Listening on port: " + port); + //PluginLogger.logInfo("Listening on port: " + port); while (true) { Socket socket = serverSocket.accept(); new Thread(new SocketNode(socket)).start(); Modified: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Thu Feb 22 14:34:45 2007 @@ -3,13 +3,12 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.DecoratingLabelProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISharedImages; 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.eclipse.model.LoggingEventManager; @@ -23,21 +22,28 @@ */ public class LogbackView extends ViewPart { - private TableViewer viewer; + + private TextConsoleViewer viewer; + private MessageConsole myConsole; private Action action1; private Action action2; - + public LogbackView() { launchSocketServer(); } - + public void createPartControl(Composite parent) { - viewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL); - - viewer.setContentProvider(new LoggingEventContentProvider()); - viewer.setLabelProvider(new DecoratingLabelProvider(new LoggingEventLabelProvider(), null)); - viewer.setInput(LoggingEventManager.getManager()); - + + myConsole = new MessageConsole("My Console", null); + myConsole.setWaterMarks(100000, 40000); + viewer = new TextConsoleViewer(parent, myConsole); + + LoggingEventContentProvider pro = new LoggingEventContentProvider(); + pro.setLabelProvider(new LoggingEventLabelProvider()); + pro.setConsole(myConsole); + + LoggingEventManager.getManager().addLoggingEventManagerListener(pro); + makeActions(); contributeToActionBars(); } @@ -75,18 +81,16 @@ } private void showMessage(String message) { - MessageDialog.openInformation(viewer.getControl().getShell(), "Logback View", message); + MessageDialog.openInformation(getSite().getShell(), "Logback View", message); } - /** - * Passing the focus request to the viewer's control. - */ - public void setFocus() { - viewer.getControl().setFocus(); - } - private void launchSocketServer() { new Thread(new SimpleSocketServer()).start(); } - + + @Override + public void setFocus() { + viewer.getControl().setFocus(); + } + } \ No newline at end of file Modified: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Thu Feb 22 14:34:45 2007 @@ -1,48 +1,39 @@ package ch.qos.logback.eclipse.views; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; +import java.io.IOException; + +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.console.MessageConsole; +import org.eclipse.ui.console.MessageConsoleStream; -import ch.qos.logback.eclipse.model.LoggingEventManager; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.spi.LoggingEvent; import ch.qos.logback.eclipse.model.LoggingEventManagerEvent; import ch.qos.logback.eclipse.model.LoggingEventManagerListener; /** - * The content provider class is responsible for providing objects to the - * view. + * The content provider class is responsible for providing objects to the view. * * @author Sébastien Pennec */ -public class LoggingEventContentProvider implements IStructuredContentProvider, - LoggingEventManagerListener { - - private TableViewer viewer; - private LoggingEventManager manager; +public class LoggingEventContentProvider implements LoggingEventManagerListener { - public Object[] getElements(Object inputElement) { - return manager.getLoggingEvents(); + private MessageConsole console; + + private Color cachedRed; + private LabelProvider labelProvider; + + public LoggingEventContentProvider() { + Display display = Display.getCurrent(); + cachedRed = new Color(display, 255, 0,0); } public void dispose() { - // do nothing - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - this.viewer = (TableViewer) viewer; - if (manager != null) { - manager.removeLoggingEventManagerListener(this); - } - manager = (LoggingEventManager) newInput; - if (manager != null) { - manager.addLoggingEventManagerListener(this); - } + cachedRed.dispose(); } - /** - * Called when one or more favorites items have been added and/or removed. - */ public void loggingEventsChanged(final LoggingEventManagerEvent event) { // If this is the UI thread, then make the change @@ -59,16 +50,25 @@ }); } - private void updateViewer(final LoggingEventManagerEvent event) { - // Use the setRedraw method to reduce flicker - // when adding or removing multiple items in a table. - viewer.getTable().setRedraw(false); + private void updateViewer(final LoggingEventManagerEvent event) { + LoggingEvent le = (LoggingEvent) event.getItemsAdded()[0]; + MessageConsoleStream stream = console.newMessageStream(); + if (le.getLevel().isGreaterOrEqual(Level.WARN)) { + stream.setColor(cachedRed); + } + stream.println(labelProvider.getText(le)); try { - viewer.remove(event.getItemsRemoved()); - viewer.add(event.getItemsAdded()); - } finally { - viewer.getTable().setRedraw(true); + stream.close(); + } catch (IOException e) { + //do nothing for now } } - + + public void setLabelProvider(LabelProvider provider) { + this.labelProvider = provider; + } + + public void setConsole(MessageConsole console) { + this.console = console; + } } Modified: logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java ============================================================================== --- logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java (original) +++ logbackRCP/trunk/plugins/LogbackPlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventLabelProvider.java Thu Feb 22 14:34:45 2007 @@ -1,13 +1,8 @@ package ch.qos.logback.eclipse.views; -import org.eclipse.jface.viewers.IColorProvider; 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.PlatformUI; -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; @@ -18,16 +13,12 @@ * * @author Sébastien Pennec */ -class LoggingEventLabelProvider extends LabelProvider implements IColorProvider { +class LoggingEventLabelProvider extends LabelProvider { private static String DEFAULT_PATTERN = "%date %level [%thread] %message"; private LoggerContext context; private PatternLayout patternLayout; - private Color red; - private Color gray; - private int count; - public LoggingEventLabelProvider() { context = new LoggerContext(); context.setName("Logback Plugin Context"); @@ -35,10 +26,6 @@ patternLayout.setContext(context); patternLayout.setPattern(DEFAULT_PATTERN); patternLayout.start(); - - Display display = PlatformUI.getWorkbench().getDisplay(); - red = new Color(display, 255, 0, 0); - gray = new Color(display, 240, 240, 240); } public String getText(Object element) { @@ -54,29 +41,8 @@ public Image getImage(Object element) { return null; } - - public Color getBackground(Object element) { - if (count++ % 2 == 0) { - return gray; - } else { - return null; - } - } - public Color getForeground(Object element) { - if (!(element instanceof LoggingEvent)) { - return null; - } - - LoggingEvent event = (LoggingEvent)element; - if (event.getLevel().isGreaterOrEqual(Level.WARN)) { - return red; - } - - return null; - } public void dispose() { - red.dispose(); } } \ No newline at end of file
participants (1)
-
noreply.seb@qos.ch