///******************************************************************************* // * Copyright (c) 2000, 2006 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.search.internal.ui.text; // //import java.util.HashMap; //import java.util.HashSet; //import java.util.Map; //import java.util.Set; // //import org.eclipse.core.resources.IProject; //import org.eclipse.core.resources.IResource; // //import org.eclipse.jface.viewers.AbstractTreeViewer; //import org.eclipse.jface.viewers.ITreeContentProvider; //import org.eclipse.jface.viewers.Viewer; // //import org.eclipse.search.ui.text.AbstractTextSearchResult; // //public class FileTreeContentProvider implements ITreeContentProvider, IFileSearchContentProvider { // // private final Object[] EMPTY_ARR= new Object[0]; // // private AbstractTextSearchResult fResult; // private FileSearchPage fPage; // private AbstractTreeViewer fTreeViewer; // private Map fChildrenMap; // // FileTreeContentProvider(FileSearchPage page, AbstractTreeViewer viewer) { // fPage= page; // fTreeViewer= viewer; // } // // public Object[] getElements(Object inputElement) { // Object[] children= getChildren(inputElement); // int elementLimit= getElementLimit(); // if (elementLimit != -1 && elementLimit < children.length) { // Object[] limitedChildren= new Object[elementLimit]; // System.arraycopy(children, 0, limitedChildren, 0, elementLimit); // return limitedChildren; // } // return children; // } // // private int getElementLimit() { // return fPage.getElementLimit().intValue(); // } // // public void dispose() { // // nothing to do // } // // public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // if (newInput instanceof FileSearchResult) { // initialize((FileSearchResult) newInput); // } // } // // // protected synchronized void initialize(AbstractTextSearchResult result) { // fResult= result; // fChildrenMap= new HashMap(); // if (result != null) { // Object[] elements= result.getElements(); // for (int i= 0; i < elements.length; i++) { // insert(elements[i], false); // } // } // } // // protected void insert(Object child, boolean refreshViewer) { // // Object parent= getParent(child); // while (parent != null) { // if (insertChild(parent, child)) { // if (refreshViewer) // fTreeViewer.add(parent, child); // } else { // if (refreshViewer) // fTreeViewer.refresh(parent); // return; // } // child= parent; // parent= getParent(child); // } // if (insertChild(fResult, child)) { // if (refreshViewer) // fTreeViewer.add(fResult, child); // } // } // // /** // * returns true if the child already was a child of parent. // * // * @param parent // * @param child // * @return Returns <code>trye</code> if the child was added // */ // private boolean insertChild(Object parent, Object child) { // Set children= (Set) fChildrenMap.get(parent); // if (children == null) { // children= new HashSet(); // fChildrenMap.put(parent, children); // } // return children.add(child); // } // // protected void remove(Object element, boolean refreshViewer) { // // precondition here: fResult.getMatchCount(child) <= 0 // // if (hasChildren(element)) { // if (refreshViewer) // fTreeViewer.refresh(element); // } else { // if (fResult.getMatchCount(element) == 0) { // fChildrenMap.remove(element); // Object parent= getParent(element); // if (parent != null) { // removeFromSiblings(element, parent); // remove(parent, refreshViewer); // } else { // removeFromSiblings(element, fResult); // if (refreshViewer) // fTreeViewer.refresh(); // } // } else { // if (refreshViewer) { // fTreeViewer.refresh(element); // } // } // } // } // // private void removeFromSiblings(Object element, Object parent) { // Set siblings= (Set) fChildrenMap.get(parent); // if (siblings != null) { // siblings.remove(element); // } // } // // public Object[] getChildren(Object parentElement) { // Set children= (Set) fChildrenMap.get(parentElement); // if (children == null) // return EMPTY_ARR; // return children.toArray(); // } // // public boolean hasChildren(Object element) { // return getChildren(element).length > 0; // } // // public synchronized void elementsChanged(Object[] updatedElements) { // for (int i= 0; i < updatedElements.length; i++) { // if (fResult.getMatchCount(updatedElements[i]) > 0) // insert(updatedElements[i], true); // else // remove(updatedElements[i], true); // } // } // // public void clear() { // initialize(fResult); // fTreeViewer.refresh(); // } // // public Object getParent(Object element) { // if (element instanceof IProject) // return null; // if (element instanceof IResource) { // IResource resource = (IResource) element; // return resource.getParent(); // } // return null; // } //}