-/*******************************************************************************\r
- * Copyright (c) 2007, 2011 Association for Decentralized Information Management in\r
- * 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.trend;\r
-\r
-import java.awt.BorderLayout;\r
-import java.awt.Dimension;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-import java.io.File;\r
-\r
-import javax.swing.JFrame;\r
-\r
-import org.simantics.g2d.canvas.impl.CanvasContext;\r
-import org.simantics.g2d.chassis.AWTChassis;\r
-import org.simantics.g2d.image.DefaultImages;\r
-import org.simantics.history.impl.FileHistory;\r
-import org.simantics.trend.configuration.Scale;\r
-import org.simantics.trend.configuration.TrendItem;\r
-import org.simantics.trend.configuration.TrendSpec;\r
-import org.simantics.trend.configuration.YAxisMode;\r
-import org.simantics.trend.impl.Milestone;\r
-import org.simantics.trend.impl.MilestoneSpec;\r
-import org.simantics.trend.impl.TrendNode;\r
-import org.simantics.trend.impl.TrendParticipant;\r
-import org.simantics.utils.FileUtils;\r
-import org.simantics.utils.datastructures.hints.IHintContext;\r
-import org.simantics.utils.threads.AWTThread;\r
-import org.simantics.utils.threads.IThreadWorkQueue;\r
-\r
-public class DemoTrend {\r
-\r
- public static void main(String[] args) throws Exception {\r
- System.out.println(DefaultImages.HAND);\r
-\r
- // Initialize file history\r
- final File workarea = FileUtils.createTmpDir();\r
- final TestData data = new TestData(workarea);\r
- FileHistory fh = ((FileHistory)data.historyManager);\r
- fh.asyncUsage = false;\r
- // Memory history\r
- //final TestData data = new TestData();\r
-\r
- final TrendSpec trendSpec = new TrendSpec();\r
- trendSpec.init();\r
- trendSpec.viewProfile.showMilestones = true;\r
- trendSpec.name = "Multiple Y-Axis DemoTrend";\r
- trendSpec.axisMode = YAxisMode.MultiAxis; \r
-\r
- trendSpec.items.add( new TrendItem( 1, "Sine", data.subscriptionId, "Sine", new Scale.Manual( -1, 1), TrendItem.Renderer.Analog ) );\r
- trendSpec.items.add( new TrendItem( 2, "Ramp", data.subscriptionId,"Ramp", new Scale.Manual(-100,100), TrendItem.Renderer.Binary ) );\r
- trendSpec.items.add( new TrendItem( 3, "Random", data.subscriptionId, "Random", new Scale.Auto(), TrendItem.Renderer.Analog ) );\r
- trendSpec.viewProfile.profileName = "Profile";\r
-// trendSpec.viewProfile.timeWindow.timeWindowLength = 180.0;\r
-// trendSpec.viewProfile.timeWindow.timeWindowStart = 0.0;\r
- trendSpec.viewProfile.timeWindow.timeWindowIncrement = 75.0;\r
-\r
- // Alternative spec - Switch with Spacebarman button\r
-// TrendSpec altSpec = new TrendSpec();\r
-// altSpec.init();\r
-// altSpec.viewProfile.showMilestones = true;\r
-// altSpec.name = "Single Axis";\r
-// altSpec.axisMode = YAxisMode.SingleAxis;\r
-// altSpec.items.add( new TrendItem( 1, "Sine", data.subscriptionId,"Sine", new Scale.Auto(), TrendItem.Renderer.Analog, 0, 1 ) );\r
-// altSpec.items.add( new TrendItem( 2, "Ramp", data.subscriptionId,"Ramp", new Scale.Auto(), TrendItem.Renderer.Binary ) );\r
-// //altSpec.items.add( new TrendItem( "Random", data.subscriptionId,"Random", new Scale.FitAll(), TrendItem.Renderer.Analog, 0, 1, DrawMode.Deviation ) ); \r
-// altSpec.viewProfile.profileName = "Profile";\r
-// //altSpec.viewProfile.timeWindow.timeWindowLength = 30.0;\r
-// //altSpec.viewProfile.timeWindow.timeWindowStart = 0.0;\r
-// altSpec.viewProfile.timeWindow.timeWindowIncrement = 25.0;\r
-\r
-\r
- // JFrame has double buffering enabled by default\r
- JFrame frame = new JFrame("Demo Trend");\r
- // Add a window listener for close button\r
- frame.addWindowListener(new WindowAdapter() {\r
- @Override\r
- public void windowClosing(WindowEvent e) {\r
- data.dispose();\r
- System.exit(0);\r
- }\r
- });\r
-\r
- data.solver.start();\r
- \r
- \r
-\r
- // This is an empty content area in the frame\r
- final AWTChassis chassis = new AWTChassis();\r
-\r
- chassis.setPreferredSize(new Dimension(480, 320));\r
- \r
- frame.getContentPane().add(chassis, BorderLayout.CENTER);\r
- frame.pack();\r
-\r
- frame.setVisible(true);\r
- chassis.requestFocus();\r
-\r
- IThreadWorkQueue thread = AWTThread.getThreadAccess();\r
-\r
- final CanvasContext ctx = TrendInitializer.createDefaultCanvas(thread, data.historyManager, data.collector, data.solver, trendSpec);\r
- TrendNode node = TrendInitializer.getTrendNode( ctx );\r
- \r
- \r
- ctx.getAtMostOneItemOfClass(TrendParticipant.class).setHintAsync(TrendParticipant.KEY_TREND_DRAW_INTERVAL, 1000L);\r
- \r
- MilestoneSpec milestones = new MilestoneSpec();\r
- milestones.init();\r
- Milestone m1 = new Milestone("1", "1", "Event 1", 50);\r
- Milestone m2 = new Milestone("2", "2", "Event 2", 60);\r
- Milestone m3 = new Milestone("3", "3", "Event 3", 80);\r
- Milestone m4 = new Milestone("4", "4", "Event 4", 90);\r
- milestones.milestones.add( m1 );\r
- milestones.milestones.add( m2 );\r
- milestones.milestones.add( m3 );\r
- milestones.milestones.add( m4 );\r
- milestones.baseline = 2;\r
- node.setMilestones( milestones );\r
- \r
- @SuppressWarnings("unused")\r
- IHintContext hintCtx = ctx.getDefaultHintContext();\r
-\r
- thread.asyncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- chassis.setCanvasContext(ctx);\r
- }\r
- });\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2011 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.trend;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+
+import javax.swing.JFrame;
+
+import org.simantics.g2d.canvas.impl.CanvasContext;
+import org.simantics.g2d.chassis.AWTChassis;
+import org.simantics.g2d.image.DefaultImages;
+import org.simantics.history.impl.FileHistory;
+import org.simantics.trend.configuration.Scale;
+import org.simantics.trend.configuration.TrendItem;
+import org.simantics.trend.configuration.TrendSpec;
+import org.simantics.trend.configuration.YAxisMode;
+import org.simantics.trend.impl.Milestone;
+import org.simantics.trend.impl.MilestoneSpec;
+import org.simantics.trend.impl.TrendNode;
+import org.simantics.trend.impl.TrendParticipant;
+import org.simantics.utils.FileUtils;
+import org.simantics.utils.datastructures.hints.IHintContext;
+import org.simantics.utils.threads.AWTThread;
+import org.simantics.utils.threads.IThreadWorkQueue;
+
+public class DemoTrend {
+
+ public static void main(String[] args) throws Exception {
+ System.out.println(DefaultImages.HAND);
+
+ // Initialize file history
+ final File workarea = FileUtils.createTmpDir();
+ final TestData data = new TestData(workarea);
+ FileHistory fh = ((FileHistory)data.historyManager);
+ fh.asyncUsage = false;
+ // Memory history
+ //final TestData data = new TestData();
+
+ final TrendSpec trendSpec = new TrendSpec();
+ trendSpec.init();
+ trendSpec.viewProfile.showMilestones = true;
+ trendSpec.name = "Multiple Y-Axis DemoTrend";
+ trendSpec.axisMode = YAxisMode.MultiAxis;
+
+ trendSpec.items.add( new TrendItem( 1, "Sine", data.subscriptionId, "Sine", new Scale.Manual( -1, 1), TrendItem.Renderer.Analog ) );
+ trendSpec.items.add( new TrendItem( 2, "Ramp", data.subscriptionId,"Ramp", new Scale.Manual(-100,100), TrendItem.Renderer.Binary ) );
+ trendSpec.items.add( new TrendItem( 3, "Random", data.subscriptionId, "Random", new Scale.Auto(), TrendItem.Renderer.Analog ) );
+ trendSpec.viewProfile.profileName = "Profile";
+// trendSpec.viewProfile.timeWindow.timeWindowLength = 180.0;
+// trendSpec.viewProfile.timeWindow.timeWindowStart = 0.0;
+ trendSpec.viewProfile.timeWindow.timeWindowIncrement = 75.0;
+
+ // Alternative spec - Switch with Spacebarman button
+// TrendSpec altSpec = new TrendSpec();
+// altSpec.init();
+// altSpec.viewProfile.showMilestones = true;
+// altSpec.name = "Single Axis";
+// altSpec.axisMode = YAxisMode.SingleAxis;
+// altSpec.items.add( new TrendItem( 1, "Sine", data.subscriptionId,"Sine", new Scale.Auto(), TrendItem.Renderer.Analog, 0, 1 ) );
+// altSpec.items.add( new TrendItem( 2, "Ramp", data.subscriptionId,"Ramp", new Scale.Auto(), TrendItem.Renderer.Binary ) );
+// //altSpec.items.add( new TrendItem( "Random", data.subscriptionId,"Random", new Scale.FitAll(), TrendItem.Renderer.Analog, 0, 1, DrawMode.Deviation ) );
+// altSpec.viewProfile.profileName = "Profile";
+// //altSpec.viewProfile.timeWindow.timeWindowLength = 30.0;
+// //altSpec.viewProfile.timeWindow.timeWindowStart = 0.0;
+// altSpec.viewProfile.timeWindow.timeWindowIncrement = 25.0;
+
+
+ // JFrame has double buffering enabled by default
+ JFrame frame = new JFrame("Demo Trend");
+ // Add a window listener for close button
+ frame.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ data.dispose();
+ System.exit(0);
+ }
+ });
+
+ data.solver.start();
+
+
+
+ // This is an empty content area in the frame
+ final AWTChassis chassis = new AWTChassis();
+
+ chassis.setPreferredSize(new Dimension(480, 320));
+
+ frame.getContentPane().add(chassis, BorderLayout.CENTER);
+ frame.pack();
+
+ frame.setVisible(true);
+ chassis.requestFocus();
+
+ IThreadWorkQueue thread = AWTThread.getThreadAccess();
+
+ final CanvasContext ctx = TrendInitializer.createDefaultCanvas(thread, data.historyManager, data.collector, data.solver, trendSpec);
+ TrendNode node = TrendInitializer.getTrendNode( ctx );
+
+
+ ctx.getAtMostOneItemOfClass(TrendParticipant.class).setHintAsync(TrendParticipant.KEY_TREND_DRAW_INTERVAL, 1000L);
+
+ MilestoneSpec milestones = new MilestoneSpec();
+ milestones.init();
+ Milestone m1 = new Milestone("1", "1", "Event 1", 50);
+ Milestone m2 = new Milestone("2", "2", "Event 2", 60);
+ Milestone m3 = new Milestone("3", "3", "Event 3", 80);
+ Milestone m4 = new Milestone("4", "4", "Event 4", 90);
+ milestones.milestones.add( m1 );
+ milestones.milestones.add( m2 );
+ milestones.milestones.add( m3 );
+ milestones.milestones.add( m4 );
+ milestones.baseline = 2;
+ node.setMilestones( milestones );
+
+ @SuppressWarnings("unused")
+ IHintContext hintCtx = ctx.getDefaultHintContext();
+
+ thread.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ chassis.setCanvasContext(ctx);
+ }
+ });
+ }
+
+}