[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal ...
Marshall Culpepper
mculpepper at jboss.com
Thu Nov 16 15:56:58 EST 2006
User: mculpepper
Date: 06/11/16 15:56:58
Modified: core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal
PackagesModel.java PackageImpl.java
Log:
fixed some modeling bugs where folder and package nodes that weren't at the top level were being replaced at the root node.. fixed
Revision Changes Path
1.4 +52 -23 jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackagesModel.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- PackagesModel.java 15 Nov 2006 03:36:31 -0000 1.3
+++ PackagesModel.java 16 Nov 2006 20:56:58 -0000 1.4
@@ -106,11 +106,14 @@
}
}
- public IPackage createPackage(IProject project)
+ public IPackage createPackage(IProject project, boolean isTopLevel)
{
Assert.isNotNull(project);
- return new PackageImpl(project, new XbPackage());
+ PackageImpl pkg = new PackageImpl(project, new XbPackage());
+ pkg.setParentShouldBeNull(isTopLevel);
+
+ return pkg;
}
public IPackageFolder createPackageFolder(IProject project) {
@@ -239,6 +242,9 @@
{
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE)
{
+ PackageImpl pkg = (PackageImpl) node;
+ if (pkg.isTopLevel())
+ {
XbPackages packages = getXbPackages(node.getProject());
if (packages == null) {
packages = new XbPackages();
@@ -250,9 +256,11 @@
packages.addChild(node.getNodeDelegate());
}
}
+ }
- if (!isPackageNodeRegistered(node))
+ if (!isPackageNodeRegistered(node)) {
registerPackageNode(node, node.getNodeDelegate());
+ }
saveModel(node.getProject());
}
@@ -321,7 +329,28 @@
protected void fireNodeAdded (final IPackageNode added)
{
- fireEventUnlessWorkingCopy(added, new Runnable() {
+ // need to make sure if this is a package or folder node that we don't fire the "added" event prematurely
+ // basically we need to check if the node has been properly added to it's parent or not.
+ // since a package can be top level (i.e. no parent), i've added a special "shouldParentBeNull" flag (internal)
+ // to see if we can trigger the "added" event or not for packages. folders are only children of each other and packages
+ if (added.getNodeType() == IPackageNode.TYPE_PACKAGE)
+ {
+ PackageImpl pkg = (PackageImpl) added;
+ if (!pkg.shouldParentBeNull() && pkg.isTopLevel())
+ {
+ return;
+ }
+ }
+ else if (added.getNodeType() == IPackageNode.TYPE_PACKAGE_FOLDER)
+ {
+ PackageFolderImpl folder = (PackageFolderImpl) added;
+ if (folder.getParent() == null)
+ {
+ return;
+ }
+ }
+
+ fireEvent(added, new Runnable() {
public void run() {
for (Iterator iter = modelListeners.iterator(); iter.hasNext(); )
{
@@ -334,7 +363,7 @@
protected void fireNodeRemoved (final IPackageNode removed)
{
- fireEventUnlessWorkingCopy(removed, new Runnable() {
+ fireEvent(removed, new Runnable() {
public void run() {
for (Iterator iter = modelListeners.iterator(); iter.hasNext(); )
{
@@ -347,10 +376,7 @@
protected void fireNodeChanged (final IPackageNode changed)
{
- if (changed.getParent() == null) //not registered in the model, no "change" occurred
- return;
-
- fireEventUnlessWorkingCopy(changed, new Runnable() {
+ fireEvent(changed, new Runnable() {
public void run() {
for (Iterator iter = modelListeners.iterator(); iter.hasNext(); )
{
@@ -361,8 +387,11 @@
});
}
- protected void fireEventUnlessWorkingCopy (IPackageNode source, Runnable runnable)
+ protected void fireEvent (IPackageNode source, Runnable runnable)
{
+ if (!modelBridge.containsKey(source)) //not registered in the model, no event should be broadcast
+ return;
+
PackageNodeImpl nodeImpl = (PackageNodeImpl) source;
if (!nodeImpl.isWorkingCopy())
{
@@ -381,10 +410,10 @@
{
modelBridge.put(nodeImpl, node);
- if (nodeImpl instanceof IPackage)
+ if (nodeImpl.getNodeType() == IPackageNode.TYPE_PACKAGE)
{
- IPackage pkg = (IPackage) nodeImpl;
- if (pkg.isTopLevel()) {
+ PackageImpl pkg = (PackageImpl) nodeImpl;
+ if (pkg.isTopLevel() && pkg.shouldParentBeNull()) {
if (!projectPackages.containsKey(pkg.getProject()))
{
projectPackages.put(pkg.getProject(), new ArrayList());
@@ -402,7 +431,7 @@
{
modelBridge.remove(nodeImpl);
- if (nodeImpl instanceof IPackage)
+ if (nodeImpl.getNodeType() == IPackageNode.TYPE_PACKAGE)
{
IPackage pkg = (IPackage) nodeImpl;
if (pkg.isTopLevel()) {
1.3 +14 -2 jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackageImpl.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackageImpl.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackageImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- PackageImpl.java 8 Nov 2006 19:54:41 -0000 1.2
+++ PackageImpl.java 16 Nov 2006 20:56:58 -0000 1.3
@@ -44,12 +44,13 @@
* A Package.
*
* @author <a href="marshall at jboss.org">Marshall Culpepper</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class PackageImpl extends PackageNodeImpl implements IPackage, IPackageWorkingCopy {
private XbPackage packageDelegate;
private PackageImpl original;
+ private boolean parentShouldBeNull;
public PackageImpl(IProject project, XbPackage delegate)
{
@@ -57,6 +58,7 @@
this.packageDelegate = delegate;
this.hasWorkingCopy = false;
+ this.parentShouldBeNull = false;
}
public int getNodeType() {
@@ -130,7 +132,7 @@
}
public boolean isTopLevel() {
- return packageDelegate.getParent() instanceof XbPackages;
+ return (packageDelegate.getParent() instanceof XbPackages || packageDelegate.getParent() == null);
}
public Manifest getManifest() {
@@ -262,4 +264,14 @@
public String toString() {
return getName();
}
+
+ protected boolean shouldParentBeNull ()
+ {
+ return parentShouldBeNull;
+ }
+
+ public void setParentShouldBeNull (boolean parentShouldBeNull)
+ {
+ this.parentShouldBeNull = parentShouldBeNull;
+ }
}
More information about the jboss-cvs-commits
mailing list