
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