Add button to open URLs in external browser (#5062) attic/branches/taxeditor/ticket#5062/25196
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 22 Jul 2015 14:03:18 +0000 (16:03 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 22 Jul 2015 14:03:18 +0000 (16:03 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java

index 336f39eb8bb75ba4d4f52a1a6ab6a1c9e9d67020..66f714a87147fcdd77112130eec42e3f64b3cf35 100644 (file)
@@ -160,6 +160,7 @@ public class ImageResources {
 
     public static final String CHARACTER_DATA_DERIVATE = "character_data_derivate";
 
 
     public static final String CHARACTER_DATA_DERIVATE = "character_data_derivate";
 
+    public static final String WEB = "web";
 
 
        /***************************************************************************
 
 
        /***************************************************************************
@@ -381,6 +382,9 @@ public class ImageResources {
                registerImage(registry, CHARACTER_DATA_DERIVATE,
                        "character_data_derivate-16x16-32.png");
 
                registerImage(registry, CHARACTER_DATA_DERIVATE,
                        "character_data_derivate-16x16-32.png");
 
+               registerImage(registry, WEB,
+                       "web.gif");
+
        }
 
        private void registerImage(ImageRegistry registry, String key,
        }
 
        private void registerImage(ImageRegistry registry, String key,
index d5f7b310542dc1212a42e43036f53a09078d8417..57092b726c31a456325d0903f934d431694e981e 100644 (file)
@@ -9,6 +9,7 @@ import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
@@ -39,6 +40,11 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
     /** Constant <code>SINGLE=-1</code> */
     public static final int SINGLE = -1;
 
     /** Constant <code>SINGLE=-1</code> */
     public static final int SINGLE = -1;
 
+    protected TextWithLabelElement(CdmFormFactory formFactory, ICdmFormElement parentElement, boolean isMultiLine) {
+        super(formFactory, parentElement);
+        this.isMultiLine = isMultiLine;
+    }
+
     protected TextWithLabelElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString,
             String initialText, Integer textHeight, int style) {
         this(formFactory, parentElement, labelString, initialText, textHeight, null, false, style);
     protected TextWithLabelElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString,
             String initialText, Integer textHeight, int style) {
         this(formFactory, parentElement, labelString, initialText, textHeight, null, false, style);
@@ -82,8 +88,23 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
 
         this.isMultiLine = isMultiLine;
 
 
         this.isMultiLine = isMultiLine;
 
+        init(formFactory, labelString, initialText, textHeight, textLimit, isMultiLine, style, getLayoutComposite());
+    }
+
+    /**
+     * @param formFactory
+     * @param labelString
+     * @param initialText
+     * @param textHeight
+     * @param textLimit
+     * @param isMultiLine
+     * @param style
+     * @param layoutComposite
+     */
+    protected void init(CdmFormFactory formFactory, String labelString, String initialText, Integer textHeight,
+            Integer textLimit, boolean isMultiLine, int style, Composite layoutComposite) {
         if (labelString != null) {
         if (labelString != null) {
-            label = formFactory.createLabel(getLayoutComposite(), CdmUtils.Nz(labelString), SWT.NULL);
+            label = formFactory.createLabel(layoutComposite, CdmUtils.Nz(labelString), SWT.NULL);
             addControl(label);
             if(isMultiLine){
                 label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             addControl(label);
             if(isMultiLine){
                 label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
@@ -102,7 +123,7 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
             combinedStyle = combinedStyle | SWT.WRAP;
         }
 
             combinedStyle = combinedStyle | SWT.WRAP;
         }
 
-        text = formFactory.createText(getLayoutComposite(), "", combinedStyle);
+        text = formFactory.createText(layoutComposite, "", combinedStyle);
         text.setTextLimit(textLimit!=null?textLimit:Text.LIMIT);
 
         addControl(text);
         text.setTextLimit(textLimit!=null?textLimit:Text.LIMIT);
 
         addControl(text);
@@ -133,6 +154,7 @@ public class TextWithLabelElement extends AbstractCdmFormElement implements Modi
         }
         else{
             layoutData = LayoutConstants.FILL();
         }
         else{
             layoutData = LayoutConstants.FILL();
+            layoutData.grabHorizontal = true;
         }
         if (textHeight != null && textHeight > 0) {
             (layoutData).heightHint = textHeight;
         }
         if (textHeight != null && textHeight > 0) {
             (layoutData).heightHint = textHeight;
index e7ef5ec0b227a867e3d6522b53d4c36cf154acef..e42490f5f03495abb89b6400614e2d6dc5310a7c 100644 (file)
 
 package eu.etaxonomy.taxeditor.ui.element;
 
 
 package eu.etaxonomy.taxeditor.ui.element;
 
+import java.net.MalformedURLException;
 import java.net.URI;
 
 import org.eclipse.swt.SWT;
 import java.net.URI;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+
+import eu.etaxonomy.taxeditor.model.ImageResources;
 
 /**
  * @author n.hoffmann
 
 /**
  * @author n.hoffmann
@@ -24,14 +34,44 @@ import org.eclipse.swt.widgets.Label;
 public class UriWithLabelElement extends TextWithLabelElement {
 
     private final Label labelException;
 public class UriWithLabelElement extends TextWithLabelElement {
 
     private final Label labelException;
+    private final Button btnOpenBrowser;
 
        protected UriWithLabelElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, String labelString,
                        URI initialUri, Integer textHeight, int style) {
 
        protected UriWithLabelElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, String labelString,
                        URI initialUri, Integer textHeight, int style) {
-               super(formFactory, parentElement, labelString, null, textHeight, style);
+               super(formFactory, parentElement, false);
+
+        Composite layoutComposite = formFactory.createComposite(getLayoutComposite());
+        layoutComposite.setLayout(LayoutConstants.LAYOUT(3, false));
+        layoutComposite.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        init(formFactory, labelString, null, textHeight, null, false, style, layoutComposite);
+
+
+               btnOpenBrowser = formFactory.createButton(layoutComposite, "", SWT.NONE);
+               btnOpenBrowser.setImage(ImageResources.getImage(ImageResources.ADD_CHILD_TAXON_ICON));
+               TableWrapData layoutData = LayoutConstants.RIGHT();
+               layoutData.grabHorizontal = false;
+               btnOpenBrowser.setLayoutData(layoutData);
+               btnOpenBrowser.addSelectionListener(new SelectionAdapter() {
+                   @Override
+                   public void widgetSelected(SelectionEvent e) {
+                       URI uri = getUri();
+                       if(uri!=null){
+                           try {
+                        PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(uri.toURL());
+                    } catch (PartInitException e1) {
+                        // TODO Auto-generated catch block
+                        e1.printStackTrace();
+                    } catch (MalformedURLException e1) {
+                        // TODO Auto-generated catch block
+                        e1.printStackTrace();
+                    }
+                       }
+                   }
+        });
 
 
-               labelException = formFactory.createLabel(getLayoutComposite(), "", SWT.WRAP);
-               labelException.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               labelException = formFactory.createLabel(layoutComposite, "", SWT.WRAP);
+               labelException.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(3, 1));
                addControl(labelException);
                setUri(initialUri);
        }
                addControl(labelException);
                setUri(initialUri);
        }