From: <caw...@us...> - 2007-09-24 15:10:33
|
Revision: 3221 http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=3221&view=rev Author: cawilliams Date: 2007-09-24 08:10:31 -0700 (Mon, 24 Sep 2007) Log Message: ----------- fix handling resource deltas for added/removed resources whose eventual src folder root is equivalent to project. (Basically if you add/remove an HTML file in app/views/layouts, now it will update the Ruby Explorer view properly). Modified Paths: -------------- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/packageview/PackageExplorerContentProvider.java Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/packageview/PackageExplorerContentProvider.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/packageview/PackageExplorerContentProvider.java 2007-09-24 14:10:11 UTC (rev 3220) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/packageview/PackageExplorerContentProvider.java 2007-09-24 15:10:31 UTC (rev 3221) @@ -432,7 +432,7 @@ IRubyElementDelta[] affectedChildren= delta.getAffectedChildren(); if (affectedChildren.length > 1) { // a package fragment might become non empty refresh from the parent - if (element instanceof ISourceFolder) { + if (element instanceof ISourceFolder) { IRubyElement parent= (IRubyElement)internalGetParent(element); // 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View // avoid posting a refresh to an unvisible parent @@ -532,16 +532,28 @@ // this could be optimized by handling all the added children in the parent if ((status & IResourceDelta.REMOVED) != 0) { if (parent instanceof ISourceFolder) { + Object grandparent= internalGetParent(parent); + // if grandparent is src folder root that is equal to project, refresh project + if (grandparent instanceof ISourceFolderRoot && ((ISourceFolderRoot)grandparent).getResource().equals(((ISourceFolderRoot)grandparent).getRubyProject().getProject())) { + parent = grandparent; + grandparent = internalGetParent(parent); + } // refresh one level above to deal with empty package filtering properly - postRefresh(internalGetParent(parent), PARENT, parent); + postRefresh(grandparent, PARENT, parent); return true; } else postRemove(resource); } if ((status & IResourceDelta.ADDED) != 0) { if (parent instanceof ISourceFolder) { + Object grandparent= internalGetParent(parent); + // if grandparent is src folder root that is equal to project, refresh project + if (grandparent instanceof ISourceFolderRoot && ((ISourceFolderRoot)grandparent).getResource().equals(((ISourceFolderRoot)grandparent).getRubyProject().getProject())) { + parent = grandparent; + grandparent = internalGetParent(parent); + } // refresh one level above to deal with empty package filtering properly - postRefresh(internalGetParent(parent), PARENT, parent); + postRefresh(grandparent, PARENT, parent); return true; } else postAdd(parent, resource); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |