(no commit message)
authorn.hoffmann <n.hoffmann@localhost>
Thu, 9 Sep 2010 11:48:18 +0000 (11:48 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 9 Sep 2010 11:48:18 +0000 (11:48 +0000)
21 files changed:
.gitattributes
.gitignore
taxeditor-printpublisher/META-INF/MANIFEST.MF [new file with mode: 0644]
taxeditor-printpublisher/build.properties [new file with mode: 0644]
taxeditor-printpublisher/plugin.xml [new file with mode: 0644]
taxeditor-printpublisher/pom.xml [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/handler/GeneratePdfHandler.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/internal/PrintpublisherPlugin.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizard.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/DirectPublishingWizard.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OptionsWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OverviewWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardODF.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardPDF.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardTaxPub.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardXML.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFeatureTreeWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFolderWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectServiceWizardPage.java [new file with mode: 0644]
taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectTaxaWizardPage.java [new file with mode: 0644]

index 7952f31a672b5734c6df1aa77935961e1f4a93e2..ad818e6894e5c29b93daf0dc0be952fd768741c6 100644 (file)
@@ -653,6 +653,25 @@ taxeditor-navigation/src/test/java/log4j.properties -text
 taxeditor-navigation/src/test/resources/eu/etaxonomy/cdm/applicationContext-test.xml -text
 taxeditor-navigation/src/test/resources/eu/etaxonomy/cdm/defaultApplicationContext.xml -text
 taxeditor-navigation/src/test/resources/log4j.properties -text
+taxeditor-printpublisher/META-INF/MANIFEST.MF -text
+taxeditor-printpublisher/build.properties -text
+taxeditor-printpublisher/plugin.xml -text
+taxeditor-printpublisher/pom.xml -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/handler/GeneratePdfHandler.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/internal/PrintpublisherPlugin.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizard.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/DirectPublishingWizard.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OptionsWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OverviewWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardODF.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardPDF.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardTaxPub.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardXML.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFeatureTreeWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFolderWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectServiceWizardPage.java -text
+taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectTaxaWizardPage.java -text
 taxeditor-store/META-INF/MANIFEST.MF -text
 taxeditor-store/build.properties -text
 taxeditor-store/icons/256color_16x16.bmp -text
index ac9c1d5d6371aa4ee2de28da9eede21bb7aa811d..7c4c56dd4bace8c2d9fbee2379ab2e85fb893df1 100644 (file)
@@ -53,6 +53,10 @@ taxeditor-navigation/.classpath
 taxeditor-navigation/.project
 taxeditor-navigation/.settings
 taxeditor-navigation/target
+taxeditor-printpublisher/.classpath
+taxeditor-printpublisher/.project
+taxeditor-printpublisher/.settings
+taxeditor-printpublisher/target
 taxeditor-store/.classpath
 taxeditor-store/.project
 taxeditor-store/.settings
diff --git a/taxeditor-printpublisher/META-INF/MANIFEST.MF b/taxeditor-printpublisher/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..8b30018
--- /dev/null
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: CDM Print Publisher Plugin
+Bundle-SymbolicName: eu.etaxonomy.printpublisher.plugin;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.osgi;bundle-version="3.5.2",
+ org.eclipse.ui;bundle-version="3.5.2",
+ eu.etaxonomy.cdmlib;bundle-version="2.4.0",
+ eu.etaxonomy.printpublisher.core;bundle-version="1.0.0",
+ eu.etaxonomy.taxeditor.editor;bundle-version="2.1.0",
+ eu.etaxonomy.taxeditor.store;bundle-version="2.1.0"
+Import-Package: org.apache.log4j,
+ org.eclipse.core.runtime;version="3.4.0",
+ org.osgi.framework;version="1.5.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: EDIT
+Bundle-Activator: eu.etaxonomy.printpublisher.internal.PrintpublisherPlugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/taxeditor-printpublisher/build.properties b/taxeditor-printpublisher/build.properties
new file mode 100644 (file)
index 0000000..43cb29e
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/main/java/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/taxeditor-printpublisher/plugin.xml b/taxeditor-printpublisher/plugin.xml
new file mode 100644 (file)
index 0000000..0f8102c
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.exportWizards">
+         <category
+            id="print-publisher.category"
+            name="Print Publishing">
+      </category>
+      <wizard
+            category="print-publisher.category"
+            class="eu.etaxonomy.printpublisher.wizard.PublishWizardXML"
+            id="print-publisher.wizardXml"
+            name="CDM-XML">
+      </wizard>
+      <wizard
+            category="print-publisher.category"
+            class="eu.etaxonomy.printpublisher.wizard.PublishWizardODF"
+            id="print-publisher.wizardOdf"
+            name="ODF">
+      </wizard>
+      <wizard
+            category="print-publisher.category"
+            class="eu.etaxonomy.printpublisher.wizard.PublishWizardPDF"
+            id="print-publisher.wizardPdf"
+            name="PDF">
+      </wizard>
+      <wizard
+            category="print-publisher.category"
+            class="eu.etaxonomy.printpublisher.wizard.PublishWizardTaxPub"
+            id="print-publisher.wizardTaxPub"
+            name="TaxPub">
+      </wizard>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="menu:org.eclipse.ui.main.menu.file?after=eu.etaxonomy.taxeditor.application.filemenu.save">
+         <command
+               commandId="eu.etaxonomy.printpublisher.plugin.generatePdf"
+               label="Generate PDF"
+               style="push">
+         </command>
+         <separator
+               name="eu.etaxonomy.printpublisher.plugin.separator"
+               visible="true">
+         </separator>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="eu.etaxonomy.printpublisher.handler.GeneratePdfHandler"
+            id="eu.etaxonomy.printpublisher.plugin.generatePdf"
+            name="Generate PDF">
+      </command>
+   </extension>
+
+</plugin>
diff --git a/taxeditor-printpublisher/pom.xml b/taxeditor-printpublisher/pom.xml
new file mode 100644 (file)
index 0000000..99f62e2
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <parent>
+               <artifactId>printpublisher-parent</artifactId>
+               <groupId>eu.etaxonomy</groupId>
+               <version>1.0</version>
+       </parent>
+       
+       <modelVersion>4.0.0</modelVersion>
+       
+       <groupId>eu.etaxonomy</groupId>
+       
+       <artifactId>printpublisher-plugin</artifactId>
+       
+       <packaging>jar</packaging>
+       
+       <version>1.0-SNAPSHOT</version>
+       
+       <name>printpublisher-plugin</name>
+       
+       <url>http://maven.apache.org</url>
+       <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>3.8.1</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+</project>
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/handler/GeneratePdfHandler.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/handler/GeneratePdfHandler.java
new file mode 100644 (file)
index 0000000..5e1380e
--- /dev/null
@@ -0,0 +1,97 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.handler;
+
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.jdom.Element;
+
+import eu.etaxonomy.printpublisher.IXMLEntityFactory;
+import eu.etaxonomy.printpublisher.PublishConfigurator;
+import eu.etaxonomy.printpublisher.out.pdf.PdfOutputModule;
+import eu.etaxonomy.printpublisher.out.xml.XMLOutputModule;
+import eu.etaxonomy.printpublisher.wizard.DirectPublishingWizard;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Jul 20, 2010
+ * @version 1.0
+ */
+public class GeneratePdfHandler extends AbstractHandler {
+       private static final Logger logger = Logger.getLogger(GeneratePdfHandler.class);
+       
+       private PublishConfigurator configurator;
+
+       public Object execute(ExecutionEvent event) throws ExecutionException {
+               configurator = PublishConfigurator.NewLocalInstance(CdmStore.getCurrentApplicationController());
+               configurator.setDoPublishEntireBranches(false);
+               
+               configurator.addOutputModule(new XMLOutputModule());
+               configurator.addOutputModule(new PdfOutputModule());
+               
+               // make the editors taxon the selected taxon to export
+               IEditorPart editor = HandlerUtil.getActiveEditor(event);        
+               Element taxonNodeElement = getTaxonNodeElement(editor);
+               configurator.addSelectedTaxonNodeElements(taxonNodeElement);
+               
+               // while testing
+//             configurator.setFeatureTree(UUID.fromString("168df0c6-6429-484c-b26f-ded1f7e44bd9"));
+//             configurator.setExportFolder(new File("/Users/n.hoffmann/Desktop/"));
+//             
+//             ConversationHolder conversation = CdmStore.createConversation();
+//             conversation.close();
+////           try{
+//                     Publisher.publish(configurator);
+////                   conversation.commit();
+////           }finally{
+////                   conversation.close();
+////           }
+               
+               
+               // enable this when not testing
+               DirectPublishingWizard wizard = new DirectPublishingWizard(configurator);
+               WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
+               
+               int result = dialog.open();
+               
+               if(result != Status.OK || result != Status.CANCEL){
+                       throw new RuntimeException("An error occurred during print publishing.");
+               }
+               
+               return null;
+       }
+       
+       private Element getTaxonNodeElement(IEditorPart editor){
+               
+               
+               TaxonEditorInput input = (TaxonEditorInput) editor.getEditorInput();
+               
+               UUID taxonNodeUuid = input.getTaxonNode().getUuid();
+               
+               IXMLEntityFactory factory = configurator.getFactory();
+               
+               Element taxonNodeElement = factory.getTaxonNode(taxonNodeUuid);
+               
+               return taxonNodeElement;
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/internal/PrintpublisherPlugin.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/internal/PrintpublisherPlugin.java
new file mode 100644 (file)
index 0000000..8253bb2
--- /dev/null
@@ -0,0 +1,66 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.internal;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author n.hoffmann
+ * @created Jul 15, 2010
+ * @version 1.0
+ */
+public class PrintpublisherPlugin extends AbstractUIPlugin {
+       private static final Logger logger = Logger
+                       .getLogger(PrintpublisherPlugin.class);
+       
+       // The plug-in ID
+       public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.editor";
+
+       // The shared instance
+       private static PrintpublisherPlugin plugin;
+       
+       /**
+        * The constructor
+        */
+       public PrintpublisherPlugin() {
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+        */
+       public void start(BundleContext context) throws Exception {
+               super.start(context);
+               plugin = this;
+               logger.trace("Plugin started: " + this.getBundle().getSymbolicName());
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+        */
+       public void stop(BundleContext context) throws Exception {
+               plugin = null;
+               super.stop(context);
+               logger.trace("Plugin stopped");
+       }
+
+       /**
+        * Returns the shared instance
+        *
+        * @return the shared instance
+        */
+       public static PrintpublisherPlugin getDefault() {
+               return plugin;
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizard.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizard.java
new file mode 100644 (file)
index 0000000..280309a
--- /dev/null
@@ -0,0 +1,161 @@
+/**
+ * 
+ */
+package eu.etaxonomy.printpublisher.wizard;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IExportWizard;
+import org.eclipse.ui.IWorkbench;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.printpublisher.IHarvestObserver;
+import eu.etaxonomy.printpublisher.PublishConfigurator;
+import eu.etaxonomy.printpublisher.Publisher;
+import eu.etaxonomy.printpublisher.out.IPublishOutputModule;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * 
+ * @author n.hoffmann
+ * @created Apr 1, 2010
+ * @version 1.0
+ */
+public class AbstractPublishWizard extends Wizard implements IExportWizard{
+       private static final Logger logger = Logger
+                       .getLogger(AbstractPublishWizard.class);
+       
+       public static final String PAGE_SERVICE = "PAGE_SERVICE";
+       public static final String PAGE_TAXA = "PAGE_TAXA";
+       public static final String PAGE_OPTIONS = "PAGE_OPTIONS";
+       public static final String PAGE_FOLDER = "PAGE_FOLDER";
+       public static final String PAGE_OVERVIEW = "PAGE_OVERVIEW";
+       public static final String PAGE_FEATURETREE = "PAGE_FEATURETREE";
+       
+       protected SelectServiceWizardPage pageService;
+       protected SelectTaxaWizardPage pageTaxa;
+       protected OptionsWizardPage pageOptions;
+       protected SelectFeatureTreeWizardPage pageFeatureTree;
+       protected SelectFolderWizardPage pageFolder;
+       protected OverviewWizardPage pageOverview;
+
+       private PublishConfigurator configurator;
+
+       private IPublishOutputModule outputModule;
+
+       public AbstractPublishWizard(){         
+               setNeedsProgressMonitor(true);
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#performFinish()
+        */
+       @Override
+       public boolean performFinish() {
+               
+               IRunnableWithProgress runnable = new IRunnableWithProgress() {
+
+                       public void run(final IProgressMonitor monitor)
+                                       throws InvocationTargetException, InterruptedException {
+                               monitor.beginTask("Exporting Printable Output", getConfigurator().calculateNumberOfNodes() + 1);
+                               try{
+                                       IHarvestObserver observer = new IHarvestObserver() {
+                                               
+                                               public void update(String taskName) {
+                                                       monitor.setTaskName(taskName);
+                                                       monitor.worked(1);
+                                                       
+                                               }
+                                       };
+                                       getConfigurator().addObserver(observer);
+                                       
+                                       Publisher.publish(configurator);
+                               }finally{
+                                       monitor.done();
+                               }
+                               
+                       }                       
+               };
+               
+               ConversationHolder conversation = null;
+               
+               try {
+                       if(getConfigurator().isLocal()){
+                               conversation= CdmStore.createConversation();
+                       }
+                       getContainer().run(false, true, runnable);
+                       
+               } catch (InvocationTargetException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (InterruptedException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }finally{
+                       if(conversation != null) conversation.close();
+               }
+               
+               return true;
+       }
+
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               pageService = new SelectServiceWizardPage(PAGE_SERVICE);
+               addPage(pageService);
+               
+               pageTaxa = new SelectTaxaWizardPage(PAGE_TAXA);
+               addPage(pageTaxa);
+               
+               pageOptions = new OptionsWizardPage(PAGE_OPTIONS);
+               addPage(pageOptions);
+               
+               pageFeatureTree = new SelectFeatureTreeWizardPage(PAGE_FEATURETREE);
+               addPage(pageFeatureTree);
+               
+               pageFolder = new SelectFolderWizardPage(PAGE_FOLDER);
+               addPage(pageFolder);
+               
+               pageOverview = new OverviewWizardPage(PAGE_OVERVIEW);
+               addPage(pageOverview);
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+        */
+       public void init(IWorkbench workbench, IStructuredSelection selection) {
+               logger.warn("Instantiating wizard: " + this.getClass().getSimpleName());
+       }
+       
+
+       
+       @Override
+       public boolean canFinish() {
+               return pageService.isPageComplete() && 
+                               pageTaxa.isPageComplete() &&
+                               pageFeatureTree.isPageComplete() &&
+                               pageFolder.isPageComplete();
+       }
+       
+       protected PublishConfigurator getConfigurator() {
+               return configurator;
+       }
+       
+       protected void setConfigurator(PublishConfigurator configurator){
+               this.configurator = configurator;
+       }
+       
+       protected void setOutputModule(IPublishOutputModule outputModule){
+               this.outputModule = outputModule;
+       }
+       
+       public IPublishOutputModule getOutputModule(){
+               return outputModule;
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizardPage.java
new file mode 100644 (file)
index 0000000..18e9562
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.WizardPage;
+
+import eu.etaxonomy.printpublisher.PublishConfigurator;
+import eu.etaxonomy.printpublisher.out.IPublishOutputModule;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 27, 2010
+ * @version 1.0
+ */
+public abstract class AbstractPublishWizardPage extends WizardPage {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(AbstractPublishWizardPage.class);
+       
+       protected AbstractPublishWizardPage(String pageName) {
+               super(pageName);
+       }
+       
+       public PublishConfigurator getConfigurator(){
+               return ((AbstractPublishWizard) getWizard()).getConfigurator();
+       }
+       
+       public void setConfigurator(PublishConfigurator configurator){
+               ((AbstractPublishWizard) getWizard()).setConfigurator(configurator);
+       }
+       
+       public IPublishOutputModule getOutputModule(){
+               IPublishOutputModule outputModule = ((AbstractPublishWizard) getWizard()).getOutputModule();
+               if(outputModule == null)
+                       throw new IllegalStateException("OutputModule may not be null at this moment");
+               return outputModule;
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/DirectPublishingWizard.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/DirectPublishingWizard.java
new file mode 100644 (file)
index 0000000..3a95e02
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.printpublisher.PublishConfigurator;
+
+/**
+ * @author n.hoffmann
+ * @created Aug 6, 2010
+ * @version 1.0
+ */
+public class DirectPublishingWizard extends AbstractPublishWizard {
+       private static final Logger logger = Logger
+                       .getLogger(DirectPublishingWizard.class);
+       
+       public DirectPublishingWizard(PublishConfigurator configurator) {
+               setConfigurator(configurator);
+               setOutputModule(configurator.getOutputModules().iterator().next());
+       }
+
+       @Override
+       public void addPages() {
+               pageOptions = new OptionsWizardPage(PAGE_OPTIONS);
+               addPage(pageOptions);
+               
+               pageFeatureTree = new SelectFeatureTreeWizardPage(PAGE_FEATURETREE);
+               addPage(pageFeatureTree);
+               
+               pageFolder = new SelectFolderWizardPage(PAGE_FOLDER);
+               addPage(pageFolder);
+               
+               pageOverview = new OverviewWizardPage(PAGE_OVERVIEW);
+               addPage(pageOverview);
+       }
+       
+       @Override
+       public boolean performFinish() {
+               return super.performFinish();
+       }
+       
+       public boolean canFinish() {
+               return pageFeatureTree.isPageComplete()
+                       && pageFolder.isPageComplete();
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OptionsWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OptionsWizardPage.java
new file mode 100644 (file)
index 0000000..fb3b7f0
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author n.hoffmann
+ * @created Jul 26, 2010
+ * @version 1.0
+ */
+public class OptionsWizardPage extends AbstractPublishWizardPage implements SelectionListener{
+
+
+       private static final Logger logger = Logger
+                       .getLogger(OptionsWizardPage.class);
+       private Button button_doSynonymy;
+       private Button button_doDescriptions;
+       private Button button_doImages;
+       private Button button_doPublishEntireBranches;
+       private Composite composite;
+
+       protected OptionsWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Select options");
+       }
+       
+       @Override
+       public void createControl(Composite parent) {
+               
+               composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+               button_doPublishEntireBranches = new Button(composite, SWT.CHECK);
+               button_doPublishEntireBranches.setText("Publish the entire branch for selected taxa (i.e. all taxonomically included taxa)");
+               button_doPublishEntireBranches.addSelectionListener(this);
+               
+               button_doSynonymy = new Button(composite, SWT.CHECK);
+               button_doSynonymy.setText("Publish Synonymy");
+               button_doSynonymy.addSelectionListener(this);
+               
+               button_doDescriptions = new Button(composite, SWT.CHECK);
+               button_doDescriptions.setText("Publish Descriptions");
+               button_doDescriptions.addSelectionListener(this);
+               
+               button_doImages = new Button(composite, SWT.CHECK);
+               button_doImages.setText("Publish Images (not supported yet)");
+               button_doImages.addSelectionListener(this);
+               
+               initButtons();
+               
+               setControl(composite);
+       }
+
+       private void initButtons() {
+               button_doPublishEntireBranches.setSelection(getConfigurator().isDoPublishEntireBranches());
+               button_doSynonymy.setSelection(getConfigurator().isDoSynonymy());
+               button_doDescriptions.setSelection(getConfigurator().isDoDescriptions());
+               button_doImages.setSelection(getConfigurator().isDoImages());
+       }
+
+       @Override
+       public void widgetSelected(SelectionEvent e) {
+               getConfigurator().setDoPublishEntireBranches(button_doPublishEntireBranches.getSelection());
+               getConfigurator().setDoSynonymy(button_doSynonymy.getSelection());
+               getConfigurator().setDoDescriptions(button_doDescriptions.getSelection());
+               getConfigurator().setDoImages(button_doImages.getSelection());
+       }
+
+       @Override
+       public void widgetDefaultSelected(SelectionEvent e) {}
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OverviewWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OverviewWizardPage.java
new file mode 100644 (file)
index 0000000..e357fa4
--- /dev/null
@@ -0,0 +1,62 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 6, 2010
+ * @version 1.0
+ */
+public class OverviewWizardPage extends AbstractPublishWizardPage {
+       private static final Logger logger = Logger
+                       .getLogger(OverviewWizardPage.class);
+
+       private Composite composite;
+
+       private Label serviceUrl;
+       
+       private Label exportFolder;
+       
+       /**
+        * @param pageName
+        */
+       public OverviewWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Overview");
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {
+               
+               composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+//             serviceUrl = new Label(composite, SWT.NULL);
+               
+               exportFolder = new Label(composite, SWT.NULL);
+               
+               setControl(composite);
+       }
+
+       public void refresh() {
+//             serviceUrl.setText(getConfigurator().getWebserviceUrl().toString());
+               exportFolder.setText(getConfigurator().getExportFolder().toString());
+               composite.layout();
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardODF.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardODF.java
new file mode 100644 (file)
index 0000000..15b48f7
--- /dev/null
@@ -0,0 +1,24 @@
+/**
+ * 
+ */
+package eu.etaxonomy.printpublisher.wizard;
+
+import eu.etaxonomy.printpublisher.out.odf.OdfOutputModule;
+
+
+/**
+ * 
+ * @author n.hoffmann
+ * @created Apr 1, 2010
+ * @version 1.0
+ */
+public class PublishWizardODF extends AbstractPublishWizard  {
+
+       /**
+        * 
+        */
+       public PublishWizardODF() {
+               setOutputModule(new OdfOutputModule());
+               setWindowTitle("Publish ODF");
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardPDF.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardPDF.java
new file mode 100644 (file)
index 0000000..d074cda
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.eclipse.ui.IExportWizard;
+
+import eu.etaxonomy.printpublisher.out.pdf.PdfOutputModule;
+
+/**
+ * @author n.hoffmann
+ * @created Aug 4, 2010
+ * @version 1.0
+ */
+public class PublishWizardPDF extends AbstractPublishWizard implements
+               IExportWizard {
+       
+       public PublishWizardPDF(){
+               setOutputModule(new PdfOutputModule());
+               setWindowTitle("Publish PDF");
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardTaxPub.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardTaxPub.java
new file mode 100644 (file)
index 0000000..2c1384d
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.IExportWizard;
+
+import eu.etaxonomy.printpublisher.out.taxpub.TaxPubOutputModule;
+
+/**
+ * @author n.hoffmann
+ * @created Aug 4, 2010
+ * @version 1.0
+ */
+public class PublishWizardTaxPub extends AbstractPublishWizard implements
+               IExportWizard {
+       private static final Logger logger = Logger
+                       .getLogger(PublishWizardTaxPub.class);
+       
+       public PublishWizardTaxPub(){
+               setOutputModule(new TaxPubOutputModule());
+               setWindowTitle("Publish TaxPub");
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardXML.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardXML.java
new file mode 100644 (file)
index 0000000..5bfb006
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * 
+ */
+package eu.etaxonomy.printpublisher.wizard;
+
+import org.eclipse.ui.IExportWizard;
+
+import eu.etaxonomy.printpublisher.out.xml.XMLOutputModule;
+
+
+
+/**
+ * 
+ * @author n.hoffmann
+ * @created Apr 1, 2010
+ * @version 1.0
+ */
+public class PublishWizardXML extends AbstractPublishWizard implements IExportWizard{
+       /**
+        * 
+        */
+       public PublishWizardXML() {
+               setOutputModule(new XMLOutputModule());
+               setWindowTitle("Publish XML");
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFeatureTreeWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFeatureTreeWizardPage.java
new file mode 100644 (file)
index 0000000..4283a56
--- /dev/null
@@ -0,0 +1,173 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+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.Viewer;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.jdom.Element;
+
+import eu.etaxonomy.printpublisher.IXMLEntityFactory;
+import eu.etaxonomy.printpublisher.XMLHelper;
+import eu.etaxonomy.taxeditor.featuretree.FeatureTreeEditorWizard;
+
+/**
+ * @author n.hoffmann
+ * @created Aug 6, 2010
+ * @version 1.0
+ */
+public class SelectFeatureTreeWizardPage extends AbstractPublishWizardPage implements ISelectionChangedListener{
+       
+
+       private static final Logger logger = Logger
+                       .getLogger(SelectFeatureTreeWizardPage.class);
+       private ListViewer viewer;
+       private IStructuredSelection selection;
+
+       protected SelectFeatureTreeWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Select Feature Tree");
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       @Override
+       public void createControl(Composite parent) {
+               setPageComplete(false);
+               
+               Composite composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+               viewer = new ListViewer(composite);
+               viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+               viewer.setContentProvider(new FeatureTreeContentProvider());
+               viewer.setLabelProvider(new FeatureTreeLabelProvider());
+               
+               viewer.addSelectionChangedListener(this);
+                               
+               // offer feature tree editor when local
+               if(getConfigurator().isLocal()){
+                       final Button button_openFeatureTree = new Button(composite, SWT.PUSH);
+                       button_openFeatureTree.setText("Open FeatureTree Editor");
+                       
+                       button_openFeatureTree.addSelectionListener(new SelectionAdapter() {
+                               @Override
+                               public void widgetSelected(SelectionEvent e) {
+                                       FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
+                                       WizardDialog dialog = new WizardDialog(getShell(), featureTreeEditorDialog);
+                                       
+                                       if(dialog.open() == IStatus.OK){
+                                               refresh();
+                                       }
+                               }
+                       });
+               }
+               
+               // when using a local factory we can set the input right here
+               if(getConfigurator() != null && getConfigurator().isLocal()){
+                       refresh();
+               }
+               
+               setControl(composite);
+       }
+
+       @Override
+       public void selectionChanged(SelectionChangedEvent event) {
+               selection = (IStructuredSelection) event.getSelection();
+               
+               setPageComplete(selection.size() == 1);
+               
+               if(selection.size() == 1){
+                       Element featureTreeElement = (Element) selection.getFirstElement();
+                       
+                       UUID featureTreeUuid = XMLHelper.getUuid(featureTreeElement);
+                       
+                       getConfigurator().setFeatureTree(featureTreeUuid);
+               }else if(selection.size() > 1){
+                       setErrorMessage("Please select only one feature tree.");
+               }
+       }
+       
+       @Override
+       public boolean canFlipToNextPage() {
+               return (isPageComplete() && selection.size() == 1);
+       }
+
+       /**
+        * Refreshes the input of the viewer
+        */
+       public void refresh() {
+               IXMLEntityFactory factory = getConfigurator().getFactory();
+
+               List<Element> featureTrees = factory.getFeatureTrees();
+               List<Element> realFeatureTrees = new ArrayList<Element>();
+               for(Element featureTree : featureTrees){
+                       if(XMLHelper.getClazz(featureTree).equals("FeatureTree")){
+                               realFeatureTrees.add(featureTree);
+                       }
+               }
+               viewer.setInput(realFeatureTrees);
+       }
+       
+       private class FeatureTreeContentProvider implements IStructuredContentProvider {
+
+               @Override
+               public void dispose() {}
+
+               @Override
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
+
+               @Override
+               public Object[] getElements(Object inputElement) {
+                       if(inputElement instanceof List){
+                               return ((List) inputElement).toArray();
+                       }
+                       return new Object[0];
+               }
+               
+       }
+       
+       private class FeatureTreeLabelProvider extends LabelProvider {
+               
+               /*
+                * (non-Javadoc)
+                * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+                */
+               @Override
+               public String getText(Object element) {
+                       if(element instanceof Element){
+                               Element xmlElement = (Element) element;                 
+                               return XMLHelper.getTitleCache(xmlElement);
+                       }
+                       return "no title cache";
+               }
+               
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFolderWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFolderWizardPage.java
new file mode 100644 (file)
index 0000000..d338a16
--- /dev/null
@@ -0,0 +1,102 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import java.io.File;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 7, 2010
+ * @version 1.0
+ */
+public class SelectFolderWizardPage extends AbstractPublishWizardPage {
+       private static final Logger logger = Logger
+                       .getLogger(SelectFolderWizardPage.class);
+       private Composite composite;
+       private DirectoryDialog folderDialog;
+       private Text text_folder;
+
+       /**
+        * @param pageName
+        */
+       public SelectFolderWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Select a folder");
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {
+//             configurator = ((IPublishConfigurer) getWizard()).getConfigurator();
+               
+               composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+               Label folderLabel = new Label(composite, SWT.NONE);
+               folderLabel.setText("Folder");
+
+               folderDialog = new DirectoryDialog(parent.getShell());
+
+               text_folder = new Text(composite, SWT.BORDER);
+               text_folder.setEditable(false);
+               text_folder.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+               Button button = new Button(composite, SWT.PUSH);
+               button.setText("Browse...");
+
+               button.addSelectionListener(new SelectionAdapter(){
+                       /* (non-Javadoc)
+                       * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                       */
+                       @Override
+                       public void widgetSelected(SelectionEvent e) {
+                               super.widgetSelected(e);
+                               String path = folderDialog.open();
+                               if(path != null){ // a folder was selected
+                                       text_folder.setText(path);
+                                       getConfigurator().setExportFolder(new File(path));
+
+                                       setPageComplete(true);
+                               }
+                       }
+               });
+               
+               setControl(composite);
+       }
+       
+       @Override
+       public boolean canFlipToNextPage() {
+               if(isPageComplete()){
+                       OverviewWizardPage overviewPage = (OverviewWizardPage) getNextPage();
+                       overviewPage.refresh(); 
+                       return true;
+               }
+               return false;
+       }
+       
+       @Override
+       public boolean isPageComplete() {
+               return getConfigurator().getExportFolder() != null;
+       }
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectServiceWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectServiceWizardPage.java
new file mode 100644 (file)
index 0000000..f8bd196
--- /dev/null
@@ -0,0 +1,182 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import java.net.MalformedURLException;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.printpublisher.PublishConfigurator;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 6, 2010
+ * @version 1.0
+ */
+public class SelectServiceWizardPage extends AbstractPublishWizardPage {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(SelectServiceWizardPage.class);
+
+       private Composite composite;
+       private Button button_local;
+       private Button button_remote;
+       private Label label_serviceUrl;
+       private Text text_serviceUrl;
+
+       protected SelectServiceWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Select a Service");
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {
+               
+               composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+               RadioSelectionListener listener = new RadioSelectionListener();
+               
+               button_local = new Button(composite, SWT.RADIO);
+               button_local.setText("Local (By selecting this option the database you are currently " +
+                               "connected to will be used to gather data.)");
+               
+               button_local.addSelectionListener(listener);
+               
+               
+                                               
+               button_remote = new Button(composite, SWT.RADIO);
+               button_remote.setText("Remote");
+               button_remote.addSelectionListener(listener);
+               
+               
+               label_serviceUrl = new Label(composite, SWT.NULL);
+               label_serviceUrl.setText("Service URL");
+               
+               text_serviceUrl = new Text(composite, SWT.BORDER);
+               text_serviceUrl.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               text_serviceUrl.setText("http://");     
+               text_serviceUrl.addModifyListener(new ModifyListener() {
+                       
+                       public void modifyText(ModifyEvent e) {
+                               String text = text_serviceUrl.getText();
+                               
+                               try {
+                                       getConfigurator().setWebserviceUrl(text);
+                               } catch (MalformedURLException e1) {
+                                       logger.warn("Malformed Url");
+                               }
+                               
+                               if(isPageComplete()){
+                                       SelectServiceWizardPage.this.setErrorMessage(null);
+                                       setPageComplete(true);
+                               }else{
+                                       SelectServiceWizardPage.this.setErrorMessage("Webservice URL has to end with \"/\"");
+                                       setPageComplete(false);
+                               }
+                       }
+               });
+               
+               if(CdmStore.isActive()){
+                       enableLocal();
+               }else{
+                       enableRemote();
+                       button_local.setEnabled(false);
+               }
+               
+               setControl(composite);
+               
+       }
+       
+       private class RadioSelectionListener extends SelectionAdapter{
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       if(e.widget == button_local){
+                               enableLocal();
+                       }else{
+                               enableRemote();
+                       }
+               }
+       }
+       
+       private void enableRemote() {
+               button_local.setSelection(false);
+               button_remote.setSelection(true);
+               
+               label_serviceUrl.setEnabled(true);
+               text_serviceUrl.setEnabled(true);
+               
+               setConfigurator(PublishConfigurator.NewRemoteInstance());
+               getConfigurator().addOutputModule(getOutputModule());
+       }
+
+       private void enableLocal() {
+               button_remote.setSelection(false);
+               button_local.setSelection(true);
+               
+               label_serviceUrl.setEnabled(false);
+               text_serviceUrl.setEnabled(false);
+               
+               setConfigurator(PublishConfigurator.NewLocalInstance(CdmStore.getCurrentApplicationController()));
+               getConfigurator().addOutputModule(getOutputModule());
+       }
+       
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+        */
+       @Override
+       public boolean canFlipToNextPage() {
+               if(isPageComplete()){
+                       SelectTaxaWizardPage selectTaxaPage = (SelectTaxaWizardPage) getWizard().getPage(AbstractPublishWizard.PAGE_TAXA);                      
+                       selectTaxaPage.refresh();
+                       
+                       SelectFeatureTreeWizardPage selectFeatureTreePage = (SelectFeatureTreeWizardPage) getWizard().getPage(AbstractPublishWizard.PAGE_FEATURETREE);          
+                       selectFeatureTreePage.refresh();
+                       
+                       return true;
+               }
+               return false;
+       }
+               
+       /*
+        * (non-Javadoc)
+        * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
+        */
+       @Override
+       public boolean isPageComplete() {
+               if(getConfigurator().isLocal()){
+                       return true;
+               }else if(getConfigurator().isRemote() 
+                               && getConfigurator().getWebserviceUrl() != null 
+                               && getConfigurator().getWebserviceUrl().toString().endsWith("/")){
+                       return true;
+               }else{
+                       return false;
+               }
+       }
+       
+}
diff --git a/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectTaxaWizardPage.java b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectTaxaWizardPage.java
new file mode 100644 (file)
index 0000000..17d5cba
--- /dev/null
@@ -0,0 +1,197 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.printpublisher.wizard;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.jdom.Element;
+
+import eu.etaxonomy.printpublisher.IXMLEntityFactory;
+import eu.etaxonomy.printpublisher.XMLHelper;
+import eu.etaxonomy.printpublisher.XMLHelper.EntityType;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 6, 2010
+ * @version 1.0
+ */
+public class SelectTaxaWizardPage extends AbstractPublishWizardPage {
+       private static final Logger logger = Logger
+                       .getLogger(SelectTaxaWizardPage.class);
+
+       private Composite composite;
+
+       private TreeViewer treeViewer;
+       
+       private Button button_refresh;
+
+       /**
+        * @param pageName
+        */
+       public SelectTaxaWizardPage(String pageName) {
+               super(pageName);
+               setTitle("Select Taxa to export.");
+               
+               
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {           
+               composite = new Composite(parent, SWT.NULL);
+               composite.setLayout(new GridLayout());
+               
+               treeViewer = new TreeViewer(composite);
+               
+               treeViewer.setContentProvider(new ContentProvider());
+               treeViewer.setLabelProvider(new LabelProvider());
+               
+               treeViewer.addSelectionChangedListener(new SelectionChangedListener());
+               
+               treeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+                               
+               setControl(composite);
+       }
+               
+       public void refresh(){
+               
+               if(getConfigurator() != null){
+               
+//             IRunnableWithProgress runnable = new IRunnableWithProgress() {
+//                     
+//                     public void run(IProgressMonitor monitor) throws InvocationTargetException,
+//                                     InterruptedException {
+//                             monitor.beginTask("Retrieving classifications", 3);
+//                             try{
+                               IXMLEntityFactory factory = getConfigurator().getFactory();
+//                             monitor.worked(1);
+//                                     if(factory != null){
+                                               List<Element> classifications = factory.getClassifications();
+//                                             monitor.worked(1);
+                                               treeViewer.setInput(classifications);
+//                                             monitor.worked(1);
+//                                     }
+//                             }finally{
+//                                     monitor.done();
+//                             }
+//                     }
+//             };
+//             
+//             try {
+//                     getWizard().getContainer().run(false, false, runnable);
+//             } catch (InvocationTargetException e) {
+//                     logger.error(e);
+//             } catch (InterruptedException e) {
+//                     logger.error(e);
+//             }
+               }
+       }
+       
+       private class SelectionChangedListener implements ISelectionChangedListener {
+
+               public void selectionChanged(SelectionChangedEvent event) {
+                       StructuredSelection selection = (StructuredSelection) treeViewer.getSelection();
+                       
+                       List<Element> selectedElements = selection.toList();
+                       if(selectedElements.size() > 0){
+                               getConfigurator().setSelectedTaxonNodeElements(selectedElements);
+                               setPageComplete(true);
+                       }
+               }
+               
+       }
+       
+       private class ContentProvider implements ITreeContentProvider{
+
+               public Object[] getChildren(Object parentElement) {
+                       if(parentElement instanceof List){
+                               return ((List)parentElement).toArray();
+                       }
+                       else if(parentElement instanceof Element){
+                               Element element = (Element) parentElement;
+                               
+                               IXMLEntityFactory factory = getConfigurator().getFactory();
+                               
+                               return factory != null ? factory.getChildNodes(element).toArray() : new Object[]{};
+                               
+                       }
+                       
+                       return new Object[]{};
+               }
+
+               public Object getParent(Object element) {
+                       // TODO Auto-generated method stub
+                       return null;
+               }
+
+               public boolean hasChildren(Object element) {
+                       return getChildren(element).length > 0;
+               }
+
+               public Object[] getElements(Object inputElement) {
+                       return getChildren(inputElement);
+               }
+
+               public void dispose() {
+                       // TODO Auto-generated method stub
+                       
+               }
+
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                       // TODO Auto-generated method stub
+                       
+               }
+               
+       }
+       
+       private class LabelProvider  extends ColumnLabelProvider
+               implements ILabelProvider{
+               
+               @Override
+               public String getText(Object element) {
+                       if(element instanceof Element){
+                               Element xmlElement = (Element) element;
+                               EntityType entityType = XMLHelper.getEntityType(xmlElement);
+                               if(EntityType.TAXON_NODE.equals(entityType)){
+                                       xmlElement = getConfigurator().getFactory().getTaxonForTaxonNode(xmlElement);
+                               }                               
+                               return XMLHelper.getTitleCache(xmlElement);
+                       }
+                       return "no title cache";
+               }
+               
+       }
+       
+       @Override
+       public boolean canFlipToNextPage() {
+               return isPageComplete();
+       }
+       
+       @Override
+       public boolean isPageComplete() {
+               return getConfigurator().getSelectedTaxonNodeElements() != null && getConfigurator().getSelectedTaxonNodeElements().size() > 0;
+       }
+}