1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.eclipse.org/org/documents/epl-v10.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.ide.eclipse.adt.internal.editors.layout.properties; 18 19 import com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor; 20 import com.android.ide.eclipse.adt.internal.editors.descriptors.ListAttributeDescriptor; 21 22 import org.eclipse.wb.core.controls.CCombo3; 23 import org.eclipse.wb.internal.core.model.property.Property; 24 import org.eclipse.wb.internal.core.model.property.editor.AbstractComboPropertyEditor; 25 import org.eclipse.wb.internal.core.model.property.editor.ITextValuePropertyEditor; 26 27 class EnumXmlPropertyEditor extends AbstractComboPropertyEditor implements 28 ITextValuePropertyEditor { 29 public static final EnumXmlPropertyEditor INSTANCE = new EnumXmlPropertyEditor(); 30 EnumXmlPropertyEditor()31 private EnumXmlPropertyEditor() { 32 } 33 34 @Override getText(Property property)35 protected String getText(Property property) throws Exception { 36 Object value = property.getValue(); 37 if (value == null) { 38 return ""; 39 } else if (value instanceof String) { 40 return (String) value; 41 } else if (value == Property.UNKNOWN_VALUE) { 42 return "<varies>"; 43 } else { 44 return ""; 45 } 46 } 47 getItems(Property property)48 private String[] getItems(Property property) { 49 XmlProperty xmlProperty = (XmlProperty) property; 50 AttributeDescriptor descriptor = xmlProperty.getDescriptor(); 51 assert descriptor instanceof ListAttributeDescriptor; 52 ListAttributeDescriptor list = (ListAttributeDescriptor) descriptor; 53 return list.getValues(); 54 } 55 56 @Override addItems(Property property, CCombo3 combo)57 protected void addItems(Property property, CCombo3 combo) throws Exception { 58 for (String item : getItems(property)) { 59 combo.add(item); 60 } 61 } 62 63 @Override selectItem(Property property, CCombo3 combo)64 protected void selectItem(Property property, CCombo3 combo) throws Exception { 65 combo.setText(getText(property)); 66 } 67 68 @Override toPropertyEx(Property property, CCombo3 combo, int index)69 protected void toPropertyEx(Property property, CCombo3 combo, int index) throws Exception { 70 property.setValue(getItems(property)[index]); 71 } 72 73 @Override setText(Property property, String text)74 public void setText(Property property, String text) throws Exception { 75 property.setValue(text); 76 } 77 } 78