Prevent undesirable UI code access when workbench is not running 66/3266/1
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Thu, 19 Sep 2019 11:25:39 +0000 (14:25 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Thu, 19 Sep 2019 11:28:31 +0000 (11:28 +0000)
Also removed old and useless E3 ExperimentListener implementation

gitlab #384

Change-Id: I2ae3bd5efbc3ab92fc87aca0de8625dfe6a0e7a0
(cherry picked from commit f37ba060464d2230f86c6786572d33026800eedc)

bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentListener.java [deleted file]
bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentManagerListener.java
bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/e4/ExperimentListener.java

diff --git a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentListener.java b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentListener.java
deleted file mode 100644 (file)
index 6f5f601..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     VTT Technical Research Centre of Finland - initial API and implementation
- *******************************************************************************/
-package org.simantics.simulation.ui;
-
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.State;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.contexts.IContextActivation;
-import org.simantics.simulation.experiment.ExperimentState;
-import org.simantics.simulation.experiment.IExperimentListener;
-
-public class ExperimentListener implements IExperimentListener {
-
-    IContextActivation contextActivation;
-
-    @Override
-    public void stateChanged(final ExperimentState state) {
-        
-        if(!PlatformUI.isWorkbenchRunning()) return;   
-        
-        PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-
-            @Override
-            public void run() {
-               ICommandService service = 
-                       (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); 
-               Command command = service.getCommand("org.simantics.simulation.ui.run"); 
-               State buttonState = command.getState("org.simantics.simulation.ui.run.state"); 
-               buttonState.setValue(!(Boolean) buttonState.getValue()); 
-                               
-               switch(state) {
-                case RUNNING:
-                       //System.out.println("RUNNING");
-                       buttonState.setValue(true); 
-                    break;
-                case STOPPED:
-                default:
-                       //System.out.println("STOPPED");
-                       buttonState.setValue(false);
-                    break;
-                }
-               service.refreshElements(command.getId(), null); 
-               
-                /*IContextService contextService =
-                    (IContextService)PlatformUI.getWorkbench()
-                    .getActiveWorkbenchWindow().getService(IContextService.class);
-                if(contextActivation != null)                                     
-                    contextService.deactivateContext(contextActivation);
-                switch(state) {
-                case RUNNING:
-                    contextActivation = contextService.activateContext("org.simantics.simulation.ui.experimentRunning");
-                    break;
-                case STOPPED:
-                    contextActivation = contextService.activateContext("org.simantics.simulation.ui.experimentStopped");
-                    break;
-                default:
-                    contextActivation = null;
-                    break;
-
-                } */               
-            }
-            
-        });
-    }
-
-}
index 402ad6fdb9734f4f29a960883a189b3f1d4ffa2e..f418b09a11069d47637c8b0f985d78fe378441cc 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2019 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
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
+ *     Semantum Oy - gitlab #384
  *******************************************************************************/
 package org.simantics.simulation.ui;
 
@@ -55,12 +56,11 @@ public class ExperimentManagerListener implements IExperimentManagerListener {
 
     @Override
     public void activeExperimentLoaded(final IExperiment experiment) {
-//        experiment.addListener(new ExperimentListener());
-        experiment.addListener(new org.simantics.simulation.ui.e4.ExperimentListener());
-
         if (!PlatformUI.isWorkbenchRunning())
             return;
 
+        experiment.addListener(new org.simantics.simulation.ui.e4.ExperimentListener());
+
         final IWorkbench workbench = PlatformUI.getWorkbench();
         workbench.getDisplay().asyncExec(new Runnable() {
             @Override
index 4573b0c822c8194a1e072f0185049c12412cebc0..1f6bdb431448646d35d89ead90888dcd1c8625ca 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2019 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
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
+ *     Semantum Oy - gitlab #384
  *******************************************************************************/
 package org.simantics.simulation.ui.e4;
 
@@ -21,21 +22,18 @@ import org.simantics.simulation.experiment.IExperimentListener;
 public class ExperimentListener implements IExperimentListener {
 
     private IEventBroker eventBroker;
-    
+
     public ExperimentListener() {
         eventBroker = E4Workbench.getServiceContext().get(IEventBroker.class);
     }
 
     @Override
     public void stateChanged(final ExperimentState state) {
-        
-        if(!PlatformUI.isWorkbenchRunning()) return;   
-        
-        PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+        if (!PlatformUI.isWorkbenchRunning())
+            return;
 
-            @Override
-            public void run() {
-               switch(state) {
+        PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
+            switch (state) {
                 case RUNNING:
                     eventBroker.post(SimulationEvents.TOPIC_STATE_RUNNING, true);
                     break;
@@ -43,7 +41,6 @@ public class ExperimentListener implements IExperimentListener {
                 default:
                     eventBroker.post(SimulationEvents.TOPIC_STATE_STOPPED, false);
                     break;
-                }
             }
         });
     }