Revision: 5943
          http://sourceforge.net/p/jump-pilot/code/5943
Author:   edso
Date:     2018-09-25 13:03:23 +0000 (Tue, 25 Sep 2018)
Log Message:
-----------
finetune macos integration
add Preferences
add a static OptionsPlugin execute() utilized by apple handler

Modified Paths:
--------------
    core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java
    
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/OptionsPlugIn.java

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java     
2018-09-25 11:30:30 UTC (rev 5942)
+++ core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java     
2018-09-25 13:03:23 UTC (rev 5943)
@@ -142,6 +142,7 @@
 import com.vividsolutions.jump.workbench.ui.cursortool.editing.EditingPlugIn;
 import com.vividsolutions.jump.workbench.ui.images.IconLoader;
 import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
+import com.vividsolutions.jump.workbench.ui.plugin.OptionsPlugIn;
 import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
 import com.vividsolutions.jump.workbench.ui.plugin.SaveProjectPlugIn;
 import 
com.vividsolutions.jump.workbench.ui.plugin.ViewAttributesPlugIn.ViewAttributesFrame;
@@ -2365,18 +2366,24 @@
       Class<?> preferencesHandlerClass = findClass("PreferencesHandler");
 
       try {
-        // create instance of app
-        Object application = applicationClass.getConstructor((Class[]) 
null).newInstance((Object[]) null);
-        
+        // fetch instance of app
+        //Object application = applicationClass.getConstructor((Class[]) 
null).newInstance((Object[]) null);
+        Object application = 
applicationClass.getDeclaredMethod("getApplication").invoke(null);
+
         Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(),
             new Class<?>[] { quitHandlerClass, aboutHandlerClass, 
openFilesHandlerClass, preferencesHandlerClass },
             this);
 
-        applicationClass.getDeclaredMethod("setQuitHandler", 
quitHandlerClass).invoke(application, proxy);
-        applicationClass.getDeclaredMethod("setAboutHandler", 
aboutHandlerClass).invoke(application, proxy);
-        applicationClass.getDeclaredMethod("setOpenFileHandler", 
openFilesHandlerClass).invoke(application, proxy);
-        applicationClass.getDeclaredMethod("setPreferencesHandler", 
preferencesHandlerClass).invoke(application, proxy);
-      } catch (InstantiationException | IllegalAccessException | 
IllegalArgumentException | InvocationTargetException
+        if (quitHandlerClass != null)
+          applicationClass.getDeclaredMethod("setQuitHandler", 
quitHandlerClass).invoke(application, proxy);
+        if (aboutHandlerClass != null)
+          applicationClass.getDeclaredMethod("setAboutHandler", 
aboutHandlerClass).invoke(application, proxy);
+        if (openFilesHandlerClass != null)
+          applicationClass.getDeclaredMethod("setOpenFileHandler", 
openFilesHandlerClass).invoke(application, proxy);
+        if (preferencesHandlerClass != null)
+          applicationClass.getDeclaredMethod("setPreferencesHandler", 
preferencesHandlerClass).invoke(application,
+              proxy);
+      } catch ( /*InstantiationException |*/ IllegalAccessException | 
IllegalArgumentException | InvocationTargetException
           | NoSuchMethodException | SecurityException e) {
         Logger.error(e);
       }
@@ -2403,6 +2410,7 @@
     @Override
     public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
       if ("openFiles".equals(method.getName())) {
+        // TODO: implement
 //        if (args[0] != null) {
 //          Object files = 
args[0].getClass().getMethod("getFiles").invoke(args[0]);
 //          if (files instanceof List) {
@@ -2421,8 +2429,7 @@
       } else if ("handleAbout".equals(method.getName())) {
           AboutDialog.instance(getContext()).setVisible(true);
       } else if ("handlePreferences".equals(method.getName())) {
-//        PreferencesAction preferencesAction = new 
PreferencesAction(kseFrame);
-//        preferencesAction.showPreferences();
+          OptionsPlugIn.execute();
       }
       return null;
     }

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/OptionsPlugIn.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/OptionsPlugIn.java   
    2018-09-25 11:30:30 UTC (rev 5942)
+++ 
core/trunk/src/com/vividsolutions/jump/workbench/ui/plugin/OptionsPlugIn.java   
    2018-09-25 13:03:23 UTC (rev 5943)
@@ -36,7 +36,11 @@
 import javax.swing.ImageIcon;
 import javax.swing.JInternalFrame;
 
+import org.openjump.core.ui.DatasetOptionsPanel;
+import org.openjump.core.ui.SelectionStyllingOptionsPanel;
+
 import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.workbench.JUMPWorkbench;
 import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.ui.EditOptionsPanel;
@@ -45,16 +49,14 @@
 import com.vividsolutions.jump.workbench.ui.OptionsDialog;
 import com.vividsolutions.jump.workbench.ui.OptionsPanelV2;
 import com.vividsolutions.jump.workbench.ui.SnapVerticesToolsOptionsPanel;
+import com.vividsolutions.jump.workbench.ui.images.IconLoader;
 import com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel;
 import com.vividsolutions.jump.workbench.ui.snap.GridRenderer;
-import com.vividsolutions.jump.workbench.ui.images.IconLoader;
 
-import org.openjump.core.ui.DatasetOptionsPanel;
-import org.openjump.core.ui.SelectionStyllingOptionsPanel;
-
 public class OptionsPlugIn extends AbstractPlugIn {
   
   public final static ImageIcon ICON = 
IconLoader.icon("fugue/wrench-screwdriver.png");
+  private static OptionsPlugIn instance = null;
 
   public boolean execute(PlugInContext context) throws Exception {
     reportNothingToUndoYet(context);
@@ -72,11 +74,15 @@
     return dialog(context).wasOKPressed();
   }
 
-  private OptionsDialog dialog(PlugInContext context) {
+  private static OptionsDialog dialog(PlugInContext context) {
     return 
OptionsDialog.instance(context.getWorkbenchContext().getWorkbench());
   }
 
   public void initialize(PlugInContext context) throws Exception {
+    // don't double initialize
+    if (instance != null)
+      return;
+
     dialog(context).addTab(
         I18N.get("ui.plugin.OptionsPlugIn.view-edit"),
         GUIUtil.resize(IconLoader.icon("edit.gif"), 16),
@@ -96,8 +102,26 @@
     // add proxy panel
     OptionsPanelV2 proxypanel = ProxySettingsOptionsPanel.getInstance();
     dialog(context).addTab(proxypanel);
+    
+    instance = this;
   }
 
+  // static execute method for usage in apple handler
+  public static boolean execute(){
+    if (instance!=null)
+      return false;
+    
+    OptionsPlugIn p = new OptionsPlugIn();
+    try {
+      PlugInContext pc = 
JUMPWorkbench.getInstance().getContext().createPlugInContext();
+      p.initialize(pc);
+      return p.execute(pc);
+    } catch (Exception e) {
+      JUMPWorkbench.getInstance().getFrame().handleThrowable(e);
+    }
+    
+    return false;
+  }
 
   public Icon getIcon(int height) {
     // just one resolution for now 



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to