21 import ca.uqac.lif.cep.Connector;
22 import static ca.uqac.lif.cep.Connector.INPUT;
23 import static ca.uqac.lif.cep.Connector.OUTPUT;
24 import ca.uqac.lif.cep.Processor;
25 import ca.uqac.lif.cep.ProcessorException;
26 import ca.uqac.lif.cep.UtilityMethods;
27 import ca.uqac.lif.cep.functions.ApplyFunction;
28 import ca.uqac.lif.cep.functions.Cumulate;
29 import ca.uqac.lif.cep.functions.CumulativeFunction;
30 import ca.uqac.lif.cep.functions.TurnInto;
31 import ca.uqac.lif.cep.mtnp.DrawPlot;
32 import ca.uqac.lif.cep.mtnp.UpdateTable;
33 import ca.uqac.lif.cep.mtnp.UpdateTableStream;
34 import ca.uqac.lif.cep.tmf.CountDecimate;
35 import ca.uqac.lif.cep.tmf.Fork;
36 import ca.uqac.lif.cep.tmf.Trim;
37 import ca.uqac.lif.cep.tmf.Window;
38 import ca.uqac.lif.cep.util.Numbers;
39 import ca.uqac.lif.cep.widgets.GetWidgetValue;
40 import ca.uqac.lif.cep.widgets.ListenerSource;
41 import ca.uqac.lif.mtnp.plot.gral.Scatterplot;
42 import java.awt.Component;
43 import javax.swing.BorderFactory;
44 import javax.swing.BoxLayout;
45 import javax.swing.JFrame;
46 import javax.swing.JLabel;
47 import javax.swing.JPanel;
48 import javax.swing.JSlider;
90 public static void main(String[] args)
throws ProcessorException
93 JPanel panel =
new JPanel();
94 panel.setLayout(
new BoxLayout(panel, BoxLayout.PAGE_AXIS));
95 JSlider m_slider =
new JSlider(JSlider.HORIZONTAL, 0, 100, 30);
96 m_slider.setMajorTickSpacing(20);
97 m_slider.setPaintTicks(
true);
98 m_slider.setPaintLabels(
true);
99 JLabel slider_label =
new JLabel(
"Value", JLabel.CENTER);
100 slider_label.setAlignmentX(Component.CENTER_ALIGNMENT);
101 panel.add(slider_label);
103 panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
104 JFrame m_frame =
new JFrame(
"My Widget Frame");
105 m_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
108 m_frame.setVisible(
true);
110 ListenerSource ls =
new ListenerSource();
111 m_slider.addChangeListener(ls);
112 ApplyFunction gwv =
new ApplyFunction(GetWidgetValue.instance);
113 Connector.connect(ls, gwv);
114 Fork fork =
new Fork(3);
115 Connector.connect(gwv, fork);
116 TurnInto one =
new TurnInto(1);
117 Connector.connect(fork, 0, one, INPUT);
118 Cumulate counter =
new Cumulate(
new CumulativeFunction<Number>(Numbers.addition));
119 Connector.connect(one, counter);
120 Trim trim1 =
new Trim(4);
121 Connector.connect(counter, trim1);
122 Trim trim2 =
new Trim(4);
123 Connector.connect(fork, 1, trim2, INPUT);
124 Window win =
new Window(
new Average(), 4);
125 Connector.connect(fork, 2, win, INPUT);
127 UpdateTable table =
new UpdateTableStream(
"t",
"x",
"x̅");
128 Connector.connect(counter, OUTPUT, table, 0);
129 Connector.connect(trim2, OUTPUT, table, 1);
130 Connector.connect(win, OUTPUT, table, 2);
131 CountDecimate decimate =
new CountDecimate(2);
132 Connector.connect(table, decimate);
134 DrawPlot plot =
new DrawPlot(
new Scatterplot());
135 Connector.connect(decimate, plot);
137 Connector.connect(plot, plot_frame);
139 Processor.startAll(plot_frame);
140 UtilityMethods.waitForever();
Generate tables, charts and plots from event streams.
Receives a byte array as an input, and shows it in a Swing window as a picture.