From 8bdce2fdc0052ec15c8fb6e5e21173aa325f5c54 Mon Sep 17 00:00:00 2001 From: Tuukka Lehtonen Date: Thu, 19 Sep 2019 14:25:39 +0300 Subject: [PATCH] Prevent undesirable UI code access when workbench is not running Also removed old and useless E3 ExperimentListener implementation gitlab #384 Change-Id: I2ae3bd5efbc3ab92fc87aca0de8625dfe6a0e7a0 (cherry picked from commit f37ba060464d2230f86c6786572d33026800eedc) --- .../simulation/ui/ExperimentListener.java | 76 ------------------- .../ui/ExperimentManagerListener.java | 8 +- .../simulation/ui/e4/ExperimentListener.java | 17 ++--- 3 files changed, 11 insertions(+), 90 deletions(-) delete mode 100644 bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/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 index 6f5f60157..000000000 --- a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentListener.java +++ /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; - - } */ - } - - }); - } - -} diff --git a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentManagerListener.java b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentManagerListener.java index 402ad6fdb..f418b09a1 100644 --- a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentManagerListener.java +++ b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/ExperimentManagerListener.java @@ -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 diff --git a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/e4/ExperimentListener.java b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/e4/ExperimentListener.java index 4573b0c82..1f6bdb431 100644 --- a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/e4/ExperimentListener.java +++ b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/e4/ExperimentListener.java @@ -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; - } } }); } -- 2.43.2