X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FPreferencesPage.java;h=27ff163db8d459452cb7cbe4d4ef18db6e4660e9;hb=a03efa6ebf81fc25c9b3e4effdd1529e956ad24b;hp=03910eb06064fd3faf9d3c7000de228d2a407335;hpb=9837f6421b3602e461df742878666736d832298e;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/PreferencesPage.java b/src/de/todesbaum/jsite/gui/PreferencesPage.java index 03910eb..27ff163 100644 --- a/src/de/todesbaum/jsite/gui/PreferencesPage.java +++ b/src/de/todesbaum/jsite/gui/PreferencesPage.java @@ -27,8 +27,10 @@ import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; +import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; +import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -36,6 +38,8 @@ import javax.swing.JTextField; import de.todesbaum.jsite.i18n.I18n; import de.todesbaum.jsite.i18n.I18nContainer; +import de.todesbaum.jsite.main.Configuration; +import de.todesbaum.jsite.main.Configuration.ConfigurationDirectory; import de.todesbaum.util.swing.TWizard; import de.todesbaum.util.swing.TWizardPage; @@ -55,19 +59,48 @@ public class PreferencesPage extends TWizardPage { /** Action that chooses a new temp directory. */ private Action chooseTempDirectoryAction; + /** Action when selecting “next to JAR file.” */ + private Action nextToJarFileAction; + + /** Action when selecting “home directory.” */ + private Action homeDirectoryAction; + /** The text field containing the directory. */ private JTextField tempDirectoryTextField; /** The temp directory. */ private String tempDirectory; + /** The configuration. */ + private Configuration configuration; + + /** The configuration directory. */ + private ConfigurationDirectory configurationDirectory; + + /** The “default” button. */ + private JRadioButton defaultTempDirectory; + + /** The “custom” button. */ + private JRadioButton customTempDirectory; + + /** The “next to JAR file” checkbox. */ + private JRadioButton nextToJarFile; + + /** The “current directory” checkbox. */ + private JRadioButton currentDirectory; + + /** The “home directory” checkbox. */ + private JRadioButton homeDirectory; + /** * Creates a new “preferences” page. * * @param wizard * The wizard this page belongs to + * @param configuration + * The configuration that is controlled */ - public PreferencesPage(TWizard wizard) { + public PreferencesPage(TWizard wizard, Configuration configuration) { super(wizard); pageInit(); setHeading(I18n.getMessage("jsite.preferences.heading")); @@ -77,12 +110,12 @@ public class PreferencesPage extends TWizardPage { /** * {@inheritDoc} */ - @Override public void run() { setHeading(I18n.getMessage("jsite.preferences.heading")); setDescription(I18n.getMessage("jsite.preferences.description")); } }); + this.configuration = configuration; } // @@ -108,6 +141,53 @@ 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); + } + } + + /** + * Returns the configuration directory. + * + * @return The configuration directory + */ + public ConfigurationDirectory getConfigurationDirectory() { + return configurationDirectory; + } + + /** + * Sets the configuration directory. + * + * @param configurationDirectory + * The configuration directory + */ + public void setConfigurationDirectory(ConfigurationDirectory configurationDirectory) { + this.configurationDirectory = configurationDirectory; + configuration.setConfigurationDirectory(configurationDirectory); + switch (configurationDirectory) { + case NEXT_TO_JAR_FILE: + nextToJarFile.setSelected(true); + break; + case HOME_DIRECTORY: + homeDirectory.setSelected(true); + break; + } + } + + /** + * {@inheritDoc} + */ + @Override + public void pageAdded(TWizard wizard) { + super.pageAdded(wizard); + this.wizard.setPreviousName(I18n.getMessage("jsite.menu.nodes.manage-nodes")); + this.wizard.setNextName(I18n.getMessage("jsite.wizard.next")); + this.wizard.setQuitName(I18n.getMessage("jsite.wizard.quit")); + this.wizard.setNextEnabled(false); } // @@ -132,7 +212,6 @@ public class PreferencesPage extends TWizardPage { /** * {@inheritDoc} */ - @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { selectDefaultTempDirectory(); @@ -143,7 +222,6 @@ public class PreferencesPage extends TWizardPage { /** * {@inheritDoc} */ - @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { selectCustomTempDirectory(); @@ -151,21 +229,35 @@ public class PreferencesPage extends TWizardPage { }; chooseTempDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.temp-directory.choose")) { - @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent e) { chooseTempDirectory(); } }; + nextToJarFileAction = new AbstractAction(I18n.getMessage("jsite.preferences.config-directory.jar")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionevent) { + configurationDirectory = ConfigurationDirectory.NEXT_TO_JAR_FILE; + } + }; + homeDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.config-directory.home")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionevent) { + configurationDirectory = ConfigurationDirectory.HOME_DIRECTORY; + } + }; I18nContainer.getInstance().registerRunnable(new Runnable() { - @Override @SuppressWarnings("synthetic-access") public void run() { 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")); + nextToJarFileAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.config-directory.jar")); + homeDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.config-directory.home")); } }); } @@ -176,38 +268,58 @@ public class PreferencesPage extends TWizardPage { * @return The preferences panel */ private JPanel createPreferencesPanel() { - JPanel preferencesPanel = new JPanel(new BorderLayout(12, 12)); - - JPanel tempDirectoryPanel = new JPanel(new GridBagLayout()); - preferencesPanel.add(tempDirectoryPanel, BorderLayout.CENTER); + JPanel preferencesPanel = new JPanel(new GridBagLayout()); + preferencesPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); final JLabel tempDirectoryLabel = new JLabel("" + I18n.getMessage("jsite.preferences.temp-directory") + ""); - 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)); + preferencesPanel.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(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)); + defaultTempDirectory = new JRadioButton(selectDefaultTempDirectoryAction); + preferencesPanel.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(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)); + customTempDirectory = new JRadioButton(selectCustomTempDirectoryAction); + preferencesPanel.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(); - 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)); + tempDirectoryTextField.setEditable(false); + if (tempDirectory != null) { + tempDirectoryTextField.setText(tempDirectory); + customTempDirectory.setSelected(true); + } else { + defaultTempDirectory.setSelected(true); + } + chooseTempDirectoryAction.setEnabled(tempDirectory != null); + preferencesPanel.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)); + preferencesPanel.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)); + + final JLabel configurationDirectoryLabel = new JLabel("" + I18n.getMessage("jsite.preferences.config-directory") + ""); + preferencesPanel.add(configurationDirectoryLabel, new GridBagConstraints(0, 3, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(12, 0, 0, 0), 0, 0)); + + nextToJarFile = new JRadioButton(nextToJarFileAction); + preferencesPanel.add(nextToJarFile, new GridBagConstraints(0, 4, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 18, 0, 0), 0, 0)); + + homeDirectory = new JRadioButton(homeDirectoryAction); + preferencesPanel.add(homeDirectory, new GridBagConstraints(0, 5, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 18, 0, 0), 0, 0)); + + ButtonGroup configurationDirectoryButtonGroup = new ButtonGroup(); + configurationDirectoryButtonGroup.add(nextToJarFile); + configurationDirectoryButtonGroup.add(currentDirectory); + configurationDirectoryButtonGroup.add(homeDirectory); I18nContainer.getInstance().registerRunnable(new Runnable() { /** * {@inheritDoc} */ - @Override public void run() { tempDirectoryLabel.setText("" + I18n.getMessage("jsite.preferences.temp-directory") + ""); + configurationDirectoryLabel.setText("" + I18n.getMessage("jsite.preferences.config-directory") + ""); } }); @@ -220,6 +332,7 @@ public class PreferencesPage extends TWizardPage { private void selectDefaultTempDirectory() { tempDirectoryTextField.setEnabled(false); chooseTempDirectoryAction.setEnabled(false); + tempDirectory = null; } /** @@ -228,13 +341,26 @@ public class PreferencesPage extends TWizardPage { 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); } }