blob: 1a9bb8c2552d1f971531bad48db09eba5d1790cf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 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 API and implementation
*******************************************************************************/
package org.eclipse.jst.j2ee.internal.wizard;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jst.j2ee.internal.plugin.CommonEditorUtility;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.ui.IWorkbench;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
/**
* <p>
* Serves as a base class for Wizards which export J2EE artifact structures from Eclipse projects
* into a deployable form.
* </p>
* <p>
* Subclasses must provide the methods that are required by
* {@link com.ibm.etools.j2ee.common.wizard.datamodel.WTPWizard}.
* </p>
* <p>
* Optionally, subclasses may also override the following methods:
* <ul>
* <li>{@link #doInit()()}
* <li>{@link #doDispose()()}
* </ul>
* </p>
* <p>
* The base class will ensure that the Wizard is not spawned unless all open editors are in a
* non-dirty state. Additionally, the selection from the active view which spanwed the wizard will
* be made available to subclasses via {@link #getSelection()}.
* </p>
*/
public abstract class J2EEArtifactExportWizard extends DataModelWizard {
/**
* <p>
* Constant used to identify the key of the main page of the Wizard.
* </p>
*/
protected static final String MAIN_PG = "main"; //$NON-NLS-1$
private IStructuredSelection currentSelection;
/**
* <p>
* The default constructor. Creates a wizard with no selection, no model instance, and no
* operation instance. The model and operation will be created as needed.
* </p>
*/
public J2EEArtifactExportWizard() {
super();
setWindowTitle(J2EEUIMessages.getResourceString("67"));//$NON-NLS-1$
}
/**
* <p>
* The model is used to prepopulate the wizard controls and interface with the operation.
* </p>
*
* @param model
* The model parameter is used to pre-populate wizard controls and interface with the
* operation
*/
public J2EEArtifactExportWizard(IDataModel model) {
super(model);
setWindowTitle(J2EEUIMessages.getResourceString("67"));//$NON-NLS-1$
}
/**
* <p>
* Invoked from init(IWorkbench, IStructuredSelection) once the workbench and selection have
* been safely stored away.
* </p>
* <p>
* No-op by default.
* </p>
*/
protected void doInit() {
//init
}
/**
* <p>
* Invoked from {@link #dispose()}. Should be used to handle any specific Wizard disposal.
* </p>
*/
private void doDispose() {
//dispose
}
/**
* <p>
* The selection is used to pre-populate values in the Wizard dialog controls.
* </p>
*
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
* org.eclipse.jface.viewers.IStructuredSelection)
*
* @param workbench
* the current workbench parent of the wizard
* @param aSelection
* the selection from the view used to start the wizard (if any)
*/
public final void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.EXPORT_WIZ_TITLE));
this.currentSelection = selection;
//TODO: enable selection defaults
// if (this.currentSelection.size() > 0) {
// Object element = this.currentSelection.getFirstElement();
// IProject project = ProjectUtilities.getProject(element);
// if (project != null) {
// IDataModel m = getDataModel();
// Object originalProjectName = m.getProperty(IJ2EEComponentExportDataModelProperties.COMPONENT_NAME);
// m.setProperty(IJ2EEComponentExportDataModelProperties.COMPONENT_NAME, project.getName());
// if (!m.validateProperty(IJ2EEComponentExportDataModelProperties.COMPONENT_NAME).isOK()) {
// m.setProperty(IJ2EEComponentExportDataModelProperties.COMPONENT_NAME, originalProjectName);
// }
// }
// }
doInit();
}
/**
* <p>
* Calls {@link #doDispose()}and then nulls out fields that are no longer needed once the
* wizard completes.
* </p>
*
* @see com.ibm.etools.j2ee.common.wizard.datamodel.WTPWizard#dispose()
*/
public final void dispose() {
super.dispose();
doDispose();
this.currentSelection = null;
}
protected final boolean prePerformFinish() {
if (!CommonEditorUtility.promptToSaveAllDirtyEditors()) {
return false;
}
if (CommonEditorUtility.getDirtyEditors().length != 0) { // all checkboxes were not selected
return false;
}
return super.prePerformFinish();
}
/**
* @return Returns the currentSelection.
*/
protected final IStructuredSelection getSelection() {
return currentSelection;
}
/**
* @return
*/
protected final J2EEExportPage getMainPage() {
return (J2EEExportPage) getPage(MAIN_PG);
}
}