1 package org.simantics.trend;
\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
8 import javax.swing.JFrame;
\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
30 * @author toni.kalajainen@semantum.fi
\r
32 public class TestSetTrendConfig {
\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
39 final TrendSpec trendSpec = new TrendSpec();
\r
41 trendSpec.viewProfile.showMilestones = true;
\r
42 trendSpec.name = "Multiple Y-Axis DemoTrend";
\r
43 trendSpec.axisMode = YAxisMode.MultiAxis;
\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
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
56 public void windowClosing(WindowEvent e) {
\r
62 data.solver.start();
\r
64 // This is an empty content area in the frame
\r
65 AWTChassis chassis = new AWTChassis();
\r
67 chassis.setPreferredSize(new Dimension(480, 320));
\r
69 frame.getContentPane().add(chassis, BorderLayout.CENTER);
\r
72 frame.setVisible(true);
\r
73 chassis.requestFocus();
\r
75 IThreadWorkQueue thread = AWTThread.getThreadAccess();
\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
85 ctx.getAtMostOneItemOfClass(TrendParticipant.class).setHintAsync(TrendParticipant.KEY_TREND_DRAW_INTERVAL, 1000L);
\r
87 @SuppressWarnings("unused")
\r
88 IHintContext hintCtx = ctx.getDefaultHintContext();
\r
90 chassis.setCanvasContext(ctx);
\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
98 hi = SubscriptionItem.createItems( id, subscriptionId, TrendSamplingFormats.createAnalogSamplingFormats(0, 0, "") );
\r