NLSed strings
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ComparePreferencePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ComparePreferencePage.java index ceb4f36..febf886 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ComparePreferencePage.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ComparePreferencePage.java
@@ -31,7 +31,7 @@ * @see org.eclipse.team.internal.ccvs.ui.CVSFieldEditorPreferencePage#getPageDescription() */ protected String getPageDescription() { - return "Options for CVS comparisons:"; + return Policy.bind("ComparePreferencePage.0"); //$NON-NLS-1$ } /* (non-Javadoc) @@ -56,7 +56,7 @@ getFieldEditorParent())); addField(new BooleanFieldEditor( ICVSUIConstants.PREF_SHOW_AUTHOR_IN_EDITOR, - "Show the file author in compare editors", + Policy.bind("ComparePreferencePage.1"), //$NON-NLS-1$ BooleanFieldEditor.DEFAULT, getFieldEditorParent())); }
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties index dd8b4ac..ffd1c7b 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
@@ -1022,11 +1022,25 @@ CheckoutIntoWizard.projectSelectionPageDescription=Select the local folder that is the target of the checkout operation. CheckoutIntoWizard.error=Checkout Error ChangeLogModelProvider.0=Sort &Comments By +ChangeLogModelProvider.0=&New Commit Set... ChangeLogModelProvider.1=&Comment +ChangeLogModelProvider.1=New Set +ChangeLogModelProvider.10=Could not add files +ChangeLogModelProvider.11=A problem occurred while rying to add the files to the commit set +ChangeLogModelProvider.12=Add &To ChangeLogModelProvider.2=&Date +ChangeLogModelProvider.2=New Commit Set ChangeLogModelProvider.3=&User +ChangeLogModelProvider.3=Enter the name and comment for the new commit set ChangeLogModelProvider.4=Retrieving revision histories +ChangeLogModelProvider.4=Could not create set ChangeLogModelProvider.5=Commit &Sets +ChangeLogModelProvider.5=A problem occurred while trying to create the commit set +ChangeLogModelProvider.6=Ed&it Comment... +ChangeLogModelProvider.7=Edit Commit Set Comment +ChangeLogModelProvider.8=Edit the name and comment for the new commit set +ChangeLogModelProvider.9=Make De&fault +ChangeLogModelManager.0=Show Commit Sets CheckoutIntoWizard.thisResourceExists=The resource ''{0}'' already exists in the workspace. Overwrite? CheckoutIntoWizard.confirmOverwrite=Confirm Overwrite @@ -1187,6 +1201,8 @@ CVSRepositoryPropertiesPage.1=You have chosen to change the host name or repository root path for this location. You should ensure that this new information still identifies the same repository. CompareRevertAction.0=Reverting {0} resources CompareParticipant.0={0} ({1}) +ComparePreferencePage.0=Options for CVS comparisons: +ComparePreferencePage.1=Show the file author in compare editors FileModificationValidator.3=Perform Edit? FileModificationValidator.4=A CVS edit notification is required to be sent to the server in order to allow editing of one or more selected files. Continue? CVSSynchronizeViewPage.0=Show incoming grouped by comment @@ -1246,6 +1262,10 @@ BranchOperation.0=Branching BranchOperation.1=Branching {0} CommitOperation.0=Committing {0} +CommitSetDialog.0=&Name: +CommitSetDialog.2=Use the &title as the commit comment +CommitSetDialog.3=Enter a commit &comment +CommitSetDiffNode.0={0} (default) UpdateOperation.0=Updating {0} ReplaceOperation.0=Replacing {0} TagOperation.0=Tagging {0}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogDiffNode.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogDiffNode.java index 0f77290..e80472e 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogDiffNode.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogDiffNode.java
@@ -42,12 +42,7 @@ } public boolean equals(Object obj) { - if(obj == this) return true; - if(! (obj instanceof ChangeLogDiffNode)) return false; - ChangeLogDiffNode other = (ChangeLogDiffNode)obj; - ILogEntry otherLog = other.getComment(); - ILogEntry thisLog = getComment(); - return thisLog.getComment().equals(otherLog.getComment()) && thisLog.getAuthor().equals(otherLog.getAuthor()); + return (obj == this); } /* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelManager.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelManager.java index 686a8e8..1a22ec6 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelManager.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelManager.java
@@ -15,6 +15,7 @@ import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.team.internal.ccvs.core.CVSTag; +import org.eclipse.team.internal.ccvs.ui.*; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.internal.ui.synchronize.*; @@ -38,7 +39,7 @@ private class ToggleCommitSetAction extends Action { public ToggleCommitSetAction() { - super("Show Commit Sets", CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_CHANGELOG)); + super(Policy.bind("ChangeLogModelManager.0"), CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_CHANGELOG)); //$NON-NLS-1$ update(); } public void run() {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java index c69f7b6..ef60476 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/ChangeLogModelProvider.java
@@ -133,7 +133,7 @@ private class CreateCommitSetAction extends SynchronizeModelAction { public CreateCommitSetAction(ISynchronizePageConfiguration configuration) { - super("&New Commit Set...", configuration); + super(Policy.bind("ChangeLogModelProvider.0"), configuration); //$NON-NLS-1$ } /* (non-Javadoc) @@ -153,16 +153,16 @@ public void run() { try { IResource[] resources = Utils.getResources(getSelectedDiffElements()); - CommitSet set = CommitSetManager.getInstance().createCommitSet("New Set", null); + CommitSet set = CommitSetManager.getInstance().createCommitSet(Policy.bind("ChangeLogModelProvider.1"), null); //$NON-NLS-1$ CommitSetDialog dialog = new CommitSetDialog(getConfiguration().getSite().getShell(), set, resources, - "New Commit Set", "Enter the name and comment for the new commit set"); + Policy.bind("ChangeLogModelProvider.2"), Policy.bind("ChangeLogModelProvider.3")); //$NON-NLS-1$ //$NON-NLS-2$ dialog.open(); if (dialog.getReturnCode() != InputDialog.OK) return; set.addFiles(resources); CommitSetManager.getInstance().add(set); } catch (CVSException e) { CVSUIPlugin.openError(getConfiguration().getSite().getShell(), - "Could not create set", "A problem occurred while trying to create the commit set", e); + Policy.bind("ChangeLogModelProvider.4"), Policy.bind("ChangeLogModelProvider.5"), e); //$NON-NLS-1$ //$NON-NLS-2$ } } }); @@ -201,14 +201,14 @@ private class EditCommitSetAction extends CommitSetAction { public EditCommitSetAction(ISynchronizePageConfiguration configuration) { - super("Ed&it Comment...", configuration); + super(Policy.bind("ChangeLogModelProvider.6"), configuration); //$NON-NLS-1$ } public void run() { CommitSet set = getSelectedSet(); if (set == null) return; CommitSetDialog dialog = new CommitSetDialog(getConfiguration().getSite().getShell(), set, set.getFiles(), - "Edit Commit Set Comment", "Edit the name and comment for the new commit set"); + Policy.bind("ChangeLogModelProvider.7"), Policy.bind("ChangeLogModelProvider.8")); //$NON-NLS-1$ //$NON-NLS-2$ dialog.open(); if (dialog.getReturnCode() != InputDialog.OK) return; // Nothing to do here as the set was updated by the dialog @@ -219,7 +219,7 @@ private class MakeDefaultCommitSetAction extends CommitSetAction { public MakeDefaultCommitSetAction(ISynchronizePageConfiguration configuration) { - super("Make De&fault", configuration); + super(Policy.bind("ChangeLogModelProvider.9"), configuration); //$NON-NLS-1$ } public void run() { @@ -258,7 +258,7 @@ set.addFiles(Utils.getResources(getSelectedDiffElements())); } catch (CVSException e) { CVSUIPlugin.openError(getConfiguration().getSite().getShell(), - "Could not add files", "A problem occurred while rying to add the files to the commit set", e); + Policy.bind("ChangeLogModelProvider.10"), Policy.bind("ChangeLogModelProvider.11"), e); //$NON-NLS-1$ //$NON-NLS-2$ } } }; @@ -277,7 +277,7 @@ public void initialize(ISynchronizePageConfiguration configuration) { super.initialize(configuration); sortByComment = new MenuManager(Policy.bind("ChangeLogModelProvider.0")); //$NON-NLS-1$ - addToCommitSet = new MenuManager("Add &To"); + addToCommitSet = new MenuManager(Policy.bind("ChangeLogModelProvider.12")); //$NON-NLS-1$ addToCommitSet.setRemoveAllWhenShown(true); addToCommitSet.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { @@ -938,7 +938,7 @@ protected void nodeRemoved(ISynchronizeModelElement node, AbstractSynchronizeModelProvider provider) { super.nodeRemoved(node, provider); // TODO: This should be done using the proper API - if (node instanceof SynchronizeModelElement) { + if (node instanceof SyncInfoModelElement) { CVSSyncInfo info = (CVSSyncInfo) ((SyncInfoModelElement) node).getSyncInfo(); if (info != null) { ICVSRemoteResource remote = getRemoteResource(info);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDialog.java index e4570a7..3043f63 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDialog.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDialog.java
@@ -117,7 +117,7 @@ composite.setFont(parent.getFont()); Label label = new Label(composite, SWT.NONE); - label.setText("&Name:"); + label.setText(Policy.bind("CommitSetDialog.0")); //$NON-NLS-1$ label.setLayoutData(new GridData(GridData.BEGINNING)); nameText = new Text(composite, SWT.BORDER); @@ -131,7 +131,7 @@ private void initializeValues() { String initialText = set.getTitle(); - if (initialText == null) initialText = ""; + if (initialText == null) initialText = ""; //$NON-NLS-1$ nameText.setText(initialText); if (useTitleButton != null) { @@ -141,8 +141,8 @@ } private void createOptionsArea(Composite composite) { - useTitleButton = createRadioButton(composite, "Use the &title as the commit comment"); - enterCommentButton = createRadioButton(composite, "Enter a commit &comment"); + useTitleButton = createRadioButton(composite, Policy.bind("CommitSetDialog.2")); //$NON-NLS-1$ + enterCommentButton = createRadioButton(composite, Policy.bind("CommitSetDialog.3")); //$NON-NLS-1$ SelectionAdapter listener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { updateEnablements();
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDiffNode.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDiffNode.java index 70a9c5d..2844188 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDiffNode.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CommitSetDiffNode.java
@@ -12,6 +12,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.team.internal.ccvs.ui.*; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.internal.ui.synchronize.SynchronizeModelElement; @@ -54,7 +55,7 @@ public String getName() { String name = set.getTitle(); if (CommitSetManager.getInstance().isDefault(set)) { - name = name + " (default)"; + name = Policy.bind("CommitSetDiffNode.0", name); //$NON-NLS-1$ } return name; }
diff --git a/bundles/org.eclipse.team.ui/.options b/bundles/org.eclipse.team.ui/.options new file mode 100644 index 0000000..1665a8f --- /dev/null +++ b/bundles/org.eclipse.team.ui/.options
@@ -0,0 +1,7 @@ +# Debugging options for the org.eclipse.team.ui plugin. + +# Turn on debugging for the plugin. +org.eclipse.team.ui/debug=false + +# Shows stream debugging information +org.eclipse.team.ui/syncmodels=false \ No newline at end of file
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java index 9f85e59..94e8b1b 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
@@ -16,8 +16,7 @@ import java.util.ResourceBundle; import org.eclipse.core.runtime.*; -import org.eclipse.team.internal.core.InfiniteSubProgressMonitor; -import org.eclipse.team.internal.core.NullSubProgressMonitor; +import org.eclipse.team.internal.core.*; /** * Policy implements NLS convenience methods for the plugin and @@ -27,6 +26,16 @@ // The resource bundle to get strings from protected static ResourceBundle bundle = null; + //debug constants + public static boolean DEBUG_SYNC_MODELS = false; + + static { + //init debug options + if (TeamUIPlugin.getPlugin().isDebugging()) { + DEBUG_SYNC_MODELS = "true".equalsIgnoreCase(Platform.getDebugOption(TeamUIPlugin.ID + "/syncmodels"));//$NON-NLS-1$ //$NON-NLS-2$ + } + } + /** * Creates a NLS catalog for the given locale. *
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties index 5c33f0b..1ed2d6f 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
@@ -429,6 +429,7 @@ SynchronizeManager.19=Could not create synchronization: {0} SynchronizeManager.20=Not allowed to create multiple synchronize instances of this type: {0} SynchronizeModelProvider.0=Synchronize View: Processing label changes +SynchronizeModelUpdateHandler.0=Errors occurred while updating problem markers WorkspaceScope.0=Workspace WorkingSetScope.0=Workspace SubscriberParticipant.namePattern={0} ({1}) @@ -466,3 +467,4 @@ FlatModelProvider.7=&Name FlatModelProvider.8=&Path FlatModelProvider.9=&Parent Name +FlatModelProvider.0=Flat
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java index 479cf03..ce10a6d 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java
@@ -27,7 +27,6 @@ import org.eclipse.team.internal.ui.Policy; import org.eclipse.team.ui.synchronize.*; - /** * This class is reponsible for creating and maintaining a presentation model of * {@link SynchronizeModelElement} elements that can be shown in a viewer. The model @@ -552,7 +551,6 @@ } protected void addToViewer(ISynchronizeModelElement node) { - updateHandler.nodeAdded(node, this); propogateConflictState(node, false); // Set the marker property on this node. // There is no need to propogate this to the parents @@ -564,6 +562,7 @@ if (Utils.canUpdateViewer(getViewer())) { doAdd((SynchronizeModelElement)node.getParent(), node); } + updateHandler.nodeAdded(node, this); } /** @@ -589,6 +588,7 @@ * @param node the root node */ protected void clearModelObjects(ISynchronizeModelElement node) { + // Clear all the children of the node IDiffElement[] children = node.getChildren(); for (int i = 0; i < children.length; i++) { IDiffElement element = children[i]; @@ -602,10 +602,13 @@ } } } + // Remove the node from the tree IDiffContainer parent = node.getParent(); if (parent != null) { parent.removeToRoot(node); } + // Notify the update handler that the node has been cleared + updateHandler.modelObjectCleared(node); } /** @@ -652,13 +655,26 @@ /** * This is a callback from the model update handler that gets invoked * when a node is removed from the viewer. It is only invoked for the - * root level model provider. + * root level model provider. A removed node may have children for + * which a <code>nodeRemoved</code> callback is not recieved (see + * <code>modelObjectCleared</code>). * @param node */ protected void nodeRemoved(ISynchronizeModelElement node, AbstractSynchronizeModelProvider provider) { // Default is to do nothing } + /** + * This is a callback from the model update handler that gets invoked + * when a node is cleared from the model. It is only invoked for the + * root level model provider. This calbakc is deep in the sense that + * a callbakc is sent for each node that is cleared. + * @param node the node that was removed. + */ + public void modelObjectCleared(ISynchronizeModelElement node) { + // Default is to do nothing + } + public void addPropertyChangeListener(IPropertyChangeListener listener) { synchronized (this) { if (listeners == null) { @@ -719,4 +735,21 @@ protected void runViewUpdate(final Runnable runnable) { updateHandler.runViewUpdate(runnable); } + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + public String toString() { + ISynchronizeModelElement element = getModelRoot(); + String name = getClass().getName(); + int index = name.lastIndexOf("."); //$NON-NLS-1$ + if (index != -1) { + name = name.substring(index + 1); + } + String name2 = element.getName(); + if (name2.length() == 0) { + name2 = "/"; //$NON-NLS-1$ + } + return name + ": " + name2; //$NON-NLS-1$ + } }
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java index 0ce4416..acf3dfe 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java
@@ -131,10 +131,10 @@ */ protected ISynchronizeModelProvider[] beginInput() { ISynchronizeModelProvider[] providers = getProviders(); - for (int i = 0; i < providers.length; i++) { - ISynchronizeModelProvider provider = providers[i]; - provider.getSyncInfoSet().beginInput(); - } +// for (int i = 0; i < providers.length; i++) { +// ISynchronizeModelProvider provider = providers[i]; +// provider.getSyncInfoSet().beginInput(); +// } return providers; } @@ -143,15 +143,15 @@ */ protected void endInput(ISynchronizeModelProvider[] providers, IProgressMonitor monitor) { RuntimeException exception = null; - for (int i = 0; i < providers.length; i++) { - ISynchronizeModelProvider provider = providers[i]; - try { - provider.getSyncInfoSet().endInput(monitor); - } catch (RuntimeException e) { - // Remember the exception but continue so all locks are freed - exception = e; - } - } +// for (int i = 0; i < providers.length; i++) { +// ISynchronizeModelProvider provider = providers[i]; +// try { +// provider.getSyncInfoSet().endInput(monitor); +// } catch (RuntimeException e) { +// // Remember the exception but continue so all locks are freed +// exception = e; +// } +// } if (exception != null) { throw exception; } @@ -262,6 +262,15 @@ */ protected void nodeRemoved(ISynchronizeModelElement node, AbstractSynchronizeModelProvider provider) { // Update the resource-to-element map and the element-to-provider map + modelObjectCleared(node); + super.nodeRemoved(node, provider); + } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ui.synchronize.AbstractSynchronizeModelProvider#modelObjectCleared(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) + */ + public void modelObjectCleared(ISynchronizeModelElement node) { + super.modelObjectCleared(node); IResource r = node.getResource(); if(r != null) { List elements = (List)resourceToElements.get(r); @@ -273,7 +282,6 @@ } } elementToProvider.remove(node); - super.nodeRemoved(node, provider); } /* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/FlatModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/FlatModelProvider.java index bd43992..3c6a11b 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/FlatModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/FlatModelProvider.java
@@ -37,7 +37,7 @@ return ID; } public String getName() { - return "Flat"; + return Policy.bind("FlatModelProvider.0"); //$NON-NLS-1$ } public ImageDescriptor getImageDescriptor() { return TeamImages.getImageDescriptor(ITeamUIImages.IMG_FLAT);
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelUpdateHandler.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelUpdateHandler.java index afa3855..e2d2d91 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelUpdateHandler.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelUpdateHandler.java
@@ -36,7 +36,7 @@ */ public class SynchronizeModelUpdateHandler extends BackgroundEventHandler implements IResourceChangeListener, ISyncInfoSetChangeListener { - private static final boolean DEBUG = false; + private static final boolean DEBUG = Policy.DEBUG_SYNC_MODELS; private static final IWorkspaceRoot ROOT = ResourcesPlugin.getWorkspace().getRoot(); @@ -118,7 +118,7 @@ * Create the marker update handler. */ public SynchronizeModelUpdateHandler(AbstractSynchronizeModelProvider provider) { - super(Policy.bind("SynchronizeModelProvider.0"), "Errors occurred while updating problem markers"); //$NON-NLS-1$ + super(Policy.bind("SynchronizeModelProvider.0"), Policy.bind("SynchronizeModelUpdateHandler.0")); //$NON-NLS-1$ //$NON-NLS-2$ this.provider = provider; ResourcesPlugin.getWorkspace().addResourceChangeListener(this); provider.getSyncInfoSet().addSyncSetChangedListener(this); @@ -403,19 +403,53 @@ public void nodeAdded(ISynchronizeModelElement element, AbstractSynchronizeModelProvider provider) { element.addPropertyChangeListener(listener); this.provider.nodeAdded(element, provider); + if (DEBUG) { + System.out.println("Node added: " + getDebugDisplayLabel(element) + " -> " + getDebugDisplayLabel((ISynchronizeModelElement)element.getParent()) + " : " + getDebugDisplayLabel(provider)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } } /** * This method is invoked whenever a node is removed the viewer * by the provider or a sub-provider. The handler removes any * listener and notifies the root provider that - * a node was removed. + * a node was removed. The node removed may have children for which + * a nodeRemoved callback was not invoked (see modelObjectCleared). * @param element the removed element * @param provider the provider that added the element */ public void nodeRemoved(ISynchronizeModelElement element, AbstractSynchronizeModelProvider provider) { element.removePropertyChangeListener(listener); - provider.nodeRemoved(element, provider); + this.provider.nodeRemoved(element, provider); + if (DEBUG) { + System.out.println("Node removed: " + getDebugDisplayLabel(element) + " -> " + getDebugDisplayLabel((ISynchronizeModelElement)element.getParent()) + " : " + getDebugDisplayLabel(provider)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } + } + + /** + * This method is invoked whenever a model object (i.e. node) + * is cleared from the model. This is similar to node removal but + * is deep. + * @param node the node that was cleared + */ + public void modelObjectCleared(ISynchronizeModelElement node) { + this.provider.modelObjectCleared(node); + if (DEBUG) { + System.out.println("Node cleared: " + getDebugDisplayLabel(node)); //$NON-NLS-1$ + } + } + + private String getDebugDisplayLabel(ISynchronizeModelElement node) { + if (node == null) { + return "ROOT"; //$NON-NLS-1$ + } + if (node.getResource() != null) { + return node.getResource().getFullPath().toString(); + } + return node.getName(); + } + + private String getDebugDisplayLabel(AbstractSynchronizeModelProvider provider2) { + return provider2.toString(); } /* (non-Javadoc) @@ -464,9 +498,6 @@ return provider; } - /** - * @param monitor - */ public void connect(IProgressMonitor monitor) { getProvider().getSyncInfoSet().connect(this, monitor); }