Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2007-08-08 19:10:32 +0000
committerMichael Valenta2007-08-08 19:10:32 +0000
commit91f21d33facebd17b1bed79e04b8787038c193ba (patch)
tree60f0098f9df653e30f56389c443676b711c8f617
parent7a244c4feadc8885b27c8729b82e57955f9139f8 (diff)
downloadeclipse.platform.team-91f21d33facebd17b1bed79e04b8787038c193ba.tar.gz
eclipse.platform.team-91f21d33facebd17b1bed79e04b8787038c193ba.tar.xz
eclipse.platform.team-91f21d33facebd17b1bed79e04b8787038c193ba.zip
Bug 198383 [Tests] Failure on Mac in nightly build
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java4
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java2
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizePage.java8
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractTreeViewerAdvisor.java2
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractViewerAdvisor.java2
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ImageManager.java35
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TreeViewerAdvisor.java4
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java10
8 files changed, 54 insertions, 13 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
index 8db6c10d7..df9131b36 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
@@ -309,6 +309,10 @@ public class CommonViewerAdvisor extends AbstractTreeViewerAdvisor implements IN
});
dlp.setDecorationContext(decorationContext);
}
+ }
+
+ public void setInitialInput() {
+ CommonViewer viewer = (CommonViewer)getViewer();
viewer.setInput(getInitialInput());
viewer.expandToLevel(2);
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
index c6b6300dd..c137ea85b 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelLabelProvider.java
@@ -223,7 +223,7 @@ public class ResourceModelLabelProvider extends
protected ImageManager getImageManager() {
ISynchronizationContext context = getContext();
if (context != null) {
- return ImageManager.getImageManager(context);
+ return ImageManager.getImageManager(context, getConfiguration());
}
if (localImageManager == null) {
localImageManager = new ImageManager();
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizePage.java
index f04f1c3f6..1000160b1 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizePage.java
@@ -110,7 +110,7 @@ public abstract class AbstractSynchronizePage extends Page implements ISynchroni
// Create the changes section which, in turn, creates the changes viewer and its configuration
this.changesSection = createChangesSection(composite);
- this.changesViewer = createChangesViewer(changesSection.getContainer());
+ createChangesViewer(changesSection.getContainer());
changesSection.setViewer(changesViewer);
}
@@ -125,11 +125,11 @@ public abstract class AbstractSynchronizePage extends Page implements ISynchroni
* with the page.
*
* @param parent the parent of the viewer
- * @return the changes viewer control
*/
- protected Viewer createChangesViewer(Composite parent) {
+ private void createChangesViewer(Composite parent) {
viewerAdvisor = createViewerAdvisor(parent);
- return viewerAdvisor.getViewer();
+ changesViewer = viewerAdvisor.getViewer();
+ viewerAdvisor.setInitialInput();
}
protected abstract AbstractViewerAdvisor createViewerAdvisor(Composite parent);
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractTreeViewerAdvisor.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractTreeViewerAdvisor.java
index 837ffeb39..1dd3ffcbe 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractTreeViewerAdvisor.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractTreeViewerAdvisor.java
@@ -24,7 +24,7 @@ import org.eclipse.ui.*;
/**
* Abstract superclass for tree viewer advisors
*/
-public class AbstractTreeViewerAdvisor extends StructuredViewerAdvisor implements IAdaptable {
+public abstract class AbstractTreeViewerAdvisor extends StructuredViewerAdvisor implements IAdaptable {
private ICompareNavigator nav;
private INavigatable navigatable;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractViewerAdvisor.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractViewerAdvisor.java
index b137ebe4e..3a0b94406 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractViewerAdvisor.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractViewerAdvisor.java
@@ -65,4 +65,6 @@ public abstract class AbstractViewerAdvisor {
}
public abstract void setActionBars(IActionBars actionBars);
+
+ public abstract void setInitialInput();
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ImageManager.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ImageManager.java
index 12a78b046..70423adb9 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ImageManager.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ImageManager.java
@@ -12,11 +12,15 @@ package org.eclipse.team.internal.ui.synchronize;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.jface.resource.*;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.team.core.ICache;
import org.eclipse.team.core.ICacheListener;
import org.eclipse.team.core.mapping.ISynchronizationContext;
import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
public class ImageManager {
@@ -27,20 +31,39 @@ public class ImageManager {
private CompareConfiguration compareConfig = new CompareConfiguration();
private boolean disposed = false;
- public synchronized static ImageManager getImageManager(ISynchronizationContext context) {
+ public synchronized static ImageManager getImageManager(ISynchronizationContext context, ISynchronizePageConfiguration configuration) {
ImageManager manager = (ImageManager)context.getCache().get(PROP_IMAGE_MANAGER);
if (manager == null) {
final ImageManager newRegistry = new ImageManager();
context.getCache().put(PROP_IMAGE_MANAGER, newRegistry);
- context.getCache().addCacheListener(new ICacheListener() {
- public void cacheDisposed(ICache cache) {
- newRegistry.dispose();
- }
- });
+ Viewer v = getViewer(configuration);
+ if (v != null) {
+ // It is best to dispose the images when the view is disposed (see bug 198383)
+ v.getControl().addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ newRegistry.dispose();
+ }
+ });
+ } else {
+ // The viewer wasn't available so we'll dispose when the context is disposed
+ context.getCache().addCacheListener(new ICacheListener() {
+ public void cacheDisposed(ICache cache) {
+ newRegistry.dispose();
+ }
+ });
+ }
manager = newRegistry;
}
return manager;
}
+
+ private static Viewer getViewer(ISynchronizePageConfiguration configuration) {
+ if (configuration == null)
+ return null;
+ if (configuration.getPage() == null)
+ return null;
+ return configuration.getPage().getViewer();
+ }
public Image getImage(ImageDescriptor descriptor) {
if (descriptor == null || disposed)
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TreeViewerAdvisor.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TreeViewerAdvisor.java
index cdf53f16d..37947ece2 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TreeViewerAdvisor.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/TreeViewerAdvisor.java
@@ -137,6 +137,10 @@ public class TreeViewerAdvisor extends AbstractTreeViewerAdvisor {
viewer.getControl().setLayoutData(data);
initializeViewer(viewer);
}
+
+ public void setInitialInput() {
+ // The input will be set later
+ }
/**
* Create the model manager to be used by this advisor
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
index 6449b25b7..a8b7bde24 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/AbstractSynchronizeLabelProvider.java
@@ -379,7 +379,7 @@ public abstract class AbstractSynchronizeLabelProvider implements ILabelProvider
private ImageManager getImageManager() {
ISynchronizationContext context = getContext();
if (context != null) {
- return ImageManager.getImageManager(context);
+ return ImageManager.getImageManager(context, getConfiguration());
}
if (localImageManager == null) {
localImageManager = new ImageManager();
@@ -387,6 +387,14 @@ public abstract class AbstractSynchronizeLabelProvider implements ILabelProvider
return localImageManager;
}
+ private ISynchronizePageConfiguration getConfiguration() {
+ if (this instanceof SynchronizationLabelProvider) {
+ SynchronizationLabelProvider slp = (SynchronizationLabelProvider) this;
+ return (ISynchronizePageConfiguration)slp.getExtensionSite().getExtensionStateModel().getProperty(ITeamContentProviderManager.P_SYNCHRONIZATION_PAGE_CONFIGURATION);
+ }
+ return null;
+ }
+
private ISynchronizationContext getContext() {
if (this instanceof SynchronizationLabelProvider) {
SynchronizationLabelProvider slp = (SynchronizationLabelProvider) this;

Back to the top