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
.lang
.reflect
.InvocationTargetException
;
14 import java
.util
.List
;
16 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
17 import org
.eclipse
.jface
.operation
.IRunnableWithProgress
;
18 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
19 import org
.eclipse
.jface
.viewers
.ILabelProvider
;
20 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
21 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
22 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
23 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
24 import org
.eclipse
.jface
.viewers
.TreeViewer
;
25 import org
.eclipse
.jface
.viewers
.Viewer
;
26 import org
.eclipse
.swt
.SWT
;
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
.eclipse
.swt
.widgets
.Display
;
32 import org
.jdom
.Element
;
34 import eu
.etaxonomy
.cdm
.print
.IXMLEntityFactory
;
35 import eu
.etaxonomy
.cdm
.print
.XMLHelper
;
36 import eu
.etaxonomy
.cdm
.print
.XMLHelper
.EntityType
;
37 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
40 * <p>SelectTaxaWizardPage class.</p>
43 * @created Apr 6, 2010
46 public class SelectTaxaWizardPage
extends AbstractPublishWizardPage
{
48 private Composite composite
;
50 private TreeViewer treeViewer
;
52 private Button button_refresh
;
55 * <p>Constructor for SelectTaxaWizardPage.</p>
57 * @param pageName a {@link java.lang.String} object.
59 public SelectTaxaWizardPage(String pageName
) {
61 setTitle("Select Taxa to export.");
67 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
70 public void createControl(Composite parent
) {
71 composite
= new Composite(parent
, SWT
.NULL
);
72 composite
.setLayout(new GridLayout());
74 treeViewer
= new TreeViewer(composite
);
76 treeViewer
.setContentProvider(new ContentProvider());
77 treeViewer
.setLabelProvider(new LabelProvider());
79 treeViewer
.addSelectionChangedListener(new SelectionChangedListener());
81 treeViewer
.getControl().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
83 setControl(composite
);
89 public void refresh(){
91 if(getConfigurator() != null){
93 IRunnableWithProgress runnable
= new IRunnableWithProgress(){
96 public void run(IProgressMonitor monitor
) {
97 IXMLEntityFactory factory
= getConfigurator().getFactory();
98 final List
<Element
> classifications
= factory
.getClassifications();
100 Display
.getDefault().asyncExec(new Runnable(){
104 treeViewer
.setInput(classifications
);
112 getContainer().run(true, false, runnable
);
113 } catch (InvocationTargetException e
) {
114 StoreUtil
.error(this.getClass(), e
);
115 } catch (InterruptedException e
) {
116 StoreUtil
.error(this.getClass(), e
);
121 private class SelectionChangedListener
implements ISelectionChangedListener
{
123 public void selectionChanged(SelectionChangedEvent event
) {
124 StructuredSelection selection
= (StructuredSelection
) treeViewer
.getSelection();
126 List
<Element
> selectedElements
= selection
.toList();
127 if(selectedElements
.size() > 0){
128 getConfigurator().setSelectedTaxonNodeElements(selectedElements
);
129 setPageComplete(true);
135 private class ContentProvider
implements ITreeContentProvider
{
137 public Object
[] getChildren(Object parentElement
) {
138 if(parentElement
instanceof List
){
139 return ((List
)parentElement
).toArray();
141 else if(parentElement
instanceof Element
){
142 Element element
= (Element
) parentElement
;
144 IXMLEntityFactory factory
= getConfigurator().getFactory();
146 return factory
!= null ? factory
.getChildNodes(element
).toArray() : new Object
[]{};
150 return new Object
[]{};
153 public Object
getParent(Object element
) {
157 public boolean hasChildren(Object element
) {
158 return getChildren(element
).length
> 0;
161 public Object
[] getElements(Object inputElement
) {
162 return getChildren(inputElement
);
165 public void dispose() {
169 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
175 private class LabelProvider
extends ColumnLabelProvider
176 implements ILabelProvider
{
179 public String
getText(Object element
) {
180 if(element
instanceof Element
){
181 Element xmlElement
= (Element
) element
;
182 EntityType entityType
= XMLHelper
.getEntityType(xmlElement
);
183 if(EntityType
.TAXON_NODE
.equals(entityType
)){
184 xmlElement
= getConfigurator().getFactory().getTaxonForTaxonNode(xmlElement
);
186 return XMLHelper
.getTitleCache(xmlElement
);
188 return "no title cache";
195 public boolean canFlipToNextPage() {
196 return isPageComplete();
201 public boolean isPageComplete() {
202 return getConfigurator().getSelectedTaxonNodeElements() != null && getConfigurator().getSelectedTaxonNodeElements().size() > 0;