From: n.hoffmann Date: Thu, 9 Sep 2010 11:48:18 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rcp.ss-first-working-version~324 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/dec50689d565e78cbeaf56115fa556d50c1fbf21?hp=efe18962b7a62d52cfe2264cf74a6a20d77f6859 --- diff --git a/.gitattributes b/.gitattributes index 7952f31a6..ad818e689 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/.gitignore b/.gitignore index ac9c1d5d6..7c4c56dd4 100644 --- a/.gitignore +++ b/.gitignore @@ -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 index 000000000..8b300189a --- /dev/null +++ b/taxeditor-printpublisher/META-INF/MANIFEST.MF @@ -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 index 000000000..43cb29eda --- /dev/null +++ b/taxeditor-printpublisher/build.properties @@ -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 index 000000000..0f8102cfc --- /dev/null +++ b/taxeditor-printpublisher/plugin.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/taxeditor-printpublisher/pom.xml b/taxeditor-printpublisher/pom.xml new file mode 100644 index 000000000..99f62e26c --- /dev/null +++ b/taxeditor-printpublisher/pom.xml @@ -0,0 +1,30 @@ + + + + printpublisher-parent + eu.etaxonomy + 1.0 + + + 4.0.0 + + eu.etaxonomy + + printpublisher-plugin + + jar + + 1.0-SNAPSHOT + + printpublisher-plugin + + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + 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 index 000000000..5e1380e47 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/handler/GeneratePdfHandler.java @@ -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 index 000000000..8253bb2cc --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/internal/PrintpublisherPlugin.java @@ -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 index 000000000..280309a89 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizard.java @@ -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 index 000000000..18e9562ac --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/AbstractPublishWizardPage.java @@ -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 index 000000000..3a95e027d --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/DirectPublishingWizard.java @@ -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 index 000000000..fb3b7f09a --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OptionsWizardPage.java @@ -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 index 000000000..e357fa417 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/OverviewWizardPage.java @@ -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 index 000000000..15b48f752 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardODF.java @@ -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 index 000000000..d074cdaa6 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardPDF.java @@ -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 index 000000000..2c1384d4a --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardTaxPub.java @@ -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 index 000000000..5bfb00645 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/PublishWizardXML.java @@ -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 index 000000000..4283a56b6 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFeatureTreeWizardPage.java @@ -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 featureTrees = factory.getFeatureTrees(); + List realFeatureTrees = new ArrayList(); + 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 index 000000000..d338a16fa --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectFolderWizardPage.java @@ -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 index 000000000..f8bd1967a --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectServiceWizardPage.java @@ -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 index 000000000..17d5cbac2 --- /dev/null +++ b/taxeditor-printpublisher/src/main/java/eu/etaxonomy/printpublisher/wizard/SelectTaxaWizardPage.java @@ -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 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 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; + } +}