[Pydev-cvs] org.python.pydev/src/org/python/pydev/navigator PythonSourceFolder.java, 1.10, 1.11 Pyt
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2006-12-06 23:12:08
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15704/src/org/python/pydev/navigator Modified Files: PythonSourceFolder.java PythonModelProvider.java PythonBaseModelProvider.java Log Message: Working with the IWorkingSet Index: PythonModelProvider.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator/PythonModelProvider.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PythonModelProvider.java 5 Dec 2006 21:26:00 -0000 1.10 --- PythonModelProvider.java 6 Dec 2006 23:11:50 -0000 1.11 *************** *** 25,29 **** --- 25,32 ---- /** + * This is the Model provider for python elements. * + * It intercepts the adds/removes and changes the original elements for elements + * that actually reflect the python model (with source folder, etc). * * @author Fabio *************** *** 31,38 **** public class PythonModelProvider extends PythonBaseModelProvider implements IPipelinedTreeContentProvider { @SuppressWarnings("unchecked") ! public void getPipelinedChildren(Object parent, Set currentChildren) { Object[] children = getChildren(parent); ! for (Iterator iter = currentChildren.iterator(); iter.hasNext();){ Object next = iter.next(); if (next instanceof IResource && !(next instanceof IWrappedResource)){ --- 34,45 ---- public class PythonModelProvider extends PythonBaseModelProvider implements IPipelinedTreeContentProvider { + /** + * This method + * @see org.eclipse.ui.navigator.IPipelinedTreeContentProvider#getPipelinedChildren(java.lang.Object, java.util.Set) + */ @SuppressWarnings("unchecked") ! public void getPipelinedChildren(Object parent, Set currentElements) { Object[] children = getChildren(parent); ! for (Iterator iter = currentElements.iterator(); iter.hasNext();){ Object next = iter.next(); if (next instanceof IResource && !(next instanceof IWrappedResource)){ *************** *** 40,44 **** } } ! currentChildren.addAll(Arrays.asList(children)); } --- 47,51 ---- } } ! currentElements.addAll(Arrays.asList(children)); } Index: PythonSourceFolder.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator/PythonSourceFolder.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PythonSourceFolder.java 4 Dec 2006 23:10:02 -0000 1.10 --- PythonSourceFolder.java 6 Dec 2006 23:11:50 -0000 1.11 *************** *** 44,48 **** this.parentElement = parentElement; this.folder = folder; ! System.out.println("Created PythonSourceFolder:"+this+" - "+folder+" parent:"+parentElement); } --- 44,48 ---- this.parentElement = parentElement; this.folder = folder; ! // System.out.println("Created PythonSourceFolder:"+this+" - "+folder+" parent:"+parentElement); } Index: PythonBaseModelProvider.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator/PythonBaseModelProvider.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** PythonBaseModelProvider.java 5 Dec 2006 21:26:00 -0000 1.12 --- PythonBaseModelProvider.java 6 Dec 2006 23:11:50 -0000 1.13 *************** *** 5,9 **** package org.python.pydev.navigator; - import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; --- 5,8 ---- *************** *** 27,30 **** --- 26,30 ---- import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.runtime.CoreException; + import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.viewers.AbstractTreeViewer; *************** *** 185,188 **** --- 185,195 ---- */ public Object[] getChildren(Object parentElement) { + + //------------------------------------------- for the working set, just return the children directly + if(parentElement instanceof IWorkingSet){ + IWorkingSet set = (IWorkingSet) parentElement; + return set.getElements(); + } + Object[] childrenToReturn = null; *************** *** 376,388 **** this.projectToSourceFolders = null; if (viewer != null) { ! IWorkspace workspace = null; Object obj = viewer.getInput(); if (obj instanceof IWorkspace) { ! workspace = (IWorkspace) obj; } else if (obj instanceof IContainer) { ! workspace = ((IContainer) obj).getWorkspace(); } if (workspace != null) { ! workspace.removeResourceChangeListener(this); } } --- 383,401 ---- this.projectToSourceFolders = null; if (viewer != null) { ! IWorkspace[] workspace = null; Object obj = viewer.getInput(); if (obj instanceof IWorkspace) { ! workspace = new IWorkspace[]{(IWorkspace) obj}; } else if (obj instanceof IContainer) { ! workspace = new IWorkspace[]{((IContainer) obj).getWorkspace()}; ! } else if (obj instanceof IWorkingSet) { ! IWorkingSet newWorkingSet = (IWorkingSet) obj; ! workspace = getWorkspaces(newWorkingSet); } + if (workspace != null) { ! for (IWorkspace w : workspace) { ! w.removeResourceChangeListener(this); ! } } } *************** *** 400,427 **** this.viewer = viewer; ! IWorkspace oldWorkspace = null; ! IWorkspace newWorkspace = null; if (oldInput instanceof IWorkspace) { ! oldWorkspace = (IWorkspace) oldInput; } else if (oldInput instanceof IContainer) { ! oldWorkspace = ((IContainer) oldInput).getWorkspace(); } if (newInput instanceof IWorkspace) { ! newWorkspace = (IWorkspace) newInput; } else if (newInput instanceof IContainer) { ! newWorkspace = ((IContainer) newInput).getWorkspace(); } else if (newInput instanceof IWorkingSet) { } ! if (oldWorkspace != newWorkspace) { ! if (oldWorkspace != null) { ! oldWorkspace.removeResourceChangeListener(this); } ! if (newWorkspace != null) { ! newWorkspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE); } } } --- 413,470 ---- this.viewer = viewer; ! IWorkspace[] oldWorkspace = null; ! IWorkspace[] newWorkspace = null; + //get the old if (oldInput instanceof IWorkspace) { ! oldWorkspace = new IWorkspace[]{(IWorkspace) oldInput}; } else if (oldInput instanceof IContainer) { ! oldWorkspace = new IWorkspace[]{((IContainer) oldInput).getWorkspace()}; ! } else if (oldInput instanceof IWorkingSet) { ! IWorkingSet oldWorkingSet = (IWorkingSet) oldInput; ! oldWorkspace = getWorkspaces(oldWorkingSet); } + //and the new if (newInput instanceof IWorkspace) { ! newWorkspace = new IWorkspace[]{(IWorkspace) newInput}; } else if (newInput instanceof IContainer) { ! newWorkspace = new IWorkspace[]{((IContainer) newInput).getWorkspace()}; } else if (newInput instanceof IWorkingSet) { + IWorkingSet newWorkingSet = (IWorkingSet) newInput; + newWorkspace = getWorkspaces(newWorkingSet); } ! //now, let's treat the workspace ! if (oldWorkspace != null) { ! for (IWorkspace workspace : oldWorkspace) { ! workspace.removeResourceChangeListener(this); } ! } ! if (newWorkspace != null) { ! for (IWorkspace workspace : newWorkspace) { ! workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE); } } + + } + + /** + * @param newWorkingSet + */ + private IWorkspace[] getWorkspaces(IWorkingSet newWorkingSet) { + IAdaptable[] elements = newWorkingSet.getElements(); + HashSet<IWorkspace> set = new HashSet<IWorkspace>(); + + for (IAdaptable adaptable : elements) { + IResource adapter = (IResource) adaptable.getAdapter(IResource.class); + if(adapter != null){ + IWorkspace workspace = adapter.getWorkspace(); + set.add(workspace); + }else{ + PydevPlugin.log("Was not expecting that IWorkingSet adaptable didn't return anything..."); + } + } + return set.toArray(new IWorkspace[0]); } |