-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.simulation.ui;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.PlatformUI;\r
-import org.eclipse.ui.contexts.IContextActivation;\r
-import org.eclipse.ui.contexts.IContextService;\r
-import org.simantics.simulation.experiment.IDynamicExperiment;\r
-import org.simantics.simulation.experiment.IExperiment;\r
-import org.simantics.simulation.project.IExperimentManager;\r
-import org.simantics.simulation.project.IExperimentManagerListener;\r
-\r
-public class ExperimentManagerListener implements IExperimentManagerListener {\r
-\r
- public static final String EXPERIMENT_CONTEXT = "org.simantics.simulation.ui.experiment";\r
- public static final String DYNAMIC_EXPERIMENT_CONTEXT = "org.simantics.simulation.ui.dynamicExperiment";\r
-\r
- static Set<IExperimentManager> managers = \r
- new HashSet<IExperimentManager>();\r
-\r
- IExperimentManager manager;\r
-\r
- Collection<IContextActivation> contextActivations = \r
- new ArrayList<IContextActivation>();\r
-\r
- public ExperimentManagerListener(IExperimentManager manager) {\r
- this.manager = manager;\r
- }\r
-\r
- public static void listenManager(IExperimentManager manager) {\r
- synchronized(managers) {\r
- if(managers.contains(manager))\r
- return;\r
- ExperimentManagerListener listener = \r
- new ExperimentManagerListener(manager);\r
- manager.addListener(listener);\r
- managers.add(manager);\r
- }\r
- }\r
-\r
- @Override\r
- public void activeExperimentLoaded(final IExperiment experiment) {\r
-// experiment.addListener(new ExperimentListener());\r
- experiment.addListener(new org.simantics.simulation.ui.e4.ExperimentListener());\r
-\r
- if (!PlatformUI.isWorkbenchRunning())\r
- return;\r
-\r
- final IWorkbench workbench = PlatformUI.getWorkbench();\r
- workbench.getDisplay().asyncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- if (workbench.isClosing())\r
- return;\r
- IContextService contextService =\r
- (IContextService)PlatformUI.getWorkbench()\r
- .getService(IContextService.class);\r
- synchronized(contextActivations) {\r
- contextActivations.add(contextService.activateContext(EXPERIMENT_CONTEXT));\r
- if(experiment instanceof IDynamicExperiment)\r
- contextActivations.add(contextService.activateContext(DYNAMIC_EXPERIMENT_CONTEXT));\r
- }\r
- }\r
- });\r
- }\r
-\r
- @Override\r
- public void activeExperimentUnloaded() {\r
- synchronized(contextActivations) {\r
- final Collection<IContextActivation> oldContextActivations = \r
- contextActivations;\r
-\r
- contextActivations = new ArrayList<IContextActivation>();\r
-\r
- if (!PlatformUI.isWorkbenchRunning())\r
- return;\r
-\r
- final IWorkbench workbench = PlatformUI.getWorkbench();\r
- workbench.getDisplay().asyncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- if (workbench.isClosing())\r
- return;\r
-\r
- IContextService contextService =\r
- (IContextService)workbench.getService(IContextService.class);\r
- contextService.deactivateContexts(oldContextActivations);\r
- }\r
- });\r
- }\r
- }\r
-\r
- @Override\r
- public void managerDisposed() {\r
- synchronized(managers) {\r
- manager.removeListener(this);\r
- managers.remove(manager);\r
- }\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.contexts.IContextActivation;
+import org.eclipse.ui.contexts.IContextService;
+import org.simantics.simulation.experiment.IDynamicExperiment;
+import org.simantics.simulation.experiment.IExperiment;
+import org.simantics.simulation.project.IExperimentManager;
+import org.simantics.simulation.project.IExperimentManagerListener;
+
+public class ExperimentManagerListener implements IExperimentManagerListener {
+
+ public static final String EXPERIMENT_CONTEXT = "org.simantics.simulation.ui.experiment";
+ public static final String DYNAMIC_EXPERIMENT_CONTEXT = "org.simantics.simulation.ui.dynamicExperiment";
+
+ static Set<IExperimentManager> managers =
+ new HashSet<IExperimentManager>();
+
+ IExperimentManager manager;
+
+ Collection<IContextActivation> contextActivations =
+ new ArrayList<IContextActivation>();
+
+ public ExperimentManagerListener(IExperimentManager manager) {
+ this.manager = manager;
+ }
+
+ public static void listenManager(IExperimentManager manager) {
+ synchronized(managers) {
+ if(managers.contains(manager))
+ return;
+ ExperimentManagerListener listener =
+ new ExperimentManagerListener(manager);
+ manager.addListener(listener);
+ managers.add(manager);
+ }
+ }
+
+ @Override
+ public void activeExperimentLoaded(final IExperiment experiment) {
+// experiment.addListener(new ExperimentListener());
+ experiment.addListener(new org.simantics.simulation.ui.e4.ExperimentListener());
+
+ if (!PlatformUI.isWorkbenchRunning())
+ return;
+
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ workbench.getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (workbench.isClosing())
+ return;
+ IContextService contextService =
+ (IContextService)PlatformUI.getWorkbench()
+ .getService(IContextService.class);
+ synchronized(contextActivations) {
+ contextActivations.add(contextService.activateContext(EXPERIMENT_CONTEXT));
+ if(experiment instanceof IDynamicExperiment)
+ contextActivations.add(contextService.activateContext(DYNAMIC_EXPERIMENT_CONTEXT));
+ }
+ }
+ });
+ }
+
+ @Override
+ public void activeExperimentUnloaded() {
+ synchronized(contextActivations) {
+ final Collection<IContextActivation> oldContextActivations =
+ contextActivations;
+
+ contextActivations = new ArrayList<IContextActivation>();
+
+ if (!PlatformUI.isWorkbenchRunning())
+ return;
+
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ workbench.getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ if (workbench.isClosing())
+ return;
+
+ IContextService contextService =
+ (IContextService)workbench.getService(IContextService.class);
+ contextService.deactivateContexts(oldContextActivations);
+ }
+ });
+ }
+ }
+
+ @Override
+ public void managerDisposed() {
+ synchronized(managers) {
+ manager.removeListener(this);
+ managers.remove(manager);
+ }
+ }
+
+}