summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java173
1 files changed, 173 insertions, 0 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java
new file mode 100644
index 0000000..ba34103
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/AbstractListPropertyEditor.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.model.property.editor;
+
+import org.eclipse.wb.core.controls.CCombo3;
+import org.eclipse.wb.internal.core.model.property.Property;
+import org.eclipse.wb.internal.core.utils.check.Assert;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * The {@link PropertyEditor} for selecting single expression from given set.
+ *
+ * @author sablin_aa
+ * @coverage core.model.property.editor
+ */
+public abstract class AbstractListPropertyEditor extends AbstractComboPropertyEditor
+ implements
+ IValueSourcePropertyEditor {
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // TextDisplayPropertyEditor
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ @Override
+ public String getText(Property property) throws Exception {
+ // return title for value
+ Object value = property.getValue();
+ if (value != Property.UNKNOWN_VALUE) {
+ int index = getValueIndex(value);
+ if (index >= 0) {
+ return getTitle(index);
+ } else {
+ if (value instanceof String) {
+ return (String) value;
+ }
+ }
+ }
+ // unknown value
+ return null;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // IValueSourcePropertyEditor
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ @Override
+public String getValueSource(Object value) throws Exception {
+ // return expression for value
+ if (value != Property.UNKNOWN_VALUE) {
+ int index = getValueIndex(value);
+ if (index >= 0) {
+ return getExpression(index);
+ }
+ }
+ // unknown value
+ return null;
+ }
+
+// ////////////////////////////////////////////////////////////////////////////
+// //
+// // IClipboardSourceProvider
+// //
+// ////////////////////////////////////////////////////////////////////////////
+// @Override
+//public String getClipboardSource(GenericProperty property) throws Exception {
+// Object value = property.getValue();
+// return getValueSource(value);
+// }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Combo
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ @Override
+ protected void addItems(Property property, CCombo3 combo) throws Exception {
+ for (int i = 0; i < getCount(); i++) {
+ combo.add(getTitle(i));
+ }
+ }
+
+ @Override
+ protected void selectItem(Property property, CCombo3 combo) throws Exception {
+ combo.setText(getText(property));
+ }
+
+ @Override
+ protected void toPropertyEx(Property property, CCombo3 combo, int index) throws Exception {
+// if (property instanceof GenericProperty) {
+// GenericProperty genericProperty = (GenericProperty) property;
+// String expression = getExpression(index);
+// Object evaluatedExpression = evaluateExpression(genericProperty, expression);
+// // apply expression
+// genericProperty.setExpression(expression, evaluatedExpression);
+// } else {
+ toPropertyEx_simpleProperty(property, combo, index);
+// }
+ }
+
+// private static Object evaluateExpression(final GenericProperty genericProperty,
+// final String expression) {
+// return ExecutionUtils.runObjectIgnore(new RunnableObjectEx<Object>() {
+// public Object runObject() throws Exception {
+// JavaInfo javaInfo = genericProperty.getJavaInfo();
+// ClassLoader classLoader = JavaInfoUtils.getClassLoader(javaInfo);
+// return ScriptUtils.evaluate(classLoader, expression);
+// }
+// }, Property.UNKNOWN_VALUE);
+// System.out.println("HACK 1234");
+// return Property.UNKNOWN_VALUE;
+// }
+
+ /**
+ * Sets value of simple {@link Property}, not {@link GenericProperty}.
+ */
+ protected void toPropertyEx_simpleProperty(Property property, CCombo3 combo, int index)
+ throws Exception {
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Access to list items
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ abstract protected int getCount();
+
+ abstract protected int getValueIndex(Object value);
+
+ abstract protected String getTitle(int index);
+
+ abstract protected String getExpression(int index) throws Exception;
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Utils
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Extract string array from parameters.
+ */
+ protected static String[] getParameterAsArray(Map<String, Object> parameters, String name) {
+ return getParameterAsArray(parameters, name, false);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected static String[] getParameterAsArray(Map<String, Object> parameters,
+ String name,
+ boolean noAssert) {
+ String[] values = null;
+ if (parameters.containsKey(name)) {
+ List<String> list = (List<String>) parameters.get(name);
+ values = list.toArray(new String[list.size()]);
+ } else {
+ if (noAssert) {
+ values = null;
+ } else {
+ Assert.fail(String.format("No parameter %s in %s.", name, parameters));
+ }
+ }
+ return values;
+ }
+} \ No newline at end of file