3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.forms
.openurl
;
14 import java
.util
.List
;
16 import org
.eclipse
.jface
.operation
.IRunnableWithProgress
;
17 import org
.eclipse
.jface
.wizard
.WizardPage
;
18 import org
.eclipse
.swt
.SWT
;
19 import org
.eclipse
.swt
.events
.SelectionEvent
;
20 import org
.eclipse
.swt
.events
.SelectionListener
;
21 import org
.eclipse
.swt
.layout
.GridData
;
22 import org
.eclipse
.swt
.layout
.GridLayout
;
23 import org
.eclipse
.swt
.widgets
.Button
;
24 import org
.eclipse
.swt
.widgets
.Composite
;
25 import org
.eclipse
.swt
.widgets
.Label
;
26 import org
.eclipse
.ui
.forms
.widgets
.ScrolledForm
;
28 import eu
.etaxonomy
.cdm
.ext
.openurl
.OpenUrlReference
;
29 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
30 import eu
.etaxonomy
.taxeditor
.forms
.CdmFormFactory
;
31 import eu
.etaxonomy
.taxeditor
.forms
.ImageElement
;
32 import eu
.etaxonomy
.taxeditor
.forms
.RootElement
;
36 * @created Jan 31, 2011
39 public class OpenUrlReferencePage
extends WizardPage
implements SelectionListener
{
41 public static final String NAME
= "OpenUrlReferencePage";
43 private static final int NEXT
= 1;
44 private static final int PREVIOUS
= -1;
46 private ImageElement imageElement
;
47 private RootElement rootElement
;
48 private ScrolledForm scrolledForm
;
49 private Button button_next
;
50 private Button button_previous
;
52 private OpenUrlReference reference
;
54 private Composite container
;
56 private Label label_pageNumber
;
61 protected OpenUrlReferencePage() {
66 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
69 public void createControl(Composite parent
) {
70 container
= getWizard().getFormFactory().createComposite(parent
, SWT
.NULL
);
72 container
.setLayout(new GridLayout());
73 container
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
75 scrolledForm
= getWizard().getFormFactory().createScrolledForm(container
);
76 scrolledForm
.getBody().setLayout(CdmFormFactory
.LAYOUT(3, false));
77 scrolledForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, true));
79 Composite buttonContainer
= getWizard().getFormFactory().createComposite(container
);
80 buttonContainer
.setLayout(new GridLayout(3, true));
81 buttonContainer
.setLayoutData(new GridData(SWT
.FILL
, SWT
.BOTTOM
, true, false));
83 button_previous
= getWizard().getFormFactory().createButton(buttonContainer
, "Previous", SWT
.PUSH
);
84 button_previous
.addSelectionListener(this);
85 button_previous
.setLayoutData(new GridData(SWT
.LEFT
, SWT
.BOTTOM
, true, false));
87 label_pageNumber
= getWizard().getFormFactory().createLabel(buttonContainer
, " ");
88 label_pageNumber
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false));
90 button_next
= getWizard().getFormFactory().createButton(buttonContainer
, "Next", SWT
.PUSH
);
91 button_next
.addSelectionListener(this);
92 button_next
.setLayoutData(new GridData(SWT
.RIGHT
, SWT
.BOTTOM
, true, false));
94 scrolledForm
.getBody().setLayoutData(CdmFormFactory
.FILL());
96 rootElement
= new RootElement(getWizard().getFormFactory(), scrolledForm
.getBody());
98 imageElement
= getWizard().getFormFactory().createImageElement(rootElement
, null, SWT
.BORDER
);
100 setControl(container
);
103 public OpenUrlSelectorWizard
getWizard(){
104 return (OpenUrlSelectorWizard
) super.getWizard();
110 public void displayImage() {
111 URI imageUri
= getWizard().getOpenUrlReferenceImageUri();
112 imageElement
.setImageUri(imageUri
);
114 IRunnableWithProgress runnable
= imageElement
.getLoadImageRunnable(new Runnable(){
116 * @see java.lang.Runnable#run()
127 getWizard().getContainer().run(true, false, runnable
);
128 } catch (Exception e
) {
129 EditorUtil
.errorDialog("Could not load image", getClass(), e
.getMessage() + ": " + imageUri
, e
);
136 private void configurePageBar() {
137 setTitle(getWizard().getOpenUrlReference().getTitleCache());
138 String pageNumber
= getWizard().getOpenUrlReference().getPages();
139 label_pageNumber
.setText(pageNumber
);
140 button_previous
.setEnabled(canPage(PREVIOUS
));
141 button_next
.setEnabled(canPage(NEXT
));
145 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
148 public void widgetSelected(SelectionEvent e
) {
149 if(e
.getSource() == button_next
){
152 pageResult(PREVIOUS
);
156 private void pageResult(int direction
){
158 List
<OpenUrlReference
> referenceList
= getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
159 OpenUrlReference openUrlReference
= referenceList
.iterator().next();
160 getWizard().setOpenUrlReference(openUrlReference
);
162 setErrorMessage(null);
163 } catch (IllegalArgumentException e
) {
164 setErrorMessage(String
.format("Could not page: %s", e
.getLocalizedMessage()));
165 } catch (Exception e
) {
166 EditorUtil
.error(getClass(), e
);
170 private boolean canPage(int direction
){
172 getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
173 }catch (IllegalArgumentException e
) {
180 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
183 public void widgetDefaultSelected(SelectionEvent e
) {}