import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
/**
* The configuration dialog.
- *
+ *
* @author <a href="mailto:dr@ina-germany.de">David Roden</a>
- * @version $Id$
*/
public class ConfigurationDialog extends JDialog implements I18nable {
/**
* Creates a new configuration dialog.
- *
+ *
* @param swingInterface
* The Swing interface
*/
/**
* Returns whether the dialog was cancelled or confirmed. If the dialog was
* cancelled, no further processing should be done.
- *
+ *
* @return <code>true</code> if the dialog was cancelled,
* <code>false</code> otherwise
*/
/**
* Returns whether the advanced mode is selected.
- *
+ *
* @return <code>true</code> if the advanced mode is selected,
* <code>false</code> otherwise
*/
/**
* Sets whether the advanced mode is selected.
- *
+ *
* @param advancedMode
* <code>true</code> if the advanced mode is selected,
* <code>false</code> otherwise
* Returns whether the “beautify” checkbox has been selected. The result of
* this method should not be used if {@link #wasCancelled()} returned
* <code>true</code>!
- *
+ *
* @return <code>true</code> if the checkbox was selected,
* <code>false</code> otherwise
*/
/**
* Sets the state of the “antialias” checkbox.
- *
+ *
* @param antialias
* The state of the checkbox
*/
/**
* Returns the font for the controls.
- *
+ *
* @return The control font, or <code>null</code> if no custom control
* font is to be used
*/
/**
* Sets the font for the controls.
- *
+ *
* @param controlFont
* The control font, or <code>null</code> if no custom control
* font is to be used
/**
* Returns the font for user input.
- *
+ *
* @return The font for user input, or <code>null</code> if no custom user
* input font is to be used
*/
/**
* Sets the font for user input.
- *
+ *
* @param userFont
* The font for user input, or <code>null</code> if no custom
* user input font is to be used
/**
* Returns the class name of the selected look and feel, if a custom look
* and feel is selected.
- *
+ *
* @return The class name of the look and feel to load, or <code>null</code>
* if no special look and feel should be used
*/
/**
* Sets the given look and feel.
- *
+ *
* @param lookAndFeel
* The class name of the look and feel, or <code>null</code> to
* not select a custom look and feel
LookAndFeelWrapper lookAndFeelWrapper = (LookAndFeelWrapper) customLAFComboBox.getItemAt(lookAndFeelIndex);
if (lookAndFeelWrapper.getClassName().equals(lookAndFeel)) {
customLAFComboBox.setSelectedIndex(lookAndFeelIndex);
+ customLAFComboBox.setEnabled(true);
useCustomLAFCheckBox.setSelected(true);
break;
}
/**
* Creates the interface configuration panel.
- *
+ *
* @return The interface configuration panel
*/
private JComponent createInterfaceConfig() {
/**
* Creates the panel for the interface tweaks configuration.
- *
+ *
* @return The interface tweaks configuration panel
*/
private JComponent createInterfaceTweaksConfig() {
LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels();
List<LookAndFeelWrapper> lookAndFeelWrappers = new ArrayList<LookAndFeelWrapper>();
- for (LookAndFeelInfo lookAndFeelInfo: lookAndFeelInfos) {
+ for (LookAndFeelInfo lookAndFeelInfo : lookAndFeelInfos) {
lookAndFeelWrappers.add(new LookAndFeelWrapper(lookAndFeelInfo.getClassName(), lookAndFeelInfo.getName()));
}
customLAFComboBox = new JComboBox(lookAndFeelWrappers.toArray(new LookAndFeelWrapper[0]));
- interfaceTweaksConfigPanel.add(customLAFComboBox, new GridBagConstraints(1, 4, 2, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(customLAFComboBox, new GridBagConstraints(1, 4, 2, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
interfaceTweaksConfigPanel.add(new JPanel(), new GridBagConstraints(0, 5, 3, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
* Called when the “okay” button is clicked.
*/
private void actionOkay() {
+ if (useCustomControlFontCheckBox.isSelected()) {
+ if (controlFontList.getSelectedItem() == null) {
+ JOptionPane.showMessageDialog(this, I18n.get("configurationDialog.error.noControlFontSelected.message"), I18n.get("configurationDialog.error.noControlFontSelected.title"), JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+ }
+ if (useCustomUserFontCheckBox.isSelected()) {
+ if (userFontList.getSelectedItem() == null) {
+ JOptionPane.showMessageDialog(this, I18n.get("configurationDialog.error.noUserFontSelected.message"), I18n.get("configurationDialog.error.noUserFontSelected.title"), JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+ }
cancelled = false;
setVisible(false);
}
public void updateI18n() {
okayAction.updateI18n();
cancelAction.updateI18n();
+ advancedModeAction.updateI18n();
restartRequiredLabel.updateI18n();
antialiasAction.updateI18n();
useCustomControlFontAction.updateI18n();
useCustomUserFontAction.updateI18n();
+ useCustomLAFAction.updateI18n();
SwingUtils.repackCentered(this);
}
/**
* Wrapper around class name and name of a {@link LookAndFeel}.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
private static class LookAndFeelWrapper {
/**
* Creates a new wrapper around the given class name and name of a look
* and feel.
- *
+ *
* @param className
* The class name of the look and feel
* @param lookAndFeelName
/**
* Returns the class name of the look and feel.
- *
+ *
* @return The class name of the look and feel
*/
public String getClassName() {