package senseiTests.domainsTest; import senseiTests.middleware.domainsTest.StateTransferType; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import java.util.Map; import java.util.TreeMap; class SubgroupRequester extends JDialog implements ActionListener { public SubgroupRequester(JFrame owner, int id) { this(owner, id, null); } public SubgroupRequester(JFrame owner, String state) { this(owner, 0, state); } SubgroupRequester(JFrame owner, int id, String state) { super(owner, "Create subgroup", true); init(id, state); pack(); setLocation(owner.getLocation()); } boolean getInput() { pressedOk=false; show(); return pressedOk; } StateTransferType getType() { return StateTransferTypeConverter.getType(types.getSelectedIndex()); } int getId() { return subgroupId; } boolean getWait() { return booleanOptions.getSelectedIndex()==0; } void init(int id, String state) { JPanel total = new JPanel(new BorderLayout()); JPanel twoLines = new JPanel(new GridLayout(0,1,5,5)); JPanel buttons = new JPanel(new BorderLayout()); JPanel labelPlusField = new JPanel(new BorderLayout()); if (state==null) { subgroup= new JTextField(5); labelPlusField.add(new JLabel("Subgroup Id: "), BorderLayout.WEST); labelPlusField.add(subgroup, BorderLayout.CENTER); subgroup.setText(String.valueOf(id)); twoLines.add(labelPlusField); } else { labelPlusField.add(new JLabel("State: "+state, SwingConstants.CENTER), BorderLayout.CENTER); twoLines.add(labelPlusField); } types = new JComboBox(StateTransferTypeConverter.getTypeAsStringArray()); labelPlusField = new JPanel(new BorderLayout()); labelPlusField.add(new JLabel("Transfer type: "), BorderLayout.WEST); labelPlusField.add(types, BorderLayout.CENTER); if (state==null) twoLines.add(labelPlusField); else { booleanOptions = new JComboBox(booleanValues); JPanel waitPanel = new JPanel(); waitPanel.add(labelPlusField); waitPanel.add(new JLabel(" Wait: ")); waitPanel.add(booleanOptions); twoLines.add(waitPanel); } twoLines.setBorder(BorderFactory.createTitledBorder("Subgroup properties")); okButton = new JButton("Ok"); okButton.setMnemonic(KeyEvent.VK_O); okButton.addActionListener(this); cancelButton = new JButton("Cancel"); cancelButton.setMnemonic(KeyEvent.VK_C); cancelButton.addActionListener(this); JPanel okCancel = new JPanel(new GridLayout(1,0,5,5)); okCancel.add(okButton); okCancel.add(cancelButton); buttons.add(okCancel, BorderLayout.EAST); total.add(twoLines, BorderLayout.NORTH); total.add(buttons, BorderLayout.SOUTH); getContentPane().add(total, BorderLayout.NORTH); } public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if (obj==okButton) { if (checkSubgroup()) { pressedOk=true; dispose(); } } else if (obj==cancelButton) dispose(); } boolean checkSubgroup() { boolean ret; if (subgroup==null) ret=true; else { try { subgroupId = Integer.valueOf(subgroup.getText()).intValue(); ret= subgroupId>0; } catch(Exception ex) { ret=false; } if (!ret) JOptionPane.showMessageDialog(this, "The subgroupId is not valid"); } return ret; } static String[] booleanValues; static { booleanValues = new String[2]; booleanValues[0] = "Yes"; booleanValues[1] = "No"; } JButton okButton, cancelButton; JComboBox types, booleanOptions; JTextField subgroup; int subgroupId; boolean pressedOk; };