]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Minor cleanup for performing default actions 54/1154/3
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Fri, 27 Oct 2017 23:29:37 +0000 (02:29 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Fri, 27 Oct 2017 23:41:13 +0000 (02:41 +0300)
refs #7575

Change-Id: I3bac53c06c89d5f1794876c365a0ea15e621dab2

bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/scl/expressions/SCLExpressionView.java
bundles/org.simantics.ui/src/org/simantics/ui/workbench/action/DefaultActions.java
bundles/org.simantics.ui/src/org/simantics/ui/workbench/action/PerformDefaultAction.java

index d9bf77e47555210c64a31b0d46f89501bbd05c07..eeea9d586b895a5cd1f2af7a86b2001061605ded 100644 (file)
@@ -17,7 +17,6 @@ import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
 import org.eclipse.jface.viewers.ColumnWeightData;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
@@ -40,8 +39,7 @@ import org.simantics.Simantics;
 import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.modeling.ui.Activator;
-import org.simantics.ui.workbench.action.ChooseActionRequest;
-import org.simantics.utils.ui.workbench.WorkbenchUtils;
+import org.simantics.ui.workbench.action.DefaultActions;
 
 public class SCLExpressionView extends ViewPart {
 
@@ -169,14 +167,7 @@ public class SCLExpressionView extends ViewPart {
     }
 
     private static void openResource(Shell shell, Resource resource) {
-        try {
-            ISelection input = new StructuredSelection(resource);
-            String perspectiveId = WorkbenchUtils.getCurrentPerspectiveId();
-            // Try the doubleClick-extensions
-            Simantics.getSession().asyncRequest(new ChooseActionRequest(shell, input, perspectiveId, false, true));
-        } catch (NumberFormatException e) {
-            return;
-        }
+        DefaultActions.performDefaultAction(shell, new StructuredSelection(resource));
     }
 
     @Override
index 9f5bba95dea73c8ee01621365f8e3f05d9e29334..12995f177faa88e3c408d482ace38451af1b9678 100644 (file)
@@ -1,5 +1,6 @@
 package org.simantics.ui.workbench.action;
 
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
@@ -62,4 +63,15 @@ public final class DefaultActions {
         session.asyncRequest(new ChooseActionRequest(shell, null, input, WorkbenchUtils.getCurrentPerspectiveId(), rememberAction, alwaysAsk, neverPromptForAction));
     }
 
+    /**
+     * Perform a default workbench action on the specified input object using
+     * {@link ChooseActionRequest} from the current thread. The current thread
+     * must be the SWT UI thread.
+     * 
+     * @param control the control contained
+     */
+    public static void performDefaultAction(Control control, Object input) {
+        new PerformDefaultAction("Perform Default Action", control, input).run();
+    }
+
 }
index 22164e5042dd714aa3f42d3a35a89d7e6d853637..30af51d9247e4414ebe5972d19ef571a6a60dfa8 100644 (file)
@@ -1,6 +1,6 @@
 /*******************************************************************************
- * Copyright (c) 2012 Association for Decentralized Information Management in
- * Industry THTH ry.
+ * Copyright (c) 2012, 2017 Association for Decentralized Information Management
+ * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  *******************************************************************************/
 package org.simantics.ui.workbench.action;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.action.Action;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
-import org.simantics.db.Resource;
+import org.simantics.db.common.procedure.adapter.ProcedureAdapter;
 import org.simantics.ui.SimanticsUI;
+import org.simantics.ui.internal.Activator;
 import org.simantics.utils.ui.workbench.WorkbenchUtils;
 
 /**
@@ -27,12 +30,12 @@ import org.simantics.utils.ui.workbench.WorkbenchUtils;
 public class PerformDefaultAction extends Action {
 
     private Control  control;
-    private Resource component;
+    private Object   input;
 
-    public PerformDefaultAction(String name, Control control, Resource component) {
+    public PerformDefaultAction(String name, Control control, Object input) {
         super(name);
         this.control = control;
-        this.component = component;
+        this.input = input;
     }
 
     @Override
@@ -47,7 +50,16 @@ public class PerformDefaultAction extends Action {
             if (window != null)
                 shell = window.getShell();
         }
-        SimanticsUI.getSession().asyncRequest(new ChooseActionRequest(shell, control, component, perspectiveId));
+        SimanticsUI.getSession().asyncRequest(
+                new ChooseActionRequest(shell, control, input, perspectiveId),
+                new ProcedureAdapter<Object>() {
+                    @Override
+                    public void exception(Throwable t) {
+                        Activator.getDefault().getLog().log(
+                                new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+                                        "Failed to choose action for input " + input + ", see exception for details.", t));
+                    }
+                });
     }
 
 }
\ No newline at end of file