X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FPreferencesPage.java;h=251358246611de90cbf0fea57aed8d6260b25db3;hb=6363a6f5355700aea01514c2558f670470dcda82;hp=c1a6dbc5addafd81be87b67c1921f5e584a856c2;hpb=7824ba49ef78c463396436448f0717ea691353ed;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/PreferencesPage.java b/src/de/todesbaum/jsite/gui/PreferencesPage.java index c1a6dbc..2513582 100644 --- a/src/de/todesbaum/jsite/gui/PreferencesPage.java +++ b/src/de/todesbaum/jsite/gui/PreferencesPage.java @@ -27,9 +27,13 @@ import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; +import javax.swing.JTextField; import de.todesbaum.jsite.i18n.I18n; import de.todesbaum.jsite.i18n.I18nContainer; @@ -43,12 +47,27 @@ import de.todesbaum.util.swing.TWizardPage; */ public class PreferencesPage extends TWizardPage { + /** Select default temp directory action. */ + private Action selectDefaultTempDirectoryAction; + + /** Select custom temp directory action. */ + private Action selectCustomTempDirectoryAction; + /** Action that chooses a new temp directory. */ private Action chooseTempDirectoryAction; + /** The text field containing the directory. */ + private JTextField tempDirectoryTextField; + /** The temp directory. */ private String tempDirectory; + /** The “default” button. */ + private JRadioButton defaultTempDirectory; + + /** The “custom” button. */ + private JRadioButton customTempDirectory; + /** * Creates a new “preferences” page. * @@ -96,6 +115,13 @@ public class PreferencesPage extends TWizardPage { */ public void setTempDirectory(String tempDirectory) { this.tempDirectory = tempDirectory; + tempDirectoryTextField.setText((tempDirectory != null) ? tempDirectory : ""); + if (tempDirectory != null) { + customTempDirectory.setSelected(true); + chooseTempDirectoryAction.setEnabled(true); + } else { + defaultTempDirectory.setSelected(true); + } } // @@ -115,7 +141,29 @@ public class PreferencesPage extends TWizardPage { * Creates all actions. */ private void createActions() { - chooseTempDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.choose-temp-directory")) { + selectDefaultTempDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.temp-directory.default")) { + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + selectDefaultTempDirectory(); + } + }; + selectCustomTempDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.temp-directory.custom")) { + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + selectCustomTempDirectory(); + } + }; + chooseTempDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.temp-directory.choose")) { @Override @SuppressWarnings("synthetic-access") @@ -129,7 +177,9 @@ public class PreferencesPage extends TWizardPage { @Override @SuppressWarnings("synthetic-access") public void run() { - chooseTempDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.choose-temp-directory")); + selectDefaultTempDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.temp-directory.default")); + selectCustomTempDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.temp-directory.custom")); + chooseTempDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.temp-directory.choose")); } }); } @@ -146,13 +196,31 @@ public class PreferencesPage extends TWizardPage { preferencesPanel.add(tempDirectoryPanel, BorderLayout.CENTER); final JLabel tempDirectoryLabel = new JLabel("" + I18n.getMessage("jsite.preferences.temp-directory") + ""); - tempDirectoryPanel.add(tempDirectoryLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); + tempDirectoryPanel.add(tempDirectoryLabel, new GridBagConstraints(0, 0, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); - final JRadioButton defaultTempDirectory = new JRadioButton(I18n.getMessage("jsite.preferences.temp-directory.default")); - tempDirectoryPanel.add(defaultTempDirectory, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 18, 0, 0), 0, 0)); + defaultTempDirectory = new JRadioButton(selectDefaultTempDirectoryAction); + tempDirectoryPanel.add(defaultTempDirectory, new GridBagConstraints(0, 1, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 18, 0, 0), 0, 0)); - final JRadioButton customTempDirectory = new JRadioButton(I18n.getMessage("jsite.preferences.temp-directory.custom")); - tempDirectoryPanel.add(customTempDirectory, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 18, 0, 0), 0, 0)); + customTempDirectory = new JRadioButton(selectCustomTempDirectoryAction); + tempDirectoryPanel.add(customTempDirectory, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 18, 0, 0), 0, 0)); + + ButtonGroup tempDirectoryButtonGroup = new ButtonGroup(); + defaultTempDirectory.getModel().setGroup(tempDirectoryButtonGroup); + customTempDirectory.getModel().setGroup(tempDirectoryButtonGroup); + + tempDirectoryTextField = new JTextField(); + tempDirectoryTextField.setEditable(false); + if (tempDirectory != null) { + tempDirectoryTextField.setText(tempDirectory); + customTempDirectory.setSelected(true); + } else { + defaultTempDirectory.setSelected(true); + } + chooseTempDirectoryAction.setEnabled(tempDirectory != null); + tempDirectoryPanel.add(tempDirectoryTextField, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 6, 0, 0), 0, 0)); + + JButton chooseButton = new JButton(chooseTempDirectoryAction); + tempDirectoryPanel.add(chooseButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.BOTH, new Insets(0, 6, 0, 0), 0, 0)); I18nContainer.getInstance().registerRunnable(new Runnable() { @@ -162,8 +230,6 @@ public class PreferencesPage extends TWizardPage { @Override public void run() { tempDirectoryLabel.setText("" + I18n.getMessage("jsite.preferences.temp-directory") + ""); - defaultTempDirectory.setText(I18n.getMessage("jsite.preferences.temp-directory.default")); - customTempDirectory.setText(I18n.getMessage("jsite.preferences.temp-directory.custom")); } }); @@ -171,10 +237,40 @@ public class PreferencesPage extends TWizardPage { } /** + * Activates the default temp directory radio button. + */ + private void selectDefaultTempDirectory() { + tempDirectoryTextField.setEnabled(false); + chooseTempDirectoryAction.setEnabled(false); + tempDirectory = null; + } + + /** + * Activates the custom temp directory radio button. + */ + private void selectCustomTempDirectory() { + tempDirectoryTextField.setEnabled(true); + chooseTempDirectoryAction.setEnabled(true); + if (tempDirectoryTextField.getText().length() == 0) { + chooseTempDirectory(); + if (tempDirectoryTextField.getText().length() == 0) { + defaultTempDirectory.setSelected(true); + } + } + } + + /** * Lets the user choose a new temp directory. */ private void chooseTempDirectory() { - /* TODO */ + JFileChooser fileChooser = new JFileChooser(tempDirectory); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + int returnValue = fileChooser.showDialog(wizard, I18n.getMessage("jsite.preferences.temp-directory.choose.approve")); + if (returnValue == JFileChooser.CANCEL_OPTION) { + return; + } + tempDirectory = fileChooser.getSelectedFile().getPath(); + tempDirectoryTextField.setText(tempDirectory); } }