diff options
author | Eike Stepper | 2012-06-27 08:48:30 +0000 |
---|---|---|
committer | Eike Stepper | 2012-06-27 08:48:30 +0000 |
commit | 3d3c30d0c463a0028e94811244581976ed692a84 (patch) | |
tree | 7ce71f2b4a0dea76798497a8ad8a9cbf4c75d309 | |
parent | bdb71e4a8e3b518233aafa855f9b0cace10e1ba8 (diff) | |
download | cdo-3d3c30d0c463a0028e94811244581976ed692a84.tar.gz cdo-3d3c30d0c463a0028e94811244581976ed692a84.tar.xz cdo-3d3c30d0c463a0028e94811244581976ed692a84.zip |
Add ResourceOpener mechanism
-rw-r--r-- | plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF | 28 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java | 40 |
2 files changed, 53 insertions, 15 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF index 88ee26d525..ce1cedac9b 100644 --- a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.emf.cdo.ui;singleton:=true -Bundle-Version: 4.1.0.qualifier +Bundle-Version: 4.1.100.qualifier Bundle-Activator: org.eclipse.emf.cdo.internal.ui.bundle.OM$Activator Bundle-Vendor: %providerName Bundle-ClassPath: . @@ -21,70 +21,70 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)", org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.emf.cdo.ui.shared;bundle-version="[4.0.0,5.0.0)" -Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.1.0"; +Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.actions;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.actions;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.bundle;version="4.1.0";x-internal:=true, - org.eclipse.emf.cdo.internal.ui.dialogs;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.bundle;version="4.1.100";x-internal:=true, + org.eclipse.emf.cdo.internal.ui.dialogs;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.dnd;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.dnd;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.editor;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.editor;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.filters;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.filters;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.messages;version="4.1.0";x-friends:="org.eclipse.emf.cdo.tests.ui", - org.eclipse.emf.cdo.internal.ui.perspectives;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.messages;version="4.1.100";x-friends:="org.eclipse.emf.cdo.tests.ui", + org.eclipse.emf.cdo.internal.ui.perspectives;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.preferences;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.preferences;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.internal.ui.views;version="4.1.0"; + org.eclipse.emf.cdo.internal.ui.views;version="4.1.100"; x-friends:="org.eclipse.emf.cdo.ui.defs, org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, org.eclipse.emf.cdo.dawn.ui, org.eclipse.emf.cdo.explorer", - org.eclipse.emf.cdo.ui;version="4.1.0", - org.eclipse.emf.cdo.ui.widgets;version="4.1.0" + org.eclipse.emf.cdo.ui;version="4.1.100", + org.eclipse.emf.cdo.ui.widgets;version="4.1.100" diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java index a2ee08160d..68fe6d885e 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDOSessionsView.java @@ -23,9 +23,15 @@ import org.eclipse.net4j.util.ui.views.ContainerItemProvider; import org.eclipse.net4j.util.ui.views.ContainerView; import org.eclipse.net4j.util.ui.views.IElementFilter; +import org.eclipse.core.runtime.Path; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbenchPage; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; /** * @author Eike Stepper @@ -34,6 +40,9 @@ public class CDOSessionsView extends ContainerView { public final static String ID = "org.eclipse.emf.cdo.ui.CDOSessionsView"; //$NON-NLS-1$ + private static Map<String, ResourceOpener> resourceOpeners = Collections + .synchronizedMap(new HashMap<String, ResourceOpener>()); + private OpenSessionAction openSessionAction; public CDOSessionsView() @@ -78,11 +87,40 @@ public class CDOSessionsView extends ContainerView if (object instanceof CDOResource) { CDOResource resource = (CDOResource)object; - CDOEditorUtil.openEditor(getSite().getPage(), resource.cdoView(), resource.getPath()); + String path = resource.getPath(); + + String extension = new Path(path).getFileExtension(); + ResourceOpener opener = resourceOpeners.get(extension); + if (opener != null) + { + opener.openResource(getSite().getPage(), resource); + } + else + { + CDOEditorUtil.openEditor(getSite().getPage(), resource.cdoView(), path); + } } else { super.doubleClicked(object); } } + + public static ResourceOpener registerResourceOpener(String resourceExtension, ResourceOpener opener) + { + return resourceOpeners.put(resourceExtension, opener); + } + + public static ResourceOpener unregisterResourceOpener(String resourceExtension) + { + return resourceOpeners.remove(resourceExtension); + } + + /** + * @author Eike Stepper + */ + public interface ResourceOpener + { + public void openResource(IWorkbenchPage page, CDOResource resource); + } } |