Improved PrintPublisher Wizard; Integrated SpecimenCdmExcel import
[taxeditor.git] / eu.etaxonomy.taxeditor.printpublisher / src / main / java / eu / etaxonomy / taxeditor / printpublisher / wizard / SelectFeatureTreeWizardPage.java
index a41472a1d8c11b20180839565170480a636a6615..7fa7f6c83a583ba0031084fabaea3d92f773c5fe 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.ListViewer;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
@@ -43,10 +44,11 @@ import eu.etaxonomy.taxeditor.featuretree.FeatureTreeEditorWizard;
  * @created Aug 6, 2010
  * @version 1.0
  */
-public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage implements ISelectionChangedListener{
+public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage 
+       implements ISelectionChangedListener, IHasPersistableSettings{
        
+       private static final String DIALOG_SETTING_FEATURE_TREE_UUID = "dialogSettingFeatureTreeUuid";
        private ListViewer viewer;
-       private IStructuredSelection selection;
 
        /**
         * <p>Constructor for SelectFeatureTreeWizardPage.</p>
@@ -93,38 +95,64 @@ public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage imple
                                }
                        });
                }
-               
+                               
                // when using a local factory we can set the input right here
                if(getConfigurator() != null && getConfigurator().isLocal()){
                        refresh();
                }
                
+               loadSettings();
+               
                setControl(composite);
        }
 
+       @Override
+       public void loadSettings() {
+               String featureTreeUuidString = getDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID); 
+               
+               if(featureTreeUuidString != null){
+                       setSelectedFeatureTree(featureTreeUuidString);
+                       
+               }
+       }
+       
        /** {@inheritDoc} */
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
-               selection = (IStructuredSelection) event.getSelection();
+               IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                
                setPageComplete(selection.size() == 1);
                
-               if(selection.size() == 1){
-                       Element featureTreeElement = (Element) selection.getFirstElement();
+               Element featureTreeElement = (Element) selection.getFirstElement();
                        
-                       UUID featureTreeUuid = XMLHelper.getUuid(featureTreeElement);
-                       
-                       getConfigurator().setFeatureTree(featureTreeUuid);
-                       setErrorMessage(null);
-               }else if(selection.size() > 1){
-                       setErrorMessage("Please select only one feature tree.");
+               UUID featureTreeUuid = XMLHelper.getUuid(featureTreeElement);
+               
+               setFeatureTree(featureTreeUuid.toString());
+       }
+       
+       private void setSelectedFeatureTree(String featureTreeUuid){
+               List<Element> input = (ArrayList<Element>) viewer.getInput();
+               
+               for(Element element : input){
+                       UUID uuid = XMLHelper.getUuid(element);
+                       if(uuid.toString().equals(featureTreeUuid)){
+                               viewer.setSelection(new StructuredSelection(element));
+                               break;
+                       }
                }
        }
        
+       public void setFeatureTree(String featureTreeUuidString){
+               putDialogSettingValue(DIALOG_SETTING_FEATURE_TREE_UUID, featureTreeUuidString);
+               UUID featureTreeUuid = UUID.fromString(featureTreeUuidString);
+               getConfigurator().setFeatureTree(featureTreeUuid);
+               setPageComplete(featureTreeUuid != null);
+       }
+       
        /** {@inheritDoc} */
        @Override
        public boolean canFlipToNextPage() {
-               return (isPageComplete() && selection.size() == 1);
+               return isPageComplete();
        }
 
        /**