package org.hwo.io.servicelink; import java.awt.Component; import java.util.Arrays; import javax.swing.JCheckBox; import javax.swing.JPanel; import org.hwo.io.servicelink.ServiceLink.ServiceNode; import org.hwo.io.servicelink.ServiceLink.ServiceNode.ServiceNodeRegister; import java.awt.FlowLayout; import javax.swing.JScrollPane; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import javax.swing.BoxLayout; public class BitFieldEditor extends JPanel implements RegisterEditorControl { private ServiceNodeRegister serviceNodeRegister; private JCheckBox[] checkboxes; private JScrollPane scrollPane; private JPanel pBits; public BitFieldEditor() { GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0}; gridBagLayout.rowHeights = new int[]{0, 0}; gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE}; setLayout(gridBagLayout); scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 0; gbc_scrollPane.gridy = 0; add(scrollPane, gbc_scrollPane); pBits = new JPanel(); scrollPane.setViewportView(pBits); pBits.setLayout(new BoxLayout(pBits, BoxLayout.Y_AXIS)); checkboxes = new JCheckBox[0]; } private void initialize() { for (JCheckBox cb:checkboxes) { remove(cb); } if (serviceNodeRegister != null) { checkboxes = new JCheckBox[32]; for (int i=0;i<32;i++) { if (serviceNodeRegister.getBitField().getLabels()[i]!=null) { checkboxes[i] = new JCheckBox(); checkboxes[i].setText(serviceNodeRegister.getBitField().getLabels()[i]); pBits.add(checkboxes[i]); }; } synchronize(); } invalidate(); } public void synchronize() { for (int i=0;i<32;i++) { if (checkboxes[i]!=null) checkboxes[i].setSelected( (serviceNodeRegister.getIntValue() & (1<