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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel