--- /dev/null
+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
+\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.HistoryException;\r
+import org.simantics.history.HistoryManager;\r
+import org.simantics.history.util.subscription.SubscriptionItem;\r
+import org.simantics.trend.configuration.Scale;\r
+import org.simantics.trend.configuration.TrendItem;\r
+import org.simantics.trend.configuration.TrendSamplingFormats;\r
+import org.simantics.trend.configuration.TrendSpec;\r
+import org.simantics.trend.configuration.YAxisMode;\r
+import org.simantics.trend.impl.TrendNode;\r
+import org.simantics.trend.impl.TrendParticipant;\r
+import org.simantics.utils.datastructures.hints.IHintContext;\r
+import org.simantics.utils.threads.AWTThread;\r
+import org.simantics.utils.threads.IThreadWorkQueue;\r
+\r
+/**\r
+ * In thist\r
+ *\r
+ * @author toni.kalajainen@semantum.fi\r
+ */\r
+public class TestSetTrendConfig {\r
+ \r
+ public static void main(String[] args) throws Exception {\r
+ System.out.println(DefaultImages.HAND);\r
+ final TestData data = new TestData();\r
+ addSomeHistoryItems( data.historyManager );\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.timeWindowIncrement = 75.0;\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
+ // This is an empty content area in the frame\r
+ 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
+ long startTime = System.currentTimeMillis();\r
+ CanvasContext ctx = TrendInitializer.createDefaultCanvas(thread, data.historyManager, data.collector, data.solver, trendSpec);\r
+ @SuppressWarnings("unused")\r
+ TrendNode node = TrendInitializer.getTrendNode( ctx );\r
+ long endTime = System.currentTimeMillis();\r
+ long elapsedTime = endTime - startTime;\r
+ System.out.println( elapsedTime );\r
+ \r
+ ctx.getAtMostOneItemOfClass(TrendParticipant.class).setHintAsync(TrendParticipant.KEY_TREND_DRAW_INTERVAL, 1000L);\r
+ \r
+ @SuppressWarnings("unused")\r
+ IHintContext hintCtx = ctx.getDefaultHintContext();\r
+\r
+ chassis.setCanvasContext(ctx);\r
+ }\r
+\r
+ static void addSomeHistoryItems(HistoryManager history) throws HistoryException {\r
+ String subscriptionId = "abc";\r
+ for (int i=0; i<2000; i++) {\r
+ SubscriptionItem[] hi = null;\r
+ String id = "id"+i;\r
+ hi = SubscriptionItem.createItems( id, subscriptionId, TrendSamplingFormats.createAnalogSamplingFormats(0, 0, "") );\r
+ history.create(hi);\r
+ }\r
+ }\r
+ \r
+ \r
+}\r