X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FPreferencesPage.java;h=5cf258afcdbf56c004663af24972b22366435a10;hb=e08a363c18f332342c22db3ba52cf89764e10838;hp=c4b4ce3068fa99f0fe99beb5533fcbcdce7d06ed;hpb=e7543a84b39a9db45a8c7591d454dfc2ef381478;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/PreferencesPage.java b/src/de/todesbaum/jsite/gui/PreferencesPage.java index c4b4ce3..5cf258a 100644 --- a/src/de/todesbaum/jsite/gui/PreferencesPage.java +++ b/src/de/todesbaum/jsite/gui/PreferencesPage.java @@ -1,6 +1,5 @@ /* - * jSite - PreferencesPage.java - - * Copyright © 2009 David Roden + * jSite - PreferencesPage.java - Copyright © 2009–2012 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,8 +26,11 @@ 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.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; @@ -37,6 +39,9 @@ import javax.swing.JTextField; import de.todesbaum.jsite.i18n.I18n; import de.todesbaum.jsite.i18n.I18nContainer; +import de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation; +import de.todesbaum.util.freenet.fcp2.ClientPutDir.ManifestPutter; +import de.todesbaum.util.freenet.fcp2.PriorityClass; import de.todesbaum.util.swing.TWizard; import de.todesbaum.util.swing.TWizardPage; @@ -56,18 +61,60 @@ 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; + + /** Action when selecting “custom directory.” */ + private Action customDirectoryAction; + + /** Action when selecting “use early encode.” */ + private Action useEarlyEncodeAction; + + /** Action when a priority was selected. */ + private Action priorityAction; + /** The text field containing the directory. */ private JTextField tempDirectoryTextField; /** The temp directory. */ private String tempDirectory; + /** The configuration location. */ + private ConfigurationLocation configurationLocation; + + /** Whether to use “early encode.” */ + private boolean useEarlyEncode; + + /** The prioriy for inserts. */ + private PriorityClass priority; + /** The “default” button. */ private JRadioButton defaultTempDirectory; /** The “custom” button. */ private JRadioButton customTempDirectory; + /** The “next to JAR file” checkbox. */ + private JRadioButton nextToJarFile; + + /** The “home directory” checkbox. */ + private JRadioButton homeDirectory; + + /** The “custom directory” checkbox. */ + private JRadioButton customDirectory; + + /** The “use early encode” checkbox. */ + private JCheckBox useEarlyEncodeCheckBox; + + /** The insert priority select box. */ + private JComboBox insertPriorityComboBox; + + /** The manifest putter select box. */ + private JComboBox manifestPutterComboBox; + /** * Creates a new “preferences” page. * @@ -124,6 +171,119 @@ public class PreferencesPage extends TWizardPage { } /** + * Returns the configuration location. + * + * @return The configuration location + */ + public ConfigurationLocation getConfigurationLocation() { + return configurationLocation; + } + + /** + * Sets the configuration location. + * + * @param configurationLocation + * The configuration location + */ + public void setConfigurationLocation(ConfigurationLocation configurationLocation) { + this.configurationLocation = configurationLocation; + switch (configurationLocation) { + case NEXT_TO_JAR_FILE: + nextToJarFile.setSelected(true); + break; + case HOME_DIRECTORY: + homeDirectory.setSelected(true); + break; + case CUSTOM: + customDirectory.setSelected(true); + break; + } + } + + /** + * Sets whether it is possible to select the “next to JAR file” option for + * the configuration location. + * + * @param nextToJarFile + * {@code true} if the configuration file can be saved next to + * the JAR file, {@code false} otherwise + */ + public void setHasNextToJarConfiguration(boolean nextToJarFile) { + this.nextToJarFile.setEnabled(nextToJarFile); + } + + /** + * Sets whether it is possible to select the “custom location” option for + * the configuration location. + * + * @param customDirectory + * {@code true} if the configuration file can be saved to a + * custom location, {@code false} otherwise + */ + public void setHasCustomConfiguration(boolean customDirectory) { + this.customDirectory.setEnabled(customDirectory); + } + + /** + * Returns whether to use the “early encode“ flag for the insert. + * + * @return {@code true} to set the “early encode” flag for the insert, + * {@code false} otherwise + */ + public boolean useEarlyEncode() { + return useEarlyEncode; + } + + /** + * Sets whether to use the “early encode“ flag for the insert. + * + * @param useEarlyEncode + * {@code true} to set the “early encode” flag for the insert, + * {@code false} otherwise + */ + public void setUseEarlyEncode(boolean useEarlyEncode) { + useEarlyEncodeCheckBox.setSelected(useEarlyEncode); + } + + /** + * Returns the configured insert priority. + * + * @return The insert priority + */ + public PriorityClass getPriority() { + return priority; + } + + /** + * Sets the insert priority. + * + * @param priority + * The insert priority + */ + public void setPriority(PriorityClass priority) { + insertPriorityComboBox.setSelectedItem(priority); + } + + /** + * Returns the selected manifest putter. + * + * @return The selected manifest putter + */ + public ManifestPutter getManifestPutter() { + return (ManifestPutter) manifestPutterComboBox.getSelectedItem(); + } + + /** + * Sets the manifest putter. + * + * @param manifestPutter + * The manifest putter + */ + public void setManifestPutter(ManifestPutter manifestPutter) { + manifestPutterComboBox.setSelectedItem(manifestPutter); + } + + /** * {@inheritDoc} */ @Override @@ -179,6 +339,41 @@ public class PreferencesPage extends TWizardPage { chooseTempDirectory(); } }; + nextToJarFileAction = new AbstractAction(I18n.getMessage("jsite.preferences.config-directory.jar")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionevent) { + configurationLocation = ConfigurationLocation.NEXT_TO_JAR_FILE; + } + }; + homeDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.config-directory.home")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionevent) { + configurationLocation = ConfigurationLocation.HOME_DIRECTORY; + } + }; + customDirectoryAction = new AbstractAction(I18n.getMessage("jsite.preferences.config-directory.custom")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + configurationLocation = ConfigurationLocation.CUSTOM; + } + }; + useEarlyEncodeAction = new AbstractAction(I18n.getMessage("jsite.preferences.insert-options.use-early-encode")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + useEarlyEncode = useEarlyEncodeCheckBox.isSelected(); + } + }; + priorityAction = new AbstractAction(I18n.getMessage("jsite.preferences.insert-options.priority")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + priority = (PriorityClass) insertPriorityComboBox.getSelectedItem(); + } + }; I18nContainer.getInstance().registerRunnable(new Runnable() { @@ -187,6 +382,10 @@ public class PreferencesPage extends TWizardPage { 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")); + customDirectoryAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.config-directory.custom")); + useEarlyEncodeAction.putValue(Action.NAME, I18n.getMessage("jsite.preferences.insert-options.use-early-encode")); } }); } @@ -197,19 +396,17 @@ 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)); 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)); + 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)); 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)); + 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); @@ -224,10 +421,46 @@ public class PreferencesPage extends TWizardPage { 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)); + 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)); + + customDirectory = new JRadioButton(customDirectoryAction); + preferencesPanel.add(customDirectory, new GridBagConstraints(0, 6, 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(homeDirectory); + configurationDirectoryButtonGroup.add(customDirectory); + + final JLabel insertOptionsLabel = new JLabel("" + I18n.getMessage("jsite.preferences.insert-options") + ""); + preferencesPanel.add(insertOptionsLabel, new GridBagConstraints(0, 7, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0)); + + useEarlyEncodeCheckBox = new JCheckBox(useEarlyEncodeAction); + preferencesPanel.add(useEarlyEncodeCheckBox, new GridBagConstraints(0, 8, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); + + final JLabel insertPriorityLabel = new JLabel(I18n.getMessage("jsite.preferences.insert-options.priority")); + preferencesPanel.add(insertPriorityLabel, new GridBagConstraints(0, 9, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); + + insertPriorityComboBox = new JComboBox(new PriorityClass[] { PriorityClass.MINIMUM, PriorityClass.PREFETCH, PriorityClass.BULK, PriorityClass.UPDATABLE, PriorityClass.SEMI_INTERACTIVE, PriorityClass.INTERACTIVE, PriorityClass.MAXIMUM }); + insertPriorityComboBox.setAction(priorityAction); + preferencesPanel.add(insertPriorityComboBox, new GridBagConstraints(1, 9, 2, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(0, 18, 0, 0), 0, 0)); + + final JLabel manifestPutterLabel = new JLabel(I18n.getMessage("jsite.preferences.insert-options.manifest-putter")); + preferencesPanel.add(manifestPutterLabel, new GridBagConstraints(0, 10, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); + + manifestPutterComboBox = new JComboBox(ManifestPutter.values()); + preferencesPanel.add(manifestPutterComboBox, new GridBagConstraints(1, 10, 2, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(0, 18, 0, 0), 0, 0)); I18nContainer.getInstance().registerRunnable(new Runnable() { @@ -236,6 +469,10 @@ public class PreferencesPage extends TWizardPage { */ public void run() { tempDirectoryLabel.setText("" + I18n.getMessage("jsite.preferences.temp-directory") + ""); + configurationDirectoryLabel.setText("" + I18n.getMessage("jsite.preferences.config-directory") + ""); + insertOptionsLabel.setText("" + I18n.getMessage("jsite.preferences.insert-options") + ""); + insertPriorityLabel.setText(I18n.getMessage("jsite.preferences.insert-options.priority")); + manifestPutterLabel.setText(I18n.getMessage("jsite.preferences.insert-options.manifest-putter")); } });