src/demo/share/jfc/J2Ddemo/java2d/demos/Mix/BezierScroller.java
author prr
Mon, 14 May 2018 08:58:32 -0700
changeset 50146 0bb0e464ee76
child 52252 de9486d74a74
permissions -rw-r--r--
8198991: Move Java2D demo to the open repository Reviewed-by: serb, jeff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50146
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     1
/*
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     2
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     3
 * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     4
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     5
 * Redistribution and use in source and binary forms, with or without
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     6
 * modification, are permitted provided that the following conditions
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     7
 * are met:
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     8
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
     9
 *   - Redistributions of source code must retain the above copyright
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    10
 *     notice, this list of conditions and the following disclaimer.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    11
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    12
 *   - Redistributions in binary form must reproduce the above copyright
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    13
 *     notice, this list of conditions and the following disclaimer in the
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    14
 *     documentation and/or other materials provided with the distribution.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    15
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    16
 *   - Neither the name of Oracle nor the names of its
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    17
 *     contributors may be used to endorse or promote products derived
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    18
 *     from this software without specific prior written permission.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    19
 *
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    20
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    21
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    22
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    23
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    24
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    25
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    26
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    27
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    28
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    29
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    30
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    31
 */
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    32
package java2d.demos.Mix;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    33
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    34
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    35
import static java.awt.Color.LIGHT_GRAY;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    36
import static java.awt.Color.WHITE;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    37
import static java.lang.Math.random;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    38
import java.awt.AlphaComposite;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    39
import java.awt.BasicStroke;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    40
import java.awt.Color;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    41
import java.awt.Component;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    42
import java.awt.Dimension;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    43
import java.awt.Font;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    44
import java.awt.FontMetrics;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    45
import java.awt.Graphics2D;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    46
import java.awt.Image;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    47
import java.awt.RenderingHints;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    48
import java.awt.event.ActionEvent;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    49
import java.awt.event.ActionListener;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    50
import java.awt.geom.GeneralPath;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    51
import java.awt.geom.Path2D;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    52
import java.awt.geom.PathIterator;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    53
import java.awt.image.BufferedImage;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    54
import java.io.BufferedReader;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    55
import java.io.FileReader;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    56
import java.util.ArrayList;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    57
import java.util.List;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    58
import java.util.logging.Level;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    59
import java.util.logging.Logger;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    60
import java2d.AnimatingControlsSurface;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    61
import java2d.CustomControls;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    62
import javax.swing.AbstractButton;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    63
import javax.swing.JComboBox;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    64
import javax.swing.JToggleButton;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    65
import javax.swing.JToolBar;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    66
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    67
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    68
/**
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    69
 * Animated Bezier Curve shape with images at the control points.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    70
 * README.txt file scrolling up. Composited Image fading in and out.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    71
 */
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    72
@SuppressWarnings("serial")
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    73
public class BezierScroller extends AnimatingControlsSurface {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    74
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    75
    private static String appletStrs[] = { " ", "J2Ddemo",
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    76
        "BezierScroller - Animated Bezier Curve shape with images",
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    77
        "For README.txt file scrolling run in application mode", " " };
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    78
    private static final int NUMPTS = 6;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    79
    private static Color greenBlend = new Color(0, 255, 0, 100);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    80
    private static Color blueBlend = new Color(0, 0, 255, 100);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    81
    private static Font font = new Font(Font.SERIF, Font.PLAIN, 12);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    82
    private static BasicStroke bs = new BasicStroke(3.0f);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    83
    private static Image hotj_img;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    84
    private static BufferedImage img;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    85
    private static final int UP = 0;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    86
    private static final int DOWN = 1;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    87
    private float animpts[] = new float[NUMPTS * 2];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    88
    private float deltas[] = new float[NUMPTS * 2];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    89
    private BufferedReader reader;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    90
    private int nStrs;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    91
    private int strH;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    92
    private int yy, ix, iy, imgX;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    93
    private List<String> vector, appletVector;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    94
    private float alpha = 0.2f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    95
    private int alphaDirection;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    96
    protected boolean doImage, doShape, doText;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    97
    protected boolean buttonToggle;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    98
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
    99
    /*
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   100
     * Using this to scale down globe.png since we want a smaller version,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   101
     * I know it is 100 x 160 and has a transparent pixel.
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   102
     */
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   103
    private Image scaled(Image src) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   104
        int sw = src.getWidth(null);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   105
        int sh = src.getHeight(null);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   106
        int dw = sw/5;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   107
        int dh = sh/5;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   108
        BufferedImage bi =
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   109
            new BufferedImage(dw, dh, BufferedImage.TYPE_INT_ARGB);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   110
        Graphics2D g2d = bi.createGraphics();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   111
        g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   112
                             RenderingHints.VALUE_INTERPOLATION_BICUBIC);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   113
        g2d.drawImage(src, 0, 0, dw, dh, 0, 0, sw, sh, null);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   114
        g2d.dispose();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   115
        return bi;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   116
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   117
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   118
    @SuppressWarnings("LeakingThisInConstructor")
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   119
    public BezierScroller() {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   120
        setBackground(WHITE);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   121
        doShape = doText = true;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   122
        hotj_img = scaled(getImage("globe.png"));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   123
        Image image = getImage("jumptojavastrip.png");
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   124
        int iw = image.getWidth(this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   125
        int ih = image.getHeight(this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   126
        img = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   127
        img.createGraphics().drawImage(image, 0, 0, this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   128
        setControls(new Component[] { new DemoControls(this) });
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   129
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   130
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   131
    public void animate(float[] pts, float[] deltas, int index, int limit) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   132
        float newpt = pts[index] + deltas[index];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   133
        if (newpt <= 0) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   134
            newpt = -newpt;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   135
            deltas[index] = (float) (random() * 4.0 + 2.0);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   136
        } else if (newpt >= limit) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   137
            newpt = 2.0f * limit - newpt;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   138
            deltas[index] = -(float) (random() * 4.0 + 2.0);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   139
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   140
        pts[index] = newpt;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   141
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   142
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   143
    public void getFile() {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   144
        try {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   145
            String fName = "README.txt";
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   146
            if ((reader = new BufferedReader(new FileReader(fName))) != null) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   147
                getLine();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   148
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   149
        } catch (Exception e) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   150
            reader = null;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   151
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   152
        if (reader == null) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   153
            appletVector = new ArrayList<String>(100);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   154
            for (int i = 0; i < 100; i++) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   155
                appletVector.add(appletStrs[i % appletStrs.length]);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   156
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   157
            getLine();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   158
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   159
        buttonToggle = true;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   160
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   161
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   162
    public String getLine() {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   163
        String str = null;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   164
        if (reader != null) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   165
            try {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   166
                if ((str = reader.readLine()) != null) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   167
                    if (str.length() == 0) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   168
                        str = " ";
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   169
                    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   170
                    vector.add(str);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   171
                }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   172
            } catch (Exception e) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   173
                Logger.getLogger(BezierScroller.class.getName()).log(
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   174
                        Level.SEVERE,
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   175
                        null, e);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   176
                reader = null;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   177
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   178
        } else {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   179
            if (!appletVector.isEmpty()) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   180
                vector.add(str = appletVector.remove(0));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   181
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   182
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   183
        return str;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   184
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   185
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   186
    @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   187
    public void reset(int w, int h) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   188
        for (int i = 0; i < animpts.length; i += 2) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   189
            animpts[i + 0] = (float) (random() * w);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   190
            animpts[i + 1] = (float) (random() * h);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   191
            deltas[i + 0] = (float) (random() * 6.0 + 4.0);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   192
            deltas[i + 1] = (float) (random() * 6.0 + 4.0);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   193
            if (animpts[i + 0] > w / 2.0f) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   194
                deltas[i + 0] = -deltas[i + 0];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   195
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   196
            if (animpts[i + 1] > h / 2.0f) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   197
                deltas[i + 1] = -deltas[i + 1];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   198
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   199
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   200
        FontMetrics fm = getFontMetrics(font);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   201
        strH = fm.getAscent() + fm.getDescent();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   202
        nStrs = h / strH + 2;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   203
        vector = new ArrayList<String>(nStrs);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   204
        ix = (int) (random() * (w - 80));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   205
        iy = (int) (random() * (h - 80));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   206
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   207
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   208
    @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   209
    public void step(int w, int h) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   210
        if (doText && vector.isEmpty()) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   211
            getFile();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   212
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   213
        if (doText) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   214
            String s = getLine();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   215
            if (s == null || vector.size() == nStrs && !vector.isEmpty()) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   216
                vector.remove(0);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   217
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   218
            yy = (s == null) ? 0 : h - vector.size() * strH;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   219
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   220
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   221
        for (int i = 0; i < animpts.length && doShape; i += 2) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   222
            animate(animpts, deltas, i + 0, w);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   223
            animate(animpts, deltas, i + 1, h);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   224
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   225
        if (doImage && alphaDirection == UP) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   226
            if ((alpha += 0.025) > .99) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   227
                alphaDirection = DOWN;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   228
                alpha = 1.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   229
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   230
        } else if (doImage && alphaDirection == DOWN) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   231
            if ((alpha -= .02) < 0.01) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   232
                alphaDirection = UP;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   233
                alpha = 0;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   234
                ix = (int) (random() * (w - 80));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   235
                iy = (int) (random() * (h - 80));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   236
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   237
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   238
        if (doImage) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   239
            if ((imgX += 80) == 800) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   240
                imgX = 0;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   241
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   242
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   243
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   244
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   245
    @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   246
    public void render(int w, int h, Graphics2D g2) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   247
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   248
        if (doText) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   249
            g2.setColor(LIGHT_GRAY);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   250
            g2.setFont(font);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   251
            float y = yy;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   252
            //for (int i = 0; i < vector.size(); i++) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   253
            for (String string : vector) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   254
                g2.drawString(string, 1, y += strH);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   255
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   256
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   257
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   258
        if (doShape) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   259
            float[] ctrlpts = animpts;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   260
            int len = ctrlpts.length;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   261
            float prevx = ctrlpts[len - 2];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   262
            float prevy = ctrlpts[len - 1];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   263
            float curx = ctrlpts[0];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   264
            float cury = ctrlpts[1];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   265
            float midx = (curx + prevx) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   266
            float midy = (cury + prevy) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   267
            GeneralPath gp = new GeneralPath(Path2D.WIND_NON_ZERO);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   268
            gp.moveTo(midx, midy);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   269
            for (int i = 2; i <= ctrlpts.length; i += 2) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   270
                float x1 = (midx + curx) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   271
                float y1 = (midy + cury) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   272
                prevx = curx;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   273
                prevy = cury;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   274
                if (i < ctrlpts.length) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   275
                    curx = ctrlpts[i + 0];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   276
                    cury = ctrlpts[i + 1];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   277
                } else {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   278
                    curx = ctrlpts[0];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   279
                    cury = ctrlpts[1];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   280
                }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   281
                midx = (curx + prevx) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   282
                midy = (cury + prevy) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   283
                float x2 = (prevx + midx) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   284
                float y2 = (prevy + midy) / 2.0f;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   285
                gp.curveTo(x1, y1, x2, y2, midx, midy);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   286
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   287
            gp.closePath();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   288
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   289
            g2.setColor(blueBlend);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   290
            g2.setStroke(bs);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   291
            g2.draw(gp);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   292
            g2.setColor(greenBlend);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   293
            g2.fill(gp);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   294
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   295
            PathIterator pi = gp.getPathIterator(null);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   296
            float pts[] = new float[6];
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   297
            while (!pi.isDone()) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   298
                if (pi.currentSegment(pts) == PathIterator.SEG_CUBICTO) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   299
                    g2.drawImage(hotj_img, (int) pts[0], (int) pts[1], this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   300
                }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   301
                pi.next();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   302
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   303
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   304
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   305
        if (doImage) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   306
            AlphaComposite ac = AlphaComposite.getInstance(
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   307
                    AlphaComposite.SRC_OVER, alpha);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   308
            g2.setComposite(ac);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   309
            g2.drawImage(img.getSubimage(imgX, 0, 80, 80), ix, iy, this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   310
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   311
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   312
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   313
    public static void main(String argv[]) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   314
        createDemoFrame(new BezierScroller());
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   315
    }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   316
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   317
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   318
    static final class DemoControls extends CustomControls implements
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   319
            ActionListener {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   320
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   321
        BezierScroller demo;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   322
        JToolBar toolbar;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   323
        JComboBox combo;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   324
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   325
        public DemoControls(BezierScroller demo) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   326
            super(demo.name);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   327
            this.demo = demo;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   328
            add(toolbar = new JToolBar());
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   329
            toolbar.setFloatable(false);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   330
            addTool("Image", false);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   331
            addTool("Shape", true);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   332
            addTool("Text", true);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   333
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   334
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   335
        public void addTool(String str, boolean state) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   336
            JToggleButton b =
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   337
                    (JToggleButton) toolbar.add(new JToggleButton(str));
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   338
            b.setFocusPainted(false);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   339
            b.setSelected(state);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   340
            b.addActionListener(this);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   341
            int width = b.getPreferredSize().width;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   342
            Dimension prefSize = new Dimension(width, 21);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   343
            b.setPreferredSize(prefSize);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   344
            b.setMaximumSize(prefSize);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   345
            b.setMinimumSize(prefSize);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   346
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   347
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   348
        @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   349
        public void actionPerformed(ActionEvent e) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   350
            JToggleButton b = (JToggleButton) e.getSource();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   351
            if (b.getText().equals("Image")) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   352
                demo.doImage = b.isSelected();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   353
            } else if (b.getText().equals("Shape")) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   354
                demo.doShape = b.isSelected();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   355
            } else {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   356
                demo.doText = b.isSelected();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   357
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   358
            if (!demo.animating.running()) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   359
                demo.repaint();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   360
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   361
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   362
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   363
        @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   364
        public Dimension getPreferredSize() {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   365
            return new Dimension(200, 40);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   366
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   367
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   368
        @Override
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   369
        @SuppressWarnings("SleepWhileHoldingLock")
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   370
        public void run() {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   371
            Thread me = Thread.currentThread();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   372
            int i = 0;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   373
            while (thread == me) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   374
                try {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   375
                    Thread.sleep(250);
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   376
                } catch (InterruptedException e) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   377
                    return;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   378
                }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   379
                if (demo.buttonToggle) {
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   380
                    ((AbstractButton) toolbar.getComponentAtIndex(i++ % 2)).
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   381
                            doClick();
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   382
                    demo.buttonToggle = false;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   383
                }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   384
            }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   385
            thread = null;
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   386
        }
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   387
    } // End DemoControls
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   388
} // End BezierScroller
0bb0e464ee76 8198991: Move Java2D demo to the open repository
prr
parents:
diff changeset
   389