Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/sun/applet/AppletProps.java
38829 views
1
/*
2
* Copyright (c) 1995, 2003, 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. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package sun.applet;
27
28
import java.awt.*;
29
import java.io.*;
30
import java.util.Properties;
31
import sun.net.www.http.HttpClient;
32
import sun.net.ftp.FtpClient;
33
import java.security.AccessController;
34
import java.security.PrivilegedAction;
35
import java.security.PrivilegedExceptionAction;
36
import java.security.PrivilegedActionException;
37
38
import sun.security.action.*;
39
40
class AppletProps extends Frame {
41
42
TextField proxyHost;
43
TextField proxyPort;
44
Choice accessMode;
45
46
AppletProps() {
47
setTitle(amh.getMessage("title"));
48
Panel p = new Panel();
49
p.setLayout(new GridLayout(0, 2));
50
51
p.add(new Label(amh.getMessage("label.http.server", "Http proxy server:")));
52
p.add(proxyHost = new TextField());
53
54
p.add(new Label(amh.getMessage("label.http.proxy")));
55
p.add(proxyPort = new TextField());
56
57
p.add(new Label(amh.getMessage("label.class")));
58
p.add(accessMode = new Choice());
59
accessMode.addItem(amh.getMessage("choice.class.item.restricted"));
60
accessMode.addItem(amh.getMessage("choice.class.item.unrestricted"));
61
62
add("Center", p);
63
p = new Panel();
64
p.add(new Button(amh.getMessage("button.apply")));
65
p.add(new Button(amh.getMessage("button.reset")));
66
p.add(new Button(amh.getMessage("button.cancel")));
67
add("South", p);
68
move(200, 150);
69
pack();
70
reset();
71
}
72
73
void reset() {
74
AppletSecurity security = (AppletSecurity) System.getSecurityManager();
75
if (security != null)
76
security.reset();
77
78
String proxyhost = (String) AccessController.doPrivileged(
79
new GetPropertyAction("http.proxyHost"));
80
String proxyport = (String) AccessController.doPrivileged(
81
new GetPropertyAction("http.proxyPort"));
82
83
Boolean tmp = (Boolean) AccessController.doPrivileged(
84
new GetBooleanAction("package.restrict.access.sun"));
85
86
boolean packageRestrict = tmp.booleanValue();
87
if (packageRestrict) {
88
accessMode.select(amh.getMessage("choice.class.item.restricted"));
89
} else {
90
accessMode.select(amh.getMessage("choice.class.item.unrestricted"));
91
}
92
93
if (proxyhost != null) {
94
proxyHost.setText(proxyhost);
95
proxyPort.setText(proxyport);
96
} else {
97
proxyHost.setText("");
98
proxyPort.setText("");
99
}
100
}
101
102
void apply() {
103
String proxyHostValue = proxyHost.getText().trim();
104
String proxyPortValue = proxyPort.getText().trim();
105
106
// Get properties
107
final Properties props = (Properties) AccessController.doPrivileged(
108
new PrivilegedAction() {
109
public Object run() {
110
return System.getProperties();
111
}
112
});
113
114
if (proxyHostValue.length() != 0) {
115
/* 4066402 */
116
/* Check for parsable value in proxy port number field before */
117
/* applying. Display warning to user until parsable value is */
118
/* entered. */
119
int proxyPortNumber = 0;
120
try {
121
proxyPortNumber = Integer.parseInt(proxyPortValue);
122
} catch (NumberFormatException e) {}
123
124
if (proxyPortNumber <= 0) {
125
proxyPort.selectAll();
126
proxyPort.requestFocus();
127
(new AppletPropsErrorDialog(this,
128
amh.getMessage("title.invalidproxy"),
129
amh.getMessage("label.invalidproxy"),
130
amh.getMessage("button.ok"))).show();
131
return;
132
}
133
/* end 4066402 */
134
135
props.put("http.proxyHost", proxyHostValue);
136
props.put("http.proxyPort", proxyPortValue);
137
} else {
138
props.put("http.proxyHost", "");
139
}
140
141
if (amh.getMessage("choice.class.item.restricted").equals(accessMode.getSelectedItem())) {
142
props.put("package.restrict.access.sun", "true");
143
} else {
144
props.put("package.restrict.access.sun", "false");
145
}
146
147
// Save properties
148
try {
149
reset();
150
AccessController.doPrivileged(new PrivilegedExceptionAction() {
151
public Object run() throws IOException {
152
File dotAV = Main.theUserPropertiesFile;
153
FileOutputStream out = new FileOutputStream(dotAV);
154
Properties avProps = new Properties();
155
for (int i = 0; i < Main.avDefaultUserProps.length; i++) {
156
String avKey = Main.avDefaultUserProps[i][0];
157
avProps.setProperty(avKey, props.getProperty(avKey));
158
}
159
avProps.store(out, amh.getMessage("prop.store"));
160
out.close();
161
return null;
162
}
163
});
164
hide();
165
} catch (java.security.PrivilegedActionException e) {
166
System.out.println(amh.getMessage("apply.exception",
167
e.getException()));
168
// XXX what's the general feeling on stack traces to System.out?
169
e.printStackTrace();
170
reset();
171
}
172
}
173
174
public boolean action(Event evt, Object obj) {
175
if (amh.getMessage("button.apply").equals(obj)) {
176
apply();
177
return true;
178
}
179
if (amh.getMessage("button.reset").equals(obj)) {
180
reset();
181
return true;
182
}
183
if (amh.getMessage("button.cancel").equals(obj)) {
184
reset();
185
hide();
186
return true;
187
}
188
return false;
189
}
190
191
private static AppletMessageHandler amh = new AppletMessageHandler("appletprops");
192
193
}
194
195
/* 4066432 */
196
/* Dialog class to display property-related errors to user */
197
198
class AppletPropsErrorDialog extends Dialog {
199
public AppletPropsErrorDialog(Frame parent, String title, String message,
200
String buttonText) {
201
super(parent, title, true);
202
Panel p = new Panel();
203
add("Center", new Label(message));
204
p.add(new Button(buttonText));
205
add("South", p);
206
pack();
207
208
Dimension dDim = size();
209
Rectangle fRect = parent.bounds();
210
move(fRect.x + ((fRect.width - dDim.width) / 2),
211
fRect.y + ((fRect.height - dDim.height) / 2));
212
}
213
214
public boolean action(Event event, Object object) {
215
hide();
216
dispose();
217
return true;
218
}
219
}
220
221
/* end 4066432 */
222
223