blob: f10cebd6c7a61b16349a49d7295ff075b0359b34 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 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
*
* @author Bob Brodt
******************************************************************************/
package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.Process;
import org.eclipse.bpmn2.RootElement;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractListComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractPropertiesProvider;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.DroolsPackage;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.ImportType;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.util.JbpmModelUtil;
import org.eclipse.bpmn2.modeler.ui.property.ExtensionValueListComposite;
import org.eclipse.bpmn2.modeler.ui.property.diagrams.DefinitionsPropertyComposite;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jdt.core.IType;
import org.eclipse.swt.widgets.Composite;
/**
* @author Bob Brodt
*
*/
public class JbpmDefinitionsPropertyComposite extends DefinitionsPropertyComposite {
/**
* @param section
*/
public JbpmDefinitionsPropertyComposite(AbstractBpmn2PropertySection section) {
super(section);
}
public JbpmDefinitionsPropertyComposite(Composite parent, int style) {
super(parent, style);
}
@Override
public AbstractPropertiesProvider getPropertiesProvider(EObject object) {
if (propertiesProvider==null) {
propertiesProvider = new AbstractPropertiesProvider(object) {
String[] properties = new String[] {
"name", //$NON-NLS-1$
"imports", //$NON-NLS-1$
"rootElements#Resource", //$NON-NLS-1$
"rootElements#ItemDefinition", //$NON-NLS-1$
"rootElements#Message", //$NON-NLS-1$
"rootElements#Error", //$NON-NLS-1$
"rootElements#Signal", //$NON-NLS-1$
"rootElements#Escalation", //$NON-NLS-1$
};
@Override
public String[] getProperties() {
return properties;
}
};
}
return propertiesProvider;
}
@Override
protected Composite bindFeature(EObject object, EStructuralFeature feature, EClass eItemClass) {
if ("imports".equals(feature.getName())) { //$NON-NLS-1$
if (object instanceof Definitions) {
Definitions definitions = (Definitions)object;
for (RootElement re : definitions.getRootElements()) {
if (re instanceof Process) {
Process process = (Process)re;
ExtensionValueListComposite importsTable = new ExtensionValueListComposite(
this, AbstractListComposite.READ_ONLY_STYLE)
{
@Override
protected EObject addListItem(EObject object, EStructuralFeature feature) {
IType type = JbpmModelUtil.showImportDialog(object);
return JbpmModelUtil.addImport(type, object);
}
@Override
protected Object removeListItem(EObject object, EStructuralFeature feature, int index) {
ImportType importType = (ImportType) super.getListItem(object, feature, index);
if (importType!=null) {
JbpmModelUtil.removeImport(importType);
}
return super.removeListItem(object, feature, index);
}
};
importsTable.bindList(process, DroolsPackage.eINSTANCE.getDocumentRoot_ImportType());
importsTable.setTitle(Messages.JbpmDefinitionsPropertyComposite_Imports_Title);
return importsTable;
}
}
}
return null;
}
else
return super.bindFeature(object, feature, eItemClass);
}
}