]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.trend/test/org/simantics/trend/TestSetTrendConfig.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.trend / test / org / simantics / trend / TestSetTrendConfig.java
1 package org.simantics.trend;\r
2 \r
3 import java.awt.BorderLayout;\r
4 import java.awt.Dimension;\r
5 import java.awt.event.WindowAdapter;\r
6 import java.awt.event.WindowEvent;\r
7 \r
8 import javax.swing.JFrame;\r
9 \r
10 import org.simantics.g2d.canvas.impl.CanvasContext;\r
11 import org.simantics.g2d.chassis.AWTChassis;\r
12 import org.simantics.g2d.image.DefaultImages;\r
13 import org.simantics.history.HistoryException;\r
14 import org.simantics.history.HistoryManager;\r
15 import org.simantics.history.util.subscription.SubscriptionItem;\r
16 import org.simantics.trend.configuration.Scale;\r
17 import org.simantics.trend.configuration.TrendItem;\r
18 import org.simantics.trend.configuration.TrendSamplingFormats;\r
19 import org.simantics.trend.configuration.TrendSpec;\r
20 import org.simantics.trend.configuration.YAxisMode;\r
21 import org.simantics.trend.impl.TrendNode;\r
22 import org.simantics.trend.impl.TrendParticipant;\r
23 import org.simantics.utils.datastructures.hints.IHintContext;\r
24 import org.simantics.utils.threads.AWTThread;\r
25 import org.simantics.utils.threads.IThreadWorkQueue;\r
26 \r
27 /**\r
28  * In thist\r
29  *\r
30  * @author toni.kalajainen@semantum.fi\r
31  */\r
32 public class TestSetTrendConfig {\r
33         \r
34     public static void main(String[] args) throws Exception {\r
35         System.out.println(DefaultImages.HAND);\r
36         final TestData data = new TestData();\r
37         addSomeHistoryItems( data.historyManager );\r
38 \r
39         final TrendSpec trendSpec = new TrendSpec();\r
40         trendSpec.init();\r
41         trendSpec.viewProfile.showMilestones = true;\r
42         trendSpec.name = "Multiple Y-Axis DemoTrend";\r
43         trendSpec.axisMode = YAxisMode.MultiAxis;        \r
44 \r
45         trendSpec.items.add( new TrendItem( 1, "Sine", data.subscriptionId, "Sine", new Scale.Manual( -1, 1), TrendItem.Renderer.Analog ) );\r
46         trendSpec.items.add( new TrendItem( 2, "Ramp", data.subscriptionId,"Ramp", new Scale.Manual(-100,100), TrendItem.Renderer.Binary ) );\r
47         trendSpec.items.add( new TrendItem( 3, "Random", data.subscriptionId, "Random", new Scale.Auto(), TrendItem.Renderer.Analog ) );\r
48         trendSpec.viewProfile.profileName = "Profile";\r
49         trendSpec.viewProfile.timeWindow.timeWindowIncrement = 75.0;\r
50 \r
51         // JFrame has double buffering enabled by default\r
52         JFrame frame = new JFrame("Demo Trend");\r
53         // Add a window listener for close button\r
54         frame.addWindowListener(new WindowAdapter() {\r
55             @Override\r
56             public void windowClosing(WindowEvent e) {\r
57                 data.dispose();\r
58                 System.exit(0);\r
59             }\r
60         });\r
61 \r
62         data.solver.start();\r
63         \r
64         // This is an empty content area in the frame\r
65         AWTChassis chassis = new AWTChassis();\r
66 \r
67         chassis.setPreferredSize(new Dimension(480, 320));\r
68         \r
69         frame.getContentPane().add(chassis, BorderLayout.CENTER);\r
70         frame.pack();\r
71 \r
72         frame.setVisible(true);\r
73         chassis.requestFocus();\r
74 \r
75         IThreadWorkQueue thread  = AWTThread.getThreadAccess();\r
76 \r
77         long startTime = System.currentTimeMillis();\r
78         CanvasContext    ctx     = TrendInitializer.createDefaultCanvas(thread, data.historyManager, data.collector, data.solver, trendSpec);\r
79         @SuppressWarnings("unused")\r
80         TrendNode node = TrendInitializer.getTrendNode( ctx );\r
81         long endTime = System.currentTimeMillis();\r
82         long elapsedTime = endTime - startTime;\r
83         System.out.println( elapsedTime );\r
84         \r
85         ctx.getAtMostOneItemOfClass(TrendParticipant.class).setHintAsync(TrendParticipant.KEY_TREND_DRAW_INTERVAL, 1000L);\r
86                 \r
87         @SuppressWarnings("unused")\r
88         IHintContext     hintCtx = ctx.getDefaultHintContext();\r
89 \r
90         chassis.setCanvasContext(ctx);\r
91     }\r
92 \r
93         static void addSomeHistoryItems(HistoryManager history) throws HistoryException {\r
94                 String subscriptionId = "abc";\r
95                 for (int i=0; i<2000; i++) {\r
96                     SubscriptionItem[] hi = null;\r
97                         String id = "id"+i;\r
98                         hi = SubscriptionItem.createItems( id, subscriptionId, TrendSamplingFormats.createAnalogSamplingFormats(0, 0, "") );\r
99                         history.create(hi);\r
100                 }\r
101         }\r
102     \r
103     \r
104 }\r