blob: 3119d07c3577b1bcd87c5dfb689a7ee2c1f59b9a [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 Innar Made
******************************************************************************/
package org.eclipse.bpmn2.modeler.ui.property;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.dd.di.DiagramElement;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
final class PropertyTreeContentProvider implements ITreeContentProvider {
/**
*
*/
private final AdvancedDetailComposite advancedDetailComposite;
/**
* @param advancedDetailComposite
*/
PropertyTreeContentProvider(AdvancedDetailComposite improvedAdvancedDetailComposite) {
this.advancedDetailComposite = improvedAdvancedDetailComposite;
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
@Override
public void dispose() {
}
@Override
public boolean hasChildren(Object element) {
if (element instanceof EObject && !(element instanceof DiagramElement)) {
List<EObject> ret = getFilteredElements(element);
return !ret.isEmpty();
}
return false;
}
@Override
public Object getParent(Object element) {
return null;
}
@Override
public Object[] getElements(Object inputElement) {
if (inputElement instanceof EObject && !(inputElement instanceof DiagramElement)) {
return getFilteredElements(inputElement).toArray();
}
return null;
}
@Override
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof EObject && !(parentElement instanceof DiagramElement)) {
return getFilteredElements(parentElement).toArray();
}
return null;
}
private List<EObject> getFilteredElements(Object element) {
List<EObject> ret = new ArrayList<EObject>();
for (EObject eObject : ((EObject) element).eContents()) {
if (!(eObject instanceof DiagramElement) && !(eObject instanceof BPMNDiagram)) {
ret.add(eObject);
}
}
return ret;
}
}