Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sanity/client/SwingSet/src/SplitPaneDemoTest.java
41153 views
1
/*
2
* Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import com.sun.swingset3.demos.splitpane.SplitPaneDemo;
25
import static com.sun.swingset3.demos.splitpane.SplitPaneDemo.*;
26
27
import java.awt.Component;
28
import java.awt.event.KeyEvent;
29
import javax.swing.JSplitPane;
30
import javax.swing.UIManager;
31
32
import static org.jemmy2ext.JemmyExt.*;
33
34
import org.jtregext.GuiTestListener;
35
36
import org.netbeans.jemmy.ClassReference;
37
import org.netbeans.jemmy.ComponentChooser;
38
import org.netbeans.jemmy.operators.JButtonOperator;
39
import org.netbeans.jemmy.operators.JCheckBoxOperator;
40
import org.netbeans.jemmy.operators.JFrameOperator;
41
import org.netbeans.jemmy.operators.JRadioButtonOperator;
42
import org.netbeans.jemmy.operators.JSplitPaneOperator;
43
import org.netbeans.jemmy.operators.JTextFieldOperator;
44
import org.netbeans.jemmy.util.LookAndFeel;
45
46
import org.testng.annotations.Listeners;
47
import org.testng.annotations.Test;
48
import static org.testng.AssertJUnit.*;
49
50
/*
51
* @test
52
* @key headful
53
* @summary Verifies SwingSet3 SplitPaneDemo by performing OneClick expansion,
54
* changing size of the divier, moving the divider to different positions
55
* and changing the divider orientation.
56
*
57
* @library /sanity/client/lib/jemmy/src
58
* @library /sanity/client/lib/Extensions/src
59
* @library /sanity/client/lib/SwingSet3/src
60
* @modules java.desktop
61
* java.logging
62
* @build org.jemmy2ext.JemmyExt
63
* @build com.sun.swingset3.demos.splitpane.SplitPaneDemo
64
* @run testng/timeout=600 SplitPaneDemoTest
65
*/
66
@Listeners(GuiTestListener.class)
67
public class SplitPaneDemoTest {
68
69
@Test(dataProvider = "availableLookAndFeels", dataProviderClass = TestHelpers.class)
70
public void test(String lookAndFeel) throws Exception {
71
UIManager.setLookAndFeel(lookAndFeel);
72
73
new ClassReference(SplitPaneDemo.class.getCanonicalName()).startApplication();
74
75
JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
76
77
JSplitPaneOperator splitPane = new JSplitPaneOperator(frame);
78
79
// OneTouch feature is not available in GTK L&F
80
if(!LookAndFeel.isGTK()) {
81
// Toggle OneTouch Expandable
82
checkOneTouch(frame, splitPane, true);
83
checkOneTouch(frame, splitPane, false);
84
}
85
86
// Check changing divider size to minimum and maximum values
87
changeDividerSize(frame, splitPane, 50);
88
changeDividerSize(frame, splitPane, 6);
89
90
91
// TODO Skipping this code for Motif L&F as the fix for "CODETOOLS-7902324"
92
// is deferred now
93
if(!LookAndFeel.isMotif()) {
94
// Check moving the divider
95
checkDividerMoves(frame, splitPane, false);
96
checkDividerMoves(frame, splitPane, true);
97
98
// Check different minumum Day/Night sizes
99
changeMinimumSizes(frame, splitPane, 100);
100
changeMinimumSizes(frame, splitPane, 0);
101
}
102
}
103
104
// Check for different day and night minimum size
105
public void changeMinimumSizes(JFrameOperator frame, JSplitPaneOperator splitPane, int amount) throws Exception {
106
for (String label : new String[]{FIRST_COMPONENT_MIN_SIZE, SECOND_COMPONENT_MIN_SIZE}) {
107
JTextFieldOperator size = new JTextFieldOperator(getLabeledContainerOperator(frame, label));
108
size.enterText(Integer.toString(amount));
109
size.pressKey(KeyEvent.VK_ENTER);
110
}
111
checkDividerMoves(frame, splitPane, false);
112
checkDividerMoves(frame, splitPane, true);
113
}
114
115
// Check moving of divider
116
public void checkDividerMoves(JFrameOperator frame, JSplitPaneOperator splitPane, boolean isVertical) throws Exception {
117
if (isVertical) {
118
new JRadioButtonOperator(frame, VERTICAL_SPLIT).doClick();
119
} else {
120
new JRadioButtonOperator(frame, HORIZONTAL_SPLIT).doClick();
121
}
122
123
splitPane.moveDivider(0.0);
124
assertEquals("Move Minimum, dividerLocation is at minimumDividerLocation",
125
splitPane.getMinimumDividerLocation(), splitPane.getDividerLocation());
126
127
// use getMaximumDividerLocation() to move divider to here because using proportion 1.0 does not work
128
splitPane.moveDivider(1.0);
129
130
assertEquals("Move Maximum, dividerLocation is at maximumDividerLocation",
131
splitPane.getMaximumDividerLocation(), splitPane.getDividerLocation());
132
133
splitPane.moveDivider(0.5);
134
assertEquals("Move Middle, dividerLocation is at the artithmetic average of minimum and maximum DividerLocations",
135
(splitPane.getMaximumDividerLocation() + splitPane.getMinimumDividerLocation()) / 2, splitPane.getDividerLocation());
136
}
137
138
private void waitDividerSize(JSplitPaneOperator splitPane, int size) {
139
splitPane.waitState(new ComponentChooser() {
140
public boolean checkComponent(Component c) {
141
return splitPane.getDividerSize() == size;
142
}
143
public String getDescription() {
144
return "Divider size to be " + size;
145
}
146
});
147
}
148
149
// Check changing the size of the divider
150
public void changeDividerSize(JFrameOperator frame, JSplitPaneOperator splitPane, int amount) throws Exception {
151
JTextFieldOperator size = new JTextFieldOperator(getLabeledContainerOperator(frame, DIVIDER_SIZE));
152
size.enterText(Integer.toString(amount));
153
waitDividerSize(splitPane, amount);
154
}
155
156
private void waitDividerLocation(JSplitPaneOperator splitPane, int location) {
157
splitPane.waitState(new ComponentChooser() {
158
public boolean checkComponent(Component c) {
159
return splitPane.getDividerLocation() == location;
160
}
161
public String getDescription() {
162
return "Divider location to be " + location;
163
}
164
});
165
}
166
167
public void checkOneTouch(JFrameOperator frame, JSplitPaneOperator splitPane, boolean oneTouch) throws Exception {
168
JCheckBoxOperator checkBox = new JCheckBoxOperator(frame, ONE_TOUCH_EXPANDABLE);
169
JButtonOperator buttonLeft = new JButtonOperator(splitPane.getDivider(), 0);
170
JButtonOperator buttonRight = new JButtonOperator(splitPane.getDivider(), 1);
171
int initDividerLocation = splitPane.getDividerLocation();
172
173
if (oneTouch) {
174
if (!checkBox.isSelected()) {
175
// uncheck
176
checkBox.doClick();
177
}
178
179
int left = getUIValue(splitPane, (JSplitPane sp) -> sp.getInsets().left);
180
System.out.println("left = " + left);
181
int right = getUIValue(splitPane, (JSplitPane sp) -> sp.getInsets().right);
182
System.out.println("right = " + right);
183
184
// expand full left
185
buttonLeft.push();
186
waitDividerLocation(splitPane, left);
187
188
// expand back from full left
189
buttonRight.push();
190
waitDividerLocation(splitPane, initDividerLocation);
191
192
// expand all the way right
193
buttonRight.push();
194
waitDividerLocation(splitPane, splitPane.getWidth() - splitPane.getDividerSize() - right);
195
196
// Click to move back from right expansion
197
buttonLeft.push();
198
waitDividerLocation(splitPane, initDividerLocation);
199
}
200
201
// Test for case where one touch expandable is disabled
202
if (!oneTouch) {
203
if (checkBox.isSelected()) {
204
// uncheck
205
checkBox.doClick();
206
}
207
splitPane.waitState(new ComponentChooser() {
208
public boolean checkComponent(Component c) {
209
return !splitPane.isOneTouchExpandable();
210
}
211
public String getDescription() {
212
return "Split pane not to be one touch expandable";
213
}
214
});
215
}
216
}
217
218
}
219
220