/**
* <copyright>
*
* Copyright (c) 2010-2016 Thales Global Services S.A.S.
* All rights reserved. This program and the accompanying materials
* are 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:
* Thales Global Services S.A.S. - initial API and implementation
*
* </copyright>
*/
package org.eclipse.emf.diffmerge.ui.viewers;
import org.eclipse.emf.diffmerge.api.scopes.IModelScope;
import org.eclipse.emf.diffmerge.ui.util.DiffMergeLabelProvider;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
/**
* A viewer which provides a representation of a model scope.
* Input: IModelScope ; Elements: EObject.
* @author Olivier Constant
*/
public class ModelScopeViewer extends TreeViewer {
/**
* Constructor
* @param parent_p a non-null composite
*/
public ModelScopeViewer(Composite parent_p) {
this(parent_p, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
}
/**
* Constructor
* @param parent_p a non-null composite
* @param style_p a style for the tree
*/
public ModelScopeViewer(Composite parent_p, int style_p) {
super(parent_p, style_p);
setContentProvider(new ContentProvider());
setLabelProvider(DiffMergeLabelProvider.getInstance());
getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
}
/**
* @see org.eclipse.jface.viewers.ContentViewer#getInput()
*/
@Override
public IModelScope getInput() {
return (IModelScope)super.getInput();
}
/**
* @see org.eclipse.jface.viewers.AbstractTreeViewer#getSelection()
*/
@Override
public ITreeSelection getSelection() {
return (ITreeSelection)super.getSelection();
}
/**
* The content provider for this viewer
*/
protected class ContentProvider implements ITreeContentProvider {
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object parentElement_p) {
return getInput().getContents((EObject)parentElement_p).toArray();
}
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement_p) {
return ((IModelScope)inputElement_p).getContents().toArray();
}
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element_p) {
return getInput().getContainer((EObject)element_p);
}
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
public boolean hasChildren(Object element_p) {
return !getInput().getContents((EObject)element_p).isEmpty();
}
/**
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
// Nothing needed
}
/**
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer_p, Object oldInput_p, Object newInput_p) {
// Nothing needed
}
}
}