Fix bug to enable html link to be correctly displayed in single sourced code
authorBruno Sinou <bsinou@argeo.org>
Fri, 15 Mar 2013 17:08:12 +0000 (17:08 +0000)
committerBruno Sinou <bsinou@argeo.org>
Fri, 15 Mar 2013 17:08:12 +0000 (17:08 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6147 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/BundleDetailsPage.java

index d3e15f92a189856ab0adc9d6ed10f5a8e326a99e..38f53794161586fab44be6aad46174a4286d1ce1 100644 (file)
@@ -15,6 +15,7 @@
  */
 package org.argeo.slc.client.ui.dist.editors;
 
+import java.net.URL;
 import java.util.List;
 
 import javax.jcr.Node;
@@ -27,6 +28,7 @@ import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.client.ui.dist.DistConstants;
 import org.argeo.slc.client.ui.dist.DistImages;
+import org.argeo.slc.client.ui.dist.utils.AbstractHyperlinkListener;
 import org.argeo.slc.jcr.SlcNames;
 import org.argeo.slc.jcr.SlcTypes;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
@@ -46,10 +48,15 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.browser.IWebBrowser;
+import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
 import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
 import org.eclipse.ui.forms.widgets.ScrolledForm;
 import org.eclipse.ui.forms.widgets.Section;
 
@@ -110,9 +117,8 @@ public class BundleDetailsPage extends FormPage implements SlcNames, SlcTypes {
                createField(details, "Version", SlcNames.SLC_BUNDLE_VERSION);
                createField(details, "Group Id", SlcNames.SLC_GROUP_ID);
                // Single sourcing issue: this does not works with rap
-               // createHyperlink(details, "Licence",
-               // DistConstants.SLC_BUNDLE_LICENCE);
-               createField(details, "Licence", DistConstants.SLC_BUNDLE_LICENCE);
+               createHyperlink(details, "Licence", DistConstants.SLC_BUNDLE_LICENCE);
+               // createField(details, "Licence", DistConstants.SLC_BUNDLE_LICENCE);
 
                createField(details, "Vendor", DistConstants.SLC_BUNDLE_VENDOR);
 
@@ -476,34 +482,34 @@ public class BundleDetailsPage extends FormPage implements SlcNames, SlcTypes {
                return section;
        }
 
-       // private void createHyperlink(Composite parent, String label,
-       // String jcrPropName) throws RepositoryException {
-       // toolkit.createLabel(parent, label, SWT.NONE);
-       // if (currBundle.hasProperty(jcrPropName)) {
-       // final Hyperlink link = toolkit.createHyperlink(parent, currBundle
-       // .getProperty(jcrPropName).getString(), SWT.NONE);
-       // link.addHyperlinkListener(new AbstractHyperlinkListener() {
-       // @Override
-       // public void linkActivated(HyperlinkEvent e) {
-       // try {
-       // IWorkbenchBrowserSupport browserSupport = PlatformUI
-       // .getWorkbench().getBrowserSupport();
-       // IWebBrowser browser = browserSupport
-       // .createBrowser(
-       // IWorkbenchBrowserSupport.LOCATION_BAR
-       // | IWorkbenchBrowserSupport.NAVIGATION_BAR,
-       // "SLC Distribution browser",
-       // "SLC Distribution browser",
-       // "A tool tip");
-       // browser.openURL(new URL(link.getText()));
-       // } catch (Exception ex) {
-       //                                              throw new SlcException("error opening browser", ex); //$NON-NLS-1$
-       // }
-       // }
-       // });
-       // } else
-       // toolkit.createLabel(parent, "", SWT.NONE);
-       // }
+       private void createHyperlink(Composite parent, String label,
+                       String jcrPropName) throws RepositoryException {
+               toolkit.createLabel(parent, label, SWT.NONE);
+               if (currBundle.hasProperty(jcrPropName)) {
+                       final Hyperlink link = toolkit.createHyperlink(parent, currBundle
+                                       .getProperty(jcrPropName).getString(), SWT.NONE);
+                       link.addHyperlinkListener(new AbstractHyperlinkListener() {
+                               @Override
+                               public void linkActivated(HyperlinkEvent e) {
+                                       try {
+                                               IWorkbenchBrowserSupport browserSupport = PlatformUI
+                                                               .getWorkbench().getBrowserSupport();
+                                               IWebBrowser browser = browserSupport
+                                                               .createBrowser(
+                                                                               IWorkbenchBrowserSupport.LOCATION_BAR
+                                                                                               | IWorkbenchBrowserSupport.NAVIGATION_BAR,
+                                                                               "SLC Distribution browser",
+                                                                               "SLC Distribution browser",
+                                                                               "A tool tip");
+                                               browser.openURL(new URL(link.getText()));
+                                       } catch (Exception ex) {
+                                               throw new SlcException("error opening browser", ex); //$NON-NLS-1$
+                                       }
+                               }
+                       });
+               } else
+                       toolkit.createLabel(parent, "", SWT.NONE);
+       }
 
        /** Creates a text area with corresponding maven snippet */
        private void createMavenSnipet(Composite parent) {