/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.attribute; import java.util.ArrayList; import java.util.HashMap; import java.util.Properties; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; import org.jboss.tools.common.meta.action.XAction; import org.jboss.tools.common.meta.action.XAttributeData; import org.jboss.tools.common.meta.action.XEntityData; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.XModelObject; /** * @author Aleksei * */ public class WizardDataPropertySource implements IPropertySource, IXModelSupport { private XAction action; private XEntityData data; private XModelObject object; private XAttributeData[] attributeData; private HashMap<Object,XAttributeData> hashMap; private IPropertyDescriptor[] propertyDescriptors; protected WizardDataPropertySource() { } public WizardDataPropertySource(Properties properties) { if(properties==null)return; // Enumeration keys = properties.propertyNames(); // while (keys.hasMoreElements()) { // String key = keys.nextElement().toString(); // String value = properties.get(key).toString(); // } action = (XAction)properties.get("action"); //$NON-NLS-1$ object = (XModelObject)properties.get("object"); //$NON-NLS-1$ data = action.getEntityData(this.object)[0]; attributeData = data.getAttributeData(); // create propertyDescriptors; ArrayList<IPropertyDescriptor> list = new ArrayList<IPropertyDescriptor>(); hashMap = new HashMap<Object,XAttributeData>(); XAttributePropertyDescription temp; for (int i=0;i<attributeData.length;++i) { temp = new XAttributePropertyDescription(this, attributeData[i].getAttribute(), attributeData[i], object.getModel()); list.add(temp); hashMap.put(temp.getId(),attributeData[i]); } propertyDescriptors = list.toArray(new XAttributePropertyDescription[list.size()]); } public Object getEditableValue() { return null; } public IPropertyDescriptor[] getPropertyDescriptors() { return propertyDescriptors; } public Object getPropertyValue(Object id) { XAttributeData attributeData = (XAttributeData)hashMap.get(id); return attributeData.getValue(); } public boolean isPropertySet(Object id) { return false; } public void resetPropertyValue(Object id) { } public void setPropertyValue(Object id, Object value) { XAttributeData attributeData = (XAttributeData)hashMap.get(id); attributeData.setValue((value == null) ? null : value.toString()); } // IXModelSupport public XModel getModel() { return object.getModel(); } }