1:
37:
38: package ;
39:
40: import ;
41:
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47:
48:
52: public class MultiLookAndFeel extends LookAndFeel {
53:
54:
57: public MultiLookAndFeel()
58: {
59:
60: }
61:
62:
67: public String getName()
68: {
69: return "Multiplexing Look and Feel";
70: }
71:
72:
77: public String getID()
78: {
79: return "Multiplex";
80: }
81:
82:
87: public String getDescription()
88: {
89: return "Allows multiple UI instances per component instance";
90: }
91:
92:
98: public boolean isNativeLookAndFeel()
99: {
100: return false;
101: }
102:
103:
109: public boolean isSupportedLookAndFeel()
110: {
111: return true;
112: }
113:
114:
119: public UIDefaults getDefaults()
120: {
121: UIDefaults defaults = new UIDefaults();
122: defaults.put("ButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
123: defaults.put("CheckBoxUI", "javax.swing.plaf.multi.MultiButtonUI");
124: defaults.put("CheckBoxMenuItemUI", "javax.swing.plaf.multi.MultiMenuItemUI");
125: defaults.put("ColorChooserUI",
126: "javax.swing.plaf.multi.MultiColorChooserUI");
127: defaults.put("ComboBoxUI", "javax.swing.plaf.multi.MultiComboBoxUI");
128: defaults.put("DesktopPaneUI", "javax.swing.plaf.multi.MultiDesktopPaneUI");
129: defaults.put("DesktopIconUI", "javax.swing.plaf.multi.MultiDesktopIconUI");
130: defaults.put("EditorPaneUI", "javax.swing.plaf.multi.MultiTextUI");
131: defaults.put("FileChooserUI", "javax.swing.plaf.multi.MultiFileChooserUI");
132: defaults.put("FormattedTextFieldUI", "javax.swing.plaf.multi.MultiTextUI");
133: defaults.put("InternalFrameUI",
134: "javax.swing.plaf.multi.MultiInternalFrameUI");
135: defaults.put("LabelUI", "javax.swing.plaf.multi.MultiLabelUI");
136: defaults.put("ListUI", "javax.swing.plaf.multi.MultiListUI");
137: defaults.put("MenuItemUI", "javax.swing.plaf.multi.MultiMenuItemUI");
138: defaults.put("MenuUI", "javax.swing.plaf.multi.MultiMenuItemUI");
139: defaults.put("MenuBarUI", "javax.swing.plaf.multi.MultiMenuBarUI");
140: defaults.put("OptionPaneUI", "javax.swing.plaf.multi.MultiOptionPaneUI");
141: defaults.put("PanelUI", "javax.swing.plaf.multi.MultiPanelUI");
142: defaults.put("PasswordFieldUI", "javax.swing.plaf.multi.MultiTextUI");
143: defaults.put("PopupMenuUI", "javax.swing.plaf.multi.MultiPopupMenuUI");
144: defaults.put("PopupMenuSeparatorUI",
145: "javax.swing.plaf.multi.MultiSeparatorUI");
146: defaults.put("ProgressBarUI", "javax.swing.plaf.multi.MultiProgressBarUI");
147: defaults.put("RadioButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
148: defaults.put("RadioButtonMenuItemUI",
149: "javax.swing.plaf.multi.MultiMenuItemUI");
150: defaults.put("RootPaneUI", "javax.swing.plaf.multi.MultiRootPaneUI");
151: defaults.put("ScrollBarUI", "javax.swing.plaf.multi.MultiScrollBarUI");
152: defaults.put("ScrollPaneUI", "javax.swing.plaf.multi.MultiScrollPaneUI");
153: defaults.put("SeparatorUI", "javax.swing.plaf.multi.MultiSeparatorUI");
154: defaults.put("SliderUI", "javax.swing.plaf.multi.MultiSliderUI");
155: defaults.put("SpinnerUI", "javax.swing.plaf.multi.MultiSpinnerUI");
156: defaults.put("SplitPaneUI", "javax.swing.plaf.multi.MultiSplitPaneUI");
157: defaults.put("TabbedPaneUI", "javax.swing.plaf.multi.MultiTabbedPaneUI");
158: defaults.put("TableHeaderUI", "javax.swing.plaf.multi.MultiTableHeaderUI");
159: defaults.put("TableUI", "javax.swing.plaf.multi.MultiTableUI");
160: defaults.put("TextAreaUI", "javax.swing.plaf.multi.MultiTextUI");
161: defaults.put("TextFieldUI", "javax.swing.plaf.multi.MultiTextUI");
162: defaults.put("TextPaneUI", "javax.swing.plaf.multi.MultiTextUI");
163: defaults.put("ToggleButtonUI", "javax.swing.plaf.multi.MultiButtonUI");
164: defaults.put("ToolBarSeparatorUI",
165: "javax.swing.plaf.multi.MultiSeparatorUI");
166: defaults.put("ToolBarUI", "javax.swing.plaf.multi.MultiToolBarUI");
167: defaults.put("ToolTipUI", "javax.swing.plaf.multi.MultiToolTipUI");
168: defaults.put("ViewportUI", "javax.swing.plaf.multi.MultiViewportUI");
169: return defaults;
170: }
171:
172:
183: public static ComponentUI createUIs(ComponentUI mui, Vector uis,
184: JComponent target)
185: {
186:
187: ComponentUI ui = null;
188: LookAndFeel primary = UIManager.getLookAndFeel();
189: if (primary != null)
190: {
191: ui = UIManager.getUI(target);
192: uis.add(ui);
193: }
194:
195:
196: LookAndFeel[] auxlafs = UIManager.getAuxiliaryLookAndFeels();
197: for (int i = 0; i < auxlafs.length; i++)
198: {
199: LookAndFeel auxlaf = auxlafs[i];
200:
201:
202:
203:
204:
205: UIDefaults defaults = auxlaf.getDefaults();
206: ui = defaults.getUI(target);
207: if (ui != null)
208: uis.add(ui);
209: }
210:
211:
212: if (uis.size() > 1)
213: return mui;
214: else
215: return ui;
216: }
217:
218:
230: protected static ComponentUI[] uisToArray(Vector uis)
231: {
232: if (uis == null)
233: return new ComponentUI[0];
234: int size = uis.size();
235: if (size == 0)
236: return null;
237: ComponentUI[] result = new ComponentUI[size];
238: uis.copyInto(result);
239: return result;
240: }
241:
242: }