/*******************************************************************************
* Copyright (c) 2009 IBM Corporation 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:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.ui.internal.views.markers;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
/**
* The ContentProvider to the TreeViewer used in Markers View.
*
* @since 3.6
*
*/
class MarkerViewerContentProvider implements ITreeContentProvider {
// private MarkersTreeViewer viewer;
private Object input;
private final ExtendedMarkersView markersView;
/**
* @param extendedMarkersView
*/
public MarkerViewerContentProvider(ExtendedMarkersView extendedMarkersView) {
this.markersView = extendedMarkersView;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse
* .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// this.viewer = (MarkersTreeViewer) viewer;
this.input = newInput;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java
* .lang.Object)
*/
public Object[] getChildren(Object parentElement) {
MarkerSupportItem[] children = ((MarkerSupportItem) parentElement)
.getChildren();
return getLimitedChildren(children);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements
* (java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
//use clone
return getLimitedChildren(((Markers) input).getElements());
}
/**
* Get the children limited by the marker limits.
*
* @param children
* @return Object[]
*/
private Object[] getLimitedChildren(Object[] children) {
boolean limitsEnabled = markersView.getGenerator().isMarkerLimitsEnabled();
int limits = markersView.getGenerator().getMarkerLimits();
if (!limitsEnabled || limits <= 0 || limits > children.length)
return children;
Object[] newChildren = new Object[limits];
System.arraycopy(children, 0, newChildren, 0, limits);
return newChildren;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILazyTreeContentProvider#getParent(
* java.lang.Object)
*/
public Object getParent(Object element) {
Object parent = ((MarkerSupportItem) element).getParent();
if (parent == null)
return input;
return parent;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java
* .lang.Object)
*/
public boolean hasChildren(Object element) {
return ((MarkerSupportItem) element).getChildren().length > 0;
}
}