Project

General

Profile

Download (5.92 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.printpublisher.wizard;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.eclipse.jface.viewers.ISelectionChangedListener;
17
import org.eclipse.jface.viewers.IStructuredContentProvider;
18
import org.eclipse.jface.viewers.IStructuredSelection;
19
import org.eclipse.jface.viewers.LabelProvider;
20
import org.eclipse.jface.viewers.ListViewer;
21
import org.eclipse.jface.viewers.SelectionChangedEvent;
22
import org.eclipse.jface.viewers.StructuredSelection;
23
import org.eclipse.jface.viewers.Viewer;
24
import org.eclipse.swt.SWT;
25
import org.eclipse.swt.events.SelectionAdapter;
26
import org.eclipse.swt.events.SelectionEvent;
27
import org.eclipse.swt.layout.GridData;
28
import org.eclipse.swt.layout.GridLayout;
29
import org.eclipse.swt.widgets.Button;
30
import org.eclipse.swt.widgets.Composite;
31
import org.jdom.Element;
32

    
33
import eu.etaxonomy.cdm.print.IXMLEntityFactory;
34
import eu.etaxonomy.cdm.print.XMLHelper;
35

    
36
/**
37
 * <p>SelectFeatureTreeWizardPage class.</p>
38
 *
39
 * @author n.hoffmann
40
 * @created Aug 6, 2010
41
 * @version 1.0
42
 */
43
public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage
44
	implements ISelectionChangedListener, IHasPersistableSettings{
45

    
46
	private static final String DIALOG_SETTING_FEATURE_TREE_UUID = "dialogSettingFeatureTreeUuid";
47
	private ListViewer viewer;
48

    
49
	/**
50
	 * <p>Constructor for SelectFeatureTreeWizardPage.</p>
51
	 *
52
	 * @param pageName a {@link java.lang.String} object.
53
	 */
54
	protected SelectFeatureTreeWizardPage(String pageName) {
55
		super(pageName);
56
		setTitle("Select Feature Tree");
57
	}
58

    
59
	/* (non-Javadoc)
60
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
61
	 */
62
	/** {@inheritDoc} */
63
	@Override
64
	public void createControl(Composite parent) {
65
		setPageComplete(false);
66

    
67
		Composite composite = new Composite(parent, SWT.NULL);
68
		composite.setLayout(new GridLayout());
69

    
70
		viewer = new ListViewer(composite);
71
		viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
72
		viewer.setContentProvider(new FeatureTreeContentProvider());
73
		viewer.setLabelProvider(new FeatureTreeLabelProvider());
74

    
75
		viewer.addSelectionChangedListener(this);
76

    
77
		// offer feature tree editor when local
78
		if(getConfigurator().isLocal()){
79
			final Button button_openFeatureTree = new Button(composite, SWT.PUSH);
80
			button_openFeatureTree.setText("Open FeatureTree Editor");
81

    
82
			button_openFeatureTree.addSelectionListener(new SelectionAdapter() {
83
				@Override
84
				public void widgetSelected(SelectionEvent e) {
85
				    //FIXME: this wizard page has been removed by implementing #6694
86
				    //If print publishing is used again the selection has to be re-implemented
87

    
88
//					FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
89
//					WizardDialog dialog = new WizardDialog(getShell(), featureTreeEditorDialog);
90
//
91
//					if(dialog.open() == IStatus.OK){
92
//						refresh();
93
//					}
94
				}
95
			});
96
		}
97

    
98
		// when using a local factory we can set the input right here
99
		if(getConfigurator() != null && getConfigurator().isLocal()){
100
			refresh();
101
		}
102

    
103
		loadSettings();
104

    
105
		setControl(composite);
106
	}
107

    
108
	@Override
109
	public void loadSettings() {
110
		String featureTreeUuidString = getDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID);
111

    
112
		if(featureTreeUuidString != null){
113
			setSelectedFeatureTree(featureTreeUuidString);
114

    
115
		}
116
	}
117

    
118
	/** {@inheritDoc} */
119
	@Override
120
	public void selectionChanged(SelectionChangedEvent event) {
121
		IStructuredSelection selection = (IStructuredSelection) event.getSelection();
122

    
123
		if(selection.isEmpty()){
124
			return;
125
		}
126

    
127
		setPageComplete(true);
128

    
129

    
130
		Element featureTreeElement = (Element) selection.getFirstElement();
131

    
132
		UUID featureTreeUuid = XMLHelper.getUuid(featureTreeElement);
133

    
134
		setFeatureTree(featureTreeUuid.toString());
135
	}
136

    
137
	private void setSelectedFeatureTree(String featureTreeUuid){
138
		List<Element> input = (ArrayList<Element>) viewer.getInput();
139

    
140
		for(Element element : input){
141
			UUID uuid = XMLHelper.getUuid(element);
142
			if(uuid.toString().equals(featureTreeUuid)){
143
				viewer.setSelection(new StructuredSelection(element));
144
				break;
145
			}
146
		}
147
	}
148

    
149
	public void setFeatureTree(String featureTreeUuidString){
150
		putDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID, featureTreeUuidString);
151
		UUID featureTreeUuid = UUID.fromString(featureTreeUuidString);
152
		getConfigurator().setFeatureTree(featureTreeUuid);
153
		setPageComplete(featureTreeUuid != null);
154
	}
155

    
156
	/** {@inheritDoc} */
157
	@Override
158
	public boolean canFlipToNextPage() {
159
		return isPageComplete();
160
	}
161

    
162
	/**
163
	 * Refreshes the input of the viewer
164
	 */
165
	public void refresh() {
166
		IXMLEntityFactory factory = getConfigurator().getFactory();
167

    
168
		List<Element> featureTrees = factory.getFeatureTrees();
169
		List<Element> realFeatureTrees = new ArrayList<Element>();
170
		for(Element featureTree : featureTrees){
171
			if(XMLHelper.getClazz(featureTree).equals("FeatureTree")){
172
				realFeatureTrees.add(featureTree);
173
			}
174
		}
175
		viewer.setInput(realFeatureTrees);
176
	}
177

    
178
	private class FeatureTreeContentProvider implements IStructuredContentProvider {
179

    
180
		@Override
181
		public void dispose() {}
182

    
183
		@Override
184
		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
185

    
186
		@Override
187
		public Object[] getElements(Object inputElement) {
188
			if(inputElement instanceof List){
189
				return ((List) inputElement).toArray();
190
			}
191
			return new Object[0];
192
		}
193

    
194
	}
195

    
196
	private class FeatureTreeLabelProvider extends LabelProvider {
197

    
198
		/*
199
		 * (non-Javadoc)
200
		 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
201
		 */
202
		@Override
203
		public String getText(Object element) {
204
			if(element instanceof Element){
205
				Element xmlElement = (Element) element;
206
				return XMLHelper.getTitleCache(xmlElement);
207
			}
208
			return "no title cache";
209
		}
210

    
211
	}
212
}
(10-10/14)