diff --git a/config/plugins.properties b/config/plugins.properties index 9aec256..f9d2ebc 100644 --- a/config/plugins.properties +++ b/config/plugins.properties @@ -1,2 +1,3 @@ -#Mon Jun 01 14:18:27 CEST 2015 -.\\home\\plugins\\TestingPanel.java=disabled +#Mon Jun 01 14:54:19 CEST 2015 +.\\home\\plugins\\TestingPanel.java=enabled +.\\home\\plugins\\TestingPanel2.java=enabled diff --git a/plugins/TestingPanel2.java b/plugins/TestingPanel2.java new file mode 100644 index 0000000..e9e53ae --- /dev/null +++ b/plugins/TestingPanel2.java @@ -0,0 +1,329 @@ +/* + * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. + */ + +import ch.psi.pshell.dev.Motor; +import ch.psi.pshell.plot.LinePlotBase; +import ch.psi.pshell.plot.LinePlotJFree; +import ch.psi.pshell.plot.LinePlotSeries; +import ch.psi.pshell.plot.Plot; +import ch.psi.pshell.swing.MotorPanel; +import ch.psi.pshell.ui.App; +import ch.psi.utils.swing.MonitoredPanel; +import ch.psi.pshell.ui.Panel; +import ch.psi.utils.swing.SwingUtils; +import ch.psi.wsaf.ApplicationStateException; +import ch.psi.wsaf.Task; +import ch.psi.wsaf.TaskRunMode; +import ch.psi.wsaf.TaskRunningException; +import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JPanel; + +/** + * + */ +public class TestingPanel extends Panel { + MotorPanel motorPanel; + LinePlotBase plot; + LinePlotSeries series; + Motor motor; + + + Task task = new Task() { + @Override + protected Object execute() throws Exception { + series.clear(); + for (int i=0;i<1000;i++){ + double pos = motor.read(); + Thread.sleep(2); + plot.getAxis(Plot.AxisId.X).setRange(0, 1000); + series.appendData(i, pos); + } + return true; + } + }; + + @Override + protected JPanel create() { + getApp().addTask(task); + return new NetbeansPluginPanel(); + + } + + @Override + protected void onInitialize(int runCount){ + motor = (Motor) TestingPanel.this.getDevice("motor"); + motorPanel.setDevice(motor); + } + + public class NetbeansPluginPanel extends MonitoredPanel { + + public NetbeansPluginPanel() { + initComponents(); + motorPanel = new MotorPanel(); + panel.add(motorPanel); + onInitialize(-1); + + + plot = new LinePlotJFree(); + plot.setTitle(""); + panelPlot.add(plot); + + + series=new LinePlotSeries("Position"); + plot.addSeries(series); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonExecute = new javax.swing.JButton(); + buttonAbort = new javax.swing.JButton(); + jButton1 = new javax.swing.JButton(); + check = new javax.swing.JCheckBox(); + spinner = new javax.swing.JSpinner(); + panel = new javax.swing.JPanel(); + panelPlot = new javax.swing.JPanel(); + jButton2 = new javax.swing.JButton(); + jButton3 = new javax.swing.JButton(); + jCheckBox1 = new javax.swing.JCheckBox(); + + buttonExecute.setText("Execute"); + buttonExecute.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonExecuteActionPerformed(evt); + } + }); + + buttonAbort.setText("Abort"); + buttonAbort.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonAbortActionPerformed(evt); + } + }); + + jButton1.setText("Test with params"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + check.setText("Var1"); + + spinner.setModel(new javax.swing.SpinnerNumberModel(1, 1, 10, 1)); + + panel.setLayout(new java.awt.BorderLayout()); + + panelPlot.setLayout(new java.awt.BorderLayout()); + + jButton2.setText("Java Code"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + jButton3.setText("New Test"); + jButton3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton3ActionPerformed(evt); + } + }); + + jCheckBox1.setActionCommand("check2"); + jCheckBox1.setLabel("check2"); + jCheckBox1.setName("check2"); // NOI18N + jCheckBox1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCheckBox1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(41, 41, 41) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(panelPlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(check) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(buttonExecute, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jButton1) + .addComponent(spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(87, 87, 87) + .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, 394, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jButton3) + .addComponent(jCheckBox1))) + .addGroup(layout.createSequentialGroup() + .addGap(277, 277, 277) + .addComponent(jButton2))) + .addGap(0, 25, Short.MAX_VALUE)))) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(27, 27, 27) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(buttonExecute) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(buttonAbort)) + .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(32, 32, 32) + .addComponent(check)) + .addGroup(layout.createSequentialGroup() + .addGap(46, 46, 46) + .addComponent(jCheckBox1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jButton3))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton1) + .addComponent(jButton2)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 193, Short.MAX_VALUE) + .addGap(5, 5, 5)) + ); + + jCheckBox1.getAccessibleContext().setAccessibleName("check2"); + }// //GEN-END:initComponents + + private void buttonExecuteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonExecuteActionPerformed + try { + //Run script + //run("test1"); + + //Alternatives to run script with arguments + + /* + eval("start = 22.0"); + eval("end = 32.0"); + eval("step = 10"); + run("test11"); + */ + + /* + HashMap args = new HashMap(); + args.put("start", 12.0); + args.put("end", 52.0); + args.put("step", 10); + run("test11", args); + */ + + //eval("run('test11', locals = {'start':10.0, 'end':50.0, 'step':40})"); + + evalAsync("run('test11', locals = {'start':10.0, 'end':50.0, 'step':40})"); + + + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonExecuteActionPerformed + + private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed + abort(); + }//GEN-LAST:event_buttonAbortActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + try { + boolean var1 = check.isSelected(); + int var2 = (Integer)spinner.getValue(); + + HashMap args = new HashMap(); + args.put("relative", var1); + args.put("steps", var2); + run("args", args); + + + //evalAsync("run('args', locals = {'relative':" + (var1 ? "True" :"False") + ", 'steps':" + var2 + "})"); + + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + + }//GEN-LAST:event_jButton1ActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + + getApp().startTask(task); + try { + + task.start(TaskRunMode.async); + } catch (Exception ex) { + SwingUtils.showException(NetbeansPluginPanel.this, ex); + } + + /* + new Thread(() -> { + try { + series.clear(); + for (int i=0;i<1000;i++){ + double pos = motor.read(); + Thread.sleep(2); + plot.getAxis(Plot.AxisId.X).setRange(0, 1000); + series.appendData(i, pos); + } + } catch (Exception ex) { + SwingUtils.showException(NetbeansPluginPanel.this, ex); + } + }).start(); */ + + }//GEN-LAST:event_jButton2ActionPerformed + + private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed + try { + boolean var1 = jCheckBox1.isSelected(); + int var2 = 2;// (Integer)spinner.getValue(); + + HashMap args = new HashMap(); + args.put("relative", var1); + args.put("steps", var2); + run("args", args); + + + //evalAsync("run('args', locals = {'relative':" + (var1 ? "True" :"False") + ", 'steps':" + var2 + "})"); + + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } // TODO add your handling code here: + }//GEN-LAST:event_jButton3ActionPerformed + + private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_jCheckBox1ActionPerformed + + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonAbort; + private javax.swing.JButton buttonExecute; + private javax.swing.JCheckBox check; + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton3; + private javax.swing.JCheckBox jCheckBox1; + private javax.swing.JPanel panel; + private javax.swing.JPanel panelPlot; + private javax.swing.JSpinner spinner; + // End of variables declaration//GEN-END:variables +} +}