import ch.psi.pshell.device.Device; import ch.psi.pshell.ui.App; import ch.psi.pshell.swing.DevicePanel; import ch.psi.pshell.core.Context; import ch.psi.utils.State; import java.awt.Color; import java.lang.reflect.Method; import java.util.Map; /** * */ public class SmartMagnetPanel extends DevicePanel { /** * Creates new form RobotPanel */ public SmartMagnetPanel() { initComponents(); } @Override public void setDevice(Device device) { super.setDevice(device); if (device == null) { } panelState.setDevice(device); } @Override protected void onDeviceStateChanged(State state, State former) { switch(state){ case Ready: ledStatus.setColor(Color.GREEN); ledMounted.setColor(Color.BLACK); break; case Busy: ledStatus.setColor(Color.GREEN); ledMounted.setColor(Color.GREEN); break; case Fault: ledStatus.setColor(Color.RED); ledMounted.setColor(Color.RED); break; default: ledStatus.setColor(Color.BLACK); ledMounted.setColor(Color.BLACK); break; } } @Override protected void onDeviceCacheChanged(Object value, Object former, long timestamp, boolean valueChange) { } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new javax.swing.JPanel(); ledStatus = new ch.psi.pshell.swing.Led(); jLabel1 = new javax.swing.JLabel(); panelPowerCtr = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); ledMounted = new ch.psi.pshell.swing.Led(); jLabel10 = new javax.swing.JLabel(); panelCurrentRb = new ch.psi.pshell.swing.DeviceValuePanel(); panelState = new ch.psi.pshell.swing.DeviceStatePanel(); panelCurrent = new ch.psi.pshell.swing.ProcessVariablePanel(); jPanel2 = new javax.swing.JPanel(); buttonHoming = new javax.swing.JButton(); buttonMount = new javax.swing.JButton(); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Status")); ledStatus.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Status:"); javax.swing.GroupLayout panelPowerCtrLayout = new javax.swing.GroupLayout(panelPowerCtr); panelPowerCtr.setLayout(panelPowerCtrLayout); panelPowerCtrLayout.setHorizontalGroup( panelPowerCtrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 150, Short.MAX_VALUE) ); panelPowerCtrLayout.setVerticalGroup( panelPowerCtrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 23, Short.MAX_VALUE) ); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel5.setText("Mounted:"); ledMounted.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel10.setText("Current:"); panelCurrentRb.setDeviceName("smc_current_rb"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ledStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(panelPowerCtr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ledMounted, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(panelCurrentRb, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(4, 4, 4) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel1) .addComponent(ledStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(panelPowerCtr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel5) .addComponent(ledMounted, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel10) .addComponent(panelCurrentRb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); panelCurrent.setBorder(javax.swing.BorderFactory.createTitledBorder("Current")); panelCurrent.setDeviceName("smc_current"); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Gonio")); buttonHoming.setText("Home Fast Table"); buttonHoming.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonHomingActionPerformed(evt); } }); buttonMount.setText("Set Mount Position"); buttonMount.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonMountActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonHoming) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonMount) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonHoming, buttonMount}); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonHoming) .addComponent(buttonMount)) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelState, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(panelCurrent, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, 0)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(panelCurrent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(panelState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// //GEN-END:initComponents private void buttonHomingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHomingActionPerformed try{ Context.getInstance().evalLineAsync("home_fast_table()").handle((ret, ex) -> { if (SmartMagnetPanel.this.isShowing()){ if (ex != null){ showException((Exception)ex); } } return ret; }); } catch (Exception ex){ this.showException(ex); } }//GEN-LAST:event_buttonHomingActionPerformed private void buttonMountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMountActionPerformed try{ Context.getInstance().evalLineAsync("set_mount_position()").handle((ret, ex) -> { if (SmartMagnetPanel.this.isShowing()){ if (ex != null){ showException((Exception)ex); } } return ret; }); } catch (Exception ex){ this.showException(ex); } }//GEN-LAST:event_buttonMountActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonHoming; private javax.swing.JButton buttonMount; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private ch.psi.pshell.swing.Led ledMounted; private ch.psi.pshell.swing.Led ledStatus; private ch.psi.pshell.swing.ProcessVariablePanel panelCurrent; private ch.psi.pshell.swing.DeviceValuePanel panelCurrentRb; private javax.swing.JPanel panelPowerCtr; private ch.psi.pshell.swing.DeviceStatePanel panelState; // End of variables declaration//GEN-END:variables }