/*-
* Copyright (C) 2011-2014 by Iwao AVE!
* This program is made available under the terms of the MIT License.
*/
package org.eclipselabs.stlipse.jspeditor;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.ui.wizards.NewClassCreationWizard;
import org.eclipse.jdt.ui.wizards.NewClassWizardPage;
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipselabs.stlipse.Activator;
import org.eclipselabs.stlipse.util.ClassNameUtil;
import org.eclipselabs.stlipse.util.ProjectUtil;
/**
* @author Iwao AVE!
*/
@SuppressWarnings("restriction")
public class NewBeanclassWizard
{
private IJavaProject project;
private String fqn;
public NewBeanclassWizard(IJavaProject project, String fqn)
{
super();
this.project = project;
this.fqn = fqn;
}
public IType create()
{
// Create a new wizard page.
NewClassWizardPage page = createWizardPage();
// Create wizard with the page.
NewClassCreationWizard wizard = new NewClassCreationWizard(page, true);
wizard.init(PlatformUI.getWorkbench(), null);
// Create wizard dialog.
WizardDialog dialog = createWizardDialog(wizard);
IType createdType = null;
if (dialog.open() == Window.OK)
{
createdType = (IType)wizard.getCreatedElement();
}
return createdType;
}
private WizardDialog createWizardDialog(NewClassCreationWizard wizard)
{
Shell shell = Display.getDefault().getActiveShell();
WizardDialog dialog = new WizardDialog(shell, wizard);
PixelConverter converter = new PixelConverter(JFaceResources.getDialogFont());
dialog.setMinimumPageSize(converter.convertWidthInCharsToPixels(70),
converter.convertHeightInCharsToPixels(20));
dialog.create();
dialog.getShell().setText("Create New ActionBean");
return dialog;
}
private NewClassWizardPage createWizardPage()
{
NewClassWizardPage page = new NewClassWizardPage();
if (fqn != null)
{
page.setTypeName(ClassNameUtil.getTypeName(fqn), false);
try
{
IPackageFragmentRoot pkgRoot = ProjectUtil.getFirstSourceRoot(project);
page.setPackageFragmentRoot(pkgRoot, true);
IPackageFragment pkgFragment = pkgRoot.createPackageFragment(
ClassNameUtil.getPackage(fqn), false, null);
page.setPackageFragment(pkgFragment, false);
}
catch (JavaModelException e)
{
Activator.log(Status.ERROR, "Error occurred while resolving package fragment.",
e);
}
}
return page;
}
}