/* * 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 test11"); 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)) ); }// //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 try { getApp().startTask(task); 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 } }