History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/applet/AppletProps.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/applet/AppletProps.java+221−0
@@ -0,0 +1,221 @@
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 */