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