source: josm/trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java@ 6084

Last change on this file since 6084 was 6084, checked in by bastiK, 11 years ago

see #8902 - add missing @Override annotations (patch by shinigami)

  • Property svn:eol-style set to native
File size: 6.3 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.gui.preferences.display;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7import java.awt.GridBagLayout;
8
9import javax.swing.BorderFactory;
10import javax.swing.Box;
11import javax.swing.DefaultListCellRenderer;
12import javax.swing.JCheckBox;
13import javax.swing.JLabel;
14import javax.swing.JList;
15import javax.swing.JPanel;
16import javax.swing.JScrollPane;
17import javax.swing.ListCellRenderer;
18import javax.swing.UIManager;
19import javax.swing.UIManager.LookAndFeelInfo;
20
21import org.openstreetmap.josm.Main;
22import org.openstreetmap.josm.actions.ExpertToggleAction;
23import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
24import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
25import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
26import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
27import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
28import org.openstreetmap.josm.gui.widgets.JosmComboBox;
29import org.openstreetmap.josm.tools.GBC;
30
31public class LafPreference implements SubPreferenceSetting {
32
33 public static class Factory implements PreferenceSettingFactory {
34 @Override
35 public PreferenceSetting createPreferenceSetting() {
36 return new LafPreference();
37 }
38 }
39
40 /**
41 * ComboBox with all look and feels.
42 */
43 private JosmComboBox lafCombo;
44 public JPanel panel;
45 private JCheckBox showSplashScreen = new JCheckBox(tr("Show splash screen at startup"));
46 private JCheckBox showID = new JCheckBox(tr("Show object ID in selection lists"));
47 private JCheckBox showLocalizedName = new JCheckBox(tr("Show localized name in selection lists"));
48 private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)"));
49 private JCheckBox dynamicButtons = new JCheckBox(tr("Dynamic buttons in side menus"));
50
51 @Override
52 public void addGui(PreferenceTabbedPane gui) {
53 lafCombo = new JosmComboBox(UIManager.getInstalledLookAndFeels());
54
55 // let's try to load additional LookAndFeels and put them into the list
56 try {
57 Class<?> Cquaqua = Class.forName("ch.randelshofer.quaqua.QuaquaLookAndFeel");
58 Object Oquaqua = Cquaqua.getConstructor((Class[])null).newInstance((Object[])null);
59 // no exception? Then Go!
60 lafCombo.addItem(
61 new UIManager.LookAndFeelInfo(((javax.swing.LookAndFeel)Oquaqua).getName(), "ch.randelshofer.quaqua.QuaquaLookAndFeel")
62 );
63 } catch (Exception ex) {
64 // just ignore, Quaqua may not even be installed...
65 //System.out.println("Failed to load Quaqua: " + ex);
66 }
67
68 String laf = Main.pref.get("laf", Main.platform.getDefaultStyle());
69 for (int i = 0; i < lafCombo.getItemCount(); ++i) {
70 if (((LookAndFeelInfo)lafCombo.getItemAt(i)).getClassName().equals(laf)) {
71 lafCombo.setSelectedIndex(i);
72 break;
73 }
74 }
75
76 final ListCellRenderer oldRenderer = lafCombo.getRenderer();
77 lafCombo.setRenderer(new DefaultListCellRenderer(){
78 @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
79 return oldRenderer.getListCellRendererComponent(list, ((LookAndFeelInfo)value).getName(), index, isSelected, cellHasFocus);
80 }
81 });
82
83 panel = new JPanel(new GridBagLayout());
84 panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
85
86 // Show splash screen on startup
87 showSplashScreen.setToolTipText(tr("Show splash screen at startup"));
88 showSplashScreen.setSelected(Main.pref.getBoolean("draw.splashscreen", true));
89 panel.add(showSplashScreen, GBC.eop().insets(20, 0, 0, 0));
90
91 // Show ID in selection
92 showID.setToolTipText(tr("Show object ID in selection lists"));
93 showID.setSelected(Main.pref.getBoolean("osm-primitives.showid", false));
94
95 // Show localized names
96 showLocalizedName.setToolTipText(tr("Show localized name in selection lists, if available"));
97 showLocalizedName.setSelected(Main.pref.getBoolean("osm-primitives.localize-name", true));
98 ExpertToggleAction.addVisibilitySwitcher(showLocalizedName);
99
100 modeless.setToolTipText(tr("Do not require to switch modes (potlatch style workflow)"));
101 modeless.setSelected(Main.pref.getBoolean("modeless", false));
102 ExpertToggleAction.addVisibilitySwitcher(modeless);
103
104 panel.add(showID, GBC.eop().insets(20, 0, 0, 0));
105 panel.add(showLocalizedName, GBC.eop().insets(20, 0, 0, 0));
106 panel.add(modeless, GBC.eop().insets(20, 0, 0, 0));
107
108 dynamicButtons.setToolTipText(tr("Display buttons in right side menus only when mouse is inside the element"));
109 dynamicButtons.setSelected(Main.pref.getBoolean("dialog.dynamic.buttons", true));
110 panel.add(dynamicButtons, GBC.eop().insets(20, 0, 0, 0));
111
112 panel.add(Box.createVerticalGlue(), GBC.eol().insets(0, 20, 0, 0));
113
114 panel.add(new JLabel(tr("Look and Feel")), GBC.std().insets(20, 0, 0, 0));
115 panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
116 panel.add(lafCombo, GBC.eol().fill(GBC.HORIZONTAL));
117
118 JScrollPane scrollpane = new JScrollPane(panel);
119 scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
120 gui.getDisplayPreference().addSubTab(this, tr("Look and Feel"), scrollpane);
121 }
122
123 @Override
124 public boolean ok() {
125 boolean mod = false;
126 Main.pref.put("draw.splashscreen", showSplashScreen.isSelected());
127 Main.pref.put("osm-primitives.showid", showID.isSelected());
128 Main.pref.put("osm-primitives.localize-name", showLocalizedName.isSelected());
129 Main.pref.put("modeless", modeless.isSelected());
130 Main.pref.put("dialog.dynamic.buttons", dynamicButtons.isSelected());
131 mod |= Main.pref.put("laf", ((LookAndFeelInfo)lafCombo.getSelectedItem()).getClassName());
132 return mod;
133 }
134
135 @Override
136 public boolean isExpert() {
137 return false;
138 }
139
140 @Override
141 public TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui) {
142 return gui.getDisplayPreference();
143 }
144}
Note: See TracBrowser for help on using the repository browser.