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);
+ }
}
//
*/
@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") {
*/
@SuppressWarnings("synthetic-access")
public void actionPerformed(ActionEvent e) {
- userFontList.setEnabled(useCustomUserFontCheckBox.isSelected());
+ boolean selected = useCustomUserFontCheckBox.isSelected();
+ userFontList.setEnabled(selected);
+ userFontSizeSpinner.setEnabled(selected);
}
};
}
interfaceConfigPanel.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));
+ interfaceConfigPanel.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));
+ interfaceConfigPanel.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));
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));
+ controlFontSizeSpinner = new JSpinner(new SpinnerNumberModel(12, 6, 80, 1));
+ interfaceConfigPanel.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));
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));
- 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));
+ interfaceConfigPanel.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));
+
+ interfaceConfigPanel.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 interfaceConfigPanel;
}