diff options
Diffstat (limited to 'bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/javadocexport/JavadocWizard.java')
-rw-r--r-- | bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/javadocexport/JavadocWizard.java | 456 |
1 files changed, 0 insertions, 456 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/javadocexport/JavadocWizard.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/javadocexport/JavadocWizard.java deleted file mode 100644 index 397a780a..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/javadocexport/JavadocWizard.java +++ /dev/null @@ -1,456 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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 - * Sebastian Davids <sdavids@gmx.de> bug 38692 - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.javadocexport; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Status; -import org.eclipse.debug.core.DebugEvent; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.IDebugEventSetListener; -import org.eclipse.debug.core.ILaunch; -import org.eclipse.debug.core.ILaunchConfigurationType; -import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.debug.core.ILaunchManager; -import org.eclipse.debug.core.Launch; -import org.eclipse.debug.core.model.IProcess; -import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.IWizardPage; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IExportWizard; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.IJavaScriptProject; -import org.eclipse.wst.jsdt.internal.corext.util.Messages; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.JavaPluginImages; -import org.eclipse.wst.jsdt.internal.ui.actions.OpenBrowserUtil; -import org.eclipse.wst.jsdt.internal.ui.dialogs.OptionalMessageDialog; -import org.eclipse.wst.jsdt.internal.ui.javaeditor.EditorUtility; -import org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringSaveHelper; -import org.eclipse.wst.jsdt.internal.ui.util.ExceptionHandler; -import org.eclipse.wst.jsdt.internal.ui.util.PixelConverter; -import org.eclipse.wst.jsdt.launching.IJavaLaunchConfigurationConstants; -import org.eclipse.wst.jsdt.ui.JavaScriptUI; - -public class JavadocWizard extends Wizard implements IExportWizard { - - private JavadocTreeWizardPage fJTWPage; - private JavadocSpecificsWizardPage fJSWPage; - private JavadocStandardWizardPage fJSpWPage; - - private IPath fDestination; - - private boolean fWriteCustom; - private boolean fOpenInBrowser; - - private final String TREE_PAGE_DESC= "JavadocTreePage"; //$NON-NLS-1$ - private final String SPECIFICS_PAGE_DESC= "JavadocSpecificsPage"; //$NON-NLS-1$ - private final String STANDARD_PAGE_DESC= "JavadocStandardPage"; //$NON-NLS-1$ - - private final int YES= 0; - private final int YES_TO_ALL= 1; - private final int NO= 2; - private final int NO_TO_ALL= 3; - private final String JAVADOC_ANT_INFORMATION_DIALOG= "javadocAntInformationDialog";//$NON-NLS-1$ - - - private JavadocOptionsManager fStore; - private IWorkspaceRoot fRoot; - - private IFile fXmlJavadocFile; - - private static final String ID_JAVADOC_PROCESS_TYPE= "org.eclipse.wst.jsdt.ui.javadocProcess"; //$NON-NLS-1$ - - public static void openJavadocWizard(JavadocWizard wizard, Shell shell, IStructuredSelection selection ) { - wizard.init(PlatformUI.getWorkbench(), selection); - - WizardDialog dialog= new WizardDialog(shell, wizard); - PixelConverter converter= new PixelConverter(JFaceResources.getDialogFont()); - dialog.setMinimumPageSize(converter.convertWidthInCharsToPixels(100), converter.convertHeightInCharsToPixels(20)); - dialog.open(); - } - - - public JavadocWizard() { - this(null); - } - - public JavadocWizard(IFile xmlJavadocFile) { - super(); - setDefaultPageImageDescriptor(JavaPluginImages.DESC_WIZBAN_EXPORT_JAVADOC); - setWindowTitle(JavadocExportMessages.JavadocWizard_javadocwizard_title); - - setDialogSettings(JavaScriptPlugin.getDefault().getDialogSettings()); - - fRoot= ResourcesPlugin.getWorkspace().getRoot(); - fXmlJavadocFile= xmlJavadocFile; - - fWriteCustom= false; - } - - /* - * @see IWizard#performFinish() - */ - public boolean performFinish() { - - IJavaScriptProject[] checkedProjects= fJTWPage.getCheckedProjects(); - updateStore(checkedProjects); - - fStore.updateDialogSettings(getDialogSettings(), checkedProjects); - - // Wizard should not run with dirty editors - if (!new RefactoringSaveHelper(RefactoringSaveHelper.SAVE_ALL_ALWAYS_ASK).saveEditors(getShell())) { - return false; - } - - fDestination= Path.fromOSString(fStore.getDestination()); - fDestination.toFile().mkdirs(); - - fOpenInBrowser= fStore.doOpenInBrowser(); - - //Ask if you wish to set the javadoc location for the projects (all) to - //the location of the newly generated javadoc - if (fStore.isFromStandard()) { - try { - - URL newURL= fDestination.toFile().toURL(); - List projs= new ArrayList(); - //get javadoc locations for all projects - for (int i= 0; i < checkedProjects.length; i++) { - IJavaScriptProject curr= checkedProjects[i]; - URL currURL= JavaScriptUI.getProjectJSdocLocation(curr); - if (!newURL.equals(currURL)) { // currURL can be null - //if not all projects have the same javadoc location ask if you want to change - //them to have the same javadoc location - projs.add(curr); - } - } - if (!projs.isEmpty()) { - setAllJavadocLocations((IJavaScriptProject[]) projs.toArray(new IJavaScriptProject[projs.size()]), newURL); - } - } catch (MalformedURLException e) { - JavaScriptPlugin.log(e); - } - } - - if (fJSWPage.generateAnt()) { - //@Improve: make a better message - OptionalMessageDialog.open(JAVADOC_ANT_INFORMATION_DIALOG, getShell(), JavadocExportMessages.JavadocWizard_antInformationDialog_title, null, JavadocExportMessages.JavadocWizard_antInformationDialog_message, MessageDialog.INFORMATION, new String[] { IDialogConstants.OK_LABEL }, 0); - try { - File file= fStore.createXML(checkedProjects); - if (file != null) { - IFile[] files= fRoot.findFilesForLocation(Path.fromOSString(file.getPath())); - if (files != null) { - for (int i= 0; i < files.length; i++) { - files[i].refreshLocal(IResource.DEPTH_ONE, null); - } - } - } - - } catch (CoreException e) { - ExceptionHandler.handle(e, getShell(),JavadocExportMessages.JavadocWizard_error_writeANT_title, JavadocExportMessages.JavadocWizard_error_writeANT_message); - } - } - - if (!executeJavadocGeneration()) - return false; - - return true; - } - - private void updateStore(IJavaScriptProject[] checkedProjects) { - //writes the new settings to store - fJTWPage.updateStore(checkedProjects); - if (!fJTWPage.getCustom()) - fJSpWPage.updateStore(); - fJSWPage.updateStore(); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.wizard.IWizard#performCancel() - */ - public boolean performCancel() { - - IJavaScriptProject[] checkedProjects= fJTWPage.getCheckedProjects(); - updateStore(checkedProjects); - - //If the wizard was not launched from an ant file store the settings - if (fXmlJavadocFile == null) { - fStore.updateDialogSettings(getDialogSettings(), checkedProjects); - } - return super.performCancel(); - } - - private void setAllJavadocLocations(IJavaScriptProject[] projects, URL newURL) { - Shell shell= getShell(); - String[] buttonlabels= new String[] { IDialogConstants.YES_LABEL, IDialogConstants.YES_TO_ALL_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.NO_TO_ALL_LABEL }; - - for (int j= 0; j < projects.length; j++) { - IJavaScriptProject iJavaProject= projects[j]; - String message= Messages.format(JavadocExportMessages.JavadocWizard_updatejavadoclocation_message, new String[] { iJavaProject.getElementName(), fDestination.toOSString()}); - MessageDialog dialog= new MessageDialog(shell, JavadocExportMessages.JavadocWizard_updatejavadocdialog_label, null, message, MessageDialog.QUESTION, buttonlabels, 1); - - switch (dialog.open()) { - case YES : - JavaScriptUI.setProjectJSdocLocation(iJavaProject, newURL); - break; - case YES_TO_ALL : - for (int i= j; i < projects.length; i++) { - iJavaProject= projects[i]; - JavaScriptUI.setProjectJSdocLocation(iJavaProject, newURL); - j++; - } - break; - case NO_TO_ALL : - j= projects.length; - break; - case NO : - default : - break; - } - } - } - - private boolean executeJavadocGeneration() { - Process process= null; - try { - ArrayList vmArgs= new ArrayList(); - ArrayList progArgs= new ArrayList(); - - IStatus status= fStore.getArgumentArray(vmArgs, progArgs); - if (!status.isOK()) { - ErrorDialog.openError(getShell(), JavadocExportMessages.JavadocWizard_error_title, JavadocExportMessages.JavadocWizard_warning_starting_message, status); - } - - File file= File.createTempFile("javadoc-arguments", ".tmp"); //$NON-NLS-1$//$NON-NLS-2$ - vmArgs.add('@' + file.getAbsolutePath()); - - FileWriter writer= new FileWriter(file); - try { - for (int i= 0; i < progArgs.size(); i++) { - String curr= (String) progArgs.get(i); - curr= checkForSpaces(curr); - - writer.write(curr); - writer.write(' '); - } - } finally { - writer.close(); - } - - String[] args= (String[]) vmArgs.toArray(new String[vmArgs.size()]); - process= Runtime.getRuntime().exec(args); - if (process != null) { - // construct a formatted command line for the process properties - StringBuffer buf= new StringBuffer(); - for (int i= 0; i < args.length; i++) { - buf.append(args[i]); - buf.append(' '); - } - - IDebugEventSetListener listener= new JavadocDebugEventListener(getShell().getDisplay(), file); - DebugPlugin.getDefault().addDebugEventListener(listener); - - ILaunchConfigurationWorkingCopy wc= null; - try { - ILaunchConfigurationType lcType= DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationType(IJavaLaunchConfigurationConstants.ID_JAVA_APPLICATION); - String name= JavadocExportMessages.JavadocWizard_launchconfig_name; - wc= lcType.newInstance(null, name); - wc.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true); - - ILaunch newLaunch= new Launch(wc, ILaunchManager.RUN_MODE, null); - IProcess iprocess= DebugPlugin.newProcess(newLaunch, process, JavadocExportMessages.JavadocWizard_javadocprocess_label); - iprocess.setAttribute(IProcess.ATTR_CMDLINE, buf.toString()); - iprocess.setAttribute(IProcess.ATTR_PROCESS_TYPE, ID_JAVADOC_PROCESS_TYPE); - - DebugPlugin.getDefault().getLaunchManager().addLaunch(newLaunch); - - } catch (CoreException e) { - String title= JavadocExportMessages.JavadocWizard_error_title; - String message= JavadocExportMessages.JavadocWizard_launch_error_message; - ExceptionHandler.handle(e, getShell(), title, message); - } - - return true; - - } - } catch (IOException e) { - String title= JavadocExportMessages.JavadocWizard_error_title; - String message= JavadocExportMessages.JavadocWizard_exec_error_message; - - IStatus status= new Status(IStatus.ERROR, JavaScriptUI.ID_PLUGIN, IStatus.ERROR, e.getMessage(), e); - ExceptionHandler.handle(new CoreException(status), getShell(), title, message); - return false; - } - return false; - - } - - private String checkForSpaces(String curr) { - if (curr.indexOf(' ') == -1) { - return curr; - } - StringBuffer buf= new StringBuffer(); - buf.append('\''); - for (int i= 0; i < curr.length(); i++) { - char ch= curr.charAt(i); - if (ch == '\\' || ch == '\'') { - buf.append('\\'); - } - buf.append(ch); - } - buf.append('\''); - return buf.toString(); - } - - /* - * @see IWizard#addPages() - */ - public void addPages() { - - fJTWPage= new JavadocTreeWizardPage(TREE_PAGE_DESC, fStore); - fJSWPage= new JavadocSpecificsWizardPage(SPECIFICS_PAGE_DESC, fJTWPage, fStore); - fJSpWPage= new JavadocStandardWizardPage(STANDARD_PAGE_DESC, fJTWPage, fStore); - - super.addPage(fJTWPage); - super.addPage(fJSpWPage); - super.addPage(fJSWPage); - - fJTWPage.init(); - fJSpWPage.init(); - fJSWPage.init(); - - } - - public void init(IWorkbench workbench, IStructuredSelection structuredSelection) { - IWorkbenchWindow window= workbench.getActiveWorkbenchWindow(); - List selected= Collections.EMPTY_LIST; - if (window != null) { - ISelection selection= window.getSelectionService().getSelection(); - if (selection instanceof IStructuredSelection) { - selected= ((IStructuredSelection) selection).toList(); - } else { - IJavaScriptElement element= EditorUtility.getActiveEditorJavaInput(); - if (element != null) { - selected= new ArrayList(); - selected.add(element); - } - } - } - fStore= new JavadocOptionsManager(fXmlJavadocFile, getDialogSettings(), selected); - } - - private void refresh(IPath path) { - if (fRoot.findContainersForLocation(path).length > 0) { - try { - fRoot.refreshLocal(IResource.DEPTH_INFINITE, null); - } catch (CoreException e) { - JavaScriptPlugin.log(e); - } - } - } - - private void spawnInBrowser(Display display) { - if (fOpenInBrowser) { - try { - IPath indexFile= fDestination.append("index.html"); //$NON-NLS-1$ - URL url= indexFile.toFile().toURL(); - OpenBrowserUtil.open(url, display, getWindowTitle()); - } catch (MalformedURLException e) { - JavaScriptPlugin.log(e); - } - } - } - - private class JavadocDebugEventListener implements IDebugEventSetListener { - private Display fDisplay; - private File fFile; - - public JavadocDebugEventListener(Display display, File file) { - fDisplay= display; - fFile= file; - } - - public void handleDebugEvents(DebugEvent[] events) { - for (int i= 0; i < events.length; i++) { - if (events[i].getKind() == DebugEvent.TERMINATE) { - try { - if (!fWriteCustom) { - fFile.delete(); - refresh(fDestination); //If destination of javadoc is in workspace then refresh workspace - spawnInBrowser(fDisplay); - } - } finally { - DebugPlugin.getDefault().removeDebugEventListener(this); - } - return; - } - } - } - } - - public IWizardPage getNextPage(IWizardPage page) { - if (page instanceof JavadocTreeWizardPage) { - if (!fJTWPage.getCustom()) { - return fJSpWPage; - } - return fJSWPage; - } else if (page instanceof JavadocSpecificsWizardPage) { - return null; - } else if (page instanceof JavadocStandardWizardPage) - return fJSWPage; - else - return null; - } - - public IWizardPage getPreviousPage(IWizardPage page) { - if (page instanceof JavadocSpecificsWizardPage) { - if (!fJTWPage.getCustom()) { - return fJSpWPage; - } - return fJSWPage; - } else if (page instanceof JavadocTreeWizardPage) { - return null; - } else if (page instanceof JavadocStandardWizardPage) - return fJTWPage; - else - return null; - } - -} |