package org.flowerplatform.codesync.code.javascript.config.extension;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.eclipse.emf.ecore.resource.Resource;
import org.flowerplatform.codesync.code.javascript.config.JavaScriptDescriptors;
import org.flowerplatform.codesync.config.extension.AddNewExtension;
import org.flowerplatform.codesync.remote.CodeSyncOperationsService;
import org.flowerplatform.common.util.Utils;
import org.flowerplatform.emf_model.notation.View;
import com.crispico.flower.mp.codesync.base.CodeSyncPlugin;
import com.crispico.flower.mp.model.codesync.CodeSyncElement;
/**
* @author Cristian Spiescu
*/
public class AddNewExtension_BackboneView implements AddNewExtension {
protected Collection<String> getInitializationTypes() {
return Collections.singleton(JavaScriptDescriptors.INIT_TYPE_BACKBONE_VIEW);
}
@Override
public boolean addNew(CodeSyncElement codeSyncElement, View parent,
Resource codeSyncMappingResource, Map<String, Object> parameters) {
String initializationType = (String) Utils.getValueSafe(parameters, CodeSyncPlugin.CONTEXT_INITIALIZATION_TYPE);
if (!getInitializationTypes().contains(initializationType)) {
return true;
}
doAddNew(codeSyncElement, parent, codeSyncMappingResource, parameters);
return true;
}
protected void doAddNew(CodeSyncElement codeSyncElement, View parent,
Resource codeSyncMappingResource, Map<String, Object> parameters) {
CodeSyncOperationsService.getInstance().setFeatureValue(codeSyncElement, JavaScriptDescriptors.FEATURE_NAME, "View");
{
CodeSyncElement child = CodeSyncOperationsService.getInstance().create(JavaScriptDescriptors.TYPE_JAVASCRIPT_ATTRIBUTE);
CodeSyncOperationsService.getInstance().setFeatureValue(child, JavaScriptDescriptors.FEATURE_NAME, "tpl");
CodeSyncOperationsService.getInstance().add(codeSyncElement, child);
}
}
}