/* license-start * * Copyright (C) 2008 - 2013 Crispico, <http://www.crispico.com/>. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details, at <http://www.gnu.org/licenses/>. * * Contributors: * Crispico - Initial API and implementation * * license-end */ package org.flowerplatform.codesync; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.flowerplatform.codesync.remote.CodeSyncOperationsService; import org.flowerplatform.editor.model.properties.AbstractModelPropertiesProvider; import org.flowerplatform.editor.model.properties.remote.DiagramSelectedItem; import org.flowerplatform.editor.model.remote.DiagramEditableResource; import org.flowerplatform.editor.model.remote.DiagramEditorStatefulService; import org.flowerplatform.emf_model.notation.View; import org.flowerplatform.properties.remote.Property; import org.flowerplatform.properties.remote.SelectedItem; import com.crispico.flower.mp.model.codesync.CodeSyncElement; /** * @author Tache Razvan Mihai * @author Mariana Gheorghe */ public class CodeSyncPropertiesProvider extends AbstractModelPropertiesProvider<CodeSyncElement> { @Override public List<Property> getProperties(SelectedItem selectedItem) { List<Property> properties = new ArrayList<Property>(); CodeSyncElement codeSyncElement = resolveSelectedItem((DiagramSelectedItem) selectedItem); if (codeSyncElement == null) { return Collections.emptyList(); } List<String> features = CodeSyncOperationsService.getInstance().getFeatures(codeSyncElement.getType()); for (String feature : features) { properties.add(new Property(feature, CodeSyncOperationsService.getInstance().getFeatureValue(codeSyncElement, feature), false)); } return properties; } /** * @author Cristian Spiescu */ @Override public CodeSyncElement resolveSelectedItem(DiagramSelectedItem selectedItem) { return (CodeSyncElement) getViewById(selectedItem).getDiagrammableElement(); } /** * @author Cristian Spiescu */ @Override protected void doSetProperty(DiagramSelectedItem selectedItem, CodeSyncElement resolvedSelectedItem, String propertyName, Object propertyValue) { CodeSyncOperationsService.getInstance().setFeatureValue(resolvedSelectedItem, propertyName, propertyValue); } protected CodeSyncElement getCodeSyncElement(SelectedItem selectedItem) { DiagramEditorStatefulService diagramEditorStatefulService = ((DiagramSelectedItem) selectedItem).getEditorStatefulService(); String diagramEditableResourcePath = ((DiagramSelectedItem) selectedItem).getDiagramEditableResourcePath(); String id = ((DiagramSelectedItem) selectedItem).getXmiID(); DiagramEditableResource diagramEditableResource = (DiagramEditableResource) diagramEditorStatefulService.getEditableResource(diagramEditableResourcePath); View view = (View) diagramEditableResource.getEObjectById(id); return (CodeSyncElement) view.getDiagrammableElement(); } @Override public List<String> getPropertyNames() { // TODO Auto-generated method stub return null; } @Override public Property getProperty(SelectedItem selectedItem, String propertyName) { // TODO Auto-generated method stub return null; } }