# HG changeset patch # User mrkam # Date 1300987234 -3600 # Node ID 8833da0e7bc9464c0a1e74416da9f4f62b1ffca4 # Parent 6e8562ef340d0be138f8c1336c44b01e4344f231 7027680: /applets/DrawTest demo needs to be improved Reviewed-by: rupashka diff -r 6e8562ef340d -r 8833da0e7bc9 jdk/src/share/demo/applets/DrawTest/DrawTest.java --- a/jdk/src/share/demo/applets/DrawTest/DrawTest.java Thu Mar 24 18:15:51 2011 +0100 +++ b/jdk/src/share/demo/applets/DrawTest/DrawTest.java Thu Mar 24 18:20:34 2011 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,27 +29,46 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - */ -import java.awt.event.*; -import java.awt.*; -import java.applet.*; +import java.applet.Applet; +import java.awt.BorderLayout; +import java.awt.Checkbox; +import java.awt.CheckboxGroup; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Panel; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.util.ArrayList; +import java.util.List; -import java.util.Vector; -public class DrawTest extends Applet{ +@SuppressWarnings("serial") +public class DrawTest extends Applet { + DrawPanel panel; DrawControls controls; + @Override public void init() { setLayout(new BorderLayout()); panel = new DrawPanel(); controls = new DrawControls(panel); add("Center", panel); - add("South",controls); + add("South", controls); } + @Override public void destroy() { remove(panel); remove(controls); @@ -63,22 +82,28 @@ f.add("Center", drawTest); f.setSize(300, 300); - f.show(); + f.setVisible(true); } + + @Override public String getAppletInfo() { return "A simple drawing program."; } } + +@SuppressWarnings("serial") class DrawPanel extends Panel implements MouseListener, MouseMotionListener { + public static final int LINES = 0; public static final int POINTS = 1; - int mode = LINES; - Vector lines = new Vector(); - Vector colors = new Vector(); - int x1,y1; - int x2,y2; + int mode = LINES; + List lines = new ArrayList(); + List colors = new ArrayList(); + int x1, y1; + int x2, y2; + @SuppressWarnings("LeakingThisInConstructor") public DrawPanel() { setBackground(Color.white); addMouseMotionListener(this); @@ -87,16 +112,16 @@ public void setDrawMode(int mode) { switch (mode) { - case LINES: - case POINTS: - this.mode = mode; - break; - default: - throw new IllegalArgumentException(); + case LINES: + case POINTS: + this.mode = mode; + break; + default: + throw new IllegalArgumentException(); } } - + @Override public void mouseDragged(MouseEvent e) { e.consume(); switch (mode) { @@ -106,8 +131,8 @@ break; case POINTS: default: - colors.addElement(getForeground()); - lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY())); + colors.add(getForeground()); + lines.add(new Rectangle(x1, y1, e.getX(), e.getY())); x1 = e.getX(); y1 = e.getY(); break; @@ -115,9 +140,11 @@ repaint(); } + @Override public void mouseMoved(MouseEvent e) { } + @Override public void mousePressed(MouseEvent e) { e.consume(); switch (mode) { @@ -128,8 +155,8 @@ break; case POINTS: default: - colors.addElement(getForeground()); - lines.addElement(new Rectangle(e.getX(), e.getY(), -1, -1)); + colors.add(getForeground()); + lines.add(new Rectangle(e.getX(), e.getY(), -1, -1)); x1 = e.getX(); y1 = e.getY(); repaint(); @@ -137,12 +164,13 @@ } } + @Override public void mouseReleased(MouseEvent e) { e.consume(); switch (mode) { case LINES: - colors.addElement(getForeground()); - lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY())); + colors.add(getForeground()); + lines.add(new Rectangle(x1, y1, e.getX(), e.getY())); x2 = -1; break; case POINTS: @@ -152,23 +180,27 @@ repaint(); } + @Override public void mouseEntered(MouseEvent e) { } + @Override public void mouseExited(MouseEvent e) { } + @Override public void mouseClicked(MouseEvent e) { } + @Override public void paint(Graphics g) { int np = lines.size(); /* draw the current lines */ g.setColor(getForeground()); - for (int i=0; i < np; i++) { - Rectangle p = (Rectangle)lines.elementAt(i); - g.setColor((Color)colors.elementAt(i)); + for (int i = 0; i < np; i++) { + Rectangle p = lines.get(i); + g.setColor(colors.get(i)); if (p.width != -1) { g.drawLine(p.x, p.y, p.width, p.height); } else { @@ -185,9 +217,12 @@ } +@SuppressWarnings("serial") class DrawControls extends Panel implements ItemListener { + DrawPanel target; + @SuppressWarnings("LeakingThisInConstructor") public DrawControls(DrawPanel target) { this.target = target; setLayout(new FlowLayout()); @@ -222,33 +257,35 @@ add(shapes); } + @Override public void paint(Graphics g) { Rectangle r = getBounds(); g.setColor(Color.lightGray); g.draw3DRect(0, 0, r.width, r.height, false); int n = getComponentCount(); - for(int i=0; i