package mapmaker; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ExportOptionsDialog extends StandardDialog { JFrame mFrame; JLabel mBracesLabel = new JLabel("Braces: "); JLabel mIndentLabel = new JLabel("Indent: "); JLabel mMaxColsLabel = new JLabel("Columns: "); JLabel mExportDirectoryLabel = new JLabel("Export Directory: "); FileChooserField mExportDirectoryField = new FileChooserField(FileChooserField.CHOOSE_DIRECTORY); JTextField mIndentField = new JTextField(); JTextField mMaxColsField = new JTextField(); JRadioButton mEndOfLineButton = new JRadioButton("End of Line"); JRadioButton mNextLineButton = new JRadioButton("Next Line"); ButtonGroup mButtonGroup = new ButtonGroup(); public ExportOptionsDialog(JFrame aFrame) { super(aFrame, "Export Options"); int height = mIndentField.getPreferredSize().height; mIndentField.setPreferredSize(new Dimension(50, height)); mMaxColsField.setPreferredSize(new Dimension(50, height)); PairedComponentPanel mainPanel = new PairedComponentPanel(); mButtonGroup.add(mEndOfLineButton); mButtonGroup.add(mNextLineButton); mainPanel.addComponentPair(mExportDirectoryLabel, mExportDirectoryField); mainPanel.addDoubleComponentPair(mMaxColsLabel, mMaxColsField, mIndentLabel, mIndentField); mainPanel.addComponentPair(mBracesLabel, mEndOfLineButton); mainPanel.addHangingComponent(mNextLineButton); setMainPanel(mainPanel); OptionsOkayAction optionsOkayAction = new OptionsOkayAction(); mIndentField.addActionListener(optionsOkayAction); mMaxColsField.addActionListener(optionsOkayAction); setOkayAction(optionsOkayAction); pack(); setLocationRelativeTo(aFrame); } public void setExportOptions(ExportOptions aExportOptions) { mExportDirectoryField.setText(aExportOptions.getDirectory()); mIndentField.setText("" + aExportOptions.getIndent()); mMaxColsField.setText("" + aExportOptions.getCols()); int braceType = aExportOptions.getBraceType(); switch (braceType) { case ExportOptions.BRACE_END_OF_LINE : mEndOfLineButton.setSelected(true); break; case ExportOptions.BRACE_NEXT_LINE : mNextLineButton.setSelected(true); break; } } public ExportOptions getExportOptions() { int cols = Integer.parseInt(mMaxColsField.getText()); int indent = Integer.parseInt(mIndentField.getText()); String directory = mExportDirectoryField.getText(); int braceType; if (mEndOfLineButton.isSelected()) { braceType = ExportOptions.BRACE_END_OF_LINE; } else { braceType = ExportOptions.BRACE_NEXT_LINE; } ExportOptions exportOptions = new ExportOptions(); exportOptions.setCols(cols); exportOptions.setIndent(indent); exportOptions.setBraceType(braceType); exportOptions.setDirectory(directory); return exportOptions; } public static ExportOptions showExportOptionsDialog(JFrame aFrame, ExportOptions aExportOptions) { ExportOptionsDialog optionsDialog = new ExportOptionsDialog(aFrame); optionsDialog.setExportOptions(aExportOptions); optionsDialog.setVisible(true); if (optionsDialog.isOkay()) { return optionsDialog.getExportOptions(); } return null; } class OptionsOkayAction extends OkayAction { public void actionPerformed(ActionEvent e) { try { int cols = Integer.parseInt(mMaxColsField.getText()); int indent = Integer.parseInt(mIndentField.getText()); } catch (Exception ex) { JOptionPane.showMessageDialog(ExportOptionsDialog.this, "Please ensure both Columns and Indent fields " + "are whole numbers.", "Error", JOptionPane.ERROR_MESSAGE); return; } super.actionPerformed(e); } } }