blob: 3b5d62d1298a995f9f2806cccd563874c655a314 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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;
}
}