Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/swing/JTable/PrintManualTest_FitWidthMultiple.java
41152 views
1
/*
2
* Copyright (c) 2016, 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
* @test
25
* @bug 8170349
26
* @summary Verify if printed content is within border and all columns are
27
* printed for PrintMode.FIT_WIDTH
28
* @run main/manual PrintManualTest_FitWidthMultiple
29
*/
30
31
import java.awt.BorderLayout;
32
import java.awt.event.ActionEvent;
33
import java.awt.event.ActionListener;
34
import java.awt.event.WindowAdapter;
35
import java.awt.event.WindowEvent;
36
import java.text.MessageFormat;
37
import java.util.concurrent.CountDownLatch;
38
import java.util.concurrent.TimeUnit;
39
import javax.print.attribute.HashPrintRequestAttributeSet;
40
import javax.print.attribute.PrintRequestAttributeSet;
41
import javax.swing.AbstractAction;
42
import javax.swing.JButton;
43
import javax.swing.JComponent;
44
import javax.swing.JFrame;
45
import javax.swing.JPanel;
46
import javax.swing.JScrollPane;
47
import javax.swing.JTable;
48
import javax.swing.JTextArea;
49
import javax.swing.KeyStroke;
50
import javax.swing.SwingUtilities;
51
import javax.swing.table.AbstractTableModel;
52
import javax.swing.table.TableModel;
53
54
public class PrintManualTest_FitWidthMultiple extends JTable implements Runnable {
55
56
static boolean testPassed;
57
static JFrame fr = null;
58
static JFrame instructFrame = null;
59
private final CountDownLatch latch;
60
61
public PrintManualTest_FitWidthMultiple(CountDownLatch latch){
62
this.latch = latch;
63
}
64
65
@Override
66
public void run() {
67
try {
68
createUIandTest();
69
} catch (Exception ex) {
70
dispose();
71
latch.countDown();
72
throw new RuntimeException(ex.getMessage());
73
}
74
}
75
76
private void createUIandTest() throws Exception {
77
/*Message Format Header and Footer */
78
final MessageFormat header=new MessageFormat("JTable Printing Header {0}");
79
final MessageFormat footer = new MessageFormat("JTable Printing Footer {0}");
80
81
SwingUtilities.invokeAndWait(new Runnable() {
82
@Override
83
public void run() {
84
/* Instructions Section */
85
String info =
86
" \nThis test case brings up JTable with more Columns and Rows \n"+
87
"Press the Print Button. It Prints in PRINT_MODE_FIT_WIDTH \n" +
88
"It Pops up the Print Dialog. Check if Job/Print Attributes in the\n" +
89
"Print Dialog are configurable. Default Print out will be in Landscape \n"+
90
"The Print out should have JTable Centered on the Print out with thin borders \n"+
91
"Prints out with Header and Footer. \n"+
92
"The JTable should have all columns printed within border";
93
94
instructFrame=new JFrame("PrintManualTest_NormalSingle");
95
JPanel panel=new JPanel(new BorderLayout());
96
JButton button1 = new JButton("Pass");
97
JButton button2 = new JButton("Fail");
98
button1.addActionListener((e) -> {
99
testPassed = true;
100
dispose();
101
latch.countDown();
102
});
103
button2.addActionListener((e) -> {
104
testPassed = false;
105
dispose();
106
latch.countDown();
107
});
108
JPanel btnpanel1 = new JPanel();
109
btnpanel1.add(button1);
110
btnpanel1.add(button2);
111
panel.add(addInfo(info),BorderLayout.CENTER);
112
panel.add(btnpanel1, BorderLayout.SOUTH);
113
instructFrame.getContentPane().add(panel);
114
instructFrame.setBounds(600,100,350,350);
115
116
/* Print Button */
117
final JButton printButton=new JButton("Print");
118
119
/* Table Model */
120
final TableModel datamodel=new AbstractTableModel(){
121
@Override
122
public int getColumnCount() { return 50;}
123
@Override
124
public int getRowCount() { return 50; }
125
@Override
126
public Object getValueAt(int row, int column){ return new Integer(row*column);}
127
};
128
129
/* Constructing the JTable */
130
final JTable table=new JTable(datamodel);
131
132
/* Putting the JTable in ScrollPane and Frame Container */
133
JScrollPane scrollpane=new JScrollPane(table);
134
fr = new JFrame("PrintManualTest_FitWidthMultiple");
135
fr.getContentPane().add(scrollpane);
136
137
/* Light Weight Panel for holding Print and other buttons */
138
JPanel btnpanel=new JPanel();
139
btnpanel.add(printButton);
140
fr.getContentPane().add(btnpanel,BorderLayout.SOUTH);
141
fr.setBounds(0,0,400,400);
142
fr.setSize(500,500);
143
144
/* Binding the KeyStroke to Print Button Action */
145
fr.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ctrl P"), "printButton");
146
fr.getRootPane().getActionMap().put("printButton", new AbstractAction(){
147
@Override
148
public void actionPerformed(ActionEvent e){
149
printButton.doClick();
150
}
151
});
152
153
/* Container and Component Listeners */
154
fr.addWindowListener(new WindowAdapter() {
155
@Override
156
public void windowClosing(WindowEvent e) {
157
dispose();
158
if (testPassed == false) {
159
throw new RuntimeException(" User has not executed the test");
160
}
161
}
162
});
163
164
final PrintRequestAttributeSet prattr=new HashPrintRequestAttributeSet();
165
prattr.add(javax.print.attribute.standard.OrientationRequested.LANDSCAPE);
166
167
printButton.addActionListener(new ActionListener(){
168
@Override
169
public void actionPerformed(ActionEvent ae){
170
try{
171
table.print(JTable.PrintMode.FIT_WIDTH, header,footer,true,prattr,true);
172
} catch(Exception e){}
173
}
174
});
175
instructFrame.setVisible(true);
176
fr.setVisible(true);
177
}
178
});
179
}
180
181
public void dispose() {
182
instructFrame.dispose();
183
fr.dispose();
184
}
185
186
public JScrollPane addInfo(String info) {
187
JTextArea jta = new JTextArea(info,8,20);
188
jta.setEditable(false);
189
jta.setLineWrap(true);
190
JScrollPane sp = new JScrollPane(jta);
191
return sp;
192
193
}
194
195
/* Main Method */
196
197
public static void main(String[] argv) throws Exception {
198
final CountDownLatch latch = new CountDownLatch(1);
199
PrintManualTest_FitWidthMultiple test = new PrintManualTest_FitWidthMultiple(latch);
200
Thread T1 = new Thread(test);
201
T1.start();
202
203
// wait for latch to complete
204
boolean ret = false;
205
try {
206
ret = latch.await(60, TimeUnit.SECONDS);
207
} catch (InterruptedException ie) {
208
throw ie;
209
}
210
if (!ret) {
211
test.dispose();
212
throw new RuntimeException(" User has not executed the test");
213
}
214
if (test.testPassed == false) {
215
throw new RuntimeException("printed contents is beyond borders");
216
}
217
}
218
}
219
220