
Author: seb Date: Mon Mar 26 21:45:42 2007 New Revision: 1462 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/views/LogbackView.java Log: Displaying message in case of port already in use 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 Mar 26 21:45:42 2007 @@ -3,6 +3,7 @@ import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; +import java.net.UnknownHostException; import org.eclipse.ui.IMemento; @@ -78,7 +79,15 @@ if (newPort != 0) { this.port = newPort; } - + } + + public boolean isPortFree() { + try { + Socket s = new Socket("localhost", port); + return !s.isConnected(); + } catch (Exception e) { + return true; + } } } 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 Mar 26 21:45:42 2007 @@ -8,6 +8,7 @@ import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; @@ -51,7 +52,7 @@ */ 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"; @@ -185,8 +186,7 @@ if (port != null) { server.setPort(port.intValue()); } - serverThread = new Thread(server); - serverThread.start(); + startServerThread(server); } @Override @@ -216,7 +216,6 @@ public void updateServerPort(Integer serverPort) { launchSocketServer(serverPort); - PluginLogger.logInfo("Now listening on port: " + serverPort); } private void initServer() { @@ -224,8 +223,18 @@ if (memento != null) { server.init(memento); } - serverThread = new Thread(server); - serverThread.start(); + startServerThread(server); + } + + private void startServerThread(SimpleSocketServer server) { + if (server.isPortFree()) { + serverThread = new Thread(server); + serverThread.start(); + PluginLogger.logInfo("Now listening on port: " + server.getPort()); + } else { + String errorMessage = "Unable to start SocketServer on port: " + server.getPort() + "."; + MessageDialog.openInformation(this.getSite().getShell(), "Logback View", errorMessage); + } } public void saveState(IMemento memento) { @@ -245,14 +254,14 @@ initServer(); if (memento != null) { IMemento mem = memento.getChild(TAG_DISPLAY); - if (mem == null) { + if (mem == null) { return; } - + tmpFontSize = mem.getInteger(TAG_FONTSIZE); tmpFontName = mem.getString(TAG_FONTNAME); } - + } public Viewer getViewer() { @@ -296,16 +305,16 @@ } return null; } - + public Font getFont() { return viewer.getTable().getFont(); } - + 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);