01: /*
02: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03: *
04: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
05: *
06: * The contents of this file are subject to the terms of either the GNU
07: * General Public License Version 2 only ("GPL") or the Common
08: * Development and Distribution License("CDDL") (collectively, the
09: * "License"). You may not use this file except in compliance with the
10: * License. You can obtain a copy of the License at
11: * http://www.netbeans.org/cddl-gplv2.html
12: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13: * specific language governing permissions and limitations under the
14: * License. When distributing the software, include this License Header
15: * Notice in each file and include the License file at
16: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17: * particular file as subject to the "Classpath" exception as provided
18: * by Sun in the GPL Version 2 section of the License file that
19: * accompanied this code. If applicable, add the following below the
20: * License Header, with the fields enclosed by brackets [] replaced by
21: * your own identifying information:
22: * "Portions Copyrighted [year] [name of copyright owner]"
23: *
24: * Contributor(s):
25: *
26: * The Original Software is NetBeans. The Initial Developer of the Original
27: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
28: * Microsystems, Inc. All Rights Reserved.
29: *
30: * If you wish your version of this file to be governed by only the CDDL
31: * or only the GPL Version 2, indicate your decision by adding
32: * "[Contributor] elects to include this software in this distribution
33: * under the [CDDL or GPL Version 2] license." If you do not indicate a
34: * single choice of license, a recipient has the option to distribute
35: * your version of this file under either the CDDL, the GPL Version 2 or
36: * to extend the choice of license to its licensees as provided above.
37: * However, if you add GPL Version 2 code and therefore, elected the GPL
38: * Version 2 license, then the option applies only if the new code is
39: * made subject to such option by the copyright holder.
40: */
41:
42: package com.sun.rave.designtime.markup;
43:
44: import java.beans.PropertyEditor;
45:
46: /**
47: * <p>The AttributePropertyEditor interface extends the PropertyEditor interface (a special type of
48: * property editor for markup attributes) to add the ability to persist and resolve complex types
49: * in markup. Normally, JavaBeans properties are persisted using the PropertyEditor method:
50: * "getJavaInitializationString()", which must return a valid Java expression as a String. When
51: * an IDE rebuilds the state of a saved file, a Java compiler is used to interpret the property
52: * settings.</p>
53: *
54: * <p>In markup attributes, a Java expression is not typically what is used to store a setting -
55: * and thus a Java compiler cannot be used to interpret the expressions stored in markup. This
56: * interface is designed to replace the "getJavaInitializationString()" and compiler interpretation
57: * steps in property persistence.</p>
58: *
59: * <P><B>IMPLEMENTED BY THE COMPONENT AUTHOR</B> - This interface is designed to be implemented by
60: * the component (bean) author.</P>
61: *
62: * @author Joe Nuxoll
63: * @version 1.0
64: */
65: public interface AttributePropertyEditor extends PropertyEditor {
66:
67: /**
68: * <p>This method is intended for use when generating markup to set the value of a property. It
69: * should return a fragment of markup that can be used to initialize a variable with the current
70: * property value. It is not necessary to include the quote marks, as any attribute string will
71: * be automatically enclosed in quotes. If quotes are included, they will not double-up.</p>
72: *
73: * <p>Example results are "2", "#FF00FF", "#{WebPage1.button1}", etc.</b>
74: *
75: * @return A fragment of markup representing an initializer for the current value of this
76: * PropertyEditor. This will be enclosed in quote marks in the markup.
77: */
78: public String getMarkupInitializationString();
79:
80: /**
81: * This method is called while "resurrecting" the state of a DesignBean from markup. The string
82: * stored as the attribute value will be passed in (initString), and an instance of the
83: * appropriate type for the property setting is expected to be returned.
84: *
85: * @param initString The String stored as the attribute value
86: * @return The appropriately typed instance representing the property setting.
87: */
88: public Object resolveMarkupInitializationString(String initString);
89: }
|