diff options
author | Martin Fluegge | 2011-10-25 15:04:01 +0000 |
---|---|---|
committer | Martin Fluegge | 2011-10-25 15:04:01 +0000 |
commit | 5fe470950fe93c3b9608fed817f40b94ed11f4bc (patch) | |
tree | 1f82b6e70b1cc9d713d892bc2bee85d7e9912b42 | |
parent | 76d20aef85210dd231f5fab4ee69483017bb995b (diff) | |
download | cdo-5fe470950fe93c3b9608fed817f40b94ed11f4bc.tar.gz cdo-5fe470950fe93c3b9608fed817f40b94ed11f4bc.tar.xz cdo-5fe470950fe93c3b9608fed817f40b94ed11f4bc.zip |
[359656] [Dawn] Provide collaborative extension for
Graphiti editors
https://bugs.eclipse.org/bugs/show_bug.cgi?id=359656
2 files changed, 249 insertions, 209 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnExplorer.java b/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnExplorer.java index 0824bf44d5..76c85e0df3 100644 --- a/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnExplorer.java +++ b/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnExplorer.java @@ -1,132 +1,173 @@ -/* - * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Martin Fluegge - initial API and implementation - */ -package org.eclipse.emf.cdo.dawn.ui.views; - -import org.eclipse.emf.cdo.dawn.internal.ui.bundle.OM; -import org.eclipse.emf.cdo.dawn.preferences.PreferenceConstants; -import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput; -import org.eclipse.emf.cdo.dawn.ui.helper.EditorDescriptionHelper; -import org.eclipse.emf.cdo.dawn.util.connection.CDOConnectionUtil; -import org.eclipse.emf.cdo.eresource.CDOResource; -import org.eclipse.emf.cdo.internal.ui.editor.CDOEditor; -import org.eclipse.emf.cdo.internal.ui.views.CDOSessionsView; -import org.eclipse.emf.cdo.session.CDOSession; -import org.eclipse.emf.cdo.transaction.CDOTransaction; -import org.eclipse.emf.cdo.ui.CDOEditorInput; -import org.eclipse.emf.cdo.ui.CDOEditorUtil; -import org.eclipse.emf.cdo.view.CDOView; - -import org.eclipse.net4j.util.container.IContainer; -import org.eclipse.net4j.util.om.trace.ContextTracer; -import org.eclipse.net4j.util.ui.views.ContainerItemProvider; -import org.eclipse.net4j.util.ui.views.IElementFilter; - -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.PartInitException; - -/** - * @author Martin Fluegge - */ -public class DawnExplorer extends CDOSessionsView -{ - private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, DawnExplorer.class); - - public static final String ID = "org.eclipse.emf.cdo.dawn.ui.views.DawnExplorer"; - - private CDOView view; - - public CDOView getView() - { - return view; - } - - /** - * The constructor. - */ - public DawnExplorer() - { - CDOConnectionUtil.instance.init(PreferenceConstants.getRepositoryName(), PreferenceConstants.getProtocol(), - PreferenceConstants.getServerName()); - CDOSession session = CDOConnectionUtil.instance.openSession(); - view = CDOConnectionUtil.instance.openView(session); - } - - @Override - public void dispose() - { - // actually no one else should use this view - view.close(); - } - - @Override - protected ContainerItemProvider<IContainer<Object>> createContainerItemProvider() - { - return new DawnItemProvider(getSite().getPage(), this, new IElementFilter() - { - public boolean filter(Object element) - { - return element instanceof CDOSession; - } - }); - } - - @Override - protected void hookDoubleClick() - { - getViewer().addDoubleClickListener(new IDoubleClickListener() - { - public void doubleClick(DoubleClickEvent event) - { - Object obj = ((IStructuredSelection)event.getSelection()).getFirstElement(); - if (obj instanceof CDOResource) - { - CDOResource resource = (CDOResource)obj; - - if (TRACER.isEnabled()) - { - TRACER.format("Opening CDOResource {0} ", resource); //$NON-NLS-1$ - } - - String editorID = EditorDescriptionHelper.getEditorIdForDawnEditor(resource.getName()); - - if (editorID != null && !editorID.equals("")) - { - try - { - DawnEditorInput editorInput = new DawnEditorInput(resource.getURI()); - DawnExplorer.this.getSite().getPage().openEditor(editorInput, editorID); - } - catch (PartInitException e) - { - e.printStackTrace(); - } - } - else - { - CDOTransaction transaction = view.getSession().openTransaction(); - CDOEditorInput editorInput = CDOEditorUtil.createCDOEditorInput(transaction, ((CDOResource)obj).getPath(), - true); - try - { - DawnExplorer.this.getSite().getPage().openEditor(editorInput, CDOEditor.EDITOR_ID); - } - catch (PartInitException e) - { - e.printStackTrace(); - } - } - } - } - }); - } -} +/*
+ * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Martin Fluegge - initial API and implementation
+ */
+package org.eclipse.emf.cdo.dawn.ui.views;
+
+import org.eclipse.emf.cdo.dawn.internal.ui.bundle.OM;
+import org.eclipse.emf.cdo.dawn.preferences.PreferenceConstants;
+import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput;
+import org.eclipse.emf.cdo.dawn.ui.helper.EditorDescriptionHelper;
+import org.eclipse.emf.cdo.dawn.util.connection.CDOConnectionUtil;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.internal.ui.editor.CDOEditor;
+import org.eclipse.emf.cdo.internal.ui.views.CDOSessionsView;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.ui.CDOEditorInput;
+import org.eclipse.emf.cdo.ui.CDOEditorUtil;
+import org.eclipse.emf.cdo.view.CDOView;
+
+import org.eclipse.net4j.connector.ConnectorException;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Martin Fluegge
+ */
+public class DawnExplorer extends CDOSessionsView
+{
+ private static final int DEFAULT_SLEEP_INTERVAL = 5000;
+
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, DawnExplorer.class);
+
+ public static final String ID = "org.eclipse.emf.cdo.dawn.ui.views.DawnExplorer";
+
+ private CDOView view;
+
+ public CDOView getView()
+ {
+ return view;
+ }
+
+ /**
+ * The constructor.
+ */
+ public DawnExplorer()
+ {
+ boolean initialize = initialize();
+
+ if (!initialize)
+ {
+ Thread thread = new Thread(new Runnable()
+ {
+ public void run()
+ {
+ while (!initialize())
+ {
+ try
+ {
+ Thread.sleep(DEFAULT_SLEEP_INTERVAL);
+ }
+ catch (InterruptedException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ });
+ thread.start();
+ }
+ }
+
+ /**
+ * Initializes the view of the DawnExplorer
+ */
+ private boolean initialize()
+ {
+ try
+ {
+ CDOConnectionUtil.instance.init(PreferenceConstants.getRepositoryName(), PreferenceConstants.getProtocol(),
+ PreferenceConstants.getServerName());
+ CDOSession session = CDOConnectionUtil.instance.openSession();
+ view = CDOConnectionUtil.instance.openView(session);
+ }
+ catch (ConnectorException ex)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void dispose()
+ {
+ // actually no one else should use this view
+ view.close();
+ }
+
+ @Override
+ protected ContainerItemProvider<IContainer<Object>> createContainerItemProvider()
+ {
+ return new DawnItemProvider(getSite().getPage(), this, new IElementFilter()
+ {
+ public boolean filter(Object element)
+ {
+ return element instanceof CDOSession;
+ }
+ });
+ }
+
+ @Override
+ protected void hookDoubleClick()
+ {
+ getViewer().addDoubleClickListener(new IDoubleClickListener()
+ {
+ public void doubleClick(DoubleClickEvent event)
+ {
+ Object obj = ((IStructuredSelection)event.getSelection()).getFirstElement();
+ if (obj instanceof CDOResource)
+ {
+ CDOResource resource = (CDOResource)obj;
+
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Opening CDOResource {0} ", resource); //$NON-NLS-1$
+ }
+
+ String editorID = EditorDescriptionHelper.getEditorIdForDawnEditor(resource.getName());
+
+ if (editorID != null && !editorID.equals(""))
+ {
+ try
+ {
+ DawnEditorInput editorInput = new DawnEditorInput(resource.getURI());
+ DawnExplorer.this.getSite().getPage().openEditor(editorInput, editorID);
+ }
+ catch (PartInitException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ else
+ {
+ CDOTransaction transaction = view.getSession().openTransaction();
+ CDOEditorInput editorInput = CDOEditorUtil.createCDOEditorInput(transaction, ((CDOResource)obj).getPath(),
+ true);
+ try
+ {
+ DawnExplorer.this.getSite().getPage().openEditor(editorInput, CDOEditor.EDITOR_ID);
+ }
+ catch (PartInitException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnItemProvider.java b/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnItemProvider.java index 86b384711f..4230539e68 100644 --- a/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.dawn.ui/src/org/eclipse/emf/cdo/dawn/ui/views/DawnItemProvider.java @@ -1,77 +1,76 @@ -/* - * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Martin Fluegge - initial API and implementation - */ -package org.eclipse.emf.cdo.dawn.ui.views; - -import org.eclipse.emf.cdo.dawn.ui.helper.EditorDescriptionHelper; -import org.eclipse.emf.cdo.eresource.CDOResource; -import org.eclipse.emf.cdo.eresource.CDOResourceFolder; -import org.eclipse.emf.cdo.session.CDOSession; -import org.eclipse.emf.cdo.ui.CDOItemProvider; - -import org.eclipse.net4j.util.ui.views.IElementFilter; - -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.IWorkbenchPage; - -/** - * @author Martin Fluegge - */ -public class DawnItemProvider extends CDOItemProvider -{ - private final DawnExplorer dawnExplorer; - - public DawnItemProvider(IWorkbenchPage page, DawnExplorer dawnExplorer, IElementFilter rootElementFilter) - { - super(page, rootElementFilter); - this.dawnExplorer = dawnExplorer; - } - - @Override - public Object[] getChildren(Object element) - { - // if (element instanceof CDOView) - // { - // return ((CDOView)element).getRootResource().getContents().toArray(); - // } - - if (element instanceof CDOResourceFolder) - { - return ((CDOResourceFolder)element).getNodes().toArray(); - } - - if (element instanceof CDOSession) - { - CDOSession session = (CDOSession)element; - Object[] child = new Object[1]; - child[0] = session.getView(dawnExplorer.getView().getViewID()); - return child; - } - - return super.getChildren(element); - } - - @Override - public Image getImage(Object obj) - { - - if (obj instanceof CDOResource) - { - CDOResource resource = (CDOResource)obj; - Image img = EditorDescriptionHelper.getImageForEditor(resource.getName()); - if (img != null) - { - return img; - } - } - - return super.getImage(obj); - } -} +/*
+ * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Martin Fluegge - initial API and implementation
+ */
+package org.eclipse.emf.cdo.dawn.ui.views;
+
+import org.eclipse.emf.cdo.dawn.ui.helper.EditorDescriptionHelper;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.ui.CDOItemProvider;
+
+import org.eclipse.net4j.util.ui.views.IElementFilter;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IWorkbenchPage;
+
+/**
+ * @author Martin Fluegge
+ */
+public class DawnItemProvider extends CDOItemProvider
+{
+ private final DawnExplorer dawnExplorer;
+
+ public DawnItemProvider(IWorkbenchPage page, DawnExplorer dawnExplorer, IElementFilter rootElementFilter)
+ {
+ super(page, rootElementFilter);
+ this.dawnExplorer = dawnExplorer;
+ }
+
+ @Override
+ public Object[] getChildren(Object element)
+ {
+ // if (element instanceof CDOView)
+ // {
+ // return ((CDOView)element).getRootResource().getContents().toArray();
+ // }
+
+ if (element instanceof CDOResourceFolder)
+ {
+ return ((CDOResourceFolder)element).getNodes().toArray();
+ }
+
+ if (element instanceof CDOSession)
+ {
+ CDOSession session = (CDOSession)element;
+ Object[] child = new Object[1];
+ child[0] = session.getView(dawnExplorer.getView().getViewID());
+ return child;
+ }
+
+ return super.getChildren(element);
+ }
+
+ @Override
+ public Image getImage(Object obj)
+ {
+ if (obj instanceof CDOResource)
+ {
+ CDOResource resource = (CDOResource)obj;
+ Image img = EditorDescriptionHelper.getImageForEditor(resource.getName());
+ if (img != null)
+ {
+ return img;
+ }
+ }
+
+ return super.getImage(obj);
+ }
+}
|