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
.ui
.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
.store
.StoreUtil
;
30 import eu
.etaxonomy
.taxeditor
.ui
.element
.ImageElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
32 import eu
.etaxonomy
.taxeditor
.ui
.element
.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 Composite container
;
54 private Label label_pageNumber
;
59 protected OpenUrlReferencePage() {
64 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
67 public void createControl(Composite parent
) {
68 container
= getWizard().getFormFactory().createComposite(parent
, SWT
.NULL
);
70 container
.setLayout(new GridLayout());
71 container
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
73 scrolledForm
= getWizard().getFormFactory().createScrolledForm(container
);
74 scrolledForm
.getBody().setLayout(LayoutConstants
.LAYOUT(3, false));
75 scrolledForm
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, true));
77 Composite buttonContainer
= getWizard().getFormFactory().createComposite(container
);
78 buttonContainer
.setLayout(new GridLayout(3, true));
79 buttonContainer
.setLayoutData(new GridData(SWT
.FILL
, SWT
.BOTTOM
, true, false));
81 button_previous
= getWizard().getFormFactory().createButton(buttonContainer
, "Previous", SWT
.PUSH
);
82 button_previous
.addSelectionListener(this);
83 button_previous
.setLayoutData(new GridData(SWT
.LEFT
, SWT
.BOTTOM
, true, false));
85 label_pageNumber
= getWizard().getFormFactory().createLabel(buttonContainer
, " ");
86 label_pageNumber
.setLayoutData(new GridData(SWT
.CENTER
, SWT
.CENTER
, true, false));
88 button_next
= getWizard().getFormFactory().createButton(buttonContainer
, "Next", SWT
.PUSH
);
89 button_next
.addSelectionListener(this);
90 button_next
.setLayoutData(new GridData(SWT
.RIGHT
, SWT
.BOTTOM
, true, false));
92 scrolledForm
.getBody().setLayoutData(LayoutConstants
.FILL());
94 rootElement
= new RootElement(getWizard().getFormFactory(), scrolledForm
.getBody());
96 imageElement
= getWizard().getFormFactory().createImageElement(rootElement
, null, SWT
.BORDER
);
98 setControl(container
);
101 public OpenUrlSelectorWizard
getWizard(){
102 return (OpenUrlSelectorWizard
) super.getWizard();
108 public void displayImage() {
109 URI imageUri
= getWizard().getOpenUrlReferenceImageUri();
111 imageElement
.initImageUri(imageUri
);
113 IRunnableWithProgress runnable
= imageElement
.getLoadImageRunnable(new Runnable(){
115 * @see java.lang.Runnable#run()
125 getWizard().getContainer().run(true, false, runnable
);
126 } catch (Exception e
) {
127 StoreUtil
.errorDialog("Could not load image", getClass(), e
.getMessage() + ": " + imageUri
, e
);
134 private void configurePageBar() {
135 setTitle(getWizard().getOpenUrlReference().getTitleCache());
136 String pageNumber
= getWizard().getOpenUrlReference().getPages();
137 label_pageNumber
.setText(pageNumber
);
138 button_previous
.setEnabled(canPage(PREVIOUS
));
139 button_next
.setEnabled(canPage(NEXT
));
143 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
146 public void widgetSelected(SelectionEvent e
) {
147 if(e
.getSource() == button_next
){
150 pageResult(PREVIOUS
);
154 private void pageResult(int direction
){
156 List
<OpenUrlReference
> referenceList
= getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
157 OpenUrlReference openUrlReference
= referenceList
.iterator().next();
158 getWizard().setOpenUrlReference(openUrlReference
);
160 setErrorMessage(null);
161 } catch (IllegalArgumentException e
) {
162 setErrorMessage(String
.format("Could not page: %s", e
.getLocalizedMessage()));
163 } catch (Exception e
) {
164 StoreUtil
.error(getClass(), e
);
168 private boolean canPage(int direction
){
170 getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction
);
171 }catch (IllegalArgumentException e
) {
178 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
181 public void widgetDefaultSelected(SelectionEvent e
) {}