Revision: 8488
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=8488&view=rev
Author:   dnaber
Date:     2012-12-02 23:24:28 +0000 (Sun, 02 Dec 2012)
Log Message:
-----------
stand-alone GUI: the tray icon menu (reachable with the right mouse button on 
the tray icon) now has a checkbox to enable the embedded HTTP server

Modified Paths:
--------------
    trunk/JLanguageTool/CHANGES.txt
    trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java
    
trunk/JLanguageTool/src/main/resources/org/languagetool/MessagesBundle.properties

Modified: trunk/JLanguageTool/CHANGES.txt
===================================================================
--- trunk/JLanguageTool/CHANGES.txt     2012-12-02 22:24:07 UTC (rev 8487)
+++ trunk/JLanguageTool/CHANGES.txt     2012-12-02 23:24:28 UTC (rev 8488)
@@ -56,6 +56,9 @@
  -HTTP API: the Java API of HTTPServer has been modified in incompatible ways. 
You might get
   compile errors if you have used this class from your Java code.
 
+ -stand-alone GUI: the tray icon menu (reachable with the right mouse button 
on the tray
+  icon) now has a checkbox to enable the embedded HTTP server
+
  -stand-alone GUI: Fixed bug "Tray icon too big sometimes" (Sourceforge 
#3573078)
 
 

Modified: trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java
===================================================================
--- trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java    
2012-12-02 22:24:07 UTC (rev 8487)
+++ trunk/JLanguageTool/src/main/java/org/languagetool/gui/Main.java    
2012-12-02 23:24:28 UTC (rev 8488)
@@ -73,6 +73,7 @@
   private LanguageComboBox languageBox;
   private LanguageDetectionCheckbox autoDetectBox;
   private Cursor prevCursor;
+  private CheckboxMenuItem enableHttpsServerItem;
 
   private HTTPServer httpServer;
 
@@ -258,6 +259,10 @@
   private PopupMenu makePopupMenu() {
     final PopupMenu popup = new PopupMenu();
     final ActionListener rmbListener = new TrayActionRMBListener();
+    enableHttpsServerItem = new 
CheckboxMenuItem(StringTools.getLabel(messages.getString("tray_menu_enable_server")));
+    enableHttpsServerItem.setState(config.getRunServer());
+    enableHttpsServerItem.addItemListener(new TrayActionItemListener());
+    popup.add(enableHttpsServerItem);
     // Check clipboard text:
     final MenuItem checkClipboardItem =
             new 
MenuItem(StringTools.getLabel(messages.getString("guiMenuCheckClipboard")));
@@ -325,8 +330,7 @@
   void quit() {
     stopServer();
     try {
-      final Language currentLanguage = getCurrentLanguage();
-      
config.saveConfiguration(getCurrentLanguageTool(currentLanguage).getLanguage());
+      config.saveConfiguration(getCurrentLanguage());
     } catch (IOException e) {
       Tools.showError(e);
     }
@@ -378,27 +382,34 @@
     return s;
   }
 
-  private void maybeStartServer() {
+  private boolean maybeStartServer() {
     if (config.getRunServer()) {
       try {
         final HTTPServerConfig serverConfig = new 
HTTPServerConfig(config.getServerPort(), false);
         httpServer = new HTTPServer(serverConfig, true);
          httpServer.run();
+        if (enableHttpsServerItem != null) {
+          enableHttpsServerItem.setState(true);
+        }
       } catch (PortBindingException e) {
         final String message = e.getMessage();
         JOptionPane.showMessageDialog(null, message, "Error", 
JOptionPane.ERROR_MESSAGE);
+        return false;
       }
+      return true;
+    } else {
+      return false;
     }
   }
 
   private void stopServer() {
     if (httpServer != null) {
       httpServer.stop();
+      enableHttpsServerItem.setState(false);
       httpServer = null;
     }
   }
 
-  // method modified to add automatic language detection
   private Language getCurrentLanguage() {
     if (autoDetectBox.isSelected()) {
       return autoDetectBox.autoDetectLanguage(textArea.getText());
@@ -617,6 +628,35 @@
   // The System Tray stuff
   //
 
+  class TrayActionItemListener implements ItemListener {
+    @Override
+    public void itemStateChanged(ItemEvent e) {
+      try {
+        final Language language = getCurrentLanguage();
+        final ConfigurationDialog configDialog = configDialogs.get(language);
+        if (e.getStateChange() == ItemEvent.SELECTED) {
+          config.setRunServer(true);
+          final boolean serverStarted = maybeStartServer();
+          config.setRunServer(serverStarted);
+          enableHttpsServerItem.setState(serverStarted);
+          config.saveConfiguration(language);
+          if (configDialog != null) {
+            configDialog.setRunServer(true);
+          }
+        } else if (e.getStateChange() == ItemEvent.DESELECTED) {
+          config.setRunServer(false);
+          config.saveConfiguration(language);
+          if (configDialog != null) {
+            configDialog.setRunServer(false);
+          }
+          stopServer();
+        }
+      } catch (IOException ex) {
+        Tools.showError(ex);
+      }
+    }
+  }
+
   class TrayActionRMBListener implements ActionListener {
 
     @Override

Modified: 
trunk/JLanguageTool/src/main/resources/org/languagetool/MessagesBundle.properties
===================================================================
--- 
trunk/JLanguageTool/src/main/resources/org/languagetool/MessagesBundle.properties
   2012-12-02 22:24:07 UTC (rev 8487)
+++ 
trunk/JLanguageTool/src/main/resources/org/languagetool/MessagesBundle.properties
   2012-12-02 23:24:28 UTC (rev 8488)
@@ -268,3 +268,5 @@
 https_server_start_failed = LanguageTool HTTPS server could not be started on 
host "{0}", port {1} - maybe something else is running on that port already?
 
 https_server_start_failed_unknown_reason = LanguageTool HTTPS server could not 
be started on host "{0}", port {1}
+
+tray_menu_enable_server = Run HTTP server

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
DESIGN Expert tips on starting your parallel project right.
http://goparallel.sourceforge.net/
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits

Reply via email to