Mercurial > illumos > onarm
annotate usr/src/cmd/krb5/kadmin/gui/visualrt/sunsoft/jws/visual/rt/shadow/GenericComponentShadow.java @ 4:1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
author | Koji Uno <koji.uno@sun.com> |
---|---|
date | Mon, 31 Aug 2009 14:38:03 +0900 |
parents | c9caec207d52 |
children |
rev | line source |
---|---|
0 | 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 /* | |
4
1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
Koji Uno <koji.uno@sun.com>
parents:
0
diff
changeset
|
23 * ident "%Z%%M% %I% %E% SMI" |
0 | 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 * @(#) GenericComponentShadow.java 1.14 - last change made 07/25/97 | |
34 */ | |
35 | |
36 package sunsoft.jws.visual.rt.shadow; | |
37 | |
38 import sunsoft.jws.visual.rt.shadow.java.awt.CanvasShadow; | |
39 import sunsoft.jws.visual.rt.awt.GBPanel; | |
40 import sunsoft.jws.visual.rt.base.VJException; | |
41 import sunsoft.jws.visual.rt.base.Global; | |
42 | |
43 import java.awt.Button; | |
44 import java.awt.Component; | |
45 | |
46 /** | |
47 * Wraps an AWT widget. The attributes available for this | |
48 * class are listed below. In the type column, type names beginning | |
49 * with "sunsoft.jws.visual.rt" have been abbreviated to begin with | |
50 * "rt". | |
51 * | |
52 * < pre> | |
53 name type default value | |
54 ----------------------------------------------------------------------- | |
55 class java.lang.String java.awt.Button | |
56 * < /pre> | |
57 * | |
58 * class: the java class(that must be a sub-class of | |
59 * java.awt.Component and have a null constructor) of a user-written | |
60 * AWT class that there is no wrapper shadow class for yet. | |
61 * GenericComponentShadow is useful for quickly incorporating a user's | |
62 * existing custom AWT components in a Visual Java GUI. | |
63 * < p> | |
64 * Check the super class for additional attributes. | |
65 * | |
66 * @see Component | |
67 * @see GenericWindowShadow | |
68 * @version 1.14, 07/25/97 | |
69 */ | |
70 public class GenericComponentShadow extends CanvasShadow { | |
71 private String className; | |
72 private Class genericClass; | |
73 | |
74 public GenericComponentShadow() { | |
75 attributes.add(/* NOI18N */"class", | |
76 /* NOI18N */"java.lang.String", | |
77 /* NOI18N */"java.awt.Button", NOEDITOR); | |
78 } | |
79 | |
80 protected Object getOnBody(String key) { | |
81 if (key.equals(/* NOI18N */"class")) | |
82 return getFromTable(/* NOI18N */"class"); | |
83 else | |
84 return super.getOnBody(key); | |
85 } | |
86 | |
87 protected void setOnBody(String key, Object value) { | |
88 if (key.equals(/* NOI18N */"class")) { | |
89 // Don't create a new instance unless the | |
90 // class name has changed | |
91 if (className.equals((String)value)) | |
92 return; | |
93 | |
94 Object obj = loadClass((String)value); | |
95 destroy(); | |
96 body = obj; | |
97 create(); | |
98 } | |
99 else | |
100 super.setOnBody(key, value); | |
101 } | |
102 | |
103 public void createBody() { | |
104 body = loadClass((String)get(/* NOI18N */"class")); | |
105 } | |
106 | |
107 private Object loadClass(String name) { | |
108 Class c; | |
109 Object obj; | |
110 | |
111 // Load the class if the name doesn't match the previous name | |
112 if (!name.equals(className)) { | |
113 try { | |
114 c = Class.forName(name); | |
115 } | |
116 catch (ClassNotFoundException ex) { | |
117 throw new VJException(Global.fmtMsg( | |
118 /* JSTYLED */ | |
119 "sunsoft.jws.visual.rt.shadow.GenericComponentShadow.FMT.1", | |
120 Global.getMsg( | |
121 /* JSTYLED */ | |
122 "sunsoft.jws.visual.rt.shadow.GenericComponentShadow.Class__not__found"), | |
123 name)); | |
124 } | |
125 } else { | |
126 c = genericClass; | |
127 } | |
128 | |
129 // Create a new instance from the class | |
130 try { | |
131 obj = c.newInstance(); | |
132 if (!(obj instanceof Component)) { | |
133 throw new VJException( | |
134 /* JSTYLED */ | |
135 Global.fmtMsg("sunsoft.jws.visual.rt.shadow.GenericComponentShadow.NotAComponentSubclass", name)); | |
136 } | |
137 } | |
138 catch (IllegalAccessException ex) { | |
139 throw new VJException( | |
140 /* JSTYLED */ | |
141 Global.fmtMsg("sunsoft.jws.visual.rt.shadow.GenericComponentShadow.IllegalAccess", name)); | |
142 } | |
143 catch (InstantiationException ex) { | |
144 throw new VJException( | |
145 /* JSTYLED */ | |
146 Global.fmtMsg("sunsoft.jws.visual.rt.shadow.GenericComponentShadow.InstantiationException", name)); | |
147 } | |
148 catch (NoSuchMethodError ex) { | |
149 throw new VJException( | |
150 /* JSTYLED */ | |
151 Global.fmtMsg("sunsoft.jws.visual.rt.shadow.GenericComponentShadow.Noconstructor", name)); | |
152 } | |
153 | |
154 // No errors occurred, so update the name and class variables. | |
155 genericClass = c; | |
156 className = name; | |
157 | |
158 // Set the runtime flag for GBPanel instances | |
159 if ((obj instanceof GBPanel) && inDesignerRoot()) | |
160 ((GBPanel)obj).setRuntime(false); | |
161 | |
162 return obj; | |
163 } | |
164 } |