Make StagingEntry a PlatformObject
Since we already have an IAdapterFactory for StagingEntry, move all
adapter logic there so that it is in one place. Also make StagingEntry
adaptable to Repository; this is prerequisite for resolving bug 481682
properly.
Change-Id: Ib71278000fd2e5f74d71e9289698917de8ce9c76
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
diff --git a/org.eclipse.egit.ui/plugin.xml b/org.eclipse.egit.ui/plugin.xml
index 9f74938..c0e1780 100644
--- a/org.eclipse.egit.ui/plugin.xml
+++ b/org.eclipse.egit.ui/plugin.xml
@@ -296,6 +296,13 @@
class="org.eclipse.egit.ui.internal.factories.GitAdapterFactory">
<adapter type="org.eclipse.ui.part.IShowInSource"/>
</factory>
+ <factory
+ adaptableType="org.eclipse.egit.ui.internal.staging.StagingEntry"
+ class="org.eclipse.egit.ui.internal.staging.StagingEntryAdapterFactory">
+ <adapter type="org.eclipse.core.resources.IResource"/>
+ <adapter type="org.eclipse.core.runtime.IPath"/>
+ <adapter type="org.eclipse.jgit.lib.Repository"/>
+ </factory>
</extension>
<extension
@@ -5830,16 +5837,6 @@
id="org.eclipse.egit.ui.internal.commit.CommitEditorInputFactory">
</factory>
</extension>
- <extension
- point="org.eclipse.core.runtime.adapters">
- <factory
- adaptableType="org.eclipse.egit.ui.internal.staging.StagingEntry"
- class="org.eclipse.egit.ui.internal.staging.StagingEntryAdapterFactory">
- <adapter
- type="org.eclipse.core.resources.IResource">
- </adapter>
- </factory>
- </extension>
<extension point="org.eclipse.search.searchPages">
<page
class="org.eclipse.egit.ui.internal.search.CommitSearchPage"
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntry.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntry.java
index da604bc..e4da163 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntry.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntry.java
@@ -18,9 +18,9 @@
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.egit.core.internal.util.ResourceUtil;
import org.eclipse.egit.ui.internal.decorators.IDecoratableResource;
import org.eclipse.egit.ui.internal.decorators.IProblemDecoratable;
@@ -30,7 +30,8 @@
/**
* A staged/unstaged entry in the table
*/
-public class StagingEntry implements IAdaptable, IProblemDecoratable, IDecoratableResource {
+public class StagingEntry extends PlatformObject
+ implements IProblemDecoratable, IDecoratableResource {
/**
* State of the node
@@ -228,15 +229,6 @@
}
@Override
- public Object getAdapter(Class adapter) {
- if (adapter == IResource.class)
- return getFile();
- else if (adapter == IPath.class)
- return getLocation();
- return null;
- }
-
- @Override
public int getType() {
return IResource.FILE;
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntryAdapterFactory.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntryAdapterFactory.java
index e7e39b9..86bcb17 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntryAdapterFactory.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingEntryAdapterFactory.java
@@ -10,7 +10,8 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.egit.ui.internal.CommonUtils;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jgit.lib.Repository;
/**
* An adapter factory for <code>StagingEntry</code>s so that the property page
@@ -20,12 +21,22 @@
@Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
- return CommonUtils.getAdapter(((StagingEntry)adaptableObject), IResource.class);
+ if (adaptableObject != null) {
+ StagingEntry entry = (StagingEntry) adaptableObject;
+ if (adapterType == IResource.class) {
+ return entry.getFile();
+ } else if (adapterType == IPath.class) {
+ return entry.getLocation();
+ } else if (adapterType == Repository.class) {
+ return entry.getRepository();
+ }
+ }
+ return null;
}
@Override
public Class[] getAdapterList() {
- return new Class[] { IResource.class };
+ return new Class[] { IResource.class, IPath.class, Repository.class };
}
}