1 /*
2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 package javax.swing.plaf.multi;
26 
27 import java.util.Vector;
28 import javax.swing.plaf.MenuBarUI;
29 import javax.swing.plaf.ComponentUI;
30 import javax.swing.JComponent;
31 import java.awt.Graphics;
32 import java.awt.Dimension;
33 import javax.accessibility.Accessible;
34 
35 /**
36  * A multiplexing UI used to combine <code>MenuBarUI</code>s.
37  *
38  * <p>This file was automatically generated by AutoMulti.
39  *
40  * @author  Otto Multey
41  */
42 public class MultiMenuBarUI extends MenuBarUI {
43 
44     /**
45      * The vector containing the real UIs.  This is populated
46      * in the call to <code>createUI</code>, and can be obtained by calling
47      * the <code>getUIs</code> method.  The first element is guaranteed to be the real UI
48      * obtained from the default look and feel.
49      */
50     protected Vector<ComponentUI> uis = new Vector<>();
51 
52 ////////////////////
53 // Common UI methods
54 ////////////////////
55 
56     /**
57      * Returns the list of UIs associated with this multiplexing UI.  This
58      * allows processing of the UIs by an application aware of multiplexing
59      * UIs on components.
60      *
61      * @return an array of the UI delegates
62      */
getUIs()63     public ComponentUI[] getUIs() {
64         return MultiLookAndFeel.uisToArray(uis);
65     }
66 
67 ////////////////////
68 // MenuBarUI methods
69 ////////////////////
70 
71 ////////////////////
72 // ComponentUI methods
73 ////////////////////
74 
75     /**
76      * Invokes the <code>contains</code> method on each UI handled by this object.
77      *
78      * @return the value obtained from the first UI, which is
79      * the UI obtained from the default <code>LookAndFeel</code>
80      */
contains(JComponent a, int b, int c)81     public boolean contains(JComponent a, int b, int c) {
82         boolean returnValue =
83             uis.elementAt(0).contains(a,b,c);
84         for (int i = 1; i < uis.size(); i++) {
85             uis.elementAt(i).contains(a,b,c);
86         }
87         return returnValue;
88     }
89 
90     /**
91      * Invokes the <code>update</code> method on each UI handled by this object.
92      */
update(Graphics a, JComponent b)93     public void update(Graphics a, JComponent b) {
94         for (int i = 0; i < uis.size(); i++) {
95             uis.elementAt(i).update(a,b);
96         }
97     }
98 
99     /**
100      * Returns a multiplexing UI instance if any of the auxiliary
101      * <code>LookAndFeel</code>s supports this UI.  Otherwise, just returns the
102      * UI object obtained from the default <code>LookAndFeel</code>.
103      *
104      * @param  a the component to create the UI for
105      * @return the UI delegate created
106      */
createUI(JComponent a)107     public static ComponentUI createUI(JComponent a) {
108         MultiMenuBarUI mui = new MultiMenuBarUI();
109         return MultiLookAndFeel.createUIs(mui,mui.uis, a);
110     }
111 
112     /**
113      * Invokes the <code>installUI</code> method on each UI handled by this object.
114      */
installUI(JComponent a)115     public void installUI(JComponent a) {
116         for (int i = 0; i < uis.size(); i++) {
117             uis.elementAt(i).installUI(a);
118         }
119     }
120 
121     /**
122      * Invokes the <code>uninstallUI</code> method on each UI handled by this object.
123      */
uninstallUI(JComponent a)124     public void uninstallUI(JComponent a) {
125         for (int i = 0; i < uis.size(); i++) {
126             uis.elementAt(i).uninstallUI(a);
127         }
128     }
129 
130     /**
131      * Invokes the <code>paint</code> method on each UI handled by this object.
132      */
paint(Graphics a, JComponent b)133     public void paint(Graphics a, JComponent b) {
134         for (int i = 0; i < uis.size(); i++) {
135             uis.elementAt(i).paint(a,b);
136         }
137     }
138 
139     /**
140      * Invokes the <code>getPreferredSize</code> method on each UI handled by this object.
141      *
142      * @return the value obtained from the first UI, which is
143      * the UI obtained from the default <code>LookAndFeel</code>
144      */
getPreferredSize(JComponent a)145     public Dimension getPreferredSize(JComponent a) {
146         Dimension returnValue =
147             uis.elementAt(0).getPreferredSize(a);
148         for (int i = 1; i < uis.size(); i++) {
149             uis.elementAt(i).getPreferredSize(a);
150         }
151         return returnValue;
152     }
153 
154     /**
155      * Invokes the <code>getMinimumSize</code> method on each UI handled by this object.
156      *
157      * @return the value obtained from the first UI, which is
158      * the UI obtained from the default <code>LookAndFeel</code>
159      */
getMinimumSize(JComponent a)160     public Dimension getMinimumSize(JComponent a) {
161         Dimension returnValue =
162             uis.elementAt(0).getMinimumSize(a);
163         for (int i = 1; i < uis.size(); i++) {
164             uis.elementAt(i).getMinimumSize(a);
165         }
166         return returnValue;
167     }
168 
169     /**
170      * Invokes the <code>getMaximumSize</code> method on each UI handled by this object.
171      *
172      * @return the value obtained from the first UI, which is
173      * the UI obtained from the default <code>LookAndFeel</code>
174      */
getMaximumSize(JComponent a)175     public Dimension getMaximumSize(JComponent a) {
176         Dimension returnValue =
177             uis.elementAt(0).getMaximumSize(a);
178         for (int i = 1; i < uis.size(); i++) {
179             uis.elementAt(i).getMaximumSize(a);
180         }
181         return returnValue;
182     }
183 
184     /**
185      * Invokes the <code>getAccessibleChildrenCount</code> method on each UI handled by this object.
186      *
187      * @return the value obtained from the first UI, which is
188      * the UI obtained from the default <code>LookAndFeel</code>
189      */
getAccessibleChildrenCount(JComponent a)190     public int getAccessibleChildrenCount(JComponent a) {
191         int returnValue =
192             uis.elementAt(0).getAccessibleChildrenCount(a);
193         for (int i = 1; i < uis.size(); i++) {
194             uis.elementAt(i).getAccessibleChildrenCount(a);
195         }
196         return returnValue;
197     }
198 
199     /**
200      * Invokes the <code>getAccessibleChild</code> method on each UI handled by this object.
201      *
202      * @return the value obtained from the first UI, which is
203      * the UI obtained from the default <code>LookAndFeel</code>
204      */
getAccessibleChild(JComponent a, int b)205     public Accessible getAccessibleChild(JComponent a, int b) {
206         Accessible returnValue =
207             uis.elementAt(0).getAccessibleChild(a,b);
208         for (int i = 1; i < uis.size(); i++) {
209             uis.elementAt(i).getAccessibleChild(a,b);
210         }
211         return returnValue;
212     }
213 }
214