EMMA Coverage Report (generated Tue May 18 22:20:04 CDT 2004)
[all classes][default package]

COVERAGE SUMMARY FOR SOURCE FILE [TabbedPaneDemo.java]

nameclass, %method, %block, %line, %
TabbedPaneDemo.java100% (3/3)27%  (3/11)53%  (307/582)54%  (51/95)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TabbedPaneDemo$1100% (1/1)50%  (1/2)25%  (6/24)20%  (1/5)
stateChanged (ChangeEvent): void 0%   (0/1)0%   (0/18)0%   (0/4)
TabbedPaneDemo$1 (TabbedPaneDemo): void 100% (1/1)100% (6/6)100% (1/1)
     
class TabbedPaneDemo$HeadSpin100% (1/1)17%  (1/6)32%  (98/307)36%  (16/44)
actionPerformed (ActionEvent): void 0%   (0/1)0%   (0/10)0%   (0/4)
go (): void 0%   (0/1)0%   (0/11)0%   (0/3)
nudge (int): void 0%   (0/1)0%   (0/95)0%   (0/9)
paint (Graphics): void 0%   (0/1)0%   (0/69)0%   (0/9)
squish (Graphics, ImageIcon, int, int, double): void 0%   (0/1)0%   (0/24)0%   (0/3)
TabbedPaneDemo$HeadSpin (TabbedPaneDemo): void 100% (1/1)100% (98/98)100% (16/16)
     
class TabbedPaneDemo100% (1/1)33%  (1/3)81%  (203/251)74%  (34/46)
actionPerformed (ActionEvent): void 0%   (0/1)0%   (0/40)0%   (0/9)
main (String []): void 0%   (0/1)0%   (0/8)0%   (0/3)
TabbedPaneDemo (SwingSet2): void 100% (1/1)100% (203/203)100% (34/34)

1/*
2 * Copyright (c) 2003 Sun Microsystems, Inc. All  Rights Reserved.
3 * 
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 
8 * -Redistributions of source code must retain the above copyright
9 *  notice, this list of conditions and the following disclaimer.
10 * 
11 * -Redistribution in binary form must reproduct the above copyright
12 *  notice, this list of conditions and the following disclaimer in
13 *  the documentation and/or other materials provided with the distribution.
14 * 
15 * Neither the name of Sun Microsystems, Inc. or the names of contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 * 
19 * This software is provided "AS IS," without a warranty of any kind. ALL
20 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
21 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
22 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
23 * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
24 * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
25 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
26 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
27 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
28 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
29 * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
30 * 
31 * You acknowledge that Software is not designed, licensed or intended for
32 * use in the design, construction, operation or maintenance of any nuclear
33 * facility.
34 */
35 
36/*
37 * @(#)TabbedPaneDemo.java        1.8 03/01/23
38 */
39 
40 
41import javax.swing.*;
42import javax.swing.event.*;
43import javax.swing.text.*;
44import javax.swing.border.*;
45import javax.swing.colorchooser.*;
46import javax.swing.filechooser.*;
47import javax.accessibility.*;
48 
49import java.awt.*;
50import java.awt.event.*;
51import java.beans.*;
52import java.util.*;
53import java.io.*;
54import java.applet.*;
55import java.net.*;
56 
57/**
58 * JTabbedPane Demo
59 *
60 * @version 1.8 01/23/03
61 * @author Jeff Dinkins
62 */
63public class TabbedPaneDemo extends DemoModule implements ActionListener {
64    HeadSpin spin;
65 
66    JTabbedPane tabbedpane;
67 
68    ButtonGroup group;
69 
70    JRadioButton top;
71    JRadioButton bottom;
72    JRadioButton left;
73    JRadioButton right;
74 
75    /**
76     * main method allows us to run as a standalone demo.
77     */
78    public static void main(String[] args) {
79        TabbedPaneDemo demo = new TabbedPaneDemo(null);
80        demo.mainImpl();
81    }
82 
83    /**
84     * TabbedPaneDemo Constructor
85     */
86    public TabbedPaneDemo(SwingSet2 swingset) {
87        // Set the title for this demo, and an icon used to represent this
88        // demo inside the SwingSet2 app.
89        super(swingset, "TabbedPaneDemo", "toolbar/JTabbedPane.gif");
90 
91        // create tab position controls
92        JPanel tabControls = new JPanel();
93        tabControls.add(new JLabel(getString("TabbedPaneDemo.label")));
94        top    = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.top")));
95        left   = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.left")));
96        bottom = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.bottom")));
97        right  = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.right")));
98        getDemoPanel().add(tabControls, BorderLayout.NORTH);
99 
100        group = new ButtonGroup();
101        group.add(top);
102        group.add(bottom);
103        group.add(left);
104        group.add(right);
105 
106        top.setSelected(true);
107 
108        top.addActionListener(this);
109        bottom.addActionListener(this);
110        left.addActionListener(this);
111        right.addActionListener(this);
112 
113        // create tab 
114        tabbedpane = new JTabbedPane();
115        getDemoPanel().add(tabbedpane, BorderLayout.CENTER);
116 
117        String name = getString("TabbedPaneDemo.laine");
118        JLabel pix = new JLabel(createImageIcon("tabbedpane/laine.jpg", name));
119        tabbedpane.add(name, pix);
120 
121        name = getString("TabbedPaneDemo.ewan");
122        pix = new JLabel(createImageIcon("tabbedpane/ewan.jpg", name));
123        tabbedpane.add(name, pix);
124 
125        name = getString("TabbedPaneDemo.hania");
126        pix = new JLabel(createImageIcon("tabbedpane/hania.jpg", name));
127        tabbedpane.add(name, pix);
128 
129        name = getString("TabbedPaneDemo.bounce");
130        spin = new HeadSpin();
131        tabbedpane.add(name, spin);
132        
133        tabbedpane.getModel().addChangeListener(
134           new ChangeListener() {
135              public void stateChanged(ChangeEvent e) {
136                  SingleSelectionModel model = (SingleSelectionModel) e.getSource();
137                  if(model.getSelectedIndex() == tabbedpane.getTabCount()-1) {
138                      spin.go();
139                  }
140              }
141           }
142        );
143    }
144 
145    public void actionPerformed(ActionEvent e) {
146        if(e.getSource() == top) {
147            tabbedpane.setTabPlacement(JTabbedPane.TOP);
148        } else if(e.getSource() == left) {
149            tabbedpane.setTabPlacement(JTabbedPane.LEFT);
150        } else if(e.getSource() == bottom) {
151            tabbedpane.setTabPlacement(JTabbedPane.BOTTOM);
152        } else if(e.getSource() == right) {
153            tabbedpane.setTabPlacement(JTabbedPane.RIGHT);
154        }
155    }
156 
157    class HeadSpin extends JComponent implements ActionListener {
158        javax.swing.Timer animator;
159        
160        ImageIcon icon[] = new ImageIcon[6];
161 
162        int tmpScale;
163 
164        final static int numImages = 6;
165 
166        double x[] = new double[numImages];
167        double y[] = new double[numImages];
168 
169        int xh[] = new int[numImages];
170        int yh[] = new int[numImages];
171 
172        double scale[] = new double[numImages];
173 
174        public HeadSpin() {
175            setBackground(Color.black);
176            icon[0] = createImageIcon("tabbedpane/ewan.gif", getString("TabbedPaneDemo.ewan"));
177            icon[1] = createImageIcon("tabbedpane/stephen.gif", getString("TabbedPaneDemo.stephen"));
178            icon[2] = createImageIcon("tabbedpane/david.gif", getString("TabbedPaneDemo.david"));
179            icon[3] = createImageIcon("tabbedpane/matthew.gif", getString("TabbedPaneDemo.matthew"));
180            icon[4] = createImageIcon("tabbedpane/blake.gif", getString("TabbedPaneDemo.blake"));
181            icon[5] = createImageIcon("tabbedpane/brooke.gif", getString("TabbedPaneDemo.brooke"));
182 
183            /*
184            for(int i = 0; i < 6; i++) {
185                x[i] = (double) rand.nextInt(500);
186                y[i] = (double) rand.nextInt(500);
187            }
188            */
189        }
190        
191        public void go() {
192            animator = new javax.swing.Timer(22 + 22 + 22, this);
193            animator.start();
194        }
195 
196        public void paint(Graphics g) {
197            g.setColor(getBackground());
198            g.fillRect(0, 0, getWidth(), getHeight());
199 
200            for(int i = 0; i < numImages; i++) {
201                if(x[i] > 3*i) {
202                    nudge(i);
203                    squish(g, icon[i], xh[i], yh[i], scale[i]);
204                } else {
205                    x[i] += .05;
206                    y[i] += .05;
207                }
208            }
209        }
210 
211        Random rand = new Random();
212 
213        public void nudge(int i) {
214            x[i] += (double) rand.nextInt(1000) / 8756;
215            y[i] += (double) rand.nextInt(1000) / 5432;
216            int tmpScale = (int) (Math.abs(Math.sin(x[i])) * 10);
217            scale[i] = (double) tmpScale / 10;
218            int nudgeX = (int) (((double) getWidth()/2) * .8);
219            int nudgeY = (int) (((double) getHeight()/2) * .60);
220            xh[i] = (int) (Math.sin(x[i]) * nudgeX) + nudgeX;
221            yh[i] = (int) (Math.sin(y[i]) * nudgeY) + nudgeY;
222        }
223 
224        public void squish(Graphics g, ImageIcon icon, int x, int y, double scale) {
225            if(isVisible()) {
226                g.drawImage(icon.getImage(), x, y,
227                            (int) (icon.getIconWidth()*scale),
228                            (int) (icon.getIconHeight()*scale),
229                            this);
230            } 
231        }
232        
233        public void actionPerformed(ActionEvent e) {
234            if(isVisible()) {
235                repaint();
236            } else {
237                animator.stop();
238            }
239        }
240    }
241}
242 

[all classes][default package]
EMMA 2.0.4015 (stable) (C) Vladimir Roubtsov