/******************************************************************************* * Copyright (c) 2008 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.graphical.editors.template; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.ui.IEditorPart; import org.jboss.tools.smooks.SmooksModelUtils; import org.jboss.tools.smooks.editor.ISmooksModelProvider; import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel; import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel; import org.jboss.tools.smooks.graphical.editors.GraphicalModelFactoryImpl; import org.jboss.tools.smooks.graphical.editors.IGraphicalEditorPart; import org.jboss.tools.smooks.graphical.editors.ITaskNodeProvider; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerContentProvider; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerLabelProvider; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateGraphicalModel; import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateModelLabelProvider; import org.jboss.tools.smooks.graphical.editors.model.javamapping.JavaBeanGraphModel; import org.jboss.tools.smooks.graphical.editors.process.TaskType; import org.jboss.tools.smooks.model.freemarker.Freemarker; import org.jboss.tools.smooks.model.javabean12.BeanType; /** * @author Dart * */ public class FreemarkerTemplateGraphicalModelFactory extends GraphicalModelFactoryImpl { // private ISmooksModelProvider smooksModelProvider; private IEditorPart editorPart; public FreemarkerTemplateGraphicalModelFactory(ISmooksModelProvider smooksModelProvider, IEditorPart editorPart) { super(); // this.smooksModelProvider = smooksModelProvider; this.editorPart = editorPart; } /* * (non-Javadoc) * * @see org.jboss.tools.smooks.graphical.editors.GraphicalModelFactoryImpl * #createGraphicalModel(java.lang.Object, * org.jboss.tools.smooks.editor.ISmooksModelProvider) */ @Override public Object createGraphicalModel(Object model, ISmooksModelProvider provider) { if (canCreateGraphicalModel(model, provider)) { AbstractSmooksGraphicalModel graphModel = null; AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) provider.getEditingDomain(); ITreeContentProvider contentProvider = new AdapterFactoryContentProvider(editingDomain.getAdapterFactory()); ILabelProvider labelProvider = createLabelProvider(editingDomain.getAdapterFactory()); if (model instanceof Freemarker && editorPart instanceof ITaskNodeProvider) { // Template template = ((Freemarker) model).getTemplate(); String messageType = SmooksModelUtils.getTemplateType((Freemarker) model); if (messageType != null) { TaskType taskType = ((ITaskNodeProvider) editorPart).getTaskType(); ILabelProvider templateLP = new FreemarkerLabelProvider(labelProvider); if (SmooksModelUtils.FREEMARKER_TEMPLATE_TYPE_XML.equals(messageType)) { templateLP = new FreemarkerTemplateModelLabelProvider(); } if (taskType.inTheTask((Freemarker)model)) { graphModel = new FreemarkerTemplateGraphicalModel(model, new FreemarkerContentProvider( contentProvider), templateLP, provider); ((TreeContainerModel) graphModel).setHeaderVisable(true); } } } if (model instanceof BeanType && editorPart instanceof IGraphicalEditorPart) { graphModel = new JavaBeanGraphModel(model, contentProvider, labelProvider, provider, (IGraphicalEditorPart) editorPart); ((JavaBeanGraphModel) graphModel).setHeaderVisable(true); } if (graphModel != null) { return graphModel; } return super.createGraphicalModel(graphModel, provider); } return null; } }