/** * add / edit tag dialog. * * @author pquiring */ import java.awt.Color; import javax.swing.JColorChooser; import javaforce.*; import javaforce.controls.*; public class TagDialog extends javax.swing.JDialog { /** * Creates new form AddDialog */ public TagDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); JF.centerWindow(this); color.setBackground(Color.black); clr = 0x000000; JF.assignHotKey(this, ok, java.awt.event.KeyEvent.VK_ENTER); JF.assignHotKey(this, cancel, java.awt.event.KeyEvent.VK_ESCAPE); } /** * 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") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); type = new javax.swing.JComboBox<>(); jLabel2 = new javax.swing.JLabel(); tag = new javax.swing.JTextField(); ok = new javax.swing.JButton(); cancel = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); size = new javax.swing.JComboBox<>(); max = new javax.swing.JTextField(); min = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); host = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); color = new javax.swing.JButton(); help = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Tag Properties"); jLabel1.setText("Type"); type.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Siemens", "AllenBradley", "ModBus", "NI" })); type.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { typeItemStateChanged(evt); } }); jLabel2.setText("Tag"); ok.setText("OK"); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okActionPerformed(evt); } }); cancel.setText("Cancel"); cancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelActionPerformed(evt); } }); jLabel4.setText("Size"); size.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "bit", "int8", "int16", "int32", "float32", "float64" })); size.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { sizeItemStateChanged(evt); } }); max.setText("1"); max.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { maxActionPerformed(evt); } }); min.setText("0"); jLabel5.setText("max"); jLabel6.setText("min"); jLabel7.setText("Host"); jLabel8.setText("color"); color.setForeground(new java.awt.Color(0, 153, 204)); color.setText("Change..."); color.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { colorActionPerformed(evt); } }); help.setText("Help"); help.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { helpActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel7)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(type, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(host))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addGap(16, 16, 16) .addComponent(tag)) .addGroup(layout.createSequentialGroup() .addComponent(ok) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(help) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cancel)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6) .addComponent(jLabel8)) .addGap(11, 11, 11) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(color, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(size, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(max) .addComponent(min)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(type, 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.LEADING) .addComponent(jLabel7) .addComponent(host, 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(tag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(size, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(max, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(min, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(color)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(ok) .addComponent(cancel) .addComponent(help)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void okActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okActionPerformed accepted = true; dispose(); }//GEN-LAST:event_okActionPerformed private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed accepted = false; dispose(); }//GEN-LAST:event_cancelActionPerformed private void sizeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_sizeItemStateChanged int idx = size.getSelectedIndex(); min.setText("0"); switch (idx) { case 0: max.setText("1"); break; case 1: max.setText("255"); break; case 2: max.setText("65535"); break; case 3: max.setText("16777216"); break; case 4: max.setText("1.0"); break; } }//GEN-LAST:event_sizeItemStateChanged private void maxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_maxActionPerformed // TODO add your handling code here: }//GEN-LAST:event_maxActionPerformed private void colorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_colorActionPerformed changeColor(); }//GEN-LAST:event_colorActionPerformed private void typeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_typeItemStateChanged if (type.getSelectedIndex() == 3) { tag.setEnabled(false); tag.setText(""); } else { tag.setEnabled(true); } }//GEN-LAST:event_typeItemStateChanged private void helpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpActionPerformed JF.openURL("http://jfdatalogger.sf.net/help.php"); }//GEN-LAST:event_helpActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancel; private javax.swing.JButton color; private javax.swing.JButton help; private javax.swing.JTextField host; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JTextField max; private javax.swing.JTextField min; private javax.swing.JButton ok; private javax.swing.JComboBox<String> size; private javax.swing.JTextField tag; private javax.swing.JComboBox<String> type; // End of variables declaration//GEN-END:variables private boolean accepted; private int clr; public void load(Tag in) { switch (in.type) { case S7: type.setSelectedIndex(0); break; case AB: type.setSelectedIndex(1); break; case MB: type.setSelectedIndex(2); break; case NI: type.setSelectedIndex(3); break; } host.setText(in.host); tag.setText(in.tag); boolean isFloat = false; switch (in.size) { case bit: size.setSelectedIndex(0); break; case int8: size.setSelectedIndex(1); break; case int16: size.setSelectedIndex(2); break; case int32: size.setSelectedIndex(3); break; case float32: size.setSelectedIndex(4); isFloat = true; break; case float64: size.setSelectedIndex(5); isFloat = true; break; } if (!isFloat) { max.setText(Integer.toString(in.max)); min.setText(Integer.toString(in.min)); } else { max.setText(Float.toString(in.fmax)); min.setText(Float.toString(in.fmin)); } color.setBackground(new Color(in.color)); clr = in.color; } public boolean save(Tag out) { try { switch (type.getSelectedIndex()) { case 0: out.type = Controller.types.S7; break; case 1: out.type = Controller.types.AB; break; case 2: out.type = Controller.types.MB; break; case 3: out.type = Controller.types.NI; break; } out.host = host.getText(); out.tag = tag.getText(); boolean isFloat = false; switch (size.getSelectedIndex()) { case 0: out.size = Controller.sizes.bit; break; case 1: out.size = Controller.sizes.int8; break; case 2: out.size = Controller.sizes.int16; break; case 3: out.size = Controller.sizes.int32; break; case 4: out.size = Controller.sizes.float32; isFloat = true; break; case 5: out.size = Controller.sizes.float64; isFloat = true; break; } if (!isFloat) { out.min = Integer.valueOf(min.getText()); out.max = Integer.valueOf(max.getText()); } else { out.fmin = Float.valueOf(min.getText()); out.fmax = Float.valueOf(max.getText()); } out.color = clr; } catch (Exception e) { JFLog.log(e); return false; } return true; } public boolean accepted() { return accepted; } public void changeColor() { Color newClr = JColorChooser.showDialog(this, "Tag Color", new Color(clr)); if (newClr == null) return; clr = newClr.getRGB() & 0xffffff; color.setBackground(newClr); } }