import ch.psi.mxsc.Controller; import ch.psi.pshell.core.Context; import ch.psi.pshell.device.DeviceBase; import ch.psi.pshell.swing.DevicePanel; import java.awt.Color; import java.util.concurrent.CompletableFuture; import javax.swing.border.TitledBorder; /** * */ public class WagoPanel extends DevicePanel { public WagoPanel() { initComponents(); this.startTimer(1000); } CompletableFuture future; @Override public void onTimer() { if ((getDevice() != null)) { updateTitle(); } } int count10s = 10; void updateTitle() { if (count10s++ >= 10) { count10s = 0; Boolean roomTemp = (Controller.getInstance().isLedRoomTemp()); if (roomTemp == null) { ((TitledBorder) panelDewar.getBorder()).setTitle("Dewar Light"); } else if (roomTemp == true) { ((TitledBorder) panelDewar.getBorder()).setTitle("Dewar Light (room temperature)"); } else { ((TitledBorder) panelDewar.getBorder()).setTitle("Dewar Light (LN2)"); } } try { DeviceBase valveOpen = (DeviceBase) Context.getInstance().getDevicePool().getByName("valve_open"); ledOpen.setColor(Boolean.TRUE.equals(valveOpen.take()) ? Color.GREEN : Color.BLACK); } catch (Exception ex) { ledOpen.setColor(Color.RED); } try { DeviceBase valveClose = (DeviceBase) Context.getInstance().getDevicePool().getByName("valve_close"); ledClose.setColor(Boolean.TRUE.equals(valveClose.take()) ? Color.GREEN : Color.BLACK); } catch (Exception ex) { ledClose.setColor(Color.RED); } } void execute(String statement) { try { Context.getInstance().evalLineBackgroundAsync(statement).handle((ret, ex) -> { if (WagoPanel.this.isShowing()) { if (ex != null) { showException((Exception) ex); } } return ret; }); } catch (Exception ex) { showException(ex); } } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { deviceStatePanel1 = new ch.psi.pshell.swing.DeviceStatePanel(); panelSafety = new javax.swing.JPanel(); buttonReleasePsys = new javax.swing.JButton(); buttonReleaseLocal = new javax.swing.JButton(); panelRobot1 = new javax.swing.JPanel(); buttonHeater = new javax.swing.JToggleButton(); buttonStream = new javax.swing.JToggleButton(); panelDewar = new ch.psi.pshell.swing.ProcessVariablePanel(); panelRobot2 = new javax.swing.JPanel(); ledOpen = new ch.psi.pshell.swing.Led(); ledClose = new ch.psi.pshell.swing.Led(); buttonOpenValve = new javax.swing.JButton(); buttonCloseValve = new javax.swing.JButton(); deviceStatePanel1.setDeviceName("wago"); panelSafety.setBorder(javax.swing.BorderFactory.createTitledBorder("Safety")); buttonReleasePsys.setText("Release PSYS"); buttonReleasePsys.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonReleasePsysActionPerformed(evt); } }); buttonReleaseLocal.setText("Release Local"); buttonReleaseLocal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonReleaseLocalActionPerformed(evt); } }); javax.swing.GroupLayout panelSafetyLayout = new javax.swing.GroupLayout(panelSafety); panelSafety.setLayout(panelSafetyLayout); panelSafetyLayout.setHorizontalGroup( panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSafetyLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonReleasePsys) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonReleaseLocal) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelSafetyLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonReleaseLocal, buttonReleasePsys}); panelSafetyLayout.setVerticalGroup( panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSafetyLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSafetyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonReleaseLocal) .addComponent(buttonReleasePsys)) .addContainerGap()) ); panelRobot1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dryer")); buttonHeater.setText("Heater"); buttonHeater.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonHeaterActionPerformed(evt); } }); buttonStream.setText("Air Stream"); buttonStream.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonStreamActionPerformed(evt); } }); javax.swing.GroupLayout panelRobot1Layout = new javax.swing.GroupLayout(panelRobot1); panelRobot1.setLayout(panelRobot1Layout); panelRobot1Layout.setHorizontalGroup( panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRobot1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonHeater) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonStream) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelRobot1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonHeater, buttonStream}); panelRobot1Layout.setVerticalGroup( panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRobot1Layout.createSequentialGroup() .addContainerGap() .addGroup(panelRobot1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonHeater) .addComponent(buttonStream)) .addContainerGap()) ); panelDewar.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Dewar Light", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.DEFAULT_POSITION)); panelDewar.setDeviceName("led_level"); panelDewar.setShowAdvanced(false); panelDewar.setShowButtons(false); panelDewar.setShowLimitButtons(false); panelDewar.setShowSlider(true); panelDewar.setShowStop(false); panelRobot2.setBorder(javax.swing.BorderFactory.createTitledBorder("Valve")); ledOpen.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N ledClose.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N buttonOpenValve.setText("Open"); buttonOpenValve.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonOpenValveActionPerformed(evt); } }); buttonCloseValve.setText("Close"); buttonCloseValve.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCloseValveActionPerformed(evt); } }); javax.swing.GroupLayout panelRobot2Layout = new javax.swing.GroupLayout(panelRobot2); panelRobot2.setLayout(panelRobot2Layout); panelRobot2Layout.setHorizontalGroup( panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRobot2Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(buttonOpenValve) .addComponent(buttonCloseValve)) .addGap(37, 37, 37) .addGroup(panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(ledClose, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(ledOpen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelRobot2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonCloseValve, buttonOpenValve}); panelRobot2Layout.setVerticalGroup( panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRobot2Layout.createSequentialGroup() .addContainerGap() .addGroup(panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(ledOpen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonOpenValve)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panelRobot2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(ledClose, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonCloseValve)) .addGap(3, 3, 3)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(deviceStatePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelSafety, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelRobot1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelDewar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelRobot2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(panelSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(panelDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(panelRobot1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(panelRobot2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(deviceStatePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// //GEN-END:initComponents private void buttonReleasePsysActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleasePsysActionPerformed execute("release_psys()"); }//GEN-LAST:event_buttonReleasePsysActionPerformed private void buttonReleaseLocalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleaseLocalActionPerformed execute("release_local()"); }//GEN-LAST:event_buttonReleaseLocalActionPerformed private void buttonHeaterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHeaterActionPerformed execute("set_heater(" + (buttonHeater.isSelected() ? "True" : "False") + ")"); }//GEN-LAST:event_buttonHeaterActionPerformed private void buttonStreamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStreamActionPerformed execute("set_air_stream(" + (buttonStream.isSelected() ? "True" : "False") + ")"); }//GEN-LAST:event_buttonStreamActionPerformed private void buttonOpenValveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonOpenValveActionPerformed execute("open_valve()"); }//GEN-LAST:event_buttonOpenValveActionPerformed private void buttonCloseValveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCloseValveActionPerformed execute("close_valve()"); }//GEN-LAST:event_buttonCloseValveActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonCloseValve; private javax.swing.JToggleButton buttonHeater; private javax.swing.JButton buttonOpenValve; private javax.swing.JButton buttonReleaseLocal; private javax.swing.JButton buttonReleasePsys; private javax.swing.JToggleButton buttonStream; private ch.psi.pshell.swing.DeviceStatePanel deviceStatePanel1; private ch.psi.pshell.swing.Led ledClose; private ch.psi.pshell.swing.Led ledOpen; private ch.psi.pshell.swing.ProcessVariablePanel panelDewar; private javax.swing.JPanel panelRobot1; private javax.swing.JPanel panelRobot2; private javax.swing.JPanel panelSafety; // End of variables declaration//GEN-END:variables }