1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * ident	"%Z%%M%	%I%	%E% SMI"
24  *
25  * Copyright (c) 2000 by Sun Microsystems, Inc.
26  * All rights reserved.
27  */
28 
29 /*
30  *        Copyright (C) 1996  Active Software, Inc.
31  *                  All rights reserved.
32  *
33  * @(#) DesignerAccess.java 1.25 - last change made 08/07/97
34  */
35 
36 package sunsoft.jws.visual.rt.base;
37 
38 import sunsoft.jws.visual.rt.shadow.java.awt.*;
39 import java.util.Hashtable;
40 import java.awt.Insets;
41 
42 /**
43  * Accessor class for use by Visual Java.  Gives
44  * access to specific methods in the rt package that are package
45  * private.  The methods in this class should not be used by any other
46  * application; they are for use by Visual Java only and are subject
47  * to change.
48  *
49  * @version 08/07/97, 1.25
50  */
51 public class DesignerAccess {
52     //
53     // Constants
54     //
55     public static final int STATUS_BAR = 2002;
56 
57     //
58     // Internal "Group" methods
59     //
getContainer(Group group)60     public static ContainerShadow getContainer(Group group) {
61         return group.getContainer();
62     }
63 
getPanel(Group group)64     public static PanelShadow getPanel(Group group) {
65         return group.getPanel();
66     }
67 
getWindow(Group group)68     public static WindowShadow getWindow(Group group) {
69         return group.getWindow();
70     }
71 
internalShowGroup(Group group)72     public static void internalShowGroup(Group group) {
73         group.internalShowGroup();
74     }
75 
internalHideGroup(Group group)76     public static void internalHideGroup(Group group) {
77         group.internalHideGroup();
78     }
79 
doingShow(Group group)80     public static boolean doingShow(Group group) {
81         return group.doingShow();
82     }
83 
preValidate(Group group)84     public static void preValidate(Group group) {
85         group.preValidate();
86     }
87 
88     //
89     // Internal "AttributeManager" methods
90     //
replicate(AttributeManager mgr)91     public static AttributeManager replicate(AttributeManager mgr) {
92         return mgr.replicate();
93     }
94 
95     //
96     // Internal "Root" methods
97     //
setMainChild(Root root, AttributeManager container, boolean isPanel)98     public static void setMainChild(Root root, AttributeManager
99 				    container, boolean isPanel) {
100         root.setMainChild(container, isPanel);
101     }
102 
addRootObserver(Root root, RootObserver observer)103     public static void addRootObserver(Root root, RootObserver observer)
104 
105     {
106         root.addRootObserver(observer);
107     }
108 
removeRootObserver(Root root, RootObserver observer)109     public static void removeRootObserver(Root root, RootObserver
110 					  observer) {
111         root.removeRootObserver(observer);
112     }
113 
disableEventForwarding(Root root)114     public static void disableEventForwarding(Root root) {
115         root.disableEventForwarding();
116     }
117 
enableEventForwarding(Root root)118     public static void enableEventForwarding(Root root) {
119         root.enableEventForwarding();
120     }
121 
clearUniqueNameTable(Root root)122     public static void clearUniqueNameTable(Root root) {
123         root.clearUniqueNameTable();
124     }
125 
isValidName(String name)126     public static boolean isValidName(String name) {
127         return Root.isValidName(name);
128     }
129 
isUniqueName(Root root, String name)130     public static boolean isUniqueName(Root root, String name) {
131         return root.isUniqueName(name);
132     }
133 
isUniqueName(Root root, String name, AttributeManager skip)134     public static boolean isUniqueName(Root root, String name,
135 				       AttributeManager skip) {
136         return root.isUniqueName(name, skip);
137     }
138 
isUniqueName(Root root, String name, AttributeManager skip, AttributeManager prune)139     public static boolean isUniqueName(Root root, String name,
140 				       AttributeManager skip,
141 				       AttributeManager prune) {
142         return root.isUniqueName(name, skip, prune);
143     }
144 
getUniqueName(Root root, AttributeManager child)145     public static String getUniqueName(Root root, AttributeManager
146 				       child) {
147         return root.getUniqueName(child);
148     }
149 
getUniqueName(Root root, AttributeManager child, Root otherTree)150     public static String getUniqueName(Root root, AttributeManager
151 				       child, Root otherTree) {
152         return root.getUniqueName(child, otherTree);
153     }
154 
getProblemWithName(Root root, String name)155     public static String getProblemWithName(Root root, String name) {
156         return root.getProblemWithName(name);
157     }
158 
setCursor(Root root, int cursor)159     public static void setCursor(Root root, int cursor) {
160         root.setCursor(cursor);
161     }
162 
163     //
164     // LOADED ROOT
165     //
166 
167     /*
168      * Sets the loaded root flag.
169      */
setLoadedRoot(Root root, boolean flag)170     public static void setLoadedRoot(Root root, boolean flag) {
171         root.setLoadedRoot(flag);
172     }
173 
174     //
175     // Designer classes used by FrameShadow, DialogShadow,
176     // GBPanel, RootFrame
177     // and RootDialog.
178     //
179 
180     private static Class frameClass;
181     private static Class dialogClass;
182     private static Class gbPanelClass;
183     private static Class rootWindowHelperClass;
184 
setFrameClass(Class fc)185     public static void setFrameClass(Class fc) {
186         frameClass = fc;
187     }
188 
getFrameClass()189     public static Class getFrameClass() {
190         return frameClass;
191     }
192 
setDialogClass(Class dc)193     public static void setDialogClass(Class dc) {
194         dialogClass = dc;
195     }
196 
getDialogClass()197     public static Class getDialogClass() {
198         return dialogClass;
199     }
200 
setGBPanelClass(Class gbc)201     public static void setGBPanelClass(Class gbc) {
202         gbPanelClass = gbc;
203     }
204 
getGBPanelClass()205     public static Class getGBPanelClass() {
206         return gbPanelClass;
207     }
208 
setRootWindowHelperClass(Class c)209     public static void setRootWindowHelperClass(Class c) {
210         rootWindowHelperClass = c;
211     }
212 
getRootWindowHelperClass()213     public static Class getRootWindowHelperClass() {
214         return rootWindowHelperClass;
215     }
216 
217     //
218     // The current working directory for the designer
219     //
220     private static String cwd;
221 
setCWD(String cwd)222     public static void setCWD(String cwd) {
223         DesignerAccess.cwd = cwd;
224     }
225 
getCWD()226     public static String getCWD() {
227         return cwd;
228     }
229 
230     //
231     // UNSAVED EDITS REGISTRY
232     //
233 
234     /**
235      * Is true when there are unsaved changes.  Isn't going to get used
236      * unless the visual designer is running.
237      */
238     private static boolean changesMade = false;
239 
240     /*
241      * Returns whether there have been any changes made
242      * since the last save.
243      */
getChangesMade()244     public static boolean getChangesMade() {
245         return (changesMade);
246     }
247 
248     /*
249      * Sets the changes made flag.  Set to true when a change is made.
250      * This needs to set to false at the top-level of the designer's GUI
251      * whenever a file is opened, a "New" is done, a file is saved, etc.
252      * This doesn't work all the time, so we might replace it with
253      * something else in the future.
254      */
setChangesMade(boolean b)255     public static void setChangesMade(boolean b) {
256         // if (b != changesMade) {
257         //   Error e = new Error("DesignerAccess.changesMade
258         // switched to " + b);
259         //   e.printStackTrace();
260         // }
261         changesMade = b;
262     }
263 
264     //
265     // COMPONENT -> SHADOW HASHTABLE
266     //
267 
268     /*
269      * Storage to map components (keys) to their shadow objects (values)
270      */
271     private static Hashtable shadowTable = new Hashtable();
272 
273     /*
274      * Returns the shadow table, which contains components (as keys) and
275      * their associated shadow objects (as the values.)  This one table
276      * is shared by all of runtime and the visual designer.
277      *  It is used to
278      * find the Group that should handle the event for a particular
279      * component
280      * and to find the shadow object for components in the designer.
281      */
getShadowTable()282     public static Hashtable getShadowTable() {
283         return (shadowTable);
284     }
285 
286     /**
287      * Global lock (for paint workaround.)
288      */
289     public static Object mutex = new Object();
290 
291     /*
292      *
293      */
294 
295     private static DesignerErrorInterface designerError = null;
296 
297     static public void
setDesignerErrorInterface(DesignerErrorInterface obj)298 	setDesignerErrorInterface(DesignerErrorInterface obj) {
299         designerError = obj;
300     }
301 
reportInstantiationError(String msg)302     static public void reportInstantiationError(String msg) {
303         if (!java.beans.Beans.isDesignTime())
304             return;
305 
306         if (designerError != null) {
307             designerError.reportInstantiationError(msg);
308         }
309         else
310 	    {
311 		System.out.println(msg);
312 	    }
313     }
314 }
315