2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.printpublisher
.wizard
;
11 import java
.util
.ArrayList
;
12 import java
.util
.List
;
13 import java
.util
.UUID
;
15 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
16 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
17 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
18 import org
.eclipse
.jface
.viewers
.LabelProvider
;
19 import org
.eclipse
.jface
.viewers
.ListViewer
;
20 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
21 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.events
.SelectionAdapter
;
25 import org
.eclipse
.swt
.events
.SelectionEvent
;
26 import org
.eclipse
.swt
.layout
.GridData
;
27 import org
.eclipse
.swt
.layout
.GridLayout
;
28 import org
.eclipse
.swt
.widgets
.Button
;
29 import org
.eclipse
.swt
.widgets
.Composite
;
30 import org
.jdom
.Element
;
32 import eu
.etaxonomy
.cdm
.print
.IXMLEntityFactory
;
33 import eu
.etaxonomy
.cdm
.print
.XMLHelper
;
36 * <p>SelectFeatureTreeWizardPage class.</p>
39 * @created Aug 6, 2010
41 public class SelectFeatureTreeWizardPage
extends AbstractPublishWizardPage
42 implements ISelectionChangedListener
, IHasPersistableSettings
{
44 private static final String DIALOG_SETTING_FEATURE_TREE_UUID
= "dialogSettingFeatureTreeUuid";
45 private ListViewer viewer
;
47 protected SelectFeatureTreeWizardPage(String pageName
) {
49 setTitle("Select Feature Tree");
53 public void createControl(Composite parent
) {
54 setPageComplete(false);
56 Composite composite
= new Composite(parent
, SWT
.NULL
);
57 composite
.setLayout(new GridLayout());
59 viewer
= new ListViewer(composite
);
60 viewer
.getControl().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
61 viewer
.setContentProvider(new TermTreeContentProvider());
62 viewer
.setLabelProvider(new TermTreeLabelProvider());
64 viewer
.addSelectionChangedListener(this);
66 // offer feature tree editor when local
67 if(getConfigurator().isLocal()){
68 final Button button_openFeatureTree
= new Button(composite
, SWT
.PUSH
);
69 button_openFeatureTree
.setText("Open FeatureTree Editor");
71 button_openFeatureTree
.addSelectionListener(new SelectionAdapter() {
73 public void widgetSelected(SelectionEvent e
) {
74 //FIXME: this wizard page has been removed by implementing #6694
75 //If print publishing is used again the selection has to be re-implemented
77 // FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
78 // WizardDialog dialog = new WizardDialog(getShell(), featureTreeEditorDialog);
80 // if(dialog.open() == IStatus.OK){
87 // when using a local factory we can set the input right here
88 if(getConfigurator() != null && getConfigurator().isLocal()){
94 setControl(composite
);
98 public void loadSettings() {
99 String featureTreeUuidString
= getDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID
);
101 if(featureTreeUuidString
!= null){
102 setSelectedFeatureTree(featureTreeUuidString
);
108 public void selectionChanged(SelectionChangedEvent event
) {
109 IStructuredSelection selection
= (IStructuredSelection
) event
.getSelection();
111 if(selection
.isEmpty()){
115 setPageComplete(true);
117 Element featureTreeElement
= (Element
) selection
.getFirstElement();
119 UUID featureTreeUuid
= XMLHelper
.getUuid(featureTreeElement
);
121 setFeatureTree(featureTreeUuid
.toString());
124 private void setSelectedFeatureTree(String featureTreeUuid
){
125 List
<Element
> input
= (ArrayList
<Element
>) viewer
.getInput();
127 for(Element element
: input
){
128 UUID uuid
= XMLHelper
.getUuid(element
);
129 if(uuid
.toString().equals(featureTreeUuid
)){
130 viewer
.setSelection(new StructuredSelection(element
));
136 public void setFeatureTree(String featureTreeUuidString
){
137 putDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID
, featureTreeUuidString
);
138 UUID featureTreeUuid
= UUID
.fromString(featureTreeUuidString
);
139 getConfigurator().setFeatureTree(featureTreeUuid
);
140 setPageComplete(featureTreeUuid
!= null);
144 public boolean canFlipToNextPage() {
145 return isPageComplete();
149 * Refreshes the input of the viewer
151 public void refresh() {
152 IXMLEntityFactory factory
= getConfigurator().getFactory();
154 List
<Element
> featureTrees
= factory
.getFeatureTrees();
155 List
<Element
> realFeatureTrees
= new ArrayList
<Element
>();
156 for(Element featureTree
: featureTrees
){
157 if(XMLHelper
.getClazz(featureTree
).equals("FeatureTree")){
158 realFeatureTrees
.add(featureTree
);
161 viewer
.setInput(realFeatureTrees
);
164 private class TermTreeContentProvider
implements IStructuredContentProvider
{
167 public void dispose() {}
170 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {}
173 public Object
[] getElements(Object inputElement
) {
174 if(inputElement
instanceof List
){
175 return ((List
) inputElement
).toArray();
177 return new Object
[0];
181 private class TermTreeLabelProvider
extends LabelProvider
{
184 public String
getText(Object element
) {
185 if(element
instanceof Element
){
186 Element xmlElement
= (Element
) element
;
187 return XMLHelper
.getTitleCache(xmlElement
);
189 return "no title cache";