| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2007 IBM Corporation and others. |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // Contributors: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.publishing.wizards; |
| |
| import java.io.File; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.epf.common.utils.FileUtil; |
| import org.eclipse.epf.library.LibraryService; |
| import org.eclipse.epf.library.LibraryServiceUtil; |
| import org.eclipse.epf.library.configuration.ConfigurationHelper; |
| import org.eclipse.epf.library.ui.preferences.LibraryUIPreferences; |
| import org.eclipse.epf.publishing.services.PublishOptions; |
| import org.eclipse.epf.publishing.ui.PublishingUIPlugin; |
| import org.eclipse.epf.publishing.ui.PublishingUIResources; |
| import org.eclipse.epf.publishing.ui.preferences.PublishingUIPreferences; |
| import org.eclipse.epf.ui.wizards.BaseWizardPage; |
| import org.eclipse.epf.uma.MethodConfiguration; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.wizard.IWizardPage; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchWizard; |
| |
| /** |
| * The Publish Method Configuration wizard. |
| * |
| * @author Kelvin Low |
| * @author Bingxue Xu |
| * @author Jinhua Xi |
| * @since 1.0 |
| */ |
| public class PublishConfigurationWizard extends AbstractPublishWizard { |
| |
| // The wizard pages. |
| protected PublishConfigSelectConfigPage selectConfigPage; |
| |
| protected PublishConfigPublishOptionsPage publishOptionsPage; |
| |
| private Map configProcesspageMap = new HashMap(); |
| |
| /** |
| * Creates a new instance. |
| */ |
| public PublishConfigurationWizard() { |
| super(); |
| setWindowTitle(PublishingUIResources.publishConfigWizard_title); //$NON-NLS-1$ |
| } |
| |
| /** |
| * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection) |
| */ |
| public void init(IWorkbench workbench, IStructuredSelection selection) { |
| } |
| |
| protected ImageDescriptor getImageDescriptor() { |
| return PublishingUIPlugin.getDefault() |
| .getImageDescriptor("wizban/PublishConfiguration.gif"); //$NON-NLS-1$ |
| |
| } |
| |
| /** |
| * get the publish options |
| * @return PublishOptions |
| */ |
| public PublishOptions getPublishOptions() { |
| if ( super.dataModel == null ) { |
| super.dataModel = new PublishOptions(); |
| } |
| |
| return super.dataModel; |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.addPages() |
| */ |
| public void addPages() { |
| ImageDescriptor imageDescriptor = getImageDescriptor(); |
| |
| selectConfigPage = new PublishConfigSelectConfigPage( |
| "PublishConfigSelectOverviewPage", dataModel); //$NON-NLS-1$ |
| selectConfigPage.setImageDescriptor(imageDescriptor); |
| addPage(selectConfigPage); |
| |
| publishOptionsPage = new PublishConfigPublishOptionsPage( |
| "PublishConfigPublishOptionsPage", dataModel); //$NON-NLS-1$ |
| publishOptionsPage.setImageDescriptor(imageDescriptor); |
| addPage(publishOptionsPage); |
| } |
| |
| /** |
| * get the select process vizwrd page |
| * |
| * @param configName String the configuration name |
| * |
| * @return IWizardPage |
| */ |
| public IWizardPage getSelProcessPage(String configName) { |
| |
| PublishConfigSelectProcessPage selectProcessPage = (PublishConfigSelectProcessPage) configProcesspageMap |
| .get(configName); |
| |
| if (selectProcessPage == null) { |
| ImageDescriptor imageDescriptor = PublishingUIPlugin.getDefault() |
| .getImageDescriptor("wizban/PublishConfiguration.gif"); //$NON-NLS-1$ |
| |
| selectProcessPage = new PublishConfigSelectProcessPage( |
| "PublishConfigSelectProcessPage", dataModel); //$NON-NLS-1$ |
| selectConfigPage.setImageDescriptor(imageDescriptor); |
| addPage(selectProcessPage); |
| |
| configProcesspageMap.put(configName, selectProcessPage); |
| } |
| |
| return selectProcessPage; |
| } |
| |
| /** |
| * get the next page for the given page |
| * @param page IWizardPage |
| * @return IWizardPage |
| */ |
| public IWizardPage getNextPage(IWizardPage page) { |
| if (page == selectConfigPage) { |
| if (dataModel.getSelectedConfig() != null) { |
| String configName = dataModel.getSelectedConfig(); |
| MethodConfiguration config = LibraryServiceUtil |
| .getMethodConfiguration(LibraryService.getInstance() |
| .getCurrentMethodLibrary(), configName); |
| List procs = ConfigurationHelper.getAllProcesses(config); |
| if (procs != null && procs.size() > 0) { |
| return getSelProcessPage(configName); |
| } else { |
| ((BaseWizardPage)publishOptionsPage).onEnterPage( |
| super.dataModel.getSelectedConfig()); |
| return publishOptionsPage; |
| } |
| } else |
| return null; |
| } else if (page == publishOptionsPage) { |
| return null; |
| } else { |
| ((BaseWizardPage)publishOptionsPage).onEnterPage( |
| super.dataModel.getSelectedConfig()); |
| return publishOptionsPage; |
| } |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.IWizard#canFinish() |
| */ |
| public boolean canFinish() { |
| return (this.getContainer().getCurrentPage() == publishOptionsPage && publishOptionsPage |
| .isPageComplete()); |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.IWizard#performFinish() |
| */ |
| public boolean performFinish() { |
| dataModel = publishOptionsPage.getPublishingOptions(); |
| boolean answer = checkAndCreateDir(dataModel.publicationPath); |
| if (answer) { |
| dataModel.setFinishPressed(true); |
| PublishingUIPreferences.setPublishPath(dataModel.getSelectedConfig(),dataModel |
| .getPublicationPath()); |
| PublishingUIPreferences.setTitle(dataModel.getSelectedConfig(),dataModel.getTitle()); |
| PublishingUIPreferences.setBannerImage(dataModel.getSelectedConfig(),dataModel.getBannerImage()); |
| PublishingUIPreferences.setAboutHTML(dataModel.getSelectedConfig(),dataModel.getAboutHTML()); |
| PublishingUIPreferences.setFeedbackURL(dataModel.getSelectedConfig(),dataModel.getFeedbackURL()); |
| PublishingUIPreferences.setIncludeGlossary(dataModel.getSelectedConfig(),dataModel |
| .isGenerateGlossary()); |
| PublishingUIPreferences |
| .setIncludeIndex(dataModel.getSelectedConfig(),dataModel.isGenerateIndex()); |
| // PublishingUIPreferences.setIncludeSearch(dataModel |
| // .isGenerateSearchDB()); |
| // PublishingUIPreferences.setIncludeProcessCustomization(dataModel |
| // .isUseApplet()); |
| PublishingUIPreferences.setCheckExternalLinks(dataModel.getSelectedConfig(),dataModel |
| .isCheckExtLinks()); |
| PublishingUIPreferences.setConvertBrokenLinks(dataModel.getSelectedConfig(),dataModel.isConvertBrokenLinks()); |
| PublishingUIPreferences.setLightWeightTree(dataModel.getSelectedConfig(),dataModel.isGenerateLightWeightTree()); |
| PublishingUIPreferences.setExtraDescriptorInfo(dataModel.getSelectedConfig(),dataModel.isShowExtraDescriptorInfo()); |
| |
| PublishingUIPreferences.setPublishUnopenActivitydd(dataModel.getSelectedConfig(), |
| dataModel.isAutoGenerateActivityDiagrams()); |
| PublishingUIPreferences.setPublishADForActivityExtension(dataModel.getSelectedConfig(), |
| dataModel.isUnopenExtendedActivityDiagram()); |
| |
| PublishingUIPreferences.saveAllPreferences(); |
| LibraryUIPreferences.saveAllPreferences(); |
| |
| return true; |
| } |
| dataModel.setFinishPressed(false); |
| return false; |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.IWizard#performCancel() |
| */ |
| public boolean performCancel() { |
| dataModel.setFinishPressed(false); |
| return true; |
| } |
| |
| /** |
| * Checks and creates the destination path. |
| */ |
| protected boolean checkAndCreateDir(String dir) { |
| String defaultPublishPath = PublishingUIPreferences |
| .getDefaultPublishPath(); |
| boolean answer = false; |
| |
| IPath ecPath = Path.fromOSString(dir); |
| if (!ecPath.isAbsolute()) { |
| String path = defaultPublishPath |
| + System.getProperty("file.separator") + dir; //$NON-NLS-1$ |
| answer = PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayPrompt( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.confirmPathDialog_text, path)); //$NON-NLS-1$ |
| |
| if (answer) { |
| dataModel.setPublicationPath(dir); |
| } else { |
| return false; |
| } |
| } |
| |
| File file = new File(dir); |
| |
| if (file.exists()) { |
| File[] files = file.listFiles(); |
| if (files != null && files.length > 0) { |
| answer = PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayConfirmation( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.overwriteDialog_text, dir)); //$NON-NLS-1$ |
| |
| if (answer == true) { |
| try { |
| answer = FileUtil |
| .deleteAllFiles(file.getAbsolutePath()); |
| if (answer == false) { |
| PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayError( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.cannotPublishError_msg, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.deleteFilesError_reason, dir)); //$NON-NLS-1$ |
| return false; |
| |
| } |
| } catch (Exception e) { |
| PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayError( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.cannotPublishError_msg, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.deleteFilesError_reason, dir), e); //$NON-NLS-1$ |
| return false; |
| } |
| } |
| } else { |
| return true; |
| } |
| } else { |
| try { |
| answer = file.mkdirs(); |
| } catch (Exception e) { |
| PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayError( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.cannotPublishError_msg, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.createDirError_reason, file.getAbsolutePath()), e); //$NON-NLS-1$ |
| return false; |
| } |
| if (!answer) { |
| PublishingUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayError( |
| PublishingUIResources.publishConfigDialog_title, //$NON-NLS-1$ |
| PublishingUIResources.cannotPublishError_msg, //$NON-NLS-1$ |
| PublishingUIResources.bind(PublishingUIResources.createDirError_reason, file.getAbsolutePath())); //$NON-NLS-1$ |
| return false; |
| } |
| } |
| |
| return answer; |
| } |
| |
| } |