diff options
author | rsuen | 2007-05-26 02:21:28 +0000 |
---|---|---|
committer | rsuen | 2007-05-26 02:21:28 +0000 |
commit | 4371f5cbb34f150b68161bdbaed5069f03a0a095 (patch) | |
tree | e616b31eef65d8fe471f8d6aa3c54dda199d4622 | |
parent | 6d2c794adf9e8c68463fa3e6bcd6e66bc57b2f97 (diff) | |
download | org.eclipse.ecf-4371f5cbb34f150b68161bdbaed5069f03a0a095.tar.gz org.eclipse.ecf-4371f5cbb34f150b68161bdbaed5069f03a0a095.tar.xz org.eclipse.ecf-4371f5cbb34f150b68161bdbaed5069f03a0a095.zip |
Code clean-up.
-rw-r--r-- | examples/bundles/org.eclipse.ecf.example.collab.editor/src/org/eclipse/ecf/example/collab/editor/actions/InitiateSharedSessionAction.java | 175 |
1 files changed, 101 insertions, 74 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab.editor/src/org/eclipse/ecf/example/collab/editor/actions/InitiateSharedSessionAction.java b/examples/bundles/org.eclipse.ecf.example.collab.editor/src/org/eclipse/ecf/example/collab/editor/actions/InitiateSharedSessionAction.java index 26d200570..e2076e215 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab.editor/src/org/eclipse/ecf/example/collab/editor/actions/InitiateSharedSessionAction.java +++ b/examples/bundles/org.eclipse.ecf.example.collab.editor/src/org/eclipse/ecf/example/collab/editor/actions/InitiateSharedSessionAction.java @@ -10,6 +10,7 @@ package org.eclipse.ecf.example.collab.editor.actions; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.ecf.example.collab.editor.Activator; @@ -18,17 +19,14 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PartInitException; +import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.editors.text.TextFileDocumentProvider; import org.eclipse.ui.part.FileEditorInput; import org.eclipse.ui.texteditor.AbstractTextEditor; @@ -36,95 +34,124 @@ import org.eclipse.ui.texteditor.DocumentProviderRegistry; import org.eclipse.ui.texteditor.IDocumentProvider; /** - * This action is used to initiate a shared session. + * This action is used to initiate a shared session. * * @author kgilmer - * */ -public class InitiateSharedSessionAction extends Action implements IObjectActionDelegate, IViewActionDelegate { +public class InitiateSharedSessionAction extends Action implements + IObjectActionDelegate { + private IWorkbenchPart targetPart; private IFile file; public void setActivePart(IAction action, IWorkbenchPart targetPart) { - + this.targetPart = targetPart; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ public void run(IAction action) { - final IWorkbench workbench = Activator.getDefault().getWorkbench(); - - if (workbench != null) { - final IWorkbenchPage page = workbench.getWorkbenchWindows()[0].getActivePage(); - - workbench.getDisplay().asyncExec(new Runnable() { - public void run() { - try { - IEditorDescriptor editorDescriptor = workbench.getEditorRegistry().getDefaultEditor(file.getName()); - - //There is no direct file type association. Use the default. - if (editorDescriptor == null) { - editorDescriptor = workbench.getEditorRegistry().findEditor("org.eclipse.ui.DefaultTextEditor"); - } - - if (editorDescriptor == null) { - //Give up, can't get an editor. - Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, "Failed to get editor for file. Aborting shared editing session.", null)); - return; - } - - //Open the default editor for the selected file. - IEditorPart editorPart = page.openEditor(new FileEditorInput(file), editorDescriptor.getId()); - - //Create ECF container and begin sharing. - if (editorPart instanceof AbstractTextEditor) { - IEditorInput editorInput = editorPart.getEditorInput(); - IDocumentProvider dp = DocumentProviderRegistry.getDefault().getDocumentProvider(editorInput); - AbstractTextEditor textEditor = (AbstractTextEditor) editorPart; - - IDocument document = dp.getDocument(editorPart.getEditorInput()); - - if (document != null) { - EditorListener listener = new EditorListener(document, textEditor, true); - document.addDocumentListener(listener); - } else { - if (dp instanceof TextFileDocumentProvider) { - ((TextFileDocumentProvider) dp).connect(editorPart.getEditorInput()); - document = ((TextFileDocumentProvider) dp).getDocument(editorPart.getEditorInput()); - - if (document != null) { - EditorListener listener = new EditorListener(document, textEditor, true); - document.addDocumentListener(listener); - return; - } else { - Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, "Unable to get reference to editor's document. Shared session not created.", null)); - } + targetPart.getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + try { + IWorkbenchWindow window = targetPart.getSite() + .getWorkbenchWindow(); + IWorkbench workbench = window.getWorkbench(); + IEditorDescriptor editorDescriptor = workbench + .getEditorRegistry().getDefaultEditor( + file.getName()); + + // There is no direct file type association. Use the + // default. + if (editorDescriptor == null) { + editorDescriptor = workbench.getEditorRegistry() + .findEditor("org.eclipse.ui.DefaultTextEditor"); + } + + if (editorDescriptor == null) { + // Give up, can't get an editor. + Activator + .getDefault() + .getLog() + .log( + new Status( + IStatus.ERROR, + Activator.PLUGIN_ID, + 0, + "Failed to get editor for file. Aborting shared editing session.", + null)); + return; + } + + // Open the default editor for the selected file. + IEditorPart editorPart = window.getActivePage() + .openEditor(new FileEditorInput(file), + editorDescriptor.getId()); + + // Create ECF container and begin sharing. + if (editorPart instanceof AbstractTextEditor) { + IEditorInput editorInput = editorPart.getEditorInput(); + IDocumentProvider dp = DocumentProviderRegistry + .getDefault().getDocumentProvider(editorInput); + AbstractTextEditor textEditor = (AbstractTextEditor) editorPart; + + IDocument document = dp.getDocument(editorPart + .getEditorInput()); + + if (document != null) { + EditorListener listener = new EditorListener( + document, textEditor, true); + document.addDocumentListener(listener); + } else { + if (dp instanceof TextFileDocumentProvider) { + ((TextFileDocumentProvider) dp) + .connect(editorPart.getEditorInput()); + document = ((TextFileDocumentProvider) dp) + .getDocument(editorPart + .getEditorInput()); + + if (document != null) { + EditorListener listener = new EditorListener( + document, textEditor, true); + document.addDocumentListener(listener); + return; } - - Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, "Unable to get reference to editor's document. Shared session not created.", null)); } - } - } catch (PartInitException e) { - Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, e.getLocalizedMessage(), e)); - } catch (CoreException e) { - Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, e.getLocalizedMessage(), e)); } + Activator + .getDefault() + .getLog() + .log( + new Status( + IStatus.ERROR, + Activator.PLUGIN_ID, + 0, + "Unable to get reference to editor's document. Shared session not created.", + null)); + } + } + } catch (CoreException e) { + Activator.getDefault().getLog().log( + new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, e + .getLocalizedMessage(), e)); } - - }); - } + } + }); } public void selectionChanged(IAction action, ISelection selection) { - if (selection instanceof StructuredSelection) { - StructuredSelection ts = (StructuredSelection) selection; - - file = (IFile) ts.getFirstElement(); + if (selection instanceof IStructuredSelection) { + IStructuredSelection iss = (IStructuredSelection) selection; + Object obj = iss.getFirstElement(); + if (obj instanceof IFile) { + file = (IFile) obj; + } else if (obj instanceof IAdaptable) { + file = (IFile) ((IAdaptable) obj).getAdapter(IFile.class); + } } } - public void init(IViewPart view) { - } - } |