Project

General

Profile

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

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

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

    
15
import org.eclipse.jface.operation.IRunnableWithProgress;
16
import org.eclipse.jface.wizard.WizardPage;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.events.SelectionEvent;
19
import org.eclipse.swt.events.SelectionListener;
20
import org.eclipse.swt.layout.GridData;
21
import org.eclipse.swt.layout.GridLayout;
22
import org.eclipse.swt.widgets.Button;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Label;
25
import org.eclipse.ui.forms.widgets.ScrolledForm;
26

    
27
import eu.etaxonomy.cdm.ext.openurl.OpenUrlReference;
28
import eu.etaxonomy.taxeditor.model.MessagingUtils;
29
import eu.etaxonomy.taxeditor.ui.element.ImageElement;
30
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
31
import eu.etaxonomy.taxeditor.ui.element.RootElement;
32

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

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

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

    
51
	private Composite container;
52

    
53
	private Label label_pageNumber; 
54
	
55
	/**
56
	 * @param pageName
57
	 */
58
	protected OpenUrlReferencePage() {
59
		super(NAME);
60
	}
61

    
62
	/* (non-Javadoc)
63
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
64
	 */
65
	@Override
66
	public void createControl(Composite parent) {
67
		container = getWizard().getFormFactory().createComposite(parent, SWT.NULL);
68
		
69
		container.setLayout(new GridLayout());
70
		container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
71
		
72
		scrolledForm = getWizard().getFormFactory().createScrolledForm(container);
73
		scrolledForm.getBody().setLayout(LayoutConstants.LAYOUT(3, false));
74
		scrolledForm.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
75
		
76
		Composite buttonContainer = getWizard().getFormFactory().createComposite(container);
77
		buttonContainer.setLayout(new GridLayout(3, true));
78
		buttonContainer.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false));
79
		
80
		button_previous = getWizard().getFormFactory().createButton(buttonContainer, "Previous", SWT.PUSH);
81
		button_previous.addSelectionListener(this);
82
		button_previous.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, true, false));
83
		
84
		label_pageNumber = getWizard().getFormFactory().createLabel(buttonContainer, "              "); 
85
		label_pageNumber.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false));
86
		
87
		button_next = getWizard().getFormFactory().createButton(buttonContainer, "Next", SWT.PUSH);
88
		button_next.addSelectionListener(this);
89
		button_next.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, true, false));
90
		
91
		scrolledForm.getBody().setLayoutData(LayoutConstants.FILL());
92
		
93
		rootElement = new RootElement(getWizard().getFormFactory(), scrolledForm.getBody());
94
		
95
		imageElement = getWizard().getFormFactory().createImageElement(rootElement, null, SWT.BORDER);
96
		
97
		setControl(container);
98
	}
99

    
100
	public OpenUrlSelectorWizard getWizard(){
101
		return (OpenUrlSelectorWizard) super.getWizard();
102
	}
103

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

    
130
	/**
131
	 * 
132
	 */
133
	private void configurePageBar() {
134
		setTitle(getWizard().getOpenUrlReference().getTitleCache());
135
		String pageNumber = getWizard().getOpenUrlReference().getPages();
136
		label_pageNumber.setText(pageNumber);
137
		button_previous.setEnabled(canPage(PREVIOUS));
138
		button_next.setEnabled(canPage(NEXT));
139
	}
140

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

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