svn commit: r1351 - 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/reciever src/main/java/ch/qos/logback/eclipse/views

Author: seb Date: Mon Feb 26 12:54:28 2007 New Revision: 1351 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/reciever/SimpleSocketServer.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: Updated todo.txt The user can now enter a port to listen to 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 Mon Feb 26 12:54:28 2007 @@ -3,35 +3,43 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.console.MessageConsole; import org.eclipse.ui.console.TextConsoleViewer; -import ch.qos.logback.classic.PatternLayout; import ch.qos.logback.eclipse.dialog.LogbackPreferencesDialog; +import ch.qos.logback.eclipse.views.LogbackView; /** * This action prompts the user for a string to setup the PatternLayout */ public class LogbackPreferencesAction extends Action { + private static String PREF_ACTION_MESSAGE = "Preferences..."; + private final Shell shell; - private PatternLayout patternLayout; - private MessageConsole console; + private final LogbackView view; - public LogbackPreferencesAction(TextConsoleViewer viewer, PatternLayout layout, String text, MessageConsole console) { - super(text); + public LogbackPreferencesAction(TextConsoleViewer viewer, LogbackView view) { + super(PREF_ACTION_MESSAGE); shell = viewer.getControl().getShell(); - this.patternLayout = layout; - this.console = console; + this.view = view; } public void run() { - LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, patternLayout.getPattern(), console.getHighWaterMark()); - if (dialog.open() != InputDialog.OK) + LogbackPreferencesDialog dialog = new LogbackPreferencesDialog(shell, view.getPattern(), view + .getConsoleHighWaterMark(), view.getServerPort()); + if (dialog.open() != InputDialog.OK) { return; - patternLayout.stop(); - patternLayout.setPattern(dialog.getPattern()); - patternLayout.start(); + } + + if (!dialog.getPattern().equals(view.getPattern())) { + view.updatePattern(dialog.getPattern()); + } + + if (dialog.getHighWaterMark() != view.getConsoleHighWaterMark()) { + view.updateConsoleHighWaterMark(dialog.getHighWaterMark()); + } - console.setWaterMarks(console.getLowWaterMark(), 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 Mon Feb 26 12:54:28 2007 @@ -1,7 +1,5 @@ package ch.qos.logback.eclipse.dialog; - - import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; @@ -19,27 +17,34 @@ 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 + * 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 = "The watermark cannot be lower than " + LogbackView.LOW_WATERMARK; - + + 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; - + 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) { + public LogbackPreferencesDialog(Shell parentShell, String namePattern, int highWaterMark, + int serverPort) { super(parentShell); this.pattern = namePattern; this.highWaterMark = highWaterMark; + this.serverPort = serverPort; - setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE - | SWT.APPLICATION_MODAL); + setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL); } protected Control createDialogArea(Composite parent) { @@ -49,9 +54,18 @@ gridLayout.numColumns = 2; container.setLayout(gridLayout); + createPatternUIParts(container); + createWaterMarkUIParts(container); + createServerPortUIParts(container); + + initContent(); + + return container; + } + + private void createPatternUIParts(Composite container) { final Label infoLabel = new Label(container, SWT.NONE); - infoLabel - .setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1)); + infoLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1)); infoLabel.setText("Enter a pattern to setup the PatternLayout:"); final Label patternLabel = new Label(container, SWT.NONE); @@ -62,10 +76,11 @@ Rectangle bounds = patternField.getBounds(); bounds.width = 150; 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.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); @@ -74,9 +89,16 @@ waterMarkField = new Text(container, SWT.BORDER); waterMarkField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - - initContent(); - return container; + } + + private void createServerPortUIParts(Composite container) { + + final Label portLabel = new Label(container, SWT.NONE); + portLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false)); + portLabel.setText("Listening on port number"); + + portField = new Text(container, SWT.BORDER); + portField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); } private void initContent() { @@ -86,14 +108,22 @@ pattern = patternField.getText(); } }); - + 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) { + tmpServerPort = Integer.parseInt(portField.getText()); + } + }); } + protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("Logback View options"); @@ -102,19 +132,54 @@ public String getPattern() { return pattern; } - + public int getHighWaterMark() { return highWaterMark; } + public int getServerPort() { + return serverPort; + } + @Override protected void okPressed() { - if (tmpHighWaterMark > LogbackView.LOW_WATERMARK) { - highWaterMark = tmpHighWaterMark; + boolean result1 = checkWaterMark(); + boolean result2 = checkServerPort(); + if (result1 && result2) { super.okPressed(); - } else { - MessageDialog.openInformation(getShell(), "Logback View", ERROR_MESSAGE); + } + } + + 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); + portField.setText(String.valueOf(serverPort)); + return false; + } else { + if (tmpServerPort != -1) { + serverPort = tmpServerPort; + } + return true; + } + } + + private boolean portInBounds() { + if (tmpServerPort > 0 && tmpServerPort <= 65535) { + return true; } + return false; } } Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java Mon Feb 26 12:54:28 2007 @@ -1,5 +1,6 @@ package ch.qos.logback.eclipse.reciever; +import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; @@ -14,11 +15,33 @@ */ public class SimpleSocketServer implements Runnable { - static int port = 4321; - + private int port = 4321; + private ServerSocket serverSocket; + public void run() { + startAndLoop(); + } + + public void setPort(int port) { + this.port = port; + } + + public int getPort() { + return port; + } + + public void restart() { try { - ServerSocket serverSocket = new ServerSocket(port); + serverSocket.close(); + startAndLoop(); + } catch (IOException e) { + PluginLogger.logError(e); + } + } + + private void startAndLoop() { + try { + serverSocket = new ServerSocket(port); while (true) { Socket socket = serverSocket.accept(); new Thread(new SocketNode(socket)).start(); @@ -27,6 +50,4 @@ PluginLogger.logError(e); } } - - } 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 Mon Feb 26 12:54:28 2007 @@ -11,6 +11,7 @@ import org.eclipse.ui.console.TextConsoleViewer; import org.eclipse.ui.part.ViewPart; +import ch.qos.logback.eclipse.PluginLogger; import ch.qos.logback.eclipse.actions.LogbackPreferencesAction; import ch.qos.logback.eclipse.model.LoggingEventManager; import ch.qos.logback.eclipse.reciever.SimpleSocketServer; @@ -26,18 +27,19 @@ public static int LOW_WATERMARK = 400000; public static int DEFAULT_HIGH_WATERMARK = 1000000; - + private TextConsoleViewer viewer; private MessageConsole myConsole; private LoggingEventContentProvider provider; private LoggingEventLabelProvider labelProvider; private Action clearConsoleAction; - private static String PREF_ACTION_MESSAGE = "Preferences..."; + private SimpleSocketServer server; + private Thread serverThread; private LogbackPreferencesAction preferencesAction; public LogbackView() { - launchSocketServer(); + launchSocketServer(null); } public void createPartControl(Composite parent) { @@ -65,8 +67,7 @@ } private void makeActions() { - preferencesAction = new LogbackPreferencesAction(viewer, labelProvider.getPatternLayout(), - PREF_ACTION_MESSAGE, myConsole); + preferencesAction = new LogbackPreferencesAction(viewer, this); IMenuManager menu = getViewSite().getActionBars().getMenuManager(); menu.add(preferencesAction); @@ -86,8 +87,13 @@ } - private void launchSocketServer() { - new Thread(new SimpleSocketServer()).start(); + private void launchSocketServer(Integer port) { + server = new SimpleSocketServer(); + if (port != null) { + server.setPort(port.intValue()); + } + serverThread = new Thread(server); + serverThread.start(); } @Override @@ -101,4 +107,29 @@ provider.dispose(); } + public int getServerPort() { + return server.getPort(); + } + + public int getConsoleHighWaterMark() { + return myConsole.getHighWaterMark(); + } + + public String getPattern() { + return labelProvider.getPattern(); + } + + public void updatePattern(String pattern) { + labelProvider.updatePattern(pattern); + } + + public void updateConsoleHighWaterMark(int highWaterMark) { + myConsole.setWaterMarks(myConsole.getLowWaterMark(), highWaterMark); + } + + public void updateServerPort(Integer serverPort) { + launchSocketServer(serverPort); + PluginLogger.logInfo("Now listening on port: " + serverPort); + } + } \ 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 Mon Feb 26 12:54:28 2007 @@ -46,7 +46,13 @@ public void dispose() { } - public PatternLayout getPatternLayout() { - return patternLayout; + public String getPattern() { + return patternLayout.getPattern(); + } + + public void updatePattern(String pattern) { + patternLayout.stop(); + patternLayout.setPattern(pattern); + patternLayout.start(); } } \ No newline at end of file Modified: logbackPDE/trunk/plugins/ConsolePlugin/todo.txt ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/todo.txt (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Mon Feb 26 12:54:28 2007 @@ -4,8 +4,16 @@ Color one line each two lines with a gray background. ->LineStyleListener might do the trick (StyledText component). -OK -> Make the viewer always display the latest lines added - Is it possible to use the logger without bringing the ErrorLog view up? -Allow the user to change the socket's port \ No newline at end of file +Stack traces with links + +Filter logs: threshold + +Color certains lines. Based on keywords and colors. + +Save Preferences between sessions + +DONE: +Allow the user to change the socket's port +Make the viewer always display the latest lines added \ No newline at end of file
participants (1)
-
noreply.seb@qos.ch