2 * Copyright (C) 2018 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.ui
.element
;
11 import java
.io
.IOException
;
14 import org
.eclipse
.core
.runtime
.IStatus
;
15 import org
.eclipse
.core
.runtime
.Status
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.events
.SelectionAdapter
;
18 import org
.eclipse
.swt
.events
.SelectionEvent
;
19 import org
.eclipse
.swt
.widgets
.Button
;
20 import org
.eclipse
.swt
.widgets
.Composite
;
22 import eu
.etaxonomy
.cdm
.common
.DOI
;
23 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
24 import eu
.etaxonomy
.taxeditor
.model
.ImageResources
;
25 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
26 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
27 import eu
.etaxonomy
.taxeditor
.workbench
.WorkbenchUtility
;
34 public class DoiWithLabelElement
extends AbstractUriWithExceptionLabelElement
<DOI
> {
36 private Button btnOpenBrowser
;
40 * @param parentElement
42 * @param initialObject
46 protected DoiWithLabelElement(CdmFormFactory formFactory
, ICdmFormElement parentElement
, String labelString
,
47 DOI initialObject
, Integer textHeight
, int style
) {
48 super(formFactory
, parentElement
, labelString
, initialObject
, textHeight
, style
);
49 exceptionString
= Messages
.DoiWithLabelElement_DOI_NOT_SAVED
;
56 public void setParsedText(DOI object
) {
58 super.setText(object
.toString());
67 protected DOI
getParsedText() throws Exception
{
68 String doiText
= super.getText();
70 return DOI
.fromString(super.getText());
76 protected void init(CdmFormFactory formFactory
, String labelString
, DOI initialObject
, Integer textHeight
, int style
) {
79 initLabel(formFactory
, labelString
, false, getLayoutComposite());
83 Composite textAndButton
= formFactory
.createComposite(getLayoutComposite(), style
);
84 addControl(textAndButton
);
85 textAndButton
.setLayout(LayoutConstants
.LAYOUT(2, false));
86 textAndButton
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY());
88 initText(formFactory
, null, textHeight
, null, false, style
, textAndButton
);
89 setParsedText(initialObject
);
91 btnOpenBrowser
= formFactory
.createButton(textAndButton
, "", SWT
.NONE
); //$NON-NLS-1$
92 btnOpenBrowser
.setImage(ImageResources
.getImage(ImageResources
.WEB
));
93 btnOpenBrowser
.setToolTipText(Messages
.UriWithLabelElement_OPEN_EXTERNAL_BROWSER
);
94 btnOpenBrowser
.addSelectionListener(new SelectionAdapter() {
96 public void widgetSelected(SelectionEvent e
) {
97 String errorTitle
= Messages
.UriWithLabelElement_INVALID_URL
;
98 String errorText
= Messages
.UriWithLabelElement_COULD_NOT_OPEN_BROWSER
;
100 DOI doi
= parseText();
103 WorkbenchUtility
.openWebpage(new URL(doi
.asURI()));
104 } catch (IOException pie
) {
105 MessagingUtils
.informationDialog(errorTitle
, new Status(IStatus
.WARNING
, TaxeditorStorePlugin
.PLUGIN_ID
, errorText
, pie
));
106 } catch (IllegalArgumentException iae
) {
107 MessagingUtils
.informationDialog(errorTitle
, new Status(IStatus
.WARNING
, TaxeditorStorePlugin
.PLUGIN_ID
, errorText
, iae
));
111 MessagingUtils
.informationDialog(errorTitle
, new Status(IStatus
.WARNING
, TaxeditorStorePlugin
.PLUGIN_ID
, errorText
, null));
115 btnOpenBrowser
.setLayoutData(LayoutConstants
.RIGHT());
116 initExceptionLabel(getLayoutComposite(), formFactory
);