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
.printpublisher
.wizard
;
13 import java
.util
.ArrayList
;
14 import java
.util
.List
;
15 import java
.util
.UUID
;
17 import org
.apache
.log4j
.Logger
;
18 import org
.eclipse
.core
.runtime
.IStatus
;
19 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
20 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
21 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
22 import org
.eclipse
.jface
.viewers
.LabelProvider
;
23 import org
.eclipse
.jface
.viewers
.ListViewer
;
24 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
25 import org
.eclipse
.jface
.viewers
.Viewer
;
26 import org
.eclipse
.jface
.wizard
.WizardDialog
;
27 import org
.eclipse
.swt
.SWT
;
28 import org
.eclipse
.swt
.events
.SelectionAdapter
;
29 import org
.eclipse
.swt
.events
.SelectionEvent
;
30 import org
.eclipse
.swt
.layout
.GridData
;
31 import org
.eclipse
.swt
.layout
.GridLayout
;
32 import org
.eclipse
.swt
.widgets
.Button
;
33 import org
.eclipse
.swt
.widgets
.Composite
;
34 import org
.jdom
.Element
;
36 import eu
.etaxonomy
.printpublisher
.IXMLEntityFactory
;
37 import eu
.etaxonomy
.printpublisher
.XMLHelper
;
38 import eu
.etaxonomy
.taxeditor
.featuretree
.FeatureTreeEditorWizard
;
42 * @created Aug 6, 2010
45 public class SelectFeatureTreeWizardPage
extends AbstractPublishWizardPage
implements ISelectionChangedListener
{
48 private static final Logger logger
= Logger
49 .getLogger(SelectFeatureTreeWizardPage
.class);
50 private ListViewer viewer
;
51 private IStructuredSelection selection
;
53 protected SelectFeatureTreeWizardPage(String pageName
) {
55 setTitle("Select Feature Tree");
59 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
62 public void createControl(Composite parent
) {
63 setPageComplete(false);
65 Composite composite
= new Composite(parent
, SWT
.NULL
);
66 composite
.setLayout(new GridLayout());
68 viewer
= new ListViewer(composite
);
69 viewer
.getControl().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
70 viewer
.setContentProvider(new FeatureTreeContentProvider());
71 viewer
.setLabelProvider(new FeatureTreeLabelProvider());
73 viewer
.addSelectionChangedListener(this);
75 // offer feature tree editor when local
76 if(getConfigurator().isLocal()){
77 final Button button_openFeatureTree
= new Button(composite
, SWT
.PUSH
);
78 button_openFeatureTree
.setText("Open FeatureTree Editor");
80 button_openFeatureTree
.addSelectionListener(new SelectionAdapter() {
82 public void widgetSelected(SelectionEvent e
) {
83 FeatureTreeEditorWizard featureTreeEditorDialog
= new FeatureTreeEditorWizard();
84 WizardDialog dialog
= new WizardDialog(getShell(), featureTreeEditorDialog
);
86 if(dialog
.open() == IStatus
.OK
){
93 // when using a local factory we can set the input right here
94 if(getConfigurator() != null && getConfigurator().isLocal()){
98 setControl(composite
);
102 public void selectionChanged(SelectionChangedEvent event
) {
103 selection
= (IStructuredSelection
) event
.getSelection();
105 setPageComplete(selection
.size() == 1);
107 if(selection
.size() == 1){
108 Element featureTreeElement
= (Element
) selection
.getFirstElement();
110 UUID featureTreeUuid
= XMLHelper
.getUuid(featureTreeElement
);
112 getConfigurator().setFeatureTree(featureTreeUuid
);
113 }else if(selection
.size() > 1){
114 setErrorMessage("Please select only one feature tree.");
119 public boolean canFlipToNextPage() {
120 return (isPageComplete() && selection
.size() == 1);
124 * Refreshes the input of the viewer
126 public void refresh() {
127 IXMLEntityFactory factory
= getConfigurator().getFactory();
129 List
<Element
> featureTrees
= factory
.getFeatureTrees();
130 List
<Element
> realFeatureTrees
= new ArrayList
<Element
>();
131 for(Element featureTree
: featureTrees
){
132 if(XMLHelper
.getClazz(featureTree
).equals("FeatureTree")){
133 realFeatureTrees
.add(featureTree
);
136 viewer
.setInput(realFeatureTrees
);
139 private class FeatureTreeContentProvider
implements IStructuredContentProvider
{
142 public void dispose() {}
145 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {}
148 public Object
[] getElements(Object inputElement
) {
149 if(inputElement
instanceof List
){
150 return ((List
) inputElement
).toArray();
152 return new Object
[0];
157 private class FeatureTreeLabelProvider
extends LabelProvider
{
161 * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
164 public String
getText(Object element
) {
165 if(element
instanceof Element
){
166 Element xmlElement
= (Element
) element
;
167 return XMLHelper
.getTitleCache(xmlElement
);
169 return "no title cache";