--- /dev/null
+package org.simantics.charts.editor.e4;\r
+\r
+import java.util.List;\r
+\r
+import javax.inject.Named;\r
+\r
+import org.eclipse.e4.core.di.annotations.CanExecute;\r
+import org.eclipse.e4.core.di.annotations.Execute;\r
+import org.eclipse.e4.ui.di.AboutToHide;\r
+import org.eclipse.e4.ui.di.AboutToShow;\r
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;\r
+import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem;\r
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;\r
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;\r
+import org.eclipse.e4.ui.services.IServiceConstants;\r
+import org.simantics.charts.editor.TrackExperimentTimeAction;\r
+import org.simantics.trend.configuration.TrendSpec;\r
+import org.simantics.trend.impl.ItemNode;\r
+import org.simantics.trend.impl.TrendNode;\r
+import org.simantics.trend.impl.TrendParticipant;\r
+\r
+public class MoveHairlineHandler {\r
+\r
+ @AboutToShow\r
+ public void aboutToShow(List<MMenuElement> items) {\r
+ MDirectMenuItem menuItem = MMenuFactory.INSTANCE.createDirectMenuItem();\r
+ menuItem.setContributionURI("bundleclass://org.simantics.charts/org.simantics.charts.editor.e4.MoveHairlineHandler");\r
+ menuItem.setLabel("Move Hairline Here");\r
+ items.add(menuItem);\r
+ }\r
+ \r
+ @AboutToHide\r
+ public void aboutToHide() {\r
+ \r
+ }\r
+ \r
+ @CanExecute\r
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart) {\r
+ if (activePart != null && activePart.getObject() instanceof TimeSeriesEditor) {\r
+ TimeSeriesEditor editor = (TimeSeriesEditor) activePart.getObject();\r
+ \r
+ TrendNode trendNode = editor.trendNode;\r
+ TrendParticipant tp = editor.tp;\r
+ if (trendNode == null || tp == null)\r
+ return false;\r
+ \r
+ TrendSpec trendSpec = trendNode.getTrendSpec();\r
+ boolean hairlineMovementAllowed =\r
+ !(trendSpec.experimentIsRunning &&\r
+ trendSpec.viewProfile.trackExperimentTime);\r
+ \r
+ return hairlineMovementAllowed;\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ @Execute\r
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart) {\r
+ if (activePart.getObject() instanceof TimeSeriesEditor) {\r
+ TimeSeriesEditor editor = (TimeSeriesEditor) activePart.getObject();\r
+ \r
+ TrendNode trendNode = editor.trendNode;\r
+ TrendParticipant tp = editor.tp;\r
+ if (trendNode == null || tp == null)\r
+ return;\r
+\r
+ TrendSpec trendSpec = trendNode.getTrendSpec();\r
+ ItemNode hoverItem = tp.hoveringItem;\r
+ \r
+ // #TODO Finish this when we are fully in E4 workbench\r
+ \r
+// trend.valueTipTime = time;\r
+// trend.repaint();\r
+// if (setTrackExperimentTime != null) {\r
+// TrackExperimentTimeAction.setTracking(chart, setTrackExperimentTime);\r
+// }\r
+ \r
+ }\r
+ }\r
+\r
+}\r