Java tutorial
/******************************************************************************* * Copyright (C) 2003, 2004, 2007, 2008, 2013, Guillaume Brocker * * 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: * Guillaume Brocker - Initial API and implementation * ******************************************************************************/ package eclox.ui.wizard; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import eclox.core.doxygen.Doxygen; import eclox.core.doxygen.InvokeException; import eclox.core.doxygen.RunException; import eclox.ui.Plugin; /** * Implement the new file wizard extension to provide a way to create * new doxyfiles. * * @author gbrocker */ public class NewDoxyfileWizard extends Wizard implements INewWizard { private IFile m_doxyfile; ///< The created doxyfile. private NewDoxyfileWizardPage m_page; ///< The wizard page used to get the file name. /** * Retrieves the created doxyfile. * * @return the created doxyfile, null if none */ public IFile getDoxyfile() { return m_doxyfile; } /** * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection) */ public void init(IWorkbench workbench, IStructuredSelection selection) { m_page = new NewDoxyfileWizardPage(selection); addPage(m_page); setWindowTitle("New Doxygen Configuration"); } /** * @see org.eclipse.jface.wizard.Wizard#performFinish() */ public boolean performFinish() { for (;;) { // Creates the doxyfile resource. IFile doxyfile = createFile(m_page.getContainerFullPath(), m_page.getFileName()); // Warn user if the doxyfile exists. if (doxyfile.exists()) { MessageDialog.openWarning(getShell(), "Resource Exists", "The resource " + doxyfile.getFullPath().toString() + " already exists !"); return false; } // Creates the effective resource file. try { Doxygen.getDefault().generate(doxyfile); m_doxyfile = doxyfile; return true; } // Doxygen returned an error. catch (RunException runException) { MessageDialog.openError(getShell(), "Doxygen Error", "An error occured while running doxygen. " + runException.toString()); return true; } // Doxygen was impossible to run. catch (InvokeException invokeException) { if (Plugin.editPreferencesAfterDoxygenInvocationFailed()) { continue; } // Stops the wizard. return true; } } } /** * Create the resource file. * * @param containerPath The path to the container for the resource to create. * @param fileName A string containnig the name of the file resource to create. * * @return The created file resource. The file system's file hasn't been created at this step. */ private IFile createFile(IPath containerPath, String fileName) { IFile result; IPath filePath; String fileExtension; filePath = containerPath.append(fileName); fileExtension = filePath.getFileExtension(); if ((fileExtension == null || fileExtension.compareToIgnoreCase("Doxyfile") != 0) && fileName.compareToIgnoreCase("Doxyfile") != 0) { filePath = filePath.addFileExtension("Doxyfile"); } result = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath); return result; } }