X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Ffunction%2Fsettings%2FSetDisplaySettings.java;fp=tim%2Fprune%2Ffunction%2Fsettings%2FSetDisplaySettings.java;h=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hp=63286c5e86dcddce24736afe427a4bfc410bcb97;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465;p=GpsPrune.git diff --git a/tim/prune/function/settings/SetDisplaySettings.java b/tim/prune/function/settings/SetDisplaySettings.java deleted file mode 100644 index 63286c5..0000000 --- a/tim/prune/function/settings/SetDisplaySettings.java +++ /dev/null @@ -1,274 +0,0 @@ -package tim.prune.function.settings; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.FlowLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.ButtonGroup; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.ListCellRenderer; -import javax.swing.border.EtchedBorder; - -import tim.prune.App; -import tim.prune.DataSubscriber; -import tim.prune.GenericFunction; -import tim.prune.I18nManager; -import tim.prune.UpdateMessageBroker; -import tim.prune.config.Config; -import tim.prune.gui.GuiGridLayout; -import tim.prune.gui.WholeNumberField; -import tim.prune.gui.map.WpIconLibrary; - -/** - * Class to show the dialog for setting the display settings - * like line width, antialiasing, waypoint icons - */ -public class SetDisplaySettings extends GenericFunction -{ - /** - * Inner class to render waypoint icons - */ - class IconComboRenderer extends JLabel implements ListCellRenderer - { - /** Cached icons for each waypoint type */ - private ImageIcon[] _icons = new ImageIcon[WpIconLibrary.WAYPT_NUMBER_OF_ICONS]; - - /** Constructor */ - IconComboRenderer() - { - setOpaque(true); - } - - /** Get the label text at the given index */ - private String getLabel(int inIndex) - { - return I18nManager.getText("dialog.displaysettings.wpicon." + WpIconLibrary.getIconName(inIndex)); - } - - /** Get the image icon at the given index */ - private ImageIcon getIcon(int inIndex) - { - if (_icons[inIndex] == null) - { - _icons[inIndex] = WpIconLibrary.getIconDefinition(inIndex, 1).getImageIcon(); - } - return _icons[inIndex]; - } - - /** @return a label to display the combo box entry */ - public Component getListCellRendererComponent( - JList inList, Integer inValue, int inIndex, - boolean inSelected, boolean inFocus) - { - if (inSelected) { - setBackground(inList.getSelectionBackground()); - setForeground(inList.getSelectionForeground()); - } else { - setBackground(inList.getBackground()); - setForeground(inList.getForeground()); - } - setIcon(getIcon(inValue)); - setText(getLabel(inValue)); - return this; - } - } - - - // Members of SetDisplaySettings - private JDialog _dialog = null; - private WholeNumberField _lineWidthField = null; - private JCheckBox _antialiasCheckbox = null; - private JComboBox _wpIconCombobox = null; - private JRadioButton[] _sizeRadioButtons = null; - private JButton _okButton = null; - - - /** - * Constructor - * @param inApp app object - */ - public SetDisplaySettings(App inApp) - { - super(inApp); - } - - /** - * Return the name key for this function - */ - public String getNameKey() - { - return "function.setdisplaysettings"; - } - - /** - * @return the contents of the window as a Component - */ - private Component makeContents() - { - JPanel mainPanel = new JPanel(); - mainPanel.setLayout(new BorderLayout(0, 5)); - JPanel midPanel = new JPanel(); - midPanel.setLayout(new BoxLayout(midPanel, BoxLayout.Y_AXIS)); - midPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); - - JPanel linesPanel = new JPanel(); - linesPanel.setBorder(BorderFactory.createCompoundBorder( - BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(3, 3, 3, 3)) - ); - GuiGridLayout grid = new GuiGridLayout(linesPanel); - - // line width - JLabel lineWidthLabel = new JLabel(I18nManager.getText("dialog.displaysettings.linewidth")); - grid.add(lineWidthLabel); - _lineWidthField = new WholeNumberField(1); - grid.add(_lineWidthField); - // Antialiasing - _antialiasCheckbox = new JCheckBox(I18nManager.getText("dialog.displaysettings.antialias"), false); - grid.add(_antialiasCheckbox); - grid.add(new JLabel("")); - - linesPanel.setAlignmentX(Component.CENTER_ALIGNMENT); - midPanel.add(linesPanel); - midPanel.add(Box.createVerticalStrut(10)); - - // Panel for waypoint icons - JPanel waypointsPanel = new JPanel(); - waypointsPanel.setBorder(BorderFactory.createCompoundBorder( - BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(3, 3, 3, 3)) - ); - waypointsPanel.setLayout(new BoxLayout(waypointsPanel, BoxLayout.Y_AXIS)); - // Select which waypoint icon to use - JPanel iconPanel = new JPanel(); - GuiGridLayout iconGrid = new GuiGridLayout(iconPanel); - JLabel headerLabel = new JLabel(I18nManager.getText("dialog.displaysettings.waypointicons")); - headerLabel.setAlignmentX(Component.LEFT_ALIGNMENT); - iconGrid.add(headerLabel); - _wpIconCombobox = new JComboBox(new Integer[] {0, 1, 2, 3, 4}); - _wpIconCombobox.setRenderer(new IconComboRenderer()); - iconGrid.add(_wpIconCombobox); - waypointsPanel.add(iconPanel); - // Select size of waypoints - JPanel sizePanel = new JPanel(); - sizePanel.setLayout(new FlowLayout(FlowLayout.CENTER)); - _sizeRadioButtons = new JRadioButton[3]; - ButtonGroup sizeRadioGroup = new ButtonGroup(); - final String[] sizeKeys = {"small", "medium", "large"}; - for (int i=0; i<3; i++) - { - _sizeRadioButtons[i] = new JRadioButton(I18nManager.getText("dialog.displaysettings.size." + sizeKeys[i])); - sizeRadioGroup.add(_sizeRadioButtons[i]); - sizePanel.add(_sizeRadioButtons[i]); - } - waypointsPanel.add(sizePanel); - waypointsPanel.setAlignmentX(Component.CENTER_ALIGNMENT); - midPanel.add(waypointsPanel); - - mainPanel.add(midPanel, BorderLayout.CENTER); - - // button panel at bottom - JPanel buttonPanel = new JPanel(); - buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); - // OK button - _okButton = new JButton(I18nManager.getText("button.ok")); - _okButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - finish(); - } - }); - buttonPanel.add(_okButton); - // Cancel button - JButton cancelButton = new JButton(I18nManager.getText("button.cancel")); - cancelButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - _dialog.dispose(); - } - }); - buttonPanel.add(cancelButton); - mainPanel.add(buttonPanel, BorderLayout.SOUTH); - return mainPanel; - } - - - /** - * Show window - */ - public void begin() - { - if (_dialog == null) - { - _dialog = new JDialog(_parentFrame, I18nManager.getText(getNameKey())); - _dialog.setLocationRelativeTo(_parentFrame); - _dialog.getContentPane().add(makeContents()); - _dialog.pack(); - } - // Set values from config - int lineWidth = Config.getConfigInt(Config.KEY_LINE_WIDTH); - if (lineWidth < 1 || lineWidth > 4) {lineWidth = 2;} - _lineWidthField.setValue(lineWidth); - _antialiasCheckbox.setSelected(Config.getConfigBoolean(Config.KEY_ANTIALIAS)); - _wpIconCombobox.setSelectedIndex(Config.getConfigInt(Config.KEY_WAYPOINT_ICONS)); - selectIconSizeRadio(Config.getConfigInt(Config.KEY_WAYPOINT_ICON_SIZE)); - _dialog.setVisible(true); - } - - /** - * Select the corresponding radio button according to the numeric value - * @param inValue numeric value saved in Config - */ - private void selectIconSizeRadio(int inValue) - { - if (inValue < 0 || inValue >= _sizeRadioButtons.length) - { - inValue = 1; - } - if (_sizeRadioButtons[inValue] != null) - { - _sizeRadioButtons[inValue].setSelected(true); - } - } - - /** - * @return numeric value of selected icon size according to radio buttons - */ - private int getSelectedIconSize() - { - for (int i=0; i<_sizeRadioButtons.length; i++) - { - if (_sizeRadioButtons[i] != null && _sizeRadioButtons[i].isSelected()) - { - return i; - } - } - return 1; // default is medium - } - - /** - * Save settings and close - */ - public void finish() - { - // update config - int lineWidth = _lineWidthField.getValue(); - if (lineWidth < 1 || lineWidth > 4) {lineWidth = 2;} - Config.setConfigInt(Config.KEY_LINE_WIDTH, lineWidth); - Config.setConfigBoolean(Config.KEY_ANTIALIAS, _antialiasCheckbox.isSelected()); - Config.setConfigInt(Config.KEY_WAYPOINT_ICONS, _wpIconCombobox.getSelectedIndex()); - Config.setConfigInt(Config.KEY_WAYPOINT_ICON_SIZE, getSelectedIconSize()); - // refresh display - UpdateMessageBroker.informSubscribers(DataSubscriber.MAPSERVER_CHANGED); - _dialog.dispose(); - } -}