Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2005-04-08 20:10:40 +0000
committerMichael Valenta2005-04-08 20:10:40 +0000
commiteb7e2c4bfc6be16d549882d1b8e10881344c07fe (patch)
treeb6568d10a80d335992b8ba8a81e4fd67d2ddc6e1 /bundles/org.eclipse.team.ui
parente5504460784701312d1eb97983ab5f34eb8b2c91 (diff)
downloadeclipse.platform.team-eb7e2c4bfc6be16d549882d1b8e10881344c07fe.tar.gz
eclipse.platform.team-eb7e2c4bfc6be16d549882d1b8e10881344c07fe.tar.xz
eclipse.platform.team-eb7e2c4bfc6be16d549882d1b8e10881344c07fe.zip
Bug 79317 interface blocked when too many resources in CVS Synchronize view
Diffstat (limited to 'bundles/org.eclipse.team.ui')
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java6
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelUpdateHandler.java44
2 files changed, 45 insertions, 5 deletions
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 11d199b9a..923acb41a 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
@@ -884,11 +884,7 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo
* @param element the element to be added to the viewer
*/
protected void doAdd(ISynchronizeModelElement parent, ISynchronizeModelElement element) {
- if (DEBUG) {
- System.out.println("Adding view item " + element.getName()); //$NON-NLS-1$
- }
- AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer();
- viewer.add(parent, element);
+ updateHandler.doAdd(parent, element);
}
/**
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 8ce6706fc..6b85c3241 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
@@ -136,6 +136,11 @@ public class SynchronizeModelUpdateHandler extends BackgroundEventHandler implem
private boolean performingBackgroundUpdate;
+ /*
+ * Map used to keep track of additions so they can be added in batch at the end of the update
+ */
+ private Map additionsMap;
+
/**
* Create the marker update handler.
*/
@@ -578,10 +583,23 @@ public class SynchronizeModelUpdateHandler extends BackgroundEventHandler implem
expanded = provider.getExpandedResources();
selected = provider.getSelectedResources();
}
+ if (viewer instanceof AbstractTreeViewer && additionsMap == null)
+ additionsMap = new HashMap();
}
runnable.run();
} finally {
if (Utils.canUpdateViewer(viewer)) {
+ if (!additionsMap.isEmpty() && Utils.canUpdateViewer(viewer)) {
+ for (Iterator iter = additionsMap.keySet().iterator(); iter.hasNext();) {
+ ISynchronizeModelElement parent = (ISynchronizeModelElement) iter.next();
+ if (DEBUG) {
+ System.out.println("Adding child view items of " + parent.getName()); //$NON-NLS-1$
+ }
+ List toAdd = (List)additionsMap.get(parent);
+ ((AbstractTreeViewer)viewer).add(parent, toAdd.toArray(new Object[toAdd.size()]));
+ }
+ additionsMap = null;
+ }
if (expanded != null) {
provider.expandResources(expanded);
}
@@ -702,4 +720,30 @@ public class SynchronizeModelUpdateHandler extends BackgroundEventHandler implem
handleException(e);
}
}
+
+ /**
+ * Add the element to the viewer.
+ * @param parent the parent of the element which is already added to the viewer
+ * @param element the element to be added to the viewer
+ */
+ protected void doAdd(ISynchronizeModelElement parent, ISynchronizeModelElement element) {
+ if (additionsMap == null) {
+ if (DEBUG) {
+ System.out.println("Added view item " + element.getName()); //$NON-NLS-1$
+ }
+ AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer();
+ viewer.add(parent, element);
+ } else {
+ // Accumulate the additions
+ if (DEBUG) {
+ System.out.println("Queueing view item for addition " + element.getName()); //$NON-NLS-1$
+ }
+ List toAdd = (List)additionsMap.get(parent);
+ if (toAdd == null) {
+ toAdd = new ArrayList();
+ additionsMap.put(parent, toAdd);
+ }
+ toAdd.add(element);
+ }
+ }
}

Back to the top