package org.zend.php.zendserver.deployment.ui.editors; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.zend.php.zendserver.deployment.core.descriptor.IModelObject; import org.zend.php.zendserver.deployment.core.internal.descriptor.Feature; import org.zend.php.zendserver.deployment.ui.editors.DescriptorEditorPage.FormDecoration; /** * Contains editor fields and handles finding and updating their decorations * */ public class FieldsContainer { private List<EditorField> fields = new ArrayList<EditorField>(); public EditorField add(EditorField field) { fields.add(field); return field; } public void refreshMarkers(Map<Feature, FormDecoration> toShow, List<Feature> toRemove) { if (toRemove != null) { for (Feature feature : toRemove) { EditorField[] fields = getFields(feature); for (EditorField field : fields) { field.setDecoration(null); } } } if (toShow != null) { for (Map.Entry<Feature, FormDecoration> entry : toShow.entrySet()) { FormDecoration status = entry.getValue(); EditorField[] fields = getFields(entry.getKey()); for (EditorField field : fields) { field.setDecoration(status); } } } } private EditorField[] getFields(Feature key) { List<EditorField> out = new ArrayList<EditorField>(); for (EditorField f : fields) { if (key.equals(f.getKey())) { out.add(f); } } return out.toArray(new EditorField[out.size()]); } public Map<Integer, Feature> getFeatureIds() { Collection<Feature> keyset = keySet(); Map<Integer, Feature> featureIds = new HashMap<Integer, Feature>(); for (Feature f : keyset) { featureIds.put(f.id, f); } return featureIds; } public Collection<Feature> keySet() { Set<Feature> out = new HashSet<Feature>(); for (EditorField f : fields) { out.add(f.getKey()); } return out; } public void refresh() { for (EditorField e : fields) { e.refresh(); } } public Collection<EditorField> fields() { return fields; } public void setInput(IModelObject input) { for (EditorField e : fields) { e.setInput(input); } } }