/*******************************************************************************
* 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.model.javamapping;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.jboss.tools.smooks.configuration.editors.utils.SmooksUIUtils;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
import org.jboss.tools.smooks.graphical.editors.IGraphicalEditorPart;
import org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigGraphModel;
import org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateXMLModel;
import org.jboss.tools.smooks.graphical.editors.template.SmooksFreemarkerTemplateGraphicalEditor;
import org.jboss.tools.smooks.model.javabean12.BeanType;
/**
* @author Dart
*
*/
public class JavaBeanGraphModel extends AbstractResourceConfigGraphModel {
private IGraphicalEditorPart editorPart;
public JavaBeanGraphModel(Object data, ITreeContentProvider contentProvider, ILabelProvider labelProvider,
IEditingDomainProvider domainProvider, IGraphicalEditorPart editorPart) {
super(data, contentProvider, labelProvider, domainProvider);
this.editorPart = editorPart;
}
@Override
protected TreeNodeModel createChildModel(Object model, ITreeContentProvider contentProvider,
ILabelProvider labelProvider) {
Object m = AdapterFactoryEditingDomain.unwrap(model);
if (m instanceof String)
return null;
return new JavaBeanChildGraphModel(model, contentProvider, labelProvider, this.domainProvider, this.editorPart);
}
protected boolean inJavaMapping() {
if (SmooksFreemarkerTemplateGraphicalEditor.ID.equals(editorPart.getID())) {
return false;
}
return true;
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.tools.smooks.gef.tree.model.TreeNodeModel#canLinkWithSource
* (java.lang.Object)
*/
@Override
public boolean canLinkWithSource(Object model) {
if (!inJavaMapping())
return false;
return super.canLinkWithSource(model);
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.tools.smooks.gef.tree.model.TreeNodeModel#canLinkWithTarget
* (java.lang.Object)
*/
@Override
public boolean canLinkWithTarget(Object model) {
AbstractSmooksGraphicalModel gm = (AbstractSmooksGraphicalModel) model;
Object m = gm.getData();
if (data instanceof BeanType) {
if (m instanceof FreemarkerTemplateXMLModel) {
if (data instanceof EObject) {
if (SmooksUIUtils.isCollectionJavaGraphModel((EObject) data)) {
boolean flag = ((FreemarkerTemplateXMLModel) m).isManyOccurs()
&& gm.getTargetConnections().isEmpty();
Object p = SmooksFreemarkerTemplateGraphicalEditor.parentIsRequriedCollectionNode(gm);
if(p != null) {
return false;
}else{
return flag;
}
}
}
}
}
if (!inJavaMapping())
return false;
return super.canLinkWithTarget(model);
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.tools.smooks.gef.tree.model.TreeContainerModel#canDragLink()
*/
@Override
public boolean canDragLink() {
if (SmooksFreemarkerTemplateGraphicalEditor.ID.equals(editorPart.getID())) {
return true;
}
return false;
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel#isLinkable
* (java.lang.Class)
*/
@Override
public boolean isLinkable(Class<?> connectionType) {
return canDragLink();
}
}