blob: c7ee00d9795f434a426d32f5972e476490fe9603 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Matthew Hall and others.
* 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:
* Matthew Hall - initial API and implementation (bug 207858)
******************************************************************************/
package org.eclipse.jface.internal.databinding.viewers;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.TreeViewer;
/**
* NON-API - An {@link ITreeViewerUpdater} implementation for
* {@link AbstractTreeViewer} viewers.
*
* @since 1.2
*/
class TreeViewerUpdater implements ITreeViewerUpdater {
private final AbstractTreeViewer viewer;
private final TreeViewer treeViewer;
/**
* Constructs an ITreeViewerUpdater for updating the given viewer.
*
* @param viewer
* the viewer that will be updated
*/
public TreeViewerUpdater(AbstractTreeViewer viewer) {
this.viewer = viewer;
if (viewer instanceof TreeViewer)
treeViewer = (TreeViewer) viewer;
else
treeViewer = null;
}
public void add(Object parent, Object[] elements) {
viewer.add(parent, elements);
}
public void insert(Object parent, Object element, int position) {
viewer.insert(parent, element, position);
}
public void replace(Object parent, Object oldElement, Object newElement,
int position) {
if (treeViewer != null && viewer.getComparator() == null
&& viewer.getFilters().length == 0) {
treeViewer.replace(parent, position, newElement);
} else {
remove(parent, oldElement, position);
insert(parent, newElement, position);
}
}
public void remove(Object parent, Object element, int position) {
if (treeViewer != null && viewer.getComparator() == null
&& viewer.getFilters().length == 0) {
// Only TreeViewer has a remove-by-index method.
treeViewer.remove(parent, position);
} else {
viewer.remove(parent, new Object[] { element });
}
}
public void remove(Object parent, Object[] elements) {
viewer.remove(parent, elements);
}
}