home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / awt / demo / awttest.java next >
Text File  |  1995-08-11  |  6KB  |  260 lines

  1. /*
  2.  * @(#)AWTTest.java    1.20 95/01/31 Sami Shaio
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19. package awt.demo;
  20.  
  21. import awt.*;
  22. import java.io.*;
  23. import java.lang.*;
  24. import java.util.*;
  25.  
  26. class OpenItem extends MenuItem implements FileChooser {
  27.     public OpenItem(Menu m, Window w) {
  28.     super("Open...", m);
  29.     fileDialog = new FileDialog("Open File...", w);
  30.     }
  31.     
  32.     public void fileChosen() {
  33.     System.out.println("Chose file: " + fileDialog.selectedFile());
  34.     }
  35.  
  36.     public void selected() {
  37.     fileDialog.show(this);
  38.     }
  39.  
  40.     private FileDialog fileDialog;
  41. }
  42.  
  43. class TextItem {
  44.     public TextItem(Window p, String label, Font f, int x, int y) {
  45.     parent = p; 
  46.     pLabel = label;
  47.     font = f;
  48.     px = x;
  49.     py = y;
  50.     height = f.height;
  51.     width = f.stringWidth(pLabel);
  52.     }
  53.     public void paint() {
  54.     parent.setFont(font);
  55.     parent.drawString(pLabel, px, py);
  56.     }
  57.     public void moveTo(int x, int y) {
  58.     parent.clearRect(px, py-height, width, height);
  59.     px = x;
  60.     py = y;
  61.     paint();
  62.     }
  63.  
  64.     private Window parent;
  65.     private String pLabel;
  66.     private Font font;
  67.     private int px;
  68.     private int py;
  69.     private int height;
  70.     private int width;
  71. }
  72.     
  73.     
  74. class FileMenu extends Menu {
  75.     public FileMenu(MenuBar mbar, Window w) {
  76.     MenuItem    item;
  77.  
  78.     super("File", mbar);
  79.     new MenuItem("New", this);
  80.     new OpenItem(this, w);
  81.     item = new MenuItem("Save", this);
  82.     item.disable();
  83.     new MenuItem("Save As...", this);
  84.     new ToggleItem("Motion events", false, this);
  85.     new MenuItem("Quit", this);
  86.     contentWindow = w;
  87.     enabled = true;
  88.     }
  89.     public void selected(int index) {
  90.     int    height;
  91.     int    width;
  92.  
  93.     if (index == 0) {
  94.         aw = new AWTTest();
  95.     }
  96.     if (index == 4) {
  97.         if (enabled) {
  98.         contentWindow.disablePointerMotionEvents();
  99.         enabled = false;
  100.         } else {
  101.         contentWindow.enablePointerMotionEvents();
  102.         enabled = true;
  103.         }
  104.     }
  105.     height = AWTTest.boldFont.height + 5;
  106.     width = AWTTest.boldFont.stringWidth("selected item ") +
  107.         AWTTest.normalFont.stringWidth("index=" + 10) + 5; 
  108.     contentWindow.clearRect(50, 50, width, height);
  109.     contentWindow.drawRect(50, 50, width, height);
  110.     contentWindow.setFont(AWTTest.boldFont);
  111.     contentWindow.drawString("selected item ", 52, 50+height);
  112.     contentWindow.setFont(AWTTest.normalFont);
  113.     contentWindow.drawString("index=" + index,
  114.                   52 +
  115.                   AWTTest.boldFont.stringWidth("selected item "),
  116.                   50 + height);
  117.     }
  118.  
  119.     private AWTTest    aw;
  120.     private Window contentWindow;
  121.     private boolean enabled;
  122. };
  123.     
  124. class TestWindow extends Window {
  125.     TestWindow(Frame f) {
  126.     Color    white = new Color(AWTTest.ws, 255, 255, 255);
  127.     Color    red = new Color(AWTTest.ws, 255, 0, 0);
  128.     Color    green = new Color(AWTTest.ws, 0, 255, 0);
  129.     Color    blue = new Color(AWTTest.ws, 0, 0, 255);
  130.     Color    gray = new Color(AWTTest.ws, 200, 200, 200);
  131.  
  132.     super(f, false, white, 300, 300);
  133.     w1 = new Window(this, false, green, 300, 100);
  134.     w2 = new Window(this, false, red, 300, 100);
  135.     w21 = new Window(this, false, blue, 300, 100);
  136.     //w22 = new Window(w2, false, gray);
  137.     v21 = new Scrollbar(w2, Scrollbar.VERTICAL, true);
  138.     v22 = new Scrollbar(w21, Scrollbar.VERTICAL, false);
  139.     v22.moveTo(50, 50);
  140.     vsb = new Scrollbar(w1, Scrollbar.VERTICAL, true);
  141.     hsb = new Scrollbar(w1, Scrollbar.HORIZONTAL, true);
  142.     vsb.setScrollTarget(this);
  143.     hsb.setScrollTarget(this);
  144.     button = new Button("button 1", w1, 0, 0);
  145.     button1 = new Button("button 2", w1, 0, 25);
  146.     button2 = new Toggle("button 3", w1, 0, 50, false);
  147.     t = new TextItem(w1,
  148.              "I'm a text item",
  149.              AWTTest.boldFont,
  150.              200, 200);
  151.     
  152.     textField = new TextField("initial value",
  153.                   w1,
  154.                   100,
  155.                   100,
  156.                   20);
  157.     layout();
  158.     }
  159.     
  160.     public void paint() {
  161.     t.paint();
  162.     }
  163.  
  164.     public void resize() {
  165.     layout();
  166.     vsb.setMaximum(w1.height - 20);
  167.     hsb.setMaximum(w1.width - 10);
  168.     v21.setMaximum(w2.height - 20);
  169.     //v22.setMaximum(w22.height - 20);
  170.     v22.moveTo(w21.width / 2, w21.height / 2); 
  171.     }
  172.  
  173.     void scrollButton() {
  174.     int h = hsb.value();
  175.     int v = vsb.value();
  176.     
  177.     button.moveTo(h, v);
  178.     button1.moveTo(h, v+25);
  179.     button2.moveTo(h, v+50);
  180.     t.moveTo(h+100, v+100);
  181.     textField.moveTo(h+100,v+100);
  182.     }
  183.  
  184.     boolean scrollVertically(int dy) {
  185.     return false;
  186.     }
  187.     boolean scrollHorizontally(int dx) {
  188.     return false;
  189.     }
  190.     public void lineUp() {
  191.     scrollButton();
  192.     }
  193.     public void lineDown() {
  194.     scrollButton();
  195.     }
  196.     public void pageUp() {
  197.     scrollButton();
  198.     }
  199.     public void pageDown() {
  200.     scrollButton();
  201.     }
  202.     public void dragAbsolute(int value) {
  203.     scrollButton();
  204.     }
  205.  
  206.     Window        w21;
  207.     Window        w22;
  208.     Scrollbar        v21;
  209.     Scrollbar        v22;
  210.     Window        w1;
  211.     Window        w2;
  212.     TextItem        t;
  213.     Scrollbar        vsb;
  214.     Scrollbar        hsb;
  215.     Button        button;
  216.     Button        button1;
  217.     Toggle        button2;
  218.     TextField        textField;
  219. }
  220.  
  221. class AWTTest {
  222.     public AWTTest() {
  223.     f  = new Frame(AWTTest.ws,
  224.                true, false, 300, 300,
  225.                new Color(AWTTest.ws,200, 200, 200));
  226.     f.setTitle("AWT demo " + nFrames++);
  227.     mbar = new MenuBar(f);
  228.     contentWindow = new TestWindow(f);
  229.     fileMenu = new FileMenu(mbar, contentWindow);
  230.     editMenu = new Menu("Edit", mbar);
  231.     new MenuItem("Cut", editMenu);
  232.     new MenuItem("Copy", editMenu);
  233.     new MenuItem("Paste", editMenu);
  234.     f.show();
  235.     }
  236.  
  237.     public static void main(String args[]) {
  238.     AWTTest        a1;
  239.  
  240.     AWTTest.nFrames = 1;
  241.     ws = new WServer();
  242.     boldFont = new Font(AWTTest.ws, "helvetica-bold-14");
  243.     normalFont = new Font(AWTTest.ws, "lucidasans-typewriter-12");
  244.     a1 = new AWTTest();
  245.     ws.run();
  246.     }
  247.  
  248.     public static Font    boldFont;
  249.     public static Font    normalFont;
  250.     public static    int nFrames;
  251.     public static WServer    ws;
  252.  
  253.     Frame        f;
  254.     MenuBar        mbar;
  255.     FileMenu        fileMenu;
  256.     Menu        editMenu;
  257.     Window        contentWindow;
  258. };
  259.  
  260.