2015-05-05 Yvan Roux <yvan.roux@linaro.org>
[official-gcc.git] / libjava / classpath / javax / swing / CellRendererPane.java
blob0140b4c2ccc8de696b3f7c5edac43fbb1dd4891c
1 /* CellRendererPane.java --
2 Copyright (C) 2002, 2004, 2006, Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 package javax.swing;
41 import java.awt.Component;
42 import java.awt.Container;
43 import java.awt.Graphics;
44 import java.awt.Rectangle;
46 import javax.accessibility.Accessible;
47 import javax.accessibility.AccessibleContext;
48 import javax.accessibility.AccessibleRole;
50 /**
51 * Paints the cells of JList, JTable and JTree.
52 * It intercepts the usual paint tree, so that we don't walk up and
53 * repaint everything.
55 * @author Andrew Selkirk
57 public class CellRendererPane extends Container implements Accessible
59 private static final long serialVersionUID = -7642183829532984273L;
61 /**
62 * Provides accessibility support for CellRendererPanes.
64 protected class AccessibleCellRendererPane extends AccessibleAWTContainer
66 private static final long serialVersionUID = -8981090083147391074L;
68 /**
69 * Constructor AccessibleCellRendererPane
71 protected AccessibleCellRendererPane()
73 // Nothing to do here.
76 /**
77 * getAccessibleRole
78 * @return AccessibleRole
80 public AccessibleRole getAccessibleRole()
82 return AccessibleRole.PANEL;
86 /**
87 * accessibleContext
89 protected AccessibleContext accessibleContext = null;
91 /**
92 * Constructs a new CellRendererPane.
94 public CellRendererPane()
96 setVisible(false);
99 /**
100 * Should not be called.
102 * @param graphics not used here
104 public void update(Graphics graphics)
106 //Nothing to do here.
110 * Despite normal behaviour this does <em>not</em> cause the container
111 * to be invalidated. This prevents propagating up the paint tree.
113 public void invalidate()
115 // Overridden to do nothing.
119 * Should not be called.
121 * @param graphics not used here
123 public void paint(Graphics graphics)
125 // Overridden to do nothing.
129 * Overridden to check if a component is already a child of this Container.
130 * If it's already a child, nothing is done. Otherwise we pass this to
131 * <code>super.addImpl()</code>.
133 * @param c the component to add
134 * @param constraints not used here
135 * @param index not used here
137 protected void addImpl(Component c, Object constraints, int index)
139 if (!isAncestorOf(c))
141 super.addImpl(c, constraints, index);
146 * Paints the specified component <code>c</code> on the {@link Graphics}
147 * context <code>graphics</code>. The Graphics context is tranlated to
148 * (x,y) and the components bounds are set to (w,h). If
149 * <code>shouldValidate</code>
150 * is set to true, then the component is validated before painting.
152 * @param graphics the graphics context to paint on
153 * @param c the component to be painted
154 * @param p the parent of the component
155 * @param x the X coordinate of the upper left corner where c should
156 be painted
157 * @param y the Y coordinate of the upper left corner where c should
158 be painted
159 * @param w the width of the components drawing area
160 * @param h the height of the components drawing area
161 * @param shouldValidate if <code>c</code> should be validated before
162 * painting
164 public void paintComponent(Graphics graphics, Component c,
165 Container p, int x, int y, int w, int h,
166 boolean shouldValidate)
168 // reparent c
169 addImpl(c, null, 0);
171 Rectangle oldClip = graphics.getClipBounds();
172 boolean translated = false;
175 // translate to (x,y)
176 graphics.translate(x, y);
177 translated = true;
178 graphics.clipRect(0, 0, w, h);
179 // set bounds of c
180 c.setBounds(0, 0, w, h);
182 // validate if necessary
183 if (shouldValidate)
185 c.validate();
188 // paint component
189 c.paint(graphics);
191 finally
193 // untranslate g
194 if (translated)
195 graphics.translate(-x, -y);
196 graphics.setClip(oldClip);
201 * Paints the specified component <code>c</code> on the {@link Graphics}
202 * context <code>graphics</code>. The Graphics context is tranlated to (x,y)
203 * and the components bounds are set to (w,h). The component is <em>not</em>
204 * validated before painting.
206 * @param graphics the graphics context to paint on
207 * @param c the component to be painted
208 * @param p the parent of the component
209 * @param x the X coordinate of the upper left corner where c should
210 be painted
211 * @param y the Y coordinate of the upper left corner where c should
212 be painted
213 * @param w the width of the components drawing area
214 * @param h the height of the components drawing area
216 public void paintComponent(Graphics graphics, Component c,
217 Container p, int x, int y, int w, int h)
219 paintComponent(graphics, c, p, x, y, w, h, false);
223 * Paints the specified component <code>c</code> on the {@link Graphics}
224 * context <code>g</code>. The Graphics context is tranlated to (r.x,r.y) and
225 * the components bounds are set to (r.width,r.height).
226 * The component is <em>not</em>
227 * validated before painting.
229 * @param graphics the graphics context to paint on
230 * @param c the component to be painted
231 * @param p the component on which we paint
232 * @param r the bounding rectangle of c
234 public void paintComponent(Graphics graphics, Component c,
235 Container p, Rectangle r)
237 paintComponent(graphics, c, p, r.x, r.y, r.width, r.height);
241 * getAccessibleContext <em>TODO</em>
242 * @return AccessibleContext
244 public AccessibleContext getAccessibleContext()
246 if (accessibleContext == null)
247 accessibleContext = new AccessibleCellRendererPane();
249 return accessibleContext;