aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java')
-rw-r--r--gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java1189
1 files changed, 1189 insertions, 0 deletions
diff --git a/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java b/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java
new file mode 100644
index 000000000..bd5e755cb
--- /dev/null
+++ b/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/awt/Demo.java
@@ -0,0 +1,1189 @@
+/* Demo.java -- Shows examples of AWT components
+ Copyright (C) 1998, 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath examples.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA. */
+
+package gnu.classpath.examples.awt;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.CheckboxMenuItem;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.DisplayMode;
+import java.awt.FileDialog;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.GridLayout;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Label;
+import java.awt.List;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+import java.awt.Panel;
+import java.awt.ScrollPane;
+import java.awt.TextField;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceContext;
+import java.awt.dnd.DragSourceDragEvent;
+import java.awt.dnd.DragSourceDropEvent;
+import java.awt.dnd.DragSourceEvent;
+import java.awt.dnd.DragSourceListener;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.dnd.InvalidDnDOperationException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+class Demo
+{
+ public static void main(String args[])
+ {
+ MainWindow f = new MainWindow();
+ f.show();
+ }
+
+ static interface SubWindow
+ {
+ public void init ();
+ }
+
+ static class PrettyPanel extends Panel
+ {
+ Insets myInsets;
+
+ public PrettyPanel ()
+ {
+ myInsets = new Insets (10, 10, 10, 10);
+ }
+ public Insets getInsets ()
+ {
+ return myInsets;
+ }
+ }
+
+ static abstract class PrettyFrame extends Frame
+ {
+ public PrettyFrame ()
+ {
+ ((BorderLayout) getLayout ()).setHgap (5);
+ ((BorderLayout) getLayout ()).setVgap (5);
+ }
+
+ public Insets getInsets()
+ {
+ Insets oldInsets = super.getInsets ();
+ return new Insets (oldInsets.top+10,
+ oldInsets.left+10,
+ oldInsets.bottom+10,
+ oldInsets.right+10);
+ }
+ }
+
+ static abstract class SubFrame extends PrettyFrame implements SubWindow
+ {
+ boolean initted = false;
+
+ public void setVisible (boolean visible)
+ {
+ if (!initted && visible)
+ init();
+ super.setVisible (visible);
+ }
+ }
+
+ static class MainWindow extends PrettyFrame implements ActionListener
+ {
+ Button closeButton;
+
+ Hashtable windows;
+ Vector buttons;
+
+ void addSubWindow (String name, SubWindow w)
+ {
+ Button b = new Button (name);
+ b.addActionListener (this);
+
+ buttons.addElement (b);
+ windows.put (b, w);
+ }
+
+ MainWindow ()
+ {
+ MenuBar mb = new MenuBar ();
+ Menu menu = new Menu ("File");
+ Menu submenu = new Menu ("Testing", true);
+ submenu.add (new CheckboxMenuItem ("FooBar"));
+ submenu.add (new CheckboxMenuItem ("BarFoo"));
+ menu.add (submenu);
+ menu.add (new MenuItem("Orange"));
+ MenuItem quit = new MenuItem("Quit", new MenuShortcut('Q'));
+ quit.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ System.exit(0);
+ }
+ });
+ menu.add(quit);
+ mb.add (menu);
+
+ menu = new Menu("Edit", true);
+ menu.add(new MenuItem("Cut"));
+ menu.add(new MenuItem("Copy"));
+ menu.add(new MenuItem("Paste"));
+ mb.add (menu);
+
+ Menu helpMenu = new Menu("Help");
+ helpMenu.add(new MenuItem("About"));
+ mb.add(helpMenu);
+ mb.setHelpMenu(helpMenu);
+
+ setMenuBar (mb);
+
+ String version = System.getProperty("gnu.classpath.version");
+ add (new Label ("GNU Classpath " + version), "North");
+
+ closeButton = new Button ("Close");
+ closeButton.addActionListener (this);
+ closeButton.setFont (new Font ("Serif", Font.BOLD | Font.ITALIC, 18));
+ add (closeButton, "South");
+
+ windows = new Hashtable ();
+ buttons = new Vector ();
+
+ addSubWindow ("Buttons", new ButtonsWindow ());
+ addSubWindow ("Cursors", new CursorsWindow ());
+ addSubWindow ("Dialog", new DialogWindow (this));
+ addSubWindow ("File", new FileWindow (this));
+ addSubWindow ("Labels", new LabelWindow ());
+ addSubWindow ("List", new ListWindow ());
+ addSubWindow ("Radio Buttons", new RadioWindow ());
+ addSubWindow ("TextField", new TextFieldWindow ());
+ addSubWindow ("RandomTests", new TestWindow (this));
+ addSubWindow ("RoundRect", new RoundRectWindow ());
+ addSubWindow ("Animation", new AnimationWindow ());
+ addSubWindow ("Resolution", new ResolutionWindow ());
+ addSubWindow ("Fullscreen", new FullscreenWindow ());
+ addSubWindow ("Drag n' Drop", new DragDropWindow ());
+
+ Panel sp = new Panel();
+ PrettyPanel p = new PrettyPanel();
+ p.setLayout (new GridLayout (windows.size(), 1));
+
+ for (Enumeration e = buttons.elements (); e.hasMoreElements (); )
+ {
+ p.add ((Button) e.nextElement ());
+ }
+
+ sp.add (p);
+ add (sp, "Center");
+
+ setTitle ("AWT Demo");
+ pack();
+ }
+
+ public void actionPerformed (ActionEvent evt)
+ {
+ Button source = (Button) evt.getSource ();
+
+ if (source==closeButton)
+ {
+ dispose();
+ System.exit (0);
+ }
+
+ Window w = (Window) windows.get (source);
+ if (w.isVisible ())
+ w.dispose ();
+ else
+ {
+ if (w instanceof Dialog)
+ {
+ w.show();
+ }
+ else
+ {
+ w.setVisible (true);
+ }
+ }
+ }
+ }
+
+ static class ButtonsWindow extends SubFrame implements ActionListener
+ {
+ Button b[] = new Button [9];
+
+ public void init ()
+ {
+ initted = true;
+ Panel p = new Panel ();
+ p.setLayout (new GridLayout (0, 3, 5, 5));
+
+ for (int i=0; i<9; i++)
+ {
+ b[i]=new Button ("button" + (i+1));
+ b[i].addActionListener (this);
+ }
+
+ p.add (b[0]);
+ p.add (b[6]);
+ p.add (b[4]);
+ p.add (b[8]);
+ p.add (b[1]);
+ p.add (b[7]);
+ p.add (b[3]);
+ p.add (b[5]);
+ p.add (b[2]);
+
+ add (p, "North");
+
+ Button cb = new Button ("close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+ add (cb, "South");
+ setTitle ("Buttons");
+ pack();
+ }
+
+ public void actionPerformed (ActionEvent evt)
+ {
+ Button source = (Button) evt.getSource ();
+
+ for (int i = 0; i < 9; i++)
+ {
+ if (source == b[i])
+ {
+ int i2 = ((i + 1) == 9) ? 0 : (i + 1);
+ if (b[i2].isVisible())
+ b[i2].setVisible(false);
+ else
+ b[i2].setVisible(true);
+ }
+ }
+ }
+ }
+
+
+ static class DialogWindow extends Dialog implements SubWindow
+ {
+ Label text;
+ Frame parent;
+ boolean initted = false;
+
+ public DialogWindow (Frame f)
+ {
+ super (f, true);
+
+ this.parent = f;
+
+ addWindowListener (new WindowAdapter ()
+ {
+ public void windowClosing (WindowEvent e)
+ {
+ text.setVisible (false);
+ hide ();
+ }
+ });
+ }
+
+ public void setVisible (boolean visible)
+ {
+ if (!initted && visible)
+ init();
+ super.setVisible (visible);
+ }
+
+ public void show ()
+ {
+ if (!initted)
+ init();
+ super.show ();
+ }
+
+ public void init ()
+ {
+ text = new Label ("Dialog Test");
+ text.setAlignment (Label.CENTER);
+
+ add (text, "North");
+ text.setVisible (false);
+
+ Panel p = new PrettyPanel();
+
+ Button cb = new Button ("OK");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e)
+ {
+ text.setVisible (false);
+ hide();
+ }
+ });
+
+ p.setLayout (new GridLayout (1, 3));
+ ((GridLayout) p.getLayout ()).setHgap (5);
+ ((GridLayout) p.getLayout ()).setVgap (5);
+ p.add (cb);
+
+ Button toggle = new Button ("Toggle");
+ p.add (toggle);
+
+ toggle.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e)
+ {
+ if (text.isVisible ())
+ text.setVisible (false);
+ else
+ text.setVisible (true);
+ doLayout();
+ }
+ });
+
+ Button subdlg = new Button ("SubDialog");
+ p.add (subdlg);
+
+ subdlg.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e)
+ {
+ DialogWindow sw = new DialogWindow (parent);
+ sw.show ();
+ }
+ });
+
+ add (p, "South");
+ setTitle ("Dialog");
+ pack();
+ }
+ }
+
+ static class CursorsWindow extends SubFrame implements ItemListener
+ {
+ Choice cursorChoice;
+ Canvas cursorCanvas;
+
+ public void init ()
+ {
+ cursorChoice = new Choice();
+ cursorChoice.add ("Default");
+ cursorChoice.add ("Crosshair");
+ cursorChoice.add ("Text");
+ cursorChoice.add ("Wait");
+ cursorChoice.add ("Southwest Resize");
+ cursorChoice.add ("Southeast Resize");
+ cursorChoice.add ("Northwest Resize");
+ cursorChoice.add ("Northeast Resize");
+ cursorChoice.add ("North Resize");
+ cursorChoice.add ("South Resize");
+ cursorChoice.add ("West Resize");
+ cursorChoice.add ("East Resize");
+ cursorChoice.add ("Hand");
+ cursorChoice.add ("Move");
+
+ cursorChoice.addItemListener(this);
+
+ add (cursorChoice, "North");
+
+ cursorCanvas = new Canvas ()
+ {
+ public void paint (Graphics g)
+ {
+ Dimension d = this.getSize();
+ g.setColor(Color.white);
+ g.fillRect(0, 0, d.width, d.height/2);
+ g.setColor(Color.black);
+ g.fillRect(0, d.height/2, d.width, d.height/2);
+ g.setColor(this.getBackground());
+ g.fillRect(d.width/3, d.height/3, d.width/3,
+ d.height/3);
+ }
+ };
+
+ cursorCanvas.setSize (80,80);
+
+ add (cursorCanvas, "Center");
+
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ add (cb, "South");
+ setTitle ("Cursors");
+ pack();
+ }
+
+ public void itemStateChanged (ItemEvent e)
+ {
+ int index = cursorChoice.getSelectedIndex();
+ cursorCanvas.setCursor(Cursor.getPredefinedCursor(index));
+ }
+ }
+
+ static class TextFieldWindow extends SubFrame implements ItemListener
+ {
+ Checkbox editable, visible, sensitive;
+ TextField text;
+
+ public void init ()
+ {
+ initted = true;
+ text = new TextField ("hello world");
+ add (text, "North");
+
+ Panel p = new Panel();
+ p.setLayout (new GridLayout (3, 1));
+ ((GridLayout) p.getLayout ()).setHgap (5);
+ ((GridLayout) p.getLayout ()).setVgap (5);
+
+ editable = new Checkbox("Editable", true);
+ p.add (editable);
+ editable.addItemListener (this);
+
+ visible = new Checkbox("Visible", true);
+ p.add (visible);
+ visible.addItemListener (this);
+
+ sensitive = new Checkbox("Sensitive", true);
+ p.add (sensitive);
+ sensitive.addItemListener (this);
+
+ add (p, "Center");
+
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ add (cb, "South");
+ setTitle ("TextField");
+ pack();
+ }
+
+ public void itemStateChanged (ItemEvent e)
+ {
+ boolean on=true;
+
+ if (e.getStateChange () == ItemEvent.DESELECTED)
+ on=false;
+ if (e.getSource() == editable)
+ text.setEditable (on);
+ if (e.getSource() == visible)
+ if (on)
+ text.setEchoChar ((char) 0);
+ else
+ text.setEchoChar ('*');
+ if (e.getSource() == sensitive)
+ text.setEnabled (on);
+
+ }
+ }
+
+ static class FileWindow extends FileDialog implements SubWindow
+ {
+ boolean initted = false;
+
+ public FileWindow (MainWindow mw)
+ {
+ super (mw);
+ }
+
+ public void setVisible (boolean visible)
+ {
+ if (!initted && visible)
+ init();
+ super.setVisible (visible);
+ }
+
+ public void init()
+ {
+ initted = true;
+ }
+ }
+
+ static class LabelWindow extends SubFrame
+ {
+ public void init ()
+ {
+ initted = true;
+
+ Panel p = new Panel();
+ p.setLayout (new GridLayout (3, 1));
+ ((GridLayout) p.getLayout ()).setHgap (5);
+ ((GridLayout) p.getLayout ()).setVgap (5);
+
+ p.add (new Label ("left justified label", Label.LEFT));
+ p.add (new Label ("center justified label", Label.CENTER));
+ p.add (new Label ("right justified label", Label.RIGHT));
+
+ add (p, "Center");
+
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ add (cb, "South");
+ setTitle ("Labels");
+ pack();
+ }
+ }
+
+ static class ListWindow extends SubFrame
+ {
+ public void init ()
+ {
+ initted = true;
+
+ Panel p = new Panel ();
+ p.setLayout (new GridLayout (3, 1));
+
+ List l = new List (5, true);
+ for (int i = 0; i < 10; i++)
+ l.add ("List item " + i);
+
+ p.add (l);
+
+ add (p, "Center");
+
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ add (cb, "South");
+ setTitle ("List");
+ pack();
+ }
+ }
+
+
+ static class RadioWindow extends SubFrame
+ {
+ public void init ()
+ {
+ initted = true;
+
+ Panel p = new Panel();
+ p.setLayout (new GridLayout (3, 1));
+ ((GridLayout) p.getLayout ()).setHgap (5);
+ ((GridLayout) p.getLayout ()).setVgap (5);
+
+ final CheckboxGroup cg = new CheckboxGroup();
+ final Checkbox[] boxes = new Checkbox[3];
+ for (int i = 0; i < 3; ++i)
+ {
+ boxes[i] = new Checkbox("button" + i, cg, i == 0);
+ p.add(boxes[i]);
+ }
+
+ add (p, "North");
+
+ p = new Panel();
+ p.setLayout (new GridLayout (1, 3));
+ ((GridLayout) p.getLayout ()).setHgap (5);
+ ((GridLayout) p.getLayout ()).setVgap (5);
+
+ for (int i = 0; i < 3; ++i)
+ {
+ final int val = i;
+ Button tweak = new Button ("Set " + i);
+ tweak.addActionListener(new ActionListener ()
+ {
+ public void actionPerformed (ActionEvent e)
+ {
+ cg.setSelectedCheckbox(boxes[val]);
+ }
+ });
+ p.add(tweak);
+ }
+
+ add (p, "Center");
+
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ add (cb, "South");
+ setTitle ("Radio Buttons");
+ pack();
+ }
+ }
+
+ static class TestWindow extends SubFrame
+ {
+ static int xs = 5, ys = 5;
+ final Frame parent;
+
+ public TestWindow(Frame f)
+ {
+ parent = f;
+ }
+
+ public void init()
+ {
+ initted = true;
+
+ addWindowListener (new WindowAdapter ()
+ {
+ public void windowClosing (WindowEvent e)
+ {
+ hide ();
+ }
+ });
+
+ Panel pan = new Panel();
+
+ final Label l = new Label ("Pithy Message:");
+ l.setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR));
+ pan.add (l);
+
+ TextField tf = new TextField("Hello world!");
+ pan.add(tf);
+ add(pan,"North");
+
+ final Image img;
+ URL imageurl;
+ imageurl = this.getClass()
+ .getResource("/gnu/classpath/examples/icons/big-warning.png");
+ img = Toolkit.getDefaultToolkit().createImage(imageurl);
+
+ final Canvas ch = new Canvas()
+ {
+ public void paint (Graphics g)
+ {
+ g.drawImage(img, xs + 25, ys + 25, this);
+
+ Font font = new Font ("Serif", Font.PLAIN, 18);
+ g.setFont (font);
+ g.setXORMode (Color.red);
+
+ g.drawString("Hi Red!", xs + 15, ys + 10);
+ g.setColor (Color.blue);
+ g.drawLine (xs, ys, xs + 100, ys + 100);
+
+ }
+ };
+ ch.setSize(150, 150);
+ add(ch, "Center");
+
+ final ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
+ final Panel p = new Panel();
+ p.add(new Button("Stop"));
+ p.add(new Button("evil"));
+ p.add(new Button("hoarders"));
+ p.add(new Button("use"));
+ p.add(new Button("GNU!"));
+
+ sp.add(p);
+ add(sp, "South");
+
+ Panel east_panel = new Panel();
+ east_panel.setLayout(new GridLayout (0,1));
+
+ CheckboxGroup group = new CheckboxGroup();
+ Checkbox cb = new Checkbox("one", group, true);
+ east_panel.add(cb);
+ cb = new Checkbox("two", group, false);
+ east_panel.add(cb);
+
+ add(east_panel,"East");
+
+ final Button wb = new Button();
+ wb.setLabel("Hello World!");
+ wb.addActionListener(new ActionListener()
+ {
+ public void actionPerformed (ActionEvent e)
+ {
+ l.setText ("Hello World!");
+
+ final Dialog d = new Dialog(parent);
+ d.setLayout(new FlowLayout());
+ d.setModal(true);
+ Button b = new Button("foobar");
+ b.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed (MouseEvent me)
+ {
+ d.hide ();
+ }
+ });
+ d.add (b);
+
+ List ch = new List();
+ ch.add("Ding");
+ ch.add("September");
+ ch.add("Red");
+ ch.add("Quassia");
+ ch.add("Pterodactyl");
+ d.add(ch);
+
+ d.pack ();
+ d.show ();
+ }
+ });
+
+ wb.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent e) {
+ xs++;
+ ys++;
+ ch.repaint ();
+ }
+ });
+
+ add(wb,"West");
+
+ pack();
+ show();
+
+ sp.setScrollPosition (10,0);
+
+ Toolkit t = Toolkit.getDefaultToolkit();
+ t.beep();
+ }
+ }
+
+ static class ResolutionWindow extends SubFrame
+ {
+ GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
+
+ public void init ()
+ {
+ initted = true;
+
+ setTitle("Change Screen Resolution");
+ final List list = new List();
+ DisplayMode[] modes = gd.getDisplayModes();
+
+ for (int i=0;i<modes.length;i++ )
+ list.add(modes[i].getWidth() + "x"
+ + modes[i].getHeight()
+ + ((modes[i].getBitDepth() != DisplayMode.BIT_DEPTH_MULTI)
+ ? "x" + modes[i].getBitDepth() + "bpp"
+ : "")
+ + ((modes[i].getRefreshRate() != DisplayMode.REFRESH_RATE_UNKNOWN)
+ ? "@" + modes[i].getRefreshRate() + "Hz"
+ : ""));
+
+ ActionListener al = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent ae)
+ {
+ int i = list.getSelectedIndex();
+ gd.setDisplayMode(gd.getDisplayModes()[i]);
+ }
+ };
+
+ Button b = new Button("Switch");
+ Button c = new Button("Close");
+
+ list.addActionListener(al);
+ b.addActionListener(al);
+
+ c.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+
+ setLayout(new GridLayout(3, 1, 5, 5));
+ add(list);
+ add(b);
+ add(c);
+
+ pack();
+ }
+ }
+
+ static class DragDropWindow
+ extends SubFrame
+ implements ActionListener, DropTargetListener
+ {
+ DragLabel source = new DragLabel("Drag and drop me to the following Button",
+ Label.CENTER);
+
+ Button target = new Button();
+
+ public void init()
+ {
+ source.setForeground(Color.red);
+ add(source, BorderLayout.NORTH);
+
+ target.addActionListener(this);
+ add(target, BorderLayout.SOUTH);
+
+ new DropTarget(target, DnDConstants.ACTION_COPY_OR_MOVE, this);
+
+ setSize(205, 100);
+
+ pack();
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ Button b = (Button) e.getSource();
+ b.setLabel("");
+ }
+
+ public void dragEnter(DropTargetDragEvent e)
+ {
+ }
+
+ public void dragExit(DropTargetEvent e)
+ {
+ }
+
+ public void dragOver(DropTargetDragEvent e)
+ {
+ }
+
+ public void drop(DropTargetDropEvent e)
+ {
+ try
+ {
+ Transferable t = e.getTransferable();
+
+ if (e.isDataFlavorSupported(DataFlavor.stringFlavor))
+ {
+ e.acceptDrop(e.getDropAction());
+
+ String s;
+ s = (String) t.getTransferData(DataFlavor.stringFlavor);
+
+ target.setLabel(s);
+
+ e.dropComplete(true);
+ }
+ else
+ e.rejectDrop();
+ }
+ catch (java.io.IOException e2)
+ {
+ }
+ catch (UnsupportedFlavorException e2)
+ {
+ }
+ }
+
+ public void dropActionChanged(DropTargetDragEvent e)
+ {
+ }
+
+ class DragLabel
+ extends Label
+ implements DragGestureListener, DragSourceListener
+ {
+ private DragSource ds = DragSource.getDefaultDragSource();
+
+ public DragLabel(String s, int alignment)
+ {
+ super(s, alignment);
+ int action = DnDConstants.ACTION_COPY_OR_MOVE;
+ ds.createDefaultDragGestureRecognizer(this, action, this);
+ }
+
+ public void dragGestureRecognized(DragGestureEvent e)
+ {
+ try
+ {
+ Transferable t = new StringSelection(getText());
+ e.startDrag(DragSource.DefaultCopyNoDrop, t, this);
+ }
+ catch (InvalidDnDOperationException e2)
+ {
+ System.out.println(e2);
+ }
+ }
+
+ public void dragDropEnd(DragSourceDropEvent e)
+ {
+ if (e.getDropSuccess() == false)
+ return;
+
+ int action = e.getDropAction();
+ if ((action & DnDConstants.ACTION_MOVE) != 0)
+ setText("");
+ }
+
+ public void dragEnter(DragSourceDragEvent e)
+ {
+ DragSourceContext ctx = e.getDragSourceContext();
+
+ int action = e.getDropAction();
+ if ((action & DnDConstants.ACTION_COPY) != 0)
+ ctx.setCursor(DragSource.DefaultCopyDrop);
+ else
+ ctx.setCursor(DragSource.DefaultCopyNoDrop);
+ }
+
+ public void dragExit(DragSourceEvent e)
+ {
+ }
+
+ public void dragOver(DragSourceDragEvent e)
+ {
+ }
+
+ public void dropActionChanged(DragSourceDragEvent e)
+ {
+ }
+ }
+ }
+
+ static class FullscreenWindow extends SubFrame
+ {
+ GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
+
+ public void init ()
+ {
+ initted = true;
+
+ setTitle("Fullscreen Exclusive Mode");
+
+ ActionListener al = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent ae)
+ {
+ if (gd.getFullScreenWindow() == FullscreenWindow.this)
+ gd.setFullScreenWindow(null);
+ else
+ gd.setFullScreenWindow(FullscreenWindow.this);
+ }
+ };
+
+ Button b = new Button("Toggle Fullscreen");
+ Button c = new Button("Close");
+
+ b.addActionListener(al);
+
+ c.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ gd.setFullScreenWindow(null);
+ dispose();
+ }
+ });
+
+ setLayout(new GridLayout(3, 1, 5, 5));
+ add(b);
+ add(c);
+
+ pack();
+ }
+ }
+
+ static class RoundRectWindow extends SubFrame
+ {
+ public void init ()
+ {
+ initted = true;
+ setTitle("RoundRect");
+ setLayout(new BorderLayout());
+ add(new DrawRoundRect(), "West");
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e) {
+ dispose();
+ }
+ });
+ add(cb, "Center");
+ add(new FillRoundRect(), "East");
+ pack();
+ }
+
+ static class DrawRoundRect extends Panel
+ {
+
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(500, 500);
+ }
+
+ public void paint( Graphics g )
+ {
+ // left side
+
+ // rectangles should be identical
+ g.setColor(Color.red);
+ g.drawRect(50, 50, 300, 100);
+ g.setColor(Color.black);
+ g.drawRoundRect(50, 50, 300, 100, 0, 0);
+
+ // small round corners
+ g.setColor(Color.red);
+ g.drawRect(50, 200, 300, 100);
+ g.setColor(Color.black);
+ g.drawRoundRect(50, 200, 300, 100, 25, 25);
+
+ // round ends
+ g.setColor(Color.red);
+ g.drawRect(50, 350, 300, 100);
+ g.setColor(Color.black);
+ g.drawRoundRect(50, 350, 300, 100, 25, 100);
+
+ // right side
+
+ // circle only
+ g.setColor(Color.blue);
+ g.drawOval(375, 50, 100, 100);
+
+ // round rectangle should exactly cover circle
+ g.setColor(Color.blue);
+ g.drawOval(375, 200, 100, 100);
+ g.setColor(Color.black);
+ g.drawRoundRect(375, 200, 100, 100, 100, 100);
+
+ // round rectangle should look like a circle
+ g.setColor(Color.red);
+ g.drawRect(375, 350, 100, 100);
+ g.setColor(Color.black);
+ g.drawRoundRect(375, 350, 100, 100, 100, 100);
+ }
+ }
+
+ static class FillRoundRect extends Panel
+ {
+
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(500, 500);
+ }
+
+ public void paint( Graphics g )
+ {
+ // left side
+
+ // rectangles should be identical
+ g.setColor(Color.red);
+ g.fillRect(50, 50, 300, 100);
+ g.setColor(Color.black);
+ g.fillRoundRect(50, 50, 300, 100, 0, 0);
+
+ // small round corners
+ g.setColor(Color.red);
+ g.fillRect(50, 200, 300, 100);
+ g.setColor(Color.black);
+ g.fillRoundRect(50, 200, 300, 100, 25, 25);
+
+ // round ends
+ g.setColor(Color.red);
+ g.fillRect(50, 350, 300, 100);
+ g.setColor(Color.black);
+ g.fillRoundRect(50, 350, 300, 100, 25, 100);
+
+ // right side
+
+ // circle only
+ g.setColor(Color.blue);
+ g.fillOval(375, 50, 100, 100);
+
+ // round rectangle should exactly cover circle
+ g.setColor(Color.blue);
+ g.fillOval(375, 200, 100, 100);
+ g.setColor(Color.black);
+ g.fillRoundRect(375, 200, 100, 100, 100, 100);
+
+ // round rectangle should look like a circle
+ g.setColor(Color.red);
+ g.fillRect(375, 350, 100, 100);
+ g.setColor(Color.black);
+ g.fillRoundRect(375, 350, 100, 100, 100, 100);
+ }
+ }
+ }
+
+ static class AnimationWindow extends SubFrame
+ {
+ AnimationApplet a;
+ public void init ()
+ {
+ initted = true;
+ setTitle("Animation");
+ Button cb = new Button ("Close");
+ cb.addActionListener(new ActionListener () {
+ public void actionPerformed (ActionEvent e)
+ {
+ if (a != null)
+ {
+ a.destroy();
+ dispose();
+ }
+ }
+ });
+ a = new AnimationApplet();
+ add(a, "Center");
+ add(cb, "South");
+ pack();
+ }
+
+ public void show()
+ {
+ super.show();
+ a.init();
+ a.run();
+ }
+ }
+}