blob: 2817d3e9fb9b57acc637850150c86eccd7e75634 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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.ui.actions;
import java.util.List;
import org.eclipse.epf.library.LibraryPlugin;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.library.LibraryServiceUtil;
import org.eclipse.epf.library.edit.ui.UserInteractionHelper;
import org.eclipse.epf.library.prefs.LibraryPreferenceConstants;
import org.eclipse.epf.publishing.services.AbstractPublishManager;
import org.eclipse.epf.publishing.services.PublishOptions;
import org.eclipse.epf.publishing.ui.PublisherElement;
import org.eclipse.epf.publishing.ui.PublisherFactory;
import org.eclipse.epf.publishing.ui.PublishingUIPlugin;
import org.eclipse.epf.publishing.ui.PublishingUIResources;
import org.eclipse.epf.publishing.wizards.AbstractPublishWizard;
import org.eclipse.epf.publishing.wizards.PublishProgressMonitorDialog;
import org.eclipse.epf.publishing.wizards.PublishingOperation;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PlatformUI;
/**
* Invokes the Publish Method Configuration wizard.
*
* @author Kelvin Low
* @author Jinhua Xi
* @since 1.0
*/
public class PublishConfigurationAction implements
IWorkbenchWindowActionDelegate {
/**
* @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
*/
public void init(IWorkbenchWindow window) {
}
/**
* @see org.eclipse.ui.IActionDelegate#run(IAction)
*/
public void run(IAction action) {
try {
// this will not work, need to pick up the correct publisher
// Jinhua Xi 1/12/07
/*
// Instantiate and initialize the Publish Method Configuraiton
// wizard.
PublishConfigWizard wizard = new PublishConfigWizard();
wizard.init(PlatformUI.getWorkbench(), null);
// Instantiate the wizard container with the wizard and open it.
WizardDialog dialog = new WizardDialog(Display.getCurrent()
.getActiveShell(), wizard);
dialog.create();
dialog.open();
*/
List elements = PublisherFactory.getInstance().getPublisherElements();
if ( elements != null && elements.size() > 0 ) {
// show dialog to select publisher if more then one,
// TODO
PublisherElement e = (PublisherElement)elements.get(0);
startPublish(e);
}
} catch (Exception ex) {
PublishingUIPlugin.getDefault().getLogger().logError(
"Error publishing content", ex); //$NON-NLS-1$
}
}
/**
* @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
}
/**
* @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
*/
public void dispose() {
}
private void startPublish(PublisherElement publisher) throws Exception {
PublishOptions publishDataModel;
AbstractPublishWizard wizard = publisher.getPublishWizard();
wizard.init(PlatformUI.getWorkbench(), null);
publishDataModel = wizard.getPublishOptions();
//publishDataModel = new PublishOptions();
IPreferenceStore store = LibraryPlugin.getDefault()
.getPreferenceStore();
String lastPubPath = store
.getString(LibraryPreferenceConstants.PREF_LAST_PUBLISH_FOLDER);
if (lastPubPath != null && lastPubPath.length() > 0)
publishDataModel.setLastPublicationPath(lastPubPath);
// Instantiate the wizard container with the wizard and open it.
WizardDialog dialog = new WizardDialog(Display.getCurrent()
.getActiveShell(), wizard);
dialog.create();
dialog.open();
if (!publishDataModel.isFinishPressed()) {
return;
}
String publishDestFolder = publishDataModel.getPublicationPath();
store.setValue(LibraryPreferenceConstants.PREF_LAST_PUBLISH_FOLDER,
publishDestFolder);
LibraryPlugin.getDefault().savePluginPreferences();
AbstractPublishManager publishMgr = null;
try {
String selecedConfigName = publishDataModel.getSelectedConfig();
MethodConfiguration config = LibraryServiceUtil
.getMethodConfiguration(LibraryService.getInstance()
.getCurrentMethodLibrary(), selecedConfigName);
publishMgr = publisher.getPublishManager();
publishMgr.init(publishDestFolder, config, publishDataModel);
PublishingOperation operation = new PublishingOperation(publishMgr);
PublishProgressMonitorDialog dlg = new PublishProgressMonitorDialog(
Display.getCurrent().getActiveShell(), publishMgr.getViewBuilder());
UserInteractionHelper
.runWithProgress(
operation,
dlg,
true,
PublishingUIResources.publishConfigWizard_title); //$NON-NLS-1$
} finally {
if (publishMgr != null) {
publishMgr.dispose();
}
}
}
}