/** * Constructs the dialog window * * @param p Parent GUI */ public RegionEditorDialog(MapEditorGUI p) { parent = p; setLayout(null); /* * Initialize naming field */ JLabel l = new JLabel("Name"); l.setSize(l.getPreferredSize()); l.setLocation(10, 10); nameField = new JTextField("plains"); nameField.setSize(200, 24); nameField.setLocation(10, 32); add(l); add(nameField); /* * Initialize encounter spinner */ l = new JLabel("Encounter rate"); l.setSize(l.getPreferredSize()); l.setLocation(10, 64); eRateSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 20, 1)); eRateSpinner.setSize(eRateSpinner.getPreferredSize()); eRateSpinner.setLocation(210 - eRateSpinner.getWidth(), 62); add(l); add(eRateSpinner); /* * Initialize Terrain selector */ l = new JLabel("Terrain"); l.setSize(l.getPreferredSize()); l.setLocation(10, 96); terrain = new JComboBox(ToolKit.terrains); terrain.setSize(200, 24); terrain.setLocation(10, 120); add(l); add(terrain); /* * Initialize formation list */ l = new JLabel("Formations"); l.setSize(l.getPreferredSize()); l.setLocation(10, 156); fList = new JList(formations); fPane = new JScrollPane(fList); fPane.setSize(200, 160); fPane.setLocation(10, 172); add(l); add(fPane); /* * Initialize buttons */ okButton = new JButton("OK"); okButton.setSize(80, 24); okButton.setLocation(20, 380); okButton.addActionListener(this); cancelButton = new JButton("Cancel"); cancelButton.setSize(80, 24); cancelButton.setLocation(120, 380); cancelButton.addActionListener(this); add(okButton); add(cancelButton); fRemButton = new JButton("-"); fRemButton.setSize(fRemButton.getPreferredSize()); fRemButton.setLocation(210 - fRemButton.getWidth(), 335); fAddButton = new JButton("+"); fAddButton.setSize(fAddButton.getPreferredSize()); fAddButton.setLocation(fRemButton.getX() - fAddButton.getWidth(), 335); fEdtButton = new JButton("Edit"); fEdtButton.setSize(100, 24); fEdtButton.setLocation(10, 335); fAddButton.addActionListener(this); fRemButton.addActionListener(this); fEdtButton.addActionListener(this); add(fAddButton); add(fRemButton); add(fEdtButton); /* * Initialize dialog window */ setSize(230, 450); setVisible(true); setModal(true); setResizable(false); setTitle("Region Editor"); setLocationRelativeTo(parent); }
/** performs the creation of the dialog and all its components. */ protected void initGUI() { JPanel panel; SpinnerNumberModel model; JPanel panel2; getContentPane().setLayout(new BorderLayout()); panel = new JPanel(new GridLayout(6, 1)); panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); getContentPane().add(panel, BorderLayout.CENTER); // mean precision m_MeanPrecSpinner = new JSpinner(); m_MeanPrecSpinner.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { getData(); } }); model = (SpinnerNumberModel) m_MeanPrecSpinner.getModel(); model.setMaximum(new Integer(20)); model.setMinimum(new Integer(0)); m_MeanPrecLabel = new JLabel("Mean Precision"); m_MeanPrecLabel.setDisplayedMnemonic('M'); m_MeanPrecLabel.setLabelFor(m_MeanPrecSpinner); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_MeanPrecLabel); panel2.add(m_MeanPrecSpinner); panel.add(panel2); // stddev precision m_StdDevPrecSpinner = new JSpinner(); m_StdDevPrecSpinner.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { getData(); } }); model = (SpinnerNumberModel) m_StdDevPrecSpinner.getModel(); model.setMaximum(new Integer(20)); model.setMinimum(new Integer(0)); m_StdDevPrecLabel = new JLabel("StdDev. Precision"); m_StdDevPrecLabel.setDisplayedMnemonic('S'); m_StdDevPrecLabel.setLabelFor(m_StdDevPrecSpinner); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_StdDevPrecLabel); panel2.add(m_StdDevPrecSpinner); panel.add(panel2); // Format m_OutputFormatComboBox = new JComboBox(m_OutputFormatNames); m_OutputFormatComboBox.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { getData(); } }); m_OutputFormatLabel = new JLabel("Output Format"); m_OutputFormatLabel.setDisplayedMnemonic('F'); m_OutputFormatLabel.setLabelFor(m_OutputFormatComboBox); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_OutputFormatLabel); panel2.add(m_OutputFormatComboBox); panel.add(panel2); // Average m_ShowAverageCheckBox = new JCheckBox(""); m_ShowAverageCheckBox.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { getData(); } }); m_ShowAverageLabel = new JLabel("Show Average"); m_ShowAverageLabel.setDisplayedMnemonic('A'); m_ShowAverageLabel.setLabelFor(m_ShowAverageCheckBox); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_ShowAverageLabel); panel2.add(m_ShowAverageCheckBox); panel.add(panel2); // Remove filter classname m_RemoveFilterNameCheckBox = new JCheckBox(""); m_RemoveFilterNameCheckBox.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { getData(); } }); m_RemoveFilterNameLabel = new JLabel("Remove filter classnames"); m_RemoveFilterNameLabel.setDisplayedMnemonic('R'); m_RemoveFilterNameLabel.setLabelFor(m_RemoveFilterNameCheckBox); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_RemoveFilterNameLabel); panel2.add(m_RemoveFilterNameCheckBox); panel.add(panel2); // Advanced setup m_ResultMatrix = ExperimenterDefaults.getOutputFormat(); m_ResultMatrixEditor = new GenericObjectEditor(true); m_ResultMatrixEditor.setClassType(ResultMatrix.class); m_ResultMatrixEditor.setValue(m_ResultMatrix); m_ResultMatrixEditor.addPropertyChangeListener( new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { // user selected different class? if (!m_ResultMatrix.getClass().equals(m_ResultMatrixEditor.getValue().getClass())) { // if it's the preferred class, then automaticallly use the Experimenter defaults if (m_ResultMatrixEditor .getValue() .getClass() .equals(ExperimenterDefaults.getOutputFormat().getClass())) { m_ResultMatrix = ExperimenterDefaults.getOutputFormat(); m_ResultMatrixEditor.setValue(ExperimenterDefaults.getOutputFormat()); } else { m_ResultMatrix = (ResultMatrix) m_ResultMatrixEditor.getValue(); } setData(); } repaint(); } }); ((GenericObjectEditor.GOEPanel) m_ResultMatrixEditor.getCustomEditor()) .addOkListener( new ActionListener() { public void actionPerformed(ActionEvent e) { m_ResultMatrix = (ResultMatrix) m_ResultMatrixEditor.getValue(); setData(); } }); m_ResultMatrixPanel = new PropertyPanel(m_ResultMatrixEditor, false); m_ResultMatrixLabel = new JLabel("Advanced setup"); panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel2.add(m_ResultMatrixLabel); panel2.add(m_ResultMatrixPanel); panel.add(panel2); // Buttons panel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(panel, BorderLayout.SOUTH); m_CancelButton = new JButton("Cancel"); m_CancelButton.setMnemonic('C'); m_CancelButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { m_Result = CANCEL_OPTION; setVisible(false); } }); m_OkButton = new JButton("OK"); m_OkButton.setMnemonic('O'); m_OkButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { getData(); m_Result = APPROVE_OPTION; setVisible(false); } }); panel.add(m_OkButton); panel.add(m_CancelButton); // default button getRootPane().setDefaultButton(m_OkButton); // initial layout (to get widths and heights) pack(); // adjust dimensions m_MeanPrecLabel.setPreferredSize( new Dimension(m_RemoveFilterNameLabel.getWidth(), m_MeanPrecLabel.getHeight())); m_MeanPrecSpinner.setPreferredSize( new Dimension(m_MeanPrecSpinner.getWidth() * 3, m_MeanPrecSpinner.getHeight())); m_StdDevPrecLabel.setPreferredSize( new Dimension(m_RemoveFilterNameLabel.getWidth(), m_StdDevPrecLabel.getHeight())); m_StdDevPrecSpinner.setPreferredSize( new Dimension(m_StdDevPrecSpinner.getWidth() * 3, m_StdDevPrecSpinner.getHeight())); m_OutputFormatLabel.setPreferredSize( new Dimension(m_RemoveFilterNameLabel.getWidth(), m_OutputFormatLabel.getHeight())); m_ShowAverageLabel.setPreferredSize( new Dimension(m_RemoveFilterNameLabel.getWidth(), m_ShowAverageLabel.getHeight())); m_ResultMatrixLabel.setPreferredSize( new Dimension(m_RemoveFilterNameLabel.getWidth(), m_ResultMatrixLabel.getHeight())); m_ResultMatrixPanel.setPreferredSize( new Dimension( (int) (m_ResultMatrixPanel.getWidth() * 1.5), m_ResultMatrixPanel.getHeight())); // final layout pack(); }