source: josm/trunk/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java@ 8510

Last change on this file since 8510 was 8510, checked in by Don-vip, 9 years ago

checkstyle: enable relevant whitespace checks and fix them

  • Property svn:eol-style set to native
File size: 4.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.preferences;
3
4import java.awt.Component;
5import java.util.HashMap;
6import java.util.Map;
7
8import javax.swing.JPanel;
9import javax.swing.JScrollPane;
10import javax.swing.JTabbedPane;
11
12import org.openstreetmap.josm.Main;
13import org.openstreetmap.josm.tools.GBC;
14
15public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetting implements TabPreferenceSetting {
16
17 private final String iconName;
18 private final String description;
19 private final String title;
20 private final JTabbedPane tabpane;
21 private final Map<SubPreferenceSetting, Component> subSettingMap;
22
23 /**
24 * Constructs a new {@code DefaultTabPreferenceSetting}.
25 */
26 public DefaultTabPreferenceSetting() {
27 this(null, null, null);
28 }
29
30 public DefaultTabPreferenceSetting(String iconName, String title, String description) {
31 this(iconName, title, description, false);
32 }
33
34 public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert) {
35 this(iconName, title, description, isExpert, null);
36 }
37
38 public DefaultTabPreferenceSetting(String iconName, String title, String description, boolean isExpert, JTabbedPane tabpane) {
39 super(isExpert);
40 this.iconName = iconName;
41 this.description = description;
42 this.title = title;
43 this.tabpane = tabpane;
44 this.subSettingMap = tabpane != null ? new HashMap<SubPreferenceSetting, Component>() : null;
45 }
46
47 @Override
48 public String getIconName() {
49 return iconName;
50 }
51
52 @Override
53 public String getTooltip() {
54 if (getDescription() != null) {
55 return "<html>"+getDescription()+"</html>";
56 } else {
57 return null;
58 }
59 }
60
61 @Override
62 public String getDescription() {
63 return description;
64 }
65
66 @Override
67 public String getTitle() {
68 return title;
69 }
70
71 /**
72 * Get the inner tab pane, if any.
73 * @return The JTabbedPane contained in this tab preference settings, or null if none is set.
74 * @since 5631
75 */
76 public final JTabbedPane getTabPane() {
77 return tabpane;
78 }
79
80 protected final void createPreferenceTabWithScrollPane(PreferenceTabbedPane gui, JPanel panel) {
81 GBC a = GBC.eol().insets(-5, 0, 0, 0);
82 a.anchor = GBC.EAST;
83
84 JScrollPane scrollPane = new JScrollPane(panel);
85 scrollPane.setBorder(null);
86
87 JPanel tab = gui.createPreferenceTab(this);
88 tab.add(scrollPane, GBC.eol().fill(GBC.BOTH));
89 tab.add(GBC.glue(0, 10), a);
90 }
91
92 @Override
93 public boolean selectSubTab(SubPreferenceSetting subPref) {
94 if (tabpane != null && subPref != null) {
95 Component tab = getSubTab(subPref);
96 if (tab != null) {
97 try {
98 tabpane.setSelectedComponent(tab);
99 return true;
100 } catch (IllegalArgumentException e) {
101 // Ignore exception and return false below
102 Main.debug(Main.getErrorMessage(e));
103 }
104 }
105 }
106 return false;
107 }
108
109 @Override
110 public final void addSubTab(SubPreferenceSetting sub, String title, Component component) {
111 addSubTab(sub, title, component, null);
112 }
113
114 @Override
115 public final void addSubTab(SubPreferenceSetting sub, String title, Component component, String tip) {
116 if (tabpane != null && component != null) {
117 tabpane.addTab(title, null, component, tip);
118 registerSubTab(sub, component);
119 }
120 }
121
122 @Override
123 public final void registerSubTab(SubPreferenceSetting sub, Component component) {
124 if (subSettingMap != null && sub != null && component != null) {
125 subSettingMap.put(sub, component);
126 }
127 }
128
129 @Override
130 public final Component getSubTab(SubPreferenceSetting sub) {
131 return subSettingMap != null ? subSettingMap.get(sub) : null;
132 }
133}
Note: See TracBrowser for help on using the repository browser.