4 package eu
.etaxonomy
.taxeditor
.printpublisher
.wizard
;
6 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
7 import org
.eclipse
.core
.runtime
.IStatus
;
8 import org
.eclipse
.core
.runtime
.Status
;
9 import org
.eclipse
.core
.runtime
.jobs
.Job
;
10 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
11 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
12 import org
.eclipse
.jface
.wizard
.IWizardPage
;
13 import org
.eclipse
.jface
.wizard
.Wizard
;
14 import org
.eclipse
.swt
.widgets
.Display
;
15 import org
.eclipse
.ui
.IExportWizard
;
16 import org
.eclipse
.ui
.IWorkbench
;
18 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
19 import eu
.etaxonomy
.cdm
.print
.PublishConfigurator
;
20 import eu
.etaxonomy
.cdm
.print
.Publisher
;
21 import eu
.etaxonomy
.cdm
.print
.out
.IPublishOutputModule
;
22 import eu
.etaxonomy
.taxeditor
.model
.CdmProgressMonitorAdapter
;
23 import eu
.etaxonomy
.taxeditor
.printpublisher
.PrintUtil
;
24 import eu
.etaxonomy
.taxeditor
.printpublisher
.internal
.PrintpublisherPlugin
;
25 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
28 * <p>AbstractPublishWizard class.</p>
31 * @created Apr 1, 2010
34 public abstract class AbstractPublishWizard
extends Wizard
implements IExportWizard
, IHasPersistableSettings
{
36 /** Constant <code>PAGE_SERVICE="PAGE_SERVICE"</code> */
37 public static final String PAGE_SERVICE
= "PAGE_SERVICE";
38 /** Constant <code>PAGE_TAXA="PAGE_TAXA"</code> */
39 public static final String PAGE_TAXA
= "PAGE_TAXA";
40 /** Constant <code>PAGE_OPTIONS="PAGE_OPTIONS"</code> */
41 public static final String PAGE_OPTIONS
= "PAGE_OPTIONS";
42 /** Constant <code>PAGE_FOLDER="PAGE_FOLDER"</code> */
43 public static final String PAGE_FOLDER
= "PAGE_FOLDER";
44 /** Constant <code>PAGE_OVERVIEW="PAGE_OVERVIEW"</code> */
45 public static final String PAGE_OVERVIEW
= "PAGE_OVERVIEW";
46 /** Constant <code>PAGE_FEATURETREE="PAGE_FEATURETREE"</code> */
47 public static final String PAGE_FEATURETREE
= "PAGE_FEATURETREE";
48 /** Constant <code>PAGE_STYLESHEET="PAGE_STYLESHEET"</code> */
49 public static final String PAGE_STYLESHEET
= "PAGE_STYLESHEET";
51 protected SelectServiceWizardPage pageService
;
52 protected SelectTaxaWizardPage pageTaxa
;
53 protected SelectOptionsWizardPage pageOptions
;
54 protected SelectFeatureTreeWizardPage pageFeatureTree
;
55 protected SelectDirectoryWizardPage pageFolder
;
56 protected SelectStylesheetWizardPage pageStylesheet
;
58 private PublishConfigurator configurator
;
60 private IPublishOutputModule outputModule
;
63 * <p>Constructor for AbstractPublishWizard.</p>
65 public AbstractPublishWizard(){
66 setNeedsProgressMonitor(true);
67 setDialogSettings(PrintpublisherPlugin
.getDefault().getDialogSettings());
71 * @see org.eclipse.jface.wizard.Wizard#performFinish()
75 public boolean performFinish() {
77 Job job
= new Job("Running Print Publisher") {
80 protected IStatus
run(IProgressMonitor monitor
) {
81 monitor
.beginTask("Print Publisher", getConfigurator().calculateNumberOfNodes() + 1);
82 ConversationHolder conversation
= null;
84 getConfigurator().setProgressMonitor(CdmProgressMonitorAdapter
.CreateMonitor(monitor
));
86 if(getConfigurator().isLocal()){
87 conversation
= CdmStore
.createConversation();
88 // we want to enforce that the session is closed and nothing is
89 // instantiated beneath the regular cdmlib-remote object boundaries
90 conversation
.commit(false);
93 Publisher
.publish(getConfigurator());
97 if(conversation
!= null) conversation
.close();
98 Display
.getDefault().asyncExec(new Runnable() {
101 MessageDialog
.openInformation(Display
.getDefault().getActiveShell(), "Print Publisher", "Your document was created.");
105 return Status
.OK_STATUS
;
110 job
.setPriority(Job
.BUILD
);
118 public void addPages() {
121 pageService
= new SelectServiceWizardPage(PAGE_SERVICE
);
122 addPage(pageService
);
124 pageOptions
= new SelectOptionsWizardPage(PAGE_OPTIONS
);
125 addPage(pageOptions
);
127 pageFeatureTree
= new SelectFeatureTreeWizardPage(PAGE_FEATURETREE
);
128 addPage(pageFeatureTree
);
130 pageStylesheet
= new SelectStylesheetWizardPage(PAGE_STYLESHEET
);
131 addPage(pageStylesheet
);
133 pageFolder
= new SelectDirectoryWizardPage(PAGE_FOLDER
);
139 public void loadSettings() {
140 for(IWizardPage page
: getPages()){
141 if(page
instanceof IHasPersistableSettings
){
142 ((IHasPersistableSettings
) page
).loadSettings();
148 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
151 public void init(IWorkbench workbench
, IStructuredSelection selection
) {
152 PrintUtil
.info("Instantiating wizard: " + this.getClass().getSimpleName());
159 public boolean canFinish() {
160 boolean canFinish
= true;
162 canFinish
&= pageService
.isPageComplete();
164 // persistable settings pages
165 canFinish
&= pageFeatureTree
.isPageComplete();
166 canFinish
&= pageFolder
.isPageComplete();
167 canFinish
&= pageStylesheet
.isPageComplete();
173 * <p>Getter for the field <code>configurator</code>.</p>
175 * @return a {@link eu.etaxonomy.cdm.print.PublishConfigurator} object.
177 protected PublishConfigurator
getConfigurator() {
182 * <p>Setter for the field <code>configurator</code>.</p>
184 * @param configurator a {@link eu.etaxonomy.cdm.print.PublishConfigurator} object.
186 protected void setConfigurator(PublishConfigurator configurator
){
187 this.configurator
= configurator
;
191 * <p>Setter for the field <code>outputModule</code>.</p>
193 * @param outputModule a {@link eu.etaxonomy.cdm.print.out.IPublishOutputModule} object.
195 protected void setOutputModule(IPublishOutputModule outputModule
){
196 this.outputModule
= outputModule
;
200 * <p>Getter for the field <code>outputModule</code>.</p>
202 * @return a {@link eu.etaxonomy.cdm.print.out.IPublishOutputModule} object.
204 public IPublishOutputModule
getOutputModule(){