diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 20bd44404ee..6f4a371fb15 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,10 @@ +2004-04-07 David Inglis + + Fixed event problem + + * src/org/eclipse/cdt/core/CDescriptorEvent.java + * src/org/eclipse/cdt/internal/core/CDescriptorManager.java + 2004-04-07 Alain Magloire Using a complete parser is to heavy for the typeInfo diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CDescriptorEvent.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CDescriptorEvent.java index 6bdab45c681..21874d9f5cf 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CDescriptorEvent.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CDescriptorEvent.java @@ -12,17 +12,17 @@ package org.eclipse.cdt.core; import java.util.EventObject; public class CDescriptorEvent extends EventObject { - + public static final int CDTPROJECT_CHANGED = 1; public static final int CDTPROJECT_ADDED = 2; public static final int CDTPROJECT_REMOVED = 3; - + public static final int OWNER_CHANGED = 0x10; public static final int EXTENSION_CHANGED = 0x20; private static final int FLAGS_MASK = 0xf; - - private int fType; + + int fType; public CDescriptorEvent(ICDescriptor descriptor, int type, int flags) { super(descriptor); @@ -32,12 +32,37 @@ public class CDescriptorEvent extends EventObject { public ICDescriptor getDescriptor() { return (ICDescriptor) getSource(); } - + public int getType() { return fType & FLAGS_MASK; } - + public int getFlags() { return fType & ~FLAGS_MASK; } -} + + public String toString() { + StringBuffer buf = new StringBuffer(); + switch (getType()) { + case CDTPROJECT_ADDED : + buf.append("CDTPROJECT_ADDED"); //$NON-NLS-1$ + break; + case CDTPROJECT_REMOVED : + buf.append("CDTPROJECT_REMOVED"); //$NON-NLS-1$ + break; + case CDTPROJECT_CHANGED : + buf.append("CDTPROJECT_CHANGED"); //$NON-NLS-1$ + break; + } + if ( (getFlags() & OWNER_CHANGED) != 0 ) { + buf.append("[OWNER CHANGED]"); //$NON-NLS-1$ + } + if ( (getFlags() & EXTENSION_CHANGED) != 0 ) { + buf.append("[EXTENSION CHANGED]"); //$NON-NLS-1$ + } + if (getFlags() == 0) { + buf.append("[UNSPECIFIED]"); //$NON-NLS-1$ + } + return buf.toString(); + } +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java index 6c69472d863..dfba2f31a12 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java @@ -304,18 +304,16 @@ public class CDescriptorManager implements ICDescriptorManager, IResourceChangeL // OWNER_CHANGED // EXT_CHANGED // other - if (event.getType() != CDescriptorEvent.CDTPROJECT_ADDED) { + if (event.getType() == CDescriptorEvent.CDTPROJECT_ADDED) { fOperationMap.put(event.getDescriptor(), event); } else if (event.getType() == CDescriptorEvent.CDTPROJECT_REMOVED) { fOperationMap.put(event.getDescriptor(), event); } else { CDescriptorEvent ev = (CDescriptorEvent) fOperationMap.get(event.getDescriptor()); - if (ev.getType() == CDescriptorEvent.CDTPROJECT_CHANGED) { - if (ev.getFlags() == 0) { - fOperationMap.put(event.getDescriptor(), event); - } else if (ev.getFlags() != CDescriptorEvent.OWNER_CHANGED) { - fOperationMap.put(event.getDescriptor(), event); - } + if ( ev == null) { + fOperationMap.put(event.getDescriptor(), event); + } else if ((ev.getFlags() & event.getFlags()) != event.getFlags()) { + fOperationMap.put(event.getDescriptor(), new CDescriptorEvent(event.getDescriptor(), event.getType(), ev.getFlags() | event.getFlags())); } } return;