1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

[174299] phase one - comparator and set to use hashmap. Still need to change system view to avoid recursiveFind methods.

This commit is contained in:
David McKnight 2007-03-26 17:36:53 +00:00
parent f9da65fbf0
commit 5c0f8d20e5

View file

@ -48,6 +48,7 @@ import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IBasicPropertyConstants;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IElementComparer;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.IPostSelectionProvider;
import org.eclipse.jface.viewers.ISelection;
@ -382,8 +383,52 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
protected void init() {
_setList = new ArrayList();
busyCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
//setUseHashlookup(true); // new for our 2nd release. Attempt to fix 38 minutes to refresh for 15K elements
setUseHashlookup(true); // new for our 2nd release. Attempt to fix 38 minutes to refresh for 15K elements
setComparer(new IElementComparer()
{
public boolean equals(Object a, Object b)
{
if(a==b) return true;
if(a==null || b==null) return false;
if(a.equals(b)) return true;
ISystemViewElementAdapter identa= null;
if(a instanceof IAdaptable) {
identa = (ISystemViewElementAdapter)
((IAdaptable)a).getAdapter(ISystemViewElementAdapter.class);
}
if(identa != null) {
ISystemViewElementAdapter identb = null;
if(b instanceof IAdaptable) {
identb = (ISystemViewElementAdapter)
((IAdaptable)b).getAdapter(ISystemViewElementAdapter.class);
}
if (identb != null){
if(identa.getAbsoluteName(a).equals(identb.getAbsoluteName(b))) return true;
}
}
return false;
}
public int hashCode(Object element)
{
ISystemViewElementAdapter ident=null;
if(element instanceof IAdaptable) {
ident = (ISystemViewElementAdapter)
((IAdaptable)element).getAdapter(ISystemViewElementAdapter.class);
if(ident!=null) {
String absName = ident.getAbsoluteName(element);
if(absName!=null) return absName.hashCode();
return ident.hashCode();
}
}
return element.hashCode();
}
});
// set content provider
SystemViewLabelAndContentProvider lcProvider = new SystemViewLabelAndContentProvider();
setLabelAndContentProvider(lcProvider);
@ -3733,6 +3778,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
protected Widget internalFindReferencedItem(Widget parent, Object element, int searchLimit) {
previousItem = null;
searchDepth = 0;
//System.out.println("recursiveInternalFindReferencedItem");
return recursiveInternalFindReferencedItem(parent, element, searchLimit);
}
@ -3764,7 +3810,9 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
++searchDepth;
int oldDepth = searchDepth;
Item[] items = getChildren(parent);
for (int i = 0; (i < items.length); i++) {
for (int i = 0; (i < items.length); i++)
{
//System.out.println("recursiveInternalFindReferencedItem");
Widget o = recursiveInternalFindReferencedItem(items[i], element, searchLimit);
if (o != null) return o;
searchDepth = oldDepth;
@ -3826,6 +3874,8 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
//findAllRemoteItemReferences(remoteObjectName, null, subsystem, matches);
match = internalFindFirstRemoteItemReference(remoteObjectName, null, subsystem);
else {
//System.out.println("recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem)");
//recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, null, subsystem, matches);
match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, null, subsystem);
if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2,3)"); //$NON-NLS-1$ //$NON-NLS-2$
@ -3855,6 +3905,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
match = internalFindFirstRemoteItemReference(remoteObjectName, remoteObject, subsystem);
else {
//recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, remoteObject, subsystem, matches);
//System.out.println("recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem)");
match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem);
if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2)"); //$NON-NLS-1$ //$NON-NLS-2$
}
@ -3894,6 +3945,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
if (roots == null) return matches;
if (matches == null) matches = new Vector();
for (int idx = 0; idx < roots.length; idx++) {
//System.out.println("recursiveFindAllRemoteItemReferences(roots[idx], searchString, elementObject, subsystem, matches);");
matches = recursiveFindAllRemoteItemReferences(roots[idx], searchString, elementObject, subsystem, matches);
}
return matches;
@ -3917,7 +3969,10 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
if (roots == null) return matches;
if (matches == null) matches = new Vector();
for (int idx = 0; idx < roots.length; idx++)
{
System.out.println("2:recursiveFindAllRemoteItemReferences(roots[idx], searchString, elementObject, subsystem, matches);");
matches = recursiveFindAllRemoteItemReferences(roots[idx], searchString, elementObject, subsystem, matches);
}
return matches;
}
@ -3942,6 +3997,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
System.out.println("Inside internalFindFirstRemoteItemReference for searchString: " + searchString + ", subsystem null? " + (subsystem == null) + ", nbr roots = " + roots.length); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
for (int idx = 0; (match == null) && (idx < roots.length); idx++) {
//System.out.println("recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem)");
match = recursiveFindFirstRemoteItemReference(roots[idx], searchString, elementObject, subsystem);
if (debugRemote) System.out.println("...Inside internalFindFirstRemoteItemReference. Result of searching root " + idx + ": " + roots[idx].getText() + ": " + match); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@ -4007,6 +4063,8 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
// recurse over children
Item[] items = getChildren(parent);
for (int i = 0; (i < items.length); i++) {
System.out.println("3:recursiveFindAllRemoteItemReferences(roots[idx], searchString, elementObject, subsystem, occurrences);");
if (!items[i].isDisposed()) occurrences = recursiveFindAllRemoteItemReferences(items[i], elementName, elementObject, subsystem, occurrences);
}
return occurrences;
@ -4072,6 +4130,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
Item[] items = getChildren(parent);
Item match = null;
for (int i = 0; (match == null) && (i < items.length); i++) {
//System.out.println("recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem)");
if (!items[i].isDisposed()) match = recursiveFindFirstRemoteItemReference(items[i], elementName, elementObject, subsystem);
}
return match;
@ -4091,8 +4150,12 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
Item[] roots = tree.getItems();
if (roots == null) return matches;
if (matches == null) matches = new Vector();
for (int idx = 0; idx < roots.length; idx++)
for (int idx = 0; idx < roots.length; idx++){
// DKM
//System.out.println("recursiveFindAllRemoteItemFilterReferences");
matches = recursiveFindAllRemoteItemFilterReferences(roots[idx], elementName, subsystem, matches);
}
return matches;
}
@ -4175,6 +4238,7 @@ ISelectionChangedListener, ITreeViewerListener, ISystemResourceChangeEvents, ISy
// recurse over children
Item[] items = getChildren(parent);
for (int i = 0; (i < items.length); i++) {
//System.out.println("recursiveFindAllRemoteItemFilterReferences");
occurrences = recursiveFindAllRemoteItemFilterReferences(items[i], elementName, subsystem, occurrences);
}
return occurrences;