1/* 2 * Copyright (c) 2011, 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24import java.awt.Button; 25import java.awt.Canvas; 26import java.awt.Checkbox; 27import java.awt.Choice; 28import java.awt.Component; 29import java.awt.Container; 30import java.awt.Dimension; 31import java.awt.Frame; 32import java.awt.Graphics; 33import java.awt.GridLayout; 34import java.awt.Label; 35import java.awt.List; 36import java.awt.Panel; 37import java.awt.ScrollPane; 38import java.awt.Scrollbar; 39import java.awt.TextArea; 40import java.awt.TextField; 41import java.awt.Toolkit; 42import java.awt.image.BufferedImage; 43 44/* 45 @test 46 @key headful 47 @bug 6596915 48 @summary Test Component.paintAll() method 49 @author sergey.bylokhov@oracle.com: area=awt.component 50 @library ../../../../lib/testlibrary/ 51 @build ExtendedRobot 52 @run main PaintAll 53*/ 54public class PaintAll { 55 56 private static volatile boolean lwPainted; 57 private static volatile boolean buttonPainted; 58 private static volatile boolean canvasPainted; 59 private static volatile boolean checkboxPainted; 60 private static volatile boolean choicePainted; 61 private static volatile boolean containerPainted; 62 private static volatile boolean framePainted; 63 private static volatile boolean labelPainted; 64 private static volatile boolean listPainted; 65 private static volatile boolean panelPainted; 66 private static volatile boolean scrollbarPainted; 67 private static volatile boolean scrollPanePainted; 68 private static volatile boolean textAreaPainted; 69 private static volatile boolean textFieldPainted; 70 private static ExtendedRobot robot = null; 71 72 private static final Button buttonStub = new Button() { 73 @Override 74 public void paint(final Graphics g) { 75 buttonPainted = true; 76 } 77 }; 78 79 private static final Canvas canvasStub = new Canvas() { 80 @Override 81 public void paint(final Graphics g) { 82 canvasPainted = true; 83 } 84 }; 85 86 private static final Checkbox checkboxStub = new Checkbox() { 87 @Override 88 public void paint(final Graphics g) { 89 checkboxPainted = true; 90 } 91 }; 92 93 private static final Choice choiceStub = new Choice() { 94 @Override 95 public void paint(final Graphics g) { 96 choicePainted = true; 97 } 98 }; 99 100 private static final Component lwComponentStub = new Component() { 101 @Override 102 public void paint(final Graphics g) { 103 lwPainted = true; 104 } 105 }; 106 107 private static final Container containerStub = new Container() { 108 @Override 109 public void paint(final Graphics g) { 110 containerPainted = true; 111 } 112 }; 113 114 private static final Frame frame = new Frame() { 115 @Override 116 public void paint(final Graphics g) { 117 super.paint(g); 118 framePainted = true; 119 } 120 }; 121 122 private static final Label labelStub = new Label() { 123 @Override 124 public void paint(final Graphics g) { 125 labelPainted = true; 126 } 127 }; 128 129 private static final List listStub = new List() { 130 @Override 131 public void paint(final Graphics g) { 132 listPainted = true; 133 } 134 }; 135 136 private static final Panel panelStub = new Panel() { 137 @Override 138 public void paint(final Graphics g) { 139 panelPainted = true; 140 } 141 }; 142 143 private static final Scrollbar scrollbarStub = new Scrollbar() { 144 @Override 145 public void paint(final Graphics g) { 146 scrollbarPainted = true; 147 } 148 }; 149 150 private static final ScrollPane scrollPaneStub = new ScrollPane() { 151 @Override 152 public void paint(final Graphics g) { 153 scrollPanePainted = true; 154 } 155 }; 156 157 private static final TextArea textAreaStub = new TextArea() { 158 @Override 159 public void paint(final Graphics g) { 160 textAreaPainted = true; 161 } 162 }; 163 164 private static final TextField textFieldStub = new TextField() { 165 @Override 166 public void paint(final Graphics g) { 167 textFieldPainted = true; 168 } 169 }; 170 171 public static void main(final String[] args) throws Exception { 172 //Frame initialisation 173 final BufferedImage graphicsProducer = 174 new BufferedImage(BufferedImage.TYPE_INT_ARGB, 1, 1); 175 176 final Graphics g = graphicsProducer.getGraphics(); 177 178 frame.setLayout(new GridLayout()); 179 frame.add(buttonStub); 180 frame.add(canvasStub); 181 frame.add(checkboxStub); 182 frame.add(choiceStub); 183 frame.add(lwComponentStub); 184 frame.add(containerStub); 185 frame.add(labelStub); 186 frame.add(listStub); 187 frame.add(panelStub); 188 frame.add(scrollbarStub); 189 frame.add(scrollPaneStub); 190 frame.add(textAreaStub); 191 frame.add(textFieldStub); 192 frame.setSize(new Dimension(500, 500)); 193 frame.setLocationRelativeTo(null); 194 frame.setVisible(true); 195 sleep(); 196 197 //Check results. 198 validation(); 199 200 //Reset all flags to 'false'. 201 initPaintedFlags(); 202 203 //Tested method. 204 frame.paintAll(g); 205 sleep(); 206 207 //Check results. 208 validation(); 209 cleanup(); 210 } 211 212 private static void initPaintedFlags() { 213 lwPainted = false; 214 buttonPainted = false; 215 canvasPainted = false; 216 checkboxPainted = false; 217 choicePainted = false; 218 containerPainted = false; 219 framePainted = false; 220 labelPainted = false; 221 listPainted = false; 222 panelPainted = false; 223 scrollbarPainted = false; 224 scrollPanePainted = false; 225 textAreaPainted = false; 226 textFieldPainted = false; 227 } 228 229 private static void validation() { 230 if (!buttonPainted) { 231 fail("Paint is not called a Button " 232 + "when paintAll() invoked on a parent"); 233 } 234 if (!canvasPainted) { 235 fail("Paint is not called a Canvas " 236 + "when paintAll() invoked on a parent"); 237 } 238 if (!checkboxPainted) { 239 fail("Paint is not called a Checkbox " 240 + "when paintAll() invoked on a parent"); 241 } 242 if (!choicePainted) { 243 fail("Paint is not called a Choice " 244 + "when paintAll() invoked on a parent"); 245 } 246 if (!lwPainted) { 247 fail("Paint is not called on a lightweight" 248 + " subcomponent when paintAll() invoked on a parent"); 249 } 250 if (!containerPainted) { 251 fail("Paint is not called on a Container" 252 + " subcomponent when paintAll() invoked on a parent"); 253 } 254 if (!labelPainted) { 255 fail("Paint is not called on a Label" 256 + " subcomponent when paintAll() invoked on a parent"); 257 } 258 if (!listPainted) { 259 fail("Paint is not called on a List" 260 + " subcomponent when paintAll() invoked on a parent"); 261 } 262 if (!panelPainted) { 263 fail("Paint is not called on a Panel" 264 + " subcomponent when paintAll() invoked on a parent"); 265 } 266 if (!scrollbarPainted) { 267 fail("Paint is not called on a Scrollbar" 268 + " subcomponent when paintAll() invoked on a parent"); 269 } 270 if (!scrollPanePainted) { 271 fail("Paint is not called on a ScrollPane" 272 + " subcomponent when paintAll() invoked on a parent"); 273 } 274 if (!textAreaPainted) { 275 fail("Paint is not called on a TextArea" 276 + " subcomponent when paintAll() invoked on a parent"); 277 } 278 if (!textFieldPainted) { 279 fail("Paint is not called on a TextField" 280 + " subcomponent when paintAll() invoked on a parent"); 281 } 282 if (!framePainted) { 283 fail("Paint is not called on a Frame when paintAll()"); 284 } 285 } 286 287 private static void sleep() { 288 if(robot == null) { 289 try { 290 robot = new ExtendedRobot(); 291 }catch(Exception ex) { 292 ex.printStackTrace(); 293 throw new RuntimeException("Unexpected failure"); 294 } 295 } 296 robot.waitForIdle(500); 297 } 298 299 private static void fail(final String message) { 300 cleanup(); 301 throw new RuntimeException(message); 302 } 303 304 private static void cleanup() { 305 frame.dispose(); 306 } 307} 308