001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.vmd.midp.components.points;
042:
043: import org.netbeans.modules.vmd.api.codegen.CodeNamePresenter;
044: import org.netbeans.modules.vmd.api.codegen.CodeReferencePresenter;
045: import org.netbeans.modules.vmd.api.model.*;
046: import org.netbeans.modules.vmd.api.properties.DefaultPropertiesPresenter;
047: import org.netbeans.modules.vmd.midp.codegen.InstanceNameResolver;
048: import org.netbeans.modules.vmd.midp.components.MidpTypes;
049: import org.netbeans.modules.vmd.midp.components.MidpVersionDescriptor;
050: import org.netbeans.modules.vmd.midp.components.handlers.MethodPointEventHandlerCD;
051: import org.netbeans.modules.vmd.midp.flow.FlowInfoNodePresenter;
052: import org.netbeans.modules.vmd.midp.propertyeditors.MidpPropertiesCategories;
053: import org.netbeans.modules.vmd.midp.propertyeditors.PropertyEditorInstanceName;
054: import org.openide.util.NbBundle;
055:
056: import java.util.Arrays;
057: import java.util.List;
058:
059: /**
060: * @author David Kaspar
061: */
062: public class MethodPointCD extends ComponentDescriptor {
063:
064: public static final TypeID TYPEID = new TypeID(
065: TypeID.Kind.COMPONENT, "#MethodPoint"); // NOI18N
066:
067: public static final String ICON_PATH = "org/netbeans/modules/vmd/midp/resources/components/method_point_16.png"; // NOI18N
068: public static final String LARGE_ICON_PATH = "org/netbeans/modules/vmd/midp/resources/components/method_point_32.png"; // NOI18N
069:
070: public static final String PROP_METHOD_NAME = "methodName"; // NOI18N
071:
072: static {
073: MidpTypes.registerIconResource(TYPEID, ICON_PATH);
074: }
075:
076: public TypeDescriptor getTypeDescriptor() {
077: return new TypeDescriptor(PointCD.TYPEID, MethodPointCD.TYPEID,
078: false, true);
079: }
080:
081: public VersionDescriptor getVersionDescriptor() {
082: return MidpVersionDescriptor.FOREVER;
083: }
084:
085: @Override
086: public void postInitialize(DesignComponent component) {
087: component.writeProperty(PROP_METHOD_NAME, InstanceNameResolver
088: .createFromSuggested(component, "method")); // NOI18N
089: }
090:
091: public List<PropertyDescriptor> getDeclaredPropertyDescriptors() {
092: return Arrays.asList(new PropertyDescriptor(PROP_METHOD_NAME,
093: MidpTypes.TYPEID_JAVA_LANG_STRING, PropertyValue
094: .createNull(), false, false,
095: Versionable.FOREVER));
096: }
097:
098: public DefaultPropertiesPresenter createPropertiesPresenter() {
099: return new DefaultPropertiesPresenter()
100: .addPropertiesCategory(
101: MidpPropertiesCategories.CATEGORY_PROPERTIES)
102: .addPropertiesCategory(
103: MidpPropertiesCategories.CATEGORY_CODE_PROPERTIES)
104: .addProperty(
105: NbBundle.getMessage(MethodPointCD.class,
106: "DISP_MethodPoint_Method_Name"),
107: PropertyEditorInstanceName
108: .createInstance(TYPEID),
109: PROP_METHOD_NAME); // NOI18N
110: }
111:
112: protected List<? extends Presenter> createPresenters() {
113: return Arrays
114: .asList(
115: // general
116: MethodPointEventHandlerCD
117: .createMethodPointEventHandlerCreatorPresenter(),
118: // flow
119: new FlowInfoNodePresenter(),
120: // properties
121: createPropertiesPresenter(),
122: // code
123: new CodeReferencePresenter() {
124: protected String generateAccessCode() {
125: return generateDirectAccessCode()
126: + " ()";
127: } // NOI18N
128:
129: protected String generateDirectAccessCode() {
130: return MidpTypes
131: .getString(getComponent()
132: .readProperty(
133: PROP_METHOD_NAME));
134: }
135:
136: protected String generateTypeCode() {
137: throw Debug.illegalState();
138: }
139: }, new CodeNamePresenter() {
140: public List<String> getReservedNames() {
141: return Arrays
142: .asList(MidpTypes
143: .getString(getComponent()
144: .readProperty(
145: PROP_METHOD_NAME)));
146: }
147:
148: public List<String> getReservedNamesFor(
149: String suggestedMainName) {
150: return Arrays.asList(suggestedMainName);
151: }
152: });
153: }
154:
155: }
|