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-2007 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:
042: /*
043: * Created on May 13, 2005
044: *
045: * To change the template for this generated file go to
046: * Window - Preferences - Java - Code Generation - Code and Comments
047: */
048: package org.netbeans.modules.compapp.casaeditor.properties;
049:
050: import java.beans.PropertyEditorSupport;
051: import java.util.Arrays;
052:
053: import org.openide.explorer.propertysheet.ExPropertyEditor;
054: import org.openide.explorer.propertysheet.PropertyEnv;
055:
056: /**
057: * @author radval
058: * @author jqian
059: */
060: public class ComboBoxEditor<T> extends PropertyEditorSupport implements
061: ExPropertyEditor {
062:
063: private PropertyEnv mEnv;
064: /**
065: * Describe variable <code>vals</code> here.
066: *
067: */
068: private T[] vals = null;
069:
070: public ComboBoxEditor() {
071: }
072:
073: /**
074: * Creates a new <code>ListEditor</code> instance.
075: *
076: * @param values a <code>String[]</code> value
077: */
078: public ComboBoxEditor(T[] values) {
079: setValues(values);
080: }
081:
082: /**
083: * Describe <code>setValues</code> method here.
084: *
085: * @param values a <code>String[]</code> value
086: */
087: public void setValues(T[] values) {
088: vals = values;
089: }
090:
091: public T[] getValues() {
092: return vals;
093: }
094:
095: /**
096: * Returns all the values
097: *
098: * @return array of all the options
099: */
100: @Override
101: public String[] getTags() {
102: if (vals == null) {
103: return new String[] { "" };
104: }
105:
106: String[] ret = new String[vals.length];
107: for (int i = 0; i < vals.length; i++) {
108: ret[i] = vals[i].toString();
109: }
110: return ret;
111: }
112:
113: /**
114: * The special case here is, if there is no value set, then it
115: * is a "no"
116: *
117: * @return yes or no
118: */
119: @Override
120: public String getAsText() {
121: if (getValue() == null) {
122: return "";
123: }
124: return getValue().toString();
125: }
126:
127: /**
128: * Set the value from the PropertyEditor to the object
129: *
130: * @param t a <code>String</code> value
131: */
132: @Override
133: public void setAsText(String t) {
134: setValue(t);
135: }
136:
137: @Override
138: public void setValue(Object t) {
139: if (t == null || vals == null) {
140: return;
141: }
142: if (!Arrays.asList(vals).contains(t)) {
143: return; //throw new IllegalArgumentException("Illegal argument: " + t);
144: }
145: super .setValue(t);
146: }
147:
148: /**
149: * Describe <code>supportsCustomEditor</code> method here.
150: *
151: * @return a <code>boolean</code> value
152: */
153: @Override
154: public boolean supportsCustomEditor() {
155: return false;
156: }
157:
158: /**
159: * This method is called by the IDE to pass
160: * the environment to the property editor.
161: * @param env Environment passed by the ide.
162: */
163: public void attachEnv(PropertyEnv env) {
164: mEnv = env;
165: }
166: }
|