Project

General

Profile

Download (5.67 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
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.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.ui.openurl;
12

    
13
import java.net.URI;
14
import java.util.List;
15

    
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;
27

    
28
import eu.etaxonomy.cdm.ext.openurl.OpenUrlReference;
29
import eu.etaxonomy.taxeditor.store.StoreUtil;
30
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
31
import eu.etaxonomy.taxeditor.ui.forms.ImageElement;
32
import eu.etaxonomy.taxeditor.ui.forms.RootElement;
33

    
34
/**
35
 * @author n.hoffmann
36
 * @created Jan 31, 2011
37
 * @version 1.0
38
 */
39
public class OpenUrlReferencePage extends WizardPage implements SelectionListener {
40

    
41
	public static final String NAME = "OpenUrlReferencePage";
42

    
43
	private static final int NEXT = 1;
44
	private static final int PREVIOUS = -1; 
45
	
46
	private ImageElement imageElement;
47
	private RootElement rootElement;
48
	private ScrolledForm scrolledForm;
49
	private Button button_next;
50
	private Button button_previous;
51

    
52
	private OpenUrlReference reference;
53

    
54
	private Composite container;
55

    
56
	private Label label_pageNumber; 
57
	
58
	/**
59
	 * @param pageName
60
	 */
61
	protected OpenUrlReferencePage() {
62
		super(NAME);
63
	}
64

    
65
	/* (non-Javadoc)
66
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
67
	 */
68
	@Override
69
	public void createControl(Composite parent) {
70
		container = getWizard().getFormFactory().createComposite(parent, SWT.NULL);
71
		
72
		container.setLayout(new GridLayout());
73
		container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
74
		
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));
78
		
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));
82
		
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));
86
		
87
		label_pageNumber = getWizard().getFormFactory().createLabel(buttonContainer, "              "); 
88
		label_pageNumber.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false));
89
		
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));
93
		
94
		scrolledForm.getBody().setLayoutData(CdmFormFactory.FILL());
95
		
96
		rootElement = new RootElement(getWizard().getFormFactory(), scrolledForm.getBody());
97
		
98
		imageElement = getWizard().getFormFactory().createImageElement(rootElement, null, SWT.BORDER);
99
		
100
		setControl(container);
101
	}
102

    
103
	public OpenUrlSelectorWizard getWizard(){
104
		return (OpenUrlSelectorWizard) super.getWizard();
105
	}
106

    
107
	/**
108
	 * @param jpegImage
109
	 */
110
	public void displayImage() {
111
		URI imageUri = getWizard().getOpenUrlReferenceImageUri();
112
		try {
113
			imageElement.initImageUri(imageUri);
114
			
115
			IRunnableWithProgress runnable = imageElement.getLoadImageRunnable(new Runnable(){
116
				/* (non-Javadoc)
117
				 * @see java.lang.Runnable#run()
118
				 */
119
				@Override
120
				public void run() {
121
					container.layout();
122
					
123
					configurePageBar();
124
				}
125
			});
126
		
127
			getWizard().getContainer().run(true, false, runnable);
128
		} catch (Exception e) {
129
			StoreUtil.errorDialog("Could not load image", getClass(), e.getMessage()  + ": " + imageUri , e);
130
		}
131
	}
132

    
133
	/**
134
	 * 
135
	 */
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));
142
	}
143

    
144
	/* (non-Javadoc)
145
	 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
146
	 */
147
	@Override
148
	public void widgetSelected(SelectionEvent e) {
149
		if(e.getSource() == button_next){
150
			pageResult(NEXT);
151
		}else{
152
			pageResult(PREVIOUS);
153
		}
154
	}
155
	
156
	private void pageResult(int direction){
157
		try {
158
			List<OpenUrlReference> referenceList = getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction);
159
			OpenUrlReference openUrlReference = referenceList.iterator().next();
160
			getWizard().setOpenUrlReference(openUrlReference);
161
			displayImage();
162
			setErrorMessage(null);
163
		} catch (IllegalArgumentException e) {
164
			setErrorMessage(String.format("Could not page: %s", e.getLocalizedMessage()));
165
		} catch (Exception e) {
166
			StoreUtil.error(getClass(), e);
167
		}
168
	}
169
	
170
	private boolean canPage(int direction){
171
		try{
172
			getWizard().getOpenUrlServiceWrapper().doPage(getWizard().getOpenUrlReference(), direction);
173
		}catch (IllegalArgumentException e) {
174
			return false;
175
		}
176
		return true;
177
	}
178

    
179
	/* (non-Javadoc)
180
	 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
181
	 */
182
	@Override
183
	public void widgetDefaultSelected(SelectionEvent e) {}
184
}
(4-4/7)