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
.printpublisher
.wizard
;
13 import java
.util
.ArrayList
;
14 import java
.util
.List
;
15 import java
.util
.UUID
;
17 import org
.eclipse
.core
.runtime
.IStatus
;
18 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
19 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
20 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
21 import org
.eclipse
.jface
.viewers
.LabelProvider
;
22 import org
.eclipse
.jface
.viewers
.ListViewer
;
23 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
24 import org
.eclipse
.jface
.viewers
.Viewer
;
25 import org
.eclipse
.jface
.wizard
.WizardDialog
;
26 import org
.eclipse
.swt
.SWT
;
27 import org
.eclipse
.swt
.events
.SelectionAdapter
;
28 import org
.eclipse
.swt
.events
.SelectionEvent
;
29 import org
.eclipse
.swt
.layout
.GridData
;
30 import org
.eclipse
.swt
.layout
.GridLayout
;
31 import org
.eclipse
.swt
.widgets
.Button
;
32 import org
.eclipse
.swt
.widgets
.Composite
;
33 import org
.jdom
.Element
;
35 import eu
.etaxonomy
.cdm
.print
.IXMLEntityFactory
;
36 import eu
.etaxonomy
.cdm
.print
.XMLHelper
;
37 import eu
.etaxonomy
.taxeditor
.featuretree
.FeatureTreeEditorWizard
;
40 * <p>SelectFeatureTreeWizardPage class.</p>
43 * @created Aug 6, 2010
46 public class SelectFeatureTreeWizardPage
extends AbstractPublishWizardPage
implements ISelectionChangedListener
{
48 private ListViewer viewer
;
49 private IStructuredSelection selection
;
52 * <p>Constructor for SelectFeatureTreeWizardPage.</p>
54 * @param pageName a {@link java.lang.String} object.
56 protected SelectFeatureTreeWizardPage(String pageName
) {
58 setTitle("Select Feature Tree");
62 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
66 public void createControl(Composite parent
) {
67 setPageComplete(false);
69 Composite composite
= new Composite(parent
, SWT
.NULL
);
70 composite
.setLayout(new GridLayout());
72 viewer
= new ListViewer(composite
);
73 viewer
.getControl().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
74 viewer
.setContentProvider(new FeatureTreeContentProvider());
75 viewer
.setLabelProvider(new FeatureTreeLabelProvider());
77 viewer
.addSelectionChangedListener(this);
79 // offer feature tree editor when local
80 if(getConfigurator().isLocal()){
81 final Button button_openFeatureTree
= new Button(composite
, SWT
.PUSH
);
82 button_openFeatureTree
.setText("Open FeatureTree Editor");
84 button_openFeatureTree
.addSelectionListener(new SelectionAdapter() {
86 public void widgetSelected(SelectionEvent e
) {
87 FeatureTreeEditorWizard featureTreeEditorDialog
= new FeatureTreeEditorWizard();
88 WizardDialog dialog
= new WizardDialog(getShell(), featureTreeEditorDialog
);
90 if(dialog
.open() == IStatus
.OK
){
97 // when using a local factory we can set the input right here
98 if(getConfigurator() != null && getConfigurator().isLocal()){
102 setControl(composite
);
107 public void selectionChanged(SelectionChangedEvent event
) {
108 selection
= (IStructuredSelection
) event
.getSelection();
110 setPageComplete(selection
.size() == 1);
112 if(selection
.size() == 1){
113 Element featureTreeElement
= (Element
) selection
.getFirstElement();
115 UUID featureTreeUuid
= XMLHelper
.getUuid(featureTreeElement
);
117 getConfigurator().setFeatureTree(featureTreeUuid
);
118 setErrorMessage(null);
119 }else if(selection
.size() > 1){
120 setErrorMessage("Please select only one feature tree.");
126 public boolean canFlipToNextPage() {
127 return (isPageComplete() && selection
.size() == 1);
131 * Refreshes the input of the viewer
133 public void refresh() {
134 IXMLEntityFactory factory
= getConfigurator().getFactory();
136 List
<Element
> featureTrees
= factory
.getFeatureTrees();
137 List
<Element
> realFeatureTrees
= new ArrayList
<Element
>();
138 for(Element featureTree
: featureTrees
){
139 if(XMLHelper
.getClazz(featureTree
).equals("FeatureTree")){
140 realFeatureTrees
.add(featureTree
);
143 viewer
.setInput(realFeatureTrees
);
146 private class FeatureTreeContentProvider
implements IStructuredContentProvider
{
149 public void dispose() {}
152 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {}
155 public Object
[] getElements(Object inputElement
) {
156 if(inputElement
instanceof List
){
157 return ((List
) inputElement
).toArray();
159 return new Object
[0];
164 private class FeatureTreeLabelProvider
extends LabelProvider
{
168 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
171 public String
getText(Object element
) {
172 if(element
instanceof Element
){
173 Element xmlElement
= (Element
) element
;
174 return XMLHelper
.getTitleCache(xmlElement
);
176 return "no title cache";