org.eclipse.jst.jsf.common.ui.internal.dialogfield.JavaClassWizard.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jst.jsf.common.ui.internal.dialogfield.JavaClassWizard.java

Source

/*******************************************************************************
 * Copyright (c) 2006 Sybase, Inc. 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:
 *     Sybase, Inc. - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.jsf.common.ui.internal.dialogfield;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;

/**
 * @author mengbo
 */
/*package*/ class JavaClassWizard extends Wizard {
    private static String STORE_SECTION = "JavaClassWizard"; //$NON-NLS-1$

    private JavaClassWizardPage _mainPage;

    private String _className, _classArgs;

    private IProject _project;

    private String _superClass;

    private List _interfaceList;

    private boolean _autoOpenResource = true;

    /**
     * @param autoOpenResource
     */
    public void setAutoOpenResource(boolean autoOpenResource) {
        _autoOpenResource = autoOpenResource;
    }

    /**
     * @param project
     * @param className
     */
    public JavaClassWizard(IProject project, String className) {
        this(project, className, null, null);
    }

    /**
     * @param project
     * @param className
     * @param superClass
     * @param superInterfaces
     */
    public JavaClassWizard(IProject project, String className, String superClass, List superInterfaces) {
        this._project = project;
        this._className = className;
        this._superClass = superClass;
        this._interfaceList = superInterfaces;
        IDialogSettings masterSettings = JSFUICommonPlugin.getDefault().getDialogSettings();
        setDialogSettings(getSettingsSection(masterSettings));
        setWindowTitle(JSFUICommonPlugin.getResourceString("DialogField.JavaClassWizard.NewClass"));//$NON-NLS-1$
        setNeedsProgressMonitor(true);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.IWizard#addPages()
     */
    public void addPages() {
        _mainPage = new JavaClassWizardPage(_project, _className, _superClass, _interfaceList);
        addPage(_mainPage);
        _mainPage.init();
    }

    private IDialogSettings getSettingsSection(IDialogSettings master) {
        IDialogSettings setting = master.getSection(STORE_SECTION);
        if (setting == null) {
            setting = master.addNewSection(STORE_SECTION);
        }
        return setting;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.IWizard#performFinish()
     */
    public boolean performFinish() {
        if (_mainPage.getPackageText() != null && _mainPage.getPackageText().length() > 0) {
            StringBuffer buffer = new StringBuffer(_mainPage.getPackageText());
            buffer.append(".");//$NON-NLS-1$
            buffer.append(_mainPage.getTypeName());
            _className = buffer.toString();
        } else {
            _className = _mainPage.getTypeName();
        }
        _classArgs = _mainPage.getClassArgs();
        IRunnableWithProgress op = new WorkspaceModifyOperation() {
            protected void execute(IProgressMonitor monitor)
                    throws CoreException, InvocationTargetException, InterruptedException {
                _mainPage.createType(monitor);
                IResource resource = _mainPage.getModifiedResource();
                if (resource != null && _autoOpenResource) {
                    selectAndReveal(resource);
                    if (_project.hasNature(JavaCore.NATURE_ID)) {
                        IJavaProject jProject = JavaCore.create(_project);
                        IJavaElement jElement = jProject
                                .findElement(resource.getProjectRelativePath().removeFirstSegments(1));
                        if (jElement != null) {
                            JavaUI.openInEditor(jElement);
                        }
                    } else if (resource instanceof IFile) {
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                        IDE.openEditor(page, (IFile) resource, true);
                    }
                }
            }

        };
        try {
            getContainer().run(false, true, op);
        } catch (InvocationTargetException e) {
            e.printStackTrace(); // PDEPlugin.logException(e);
        } catch (InterruptedException e) {
            e.printStackTrace();// PDEPlugin.logException(e);
        }
        return true;
    }

    private void selectAndReveal(IResource newResource) {
        BasicNewResourceWizard.selectAndReveal(newResource, getWorkbenchWindow());
    }

    private IWorkbenchWindow getWorkbenchWindow() {
        return PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    }

    private String getClassName() {
        return _className;
    }

    /**
     * @return the class name including args
     */
    public String getClassNameWithArgs() {
        if (_classArgs != null && _classArgs.length() > 0) {
            StringBuffer buffer = new StringBuffer(_className);
            buffer.append(":");//$NON-NLS-1$
            buffer.append(_classArgs);
            return buffer.toString();
        }
        return getClassName();
    }
}