blob: 44d20730573cdf1c153b0b7590c6f552fa90d5d2 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2008-2011 See4sys and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* See4sys - Initial API and implementation
*
* </copyright>
*/
package org.eclipse.sphinx.graphiti.workspace.ui.providers;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.sphinx.emf.explorer.BasicExplorerContentProvider;
import org.eclipse.sphinx.emf.util.WorkspaceEditingDomainUtil;
import org.eclipse.ui.model.WorkbenchContentProvider;
public class ElementTreeContentProvider implements ITreeContentProvider {
WorkbenchContentProvider workbenchContentProvider;
BasicExplorerContentProvider emfContentProvider;
public ElementTreeContentProvider() {
workbenchContentProvider = new WorkbenchContentProvider();
emfContentProvider = new BasicExplorerContentProvider() {
@Override
protected boolean isTriggerPoint(IResource resource) {
return WorkspaceEditingDomainUtil.getEditingDomain(resource) != null;
};
};
}
@Override
public void dispose() {
workbenchContentProvider.dispose();
emfContentProvider.dispose();
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
workbenchContentProvider.inputChanged(viewer, oldInput, newInput);
emfContentProvider.inputChanged(viewer, oldInput, newInput);
}
@Override
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
@Override
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof IContainer || parentElement instanceof IWorkspace) {
return workbenchContentProvider.getChildren(parentElement);
}
return emfContentProvider.getChildren(parentElement);
}
@Override
public Object getParent(Object element) {
if (element instanceof IResource || element instanceof IWorkspace) {
return workbenchContentProvider.getParent(element);
}
return emfContentProvider.getParent(element);
}
@Override
public boolean hasChildren(Object element) {
if (element instanceof IContainer || element instanceof IWorkspace) {
return workbenchContentProvider.hasChildren(element);
}
boolean hasChildren = emfContentProvider.hasChildren(element);
return hasChildren;
}
}