X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.simulation.ui%2Fsrc%2Forg%2Fsimantics%2Fsimulation%2Fui%2Fhandlers%2Fe4%2FStep.java;fp=bundles%2Forg.simantics.simulation.ui%2Fsrc%2Forg%2Fsimantics%2Fsimulation%2Fui%2Fhandlers%2Fe4%2FStep.java;h=a4af723b49ec289f706759e8b1a2456c418b6f6a;hp=0000000000000000000000000000000000000000;hb=969bd23cab98a79ca9101af33334000879fb60c5;hpb=866dba5cd5a3929bbeae85991796acb212338a08 diff --git a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/Step.java b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/Step.java new file mode 100644 index 000000000..a4af723b4 --- /dev/null +++ b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/Step.java @@ -0,0 +1,74 @@ +/******************************************************************************* + * 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.handlers.e4; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; + +import org.eclipse.e4.core.di.annotations.CanExecute; +import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.di.UIEventTopic; +import org.eclipse.e4.ui.model.application.MApplication; +import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem; +import org.eclipse.e4.ui.workbench.modeling.EModelService; +import org.simantics.Simantics; +import org.simantics.simulation.SimulationEvents; +import org.simantics.simulation.experiment.ExperimentUtil; +import org.simantics.simulation.experiment.IExperiment; +import org.simantics.simulation.project.IExperimentManager; +import org.simantics.simulation.ui.preferences.SimulationPreferenceUtil; +import org.simantics.simulation.ui.preferences.SimulationPreferences; + +public class Step { + + private static final String HANDLED_ITEM_ID = "org.simantics.simulation.ui.handledtoolitem.step"; + + @Inject + EModelService modelService; + + @PostConstruct + public void updateToolTip(MApplication application) { + MHandledItem handledItem = (MHandledItem) modelService.find(HANDLED_ITEM_ID, application); + if (handledItem != null) { + SimulationPreferences prefs = SimulationPreferenceUtil.getPrefs(); + handledItem.setTooltip("Step " + prefs.stepDuration + "s"); + } + } + + @CanExecute + public boolean canExecute() { + IExperimentManager manager = Simantics.getProject().getHint(IExperimentManager.KEY_EXPERIMENT_MANAGER); + if (manager == null) + return false; + IExperiment experiment = manager.getActiveExperiment(); + if (experiment == null) + return false; + return true; + } + + @Execute + public void execute() { + SimulationPreferences prefs = SimulationPreferenceUtil.getPrefs(); + ExperimentUtil.step(prefs.stepDuration); + } + + @Inject + @Optional + public void updateElement(@UIEventTopic(SimulationEvents.TOPIC_STEP_DURATION) double duration, MApplication application) { + MHandledItem handledItem = (MHandledItem) modelService.find(HANDLED_ITEM_ID, application); + if (handledItem != null) { + handledItem.setTooltip("Step " + duration + "s"); + } + } + +}