import java.awt.BorderLayout;
import java.awt.FlowLayout;
+import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JPanel;
+import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
+import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import net.pterodactylus.jsite.i18n.I18n;
/** The control font list. */
private FontComboBox controlFontList;
+ /** The control font size spinner. */
+ private JSpinner controlFontSizeSpinner;
+
/** The checkbox for “use same as control font”. */
private JCheckBox useCustomUserFontCheckBox;
/** The user font list. */
private FontComboBox userFontList;
+ /** The user font size spinner. */
+ private JSpinner userFontSizeSpinner;
+
/** Whether the dialog was cancelled. */
private boolean cancelled;
* font is to be used
*/
public String getControlFont() {
- return (String) (useCustomControlFontCheckBox.isSelected() ? controlFontList.getSelectedItem() : null);
+ return useCustomControlFontCheckBox.isSelected() ? controlFontList.getSelectedItem() + "-" + controlFontSizeSpinner.getValue() : null;
}
/**
* font is to be used
*/
public void setControlFont(String controlFont) {
- useCustomControlFontCheckBox.setSelected(controlFont != null);
- controlFontList.setEnabled(controlFont != null);
- controlFontList.setSelectedItem(controlFont);
+ boolean hasControlFont = controlFont != null;
+ useCustomControlFontCheckBox.setSelected(hasControlFont);
+ controlFontList.setEnabled(hasControlFont);
+ controlFontSizeSpinner.setEnabled(hasControlFont);
+ if (hasControlFont) {
+ Font font = Font.decode(controlFont);
+ controlFontSizeSpinner.setValue(font.getSize());
+ controlFontList.setSelectedItem(font.getName());
+ } else {
+ controlFontSizeSpinner.setValue(12);
+ controlFontList.setSelectedItem(null);
+ }
}
/**
* input font is to be used
*/
public String getUserFont() {
- return (String) (useCustomUserFontCheckBox.isSelected() ? userFontList.getSelectedItem() : null);
+ return useCustomUserFontCheckBox.isSelected() ? userFontList.getSelectedItem() + "-" + userFontSizeSpinner.getValue() : null;
}
/**
* user input font is to be used
*/
public void setUserFont(String userFont) {
- useCustomUserFontCheckBox.setSelected(userFont != null);
- userFontList.setEnabled(userFont != null);
- userFontList.setSelectedItem(userFont);
+ boolean hasUserFont = userFont != null;
+ useCustomUserFontCheckBox.setSelected(hasUserFont);
+ userFontList.setEnabled(hasUserFont);
+ userFontSizeSpinner.setEnabled(hasUserFont);
+ if (hasUserFont) {
+ Font font = Font.decode(userFont);
+ userFontSizeSpinner.setValue(font.getSize());
+ userFontList.setSelectedItem(font.getName());
+ } else {
+ userFontSizeSpinner.setValue(12);
+ userFontList.setSelectedItem(null);
+ }
}
//
actionCancel();
}
};
- antialiasAction = new I18nAction("configurationDialog.page.interface.item.antialias") {
+ antialiasAction = new I18nAction("configurationDialog.page.interfaceTweaks.item.antialias") {
/**
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
/* do nothing. */
}
};
- useCustomControlFontAction = new I18nAction("configurationDialog.page.interface.item.useCustomControlFont") {
+ useCustomControlFontAction = new I18nAction("configurationDialog.page.interfaceTweaks.item.useCustomControlFont") {
/**
* {@inheritDoc}
*/
@SuppressWarnings("synthetic-access")
public void actionPerformed(ActionEvent e) {
- controlFontList.setEnabled(useCustomControlFontCheckBox.isSelected());
+ boolean selected = useCustomControlFontCheckBox.isSelected();
+ controlFontList.setEnabled(selected);
+ controlFontSizeSpinner.setEnabled(selected);
}
};
- useCustomUserFontAction = new I18nAction("configurationDialog.page.interface.item.useCustomUserFont") {
+ useCustomUserFontAction = new I18nAction("configurationDialog.page.interfaceTweaks.item.useCustomUserFont") {
/**
* {@inheritDoc}
*/
@SuppressWarnings("synthetic-access")
public void actionPerformed(ActionEvent e) {
- userFontList.setEnabled(useCustomUserFontCheckBox.isSelected());
+ boolean selected = useCustomUserFontCheckBox.isSelected();
+ userFontList.setEnabled(selected);
+ userFontSizeSpinner.setEnabled(selected);
}
};
}
JComponent interfaceConfig = createInterfaceConfig();
tabbedPane.add(I18n.get("configurationDialog.page.interface.name"), interfaceConfig);
+ JComponent interfaceTweaksConfig = createInterfaceTweaksConfig();
+ tabbedPane.add(I18n.get("configurationDialog.page.interfaceTweaks.name"), interfaceTweaksConfig);
+
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING, 12, 12));
contentPane.add(buttonPanel, BorderLayout.PAGE_END);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(-12, -12, -12, -12));
}
/**
- * Creates the panel for the interface configuration.
+ * Creates the interface configuration panel.
*
* @return The interface configuration panel
*/
private JComponent createInterfaceConfig() {
JPanel interfaceConfigPanel = new JPanel(new GridBagLayout());
- interfaceConfigPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
+ return interfaceConfigPanel;
+ }
+
+ /**
+ * Creates the panel for the interface tweaks configuration.
+ *
+ * @return The interface tweaks configuration panel
+ */
+ private JComponent createInterfaceTweaksConfig() {
+ JPanel interfaceTweaksConfigPanel = new JPanel(new GridBagLayout());
+ interfaceTweaksConfigPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
- restartRequiredLabel = new I18nLabel("configurationDialog.page.interface.item.restartRequired");
- interfaceConfigPanel.add(restartRequiredLabel, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
+ restartRequiredLabel = new I18nLabel("configurationDialog.page.interfaceTweaks.item.restartRequired");
+ interfaceTweaksConfigPanel.add(restartRequiredLabel, new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
antialiasCheckBox = new JCheckBox(antialiasAction);
- interfaceConfigPanel.add(antialiasCheckBox, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(18, 0, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(antialiasCheckBox, new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(18, 0, 0, 0), 0, 0));
useCustomControlFontCheckBox = new JCheckBox(useCustomControlFontAction);
- interfaceConfigPanel.add(useCustomControlFontCheckBox, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(useCustomControlFontCheckBox, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0));
controlFontList = new FontComboBox();
- interfaceConfigPanel.add(controlFontList, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(controlFontList, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+
+ controlFontSizeSpinner = new JSpinner(new SpinnerNumberModel(12, 6, 80, 1));
+ interfaceTweaksConfigPanel.add(controlFontSizeSpinner, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
useCustomUserFontCheckBox = new JCheckBox(useCustomUserFontAction);
- interfaceConfigPanel.add(useCustomUserFontCheckBox, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 0, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(useCustomUserFontCheckBox, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 0, 0, 0), 0, 0));
userFontList = new FontComboBox();
- interfaceConfigPanel.add(userFontList, new GridBagConstraints(1, 3, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
+ interfaceTweaksConfigPanel.add(userFontList, new GridBagConstraints(1, 3, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
- interfaceConfigPanel.add(new JPanel(), new GridBagConstraints(0, 4, 2, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
+ userFontSizeSpinner = new JSpinner(new SpinnerNumberModel(12, 6, 80, 1));
+ interfaceTweaksConfigPanel.add(userFontSizeSpinner, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0));
- return interfaceConfigPanel;
+ interfaceTweaksConfigPanel.add(new JPanel(), new GridBagConstraints(0, 4, 3, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
+
+ return interfaceTweaksConfigPanel;
}
//