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
, " ");
89 button_next
= getWizard().getFormFactory().createButton(buttonContainer
, "Next", SWT
.PUSH
);
90 button_next
.addSelectionListener(this);
91 button_next
.setLayoutData(new GridData(SWT
.RIGHT
, SWT
.BOTTOM
, true, false));
93 scrolledForm
.getBody().setLayoutData(CdmFormFactory
.FILL());
95 rootElement
= new RootElement(getWizard().getFormFactory(), scrolledForm
.getBody());
97 imageElement
= getWizard().getFormFactory().createImageElement(rootElement
, null, SWT
.BORDER
);
99 setControl(container
);
102 public OpenUrlSelectorWizard
getWizard(){
103 return (OpenUrlSelectorWizard
) super.getWizard();
109 public void displayImage() {
110 URI imageUri
= getWizard().getOpenUrlReferenceImageUri();
111 imageElement
.setImageUri(imageUri
);
113 IRunnableWithProgress runnable
= imageElement
.getLoadImageRunnable(new Runnable(){
115 * @see java.lang.Runnable#run()
126 getWizard().getContainer().run(true, false, runnable
);
127 } catch (Exception e
) {
128 EditorUtil
.errorDialog("Could not load image", getClass(), e
.getMessage() + ": " + imageUri
, e
);
135 private void configurePageBar() {
136 setTitle(getWizard().getOpenUrlReference().getTitleCache());
137 String pageNumber
= getWizard().getOpenUrlReference().getPages();
138 label_pageNumber
.setText(pageNumber
);
139 button_previous
.setEnabled(canPage(PREVIOUS
));
140 button_next
.setEnabled(canPage(NEXT
));
144 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
147 public void widgetSelected(SelectionEvent e
) {
148 if(e
.getSource() == button_next
){
151 pageResult(PREVIOUS
);
155 private void pageResult(int direction
){
157 List
<OpenUrlReference
> referenceList
= getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
158 OpenUrlReference openUrlReference
= referenceList
.iterator().next();
159 getWizard().setOpenUrlReference(openUrlReference
);
161 setErrorMessage(null);
162 } catch (IllegalArgumentException e
) {
163 setErrorMessage(String
.format("Could not page: %s", e
.getLocalizedMessage()));
164 } catch (Exception e
) {
165 EditorUtil
.error(getClass(), e
);
169 private boolean canPage(int direction
){
171 getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
172 }catch (IllegalArgumentException e
) {
179 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
182 public void widgetDefaultSelected(SelectionEvent e
) {}