From 1eeb0dc2676045ffa4b86929a63bc87c92fba3e7 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 8 Nov 2007 00:21:20 +0000 Subject: Added hyperlink detector for Collaboration Example. --- .../plugin.properties | 4 +- .../org.eclipse.ecf.example.collab/plugin.xml | 11 ++ .../collab/share/EclipseCollabHyperlink.java | 91 +++++++++++++ .../share/EclipseCollabHyperlinkDetector.java | 150 +++++++++++++++++++++ .../collab/share/EclipseCollabSharedObject.java | 8 +- 5 files changed, 256 insertions(+), 8 deletions(-) create mode 100644 examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlink.java create mode 100644 examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlinkDetector.java (limited to 'examples') diff --git a/examples/bundles/org.eclipse.ecf.example.collab/plugin.properties b/examples/bundles/org.eclipse.ecf.example.collab/plugin.properties index 249136a56..85f428495 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/plugin.properties +++ b/examples/bundles/org.eclipse.ecf.example.collab/plugin.properties @@ -12,4 +12,6 @@ plugin.provider = Eclipse.org perspective.name = Communications connectionToProvider.name = Connect to Provider -connectionToProvider.tooltip = Connect to Provider \ No newline at end of file +connectionToProvider.tooltip = Connect to Provider + +ShareHyperlinkDetector=Collaboration Example \ No newline at end of file diff --git a/examples/bundles/org.eclipse.ecf.example.collab/plugin.xml b/examples/bundles/org.eclipse.ecf.example.collab/plugin.xml index 1c892bc39..02a97ad75 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/plugin.xml +++ b/examples/bundles/org.eclipse.ecf.example.collab/plugin.xml @@ -170,4 +170,15 @@ + + + + + diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlink.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlink.java new file mode 100644 index 000000000..3a35c167f --- /dev/null +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlink.java @@ -0,0 +1,91 @@ +/**************************************************************************** + * Copyright (c) 2007 Composent, Inc. 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: + * Composent, Inc. - initial API and implementation + *****************************************************************************/ + +package org.eclipse.ecf.example.collab.share; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Path; +import org.eclipse.ecf.example.collab.share.EclipseCollabHyperlinkDetector.Selection; +import org.eclipse.ecf.internal.example.collab.ClientPlugin; +import org.eclipse.ecf.internal.example.collab.ui.EditorHelper; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.osgi.util.NLS; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; + +/** + * + */ +public class EclipseCollabHyperlink implements IHyperlink { + + private final IRegion region; + + private final String fileName; + + private final Selection selection; + + /** + * @param detectedRegion + * @param fileName + * @param selection + */ + public EclipseCollabHyperlink(IRegion detectedRegion, String fileName, Selection selection) { + this.region = detectedRegion; + this.fileName = fileName; + this.selection = selection; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkRegion() + */ + public IRegion getHyperlinkRegion() { + return region; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText() + */ + public String getHyperlinkText() { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel() + */ + public String getTypeLabel() { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.text.hyperlink.IHyperlink#open() + */ + public void open() { + final IWorkbench wb = PlatformUI.getWorkbench(); + final IWorkbenchWindow ww = wb.getActiveWorkbenchWindow(); + final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileName)); + if (file != null) { + final EditorHelper eh = new EditorHelper(ww); + try { + eh.openAndSelectForFile(file, (selection == null) ? 0 : selection.getStart(), (selection == null) ? 0 : (selection.getEnd() - selection.getStart())); + } catch (final Exception e) { + ClientPlugin.log("Exception in openEditorAndSelectForFile", e); + } + } else { + MessageDialog.openInformation(ww.getShell(), "Open Editor Failed", NLS.bind("Cannot open editor for {0}. It was not found in your workspace.", fileName)); + } + + } + +} diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlinkDetector.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlinkDetector.java new file mode 100644 index 000000000..2ac8499e3 --- /dev/null +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabHyperlinkDetector.java @@ -0,0 +1,150 @@ +/**************************************************************************** + * Copyright (c) 2007 Composent, Inc. 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: + * Composent, Inc. - initial API and implementation + *****************************************************************************/ +package org.eclipse.ecf.example.collab.share; + +import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject.SharedMarker; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector; +import org.eclipse.jface.text.hyperlink.IHyperlink; + +public class EclipseCollabHyperlinkDetector extends AbstractHyperlinkDetector { + + public static final String SHARE_FILE_HYPERLINK_END = "/>"; + public static final String SHARE_FILE_HYPERLINK_START = " 0) { + se.append(EclipseCollabHyperlinkDetector.SHARE_FILE_HYPERLINK_SELECTION); + se.append(start).append("-").append(start + length); + } + } + se.append(EclipseCollabHyperlinkDetector.SHARE_FILE_HYPERLINK_END); + return se.toString(); + } + +} diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java index 5ec65403c..b32f65494 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java @@ -835,13 +835,7 @@ public class EclipseCollabSharedObject extends GenericSharedObject implements Li } protected String createDisplayStringForEditorOpen(String resourceName, SharedMarker marker) { - final StringBuffer se = new StringBuffer((marker == null) ? ""); - return se.toString(); + return EclipseCollabHyperlinkDetector.createDisplayStringForEditorOpen(resourceName, marker); } protected IFile getLocalFileForRemote(String file) { -- cgit v1.2.3