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 */
25package javax.swing.plaf.multi;
26
27import java.util.Vector;
28import javax.swing.plaf.ToolTipUI;
29import javax.swing.plaf.ComponentUI;
30import javax.swing.JComponent;
31import java.awt.Graphics;
32import java.awt.Dimension;
33import javax.accessibility.Accessible;
34
35/**
36 * A multiplexing UI used to combine <code>ToolTipUI</code>s.
37 *
38 * <p>This file was automatically generated by AutoMulti.
39 *
40 * @author  Otto Multey
41 */
42public class MultiToolTipUI extends ToolTipUI {
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     */
63    public ComponentUI[] getUIs() {
64        return MultiLookAndFeel.uisToArray(uis);
65    }
66
67////////////////////
68// ToolTipUI 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     */
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     */
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     */
107    public static ComponentUI createUI(JComponent a) {
108        MultiToolTipUI mui = new MultiToolTipUI();
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     */
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     */
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     */
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     */
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     */
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     */
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     */
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     */
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