/*******************************************************************************
* 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.ui.property.data;
import org.eclipse.bpmn2.DataState;
import org.eclipse.bpmn2.DataStore;
import org.eclipse.bpmn2.DataStoreReference;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractDetailComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractPropertiesProvider;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultPropertySection;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Composite;
/**
* @author Bob Brodt
*
*/
public class DataStorePropertySection extends DefaultPropertySection {
/* (non-Javadoc)
* @see org.eclipse.bpmn2.modeler.ui.property.AbstractBpmn2PropertySection#createSectionRoot()
*/
@Override
protected AbstractDetailComposite createSectionRoot() {
return new DataStoreDetailComposite(this);
}
@Override
public AbstractDetailComposite createSectionRoot(Composite parent, int style) {
return new DataStoreDetailComposite(parent,style);
}
@Override
public EObject getBusinessObjectForSelection(ISelection selection) {
EObject bo = super.getBusinessObjectForSelection(selection);
if (bo instanceof DataStoreReference) {
return ((DataStoreReference) bo).getDataStoreRef();
} else if (bo instanceof DataStore) {
return bo;
}
return null;
}
public class DataStoreDetailComposite extends DefaultDetailComposite {
private AbstractPropertiesProvider dataStoreReferencePropertiesProvider;
private AbstractPropertiesProvider dataStatePropertiesProvider;
public DataStoreDetailComposite(Composite parent, int style) {
super(parent, style);
}
/**
* @param section
*/
public DataStoreDetailComposite(AbstractBpmn2PropertySection section) {
super(section);
}
@Override
public AbstractPropertiesProvider getPropertiesProvider(EObject object) {
if (object instanceof DataState) {
if (dataStatePropertiesProvider == null) {
dataStatePropertiesProvider = new AbstractPropertiesProvider(object) {
String[] properties = new String[] { "id", "name" }; //$NON-NLS-1$ //$NON-NLS-2$
@Override
public String[] getProperties() {
return properties;
}
};
}
return dataStatePropertiesProvider;
}
else if (object instanceof DataStore) {
if (propertiesProvider == null) {
propertiesProvider = new AbstractPropertiesProvider(object) {
String[] properties = new String[] { "id", "name", "capacity", "isUnlimited", "itemSubjectRef", "dataState" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
@Override
public String[] getProperties() {
return properties;
}
};
}
return propertiesProvider;
}
else if (object instanceof DataStoreReference) {
if (dataStoreReferencePropertiesProvider == null) {
dataStoreReferencePropertiesProvider = new AbstractPropertiesProvider(object) {
String[] properties = new String[] { "id", "name", "dataStoreRef" , "dataState" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@Override
public String[] getProperties() {
return properties;
}
};
}
return dataStoreReferencePropertiesProvider;
}
return null;
}
}
}