Mercurial > hg > thermostat-tools-eclipse
view com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/wizards/ThermostatProjectCreationWizard.java @ 121:4c549b4c6fb3
Rename `page` to `pageOne`
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Tue, 25 Mar 2014 12:25:44 -0400 |
parents | 1c4f192bf2e2 |
children | 3a5d1c6148ed |
line wrap: on
line source
package com.redhat.thermostat.tools.eclipse.plugin.wizards; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.launching.IVMInstall; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.jdt.launching.LibraryLocation; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; public class ThermostatProjectCreationWizard extends Wizard implements INewWizard { private ThermostatProjectCreationWizardPage pageOne; private ThermostatProjectCreationWizardPageTwo pageTwo; private HashMap<String, Boolean> selectedComponents; @Override public void init(IWorkbench workbench, IStructuredSelection selection) { setWindowTitle("Create New Thermostat Plugin"); setNeedsProgressMonitor(true); } @Override public void addPages() { pageOne = new ThermostatProjectCreationWizardPage(); addPage(pageOne); pageTwo = new ThermostatProjectCreationWizardPageTwo(); addPage(pageTwo); } @Override public boolean performFinish() { try { selectedComponents = pageOne.getSelectedComponents(); createProject(pageOne.getProjectName()); for (Entry<String, Boolean> temp : selectedComponents.entrySet()) { if (temp.getValue()) { createProject(pageOne.getProjectName() + "-" + temp.getKey()); } } } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } return true; } private void createProject(String projectTitle) throws CoreException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject project = root.getProject(projectTitle); if (project.exists()) { project.delete(true, null); } try { project.create(null); project.open(null); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Set the Java nature to created project IProjectDescription description = project.getDescription(); description.setNatureIds(new String[] { JavaCore.NATURE_ID }); project.setDescription(description, null); // Create Java project IJavaProject javaProject = JavaCore.create(project); // Add bin/ouput folder IFolder binFolder = project.getFolder("bin"); binFolder.create(false, true, null); javaProject.setOutputLocation(binFolder.getFullPath(), null); // Add libs to project class path List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>(); IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall(); LibraryLocation[] locations = JavaRuntime .getLibraryLocations(vmInstall); for (LibraryLocation element : locations) { entries.add(JavaCore.newLibraryEntry( element.getSystemLibraryPath(), null, null)); } javaProject.setRawClasspath( entries.toArray(new IClasspathEntry[entries.size()]), null); // If root then folder create sub directories corresponding components if (pageOne.getProjectName().equals(projectTitle)) { for (Entry<String, Boolean> currentComponent : selectedComponents .entrySet()) { if (currentComponent.getValue()) { IFolder componentFolder = project.getFolder(currentComponent .getKey()); componentFolder.create(false, true, null); } } } // Create src folder IFolder srcFolder = project.getFolder("src"); srcFolder.create(false, true, null); IFolder srcMainFolder = srcFolder.getFolder("main"); srcMainFolder.create(true, true, null); IFolder srcMainJavaFolder = srcMainFolder.getFolder("java"); srcMainJavaFolder.create(true, true, null); IPackageFragmentRoot packageFragmentRoot = javaProject .getPackageFragmentRoot(srcMainJavaFolder); IClasspathEntry[] oldEntries = javaProject.getRawClasspath(); IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1]; System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length); newEntries[oldEntries.length] = JavaCore .newSourceEntry(packageFragmentRoot.getPath()); javaProject.setRawClasspath(newEntries, null); IPackageFragment pack = javaProject.getPackageFragmentRoot( srcMainJavaFolder).createPackageFragment(pageTwo.getPackageName(), false, null); StringBuffer buffer = new StringBuffer(); buffer.append("package " + pack.getElementName() + ";\n"); buffer.append("\n"); // Empty file for testing ICompilationUnit cu = pack.createCompilationUnit( "ThermostatPlugin.java", buffer.toString(), false, null); createThermostatPluginXml(projectTitle); } private void createThermostatPluginXml(String projectName) { if (pageOne.getProjectName().equals(projectName)) { GuiPluginXmlCreator creator = new GuiPluginXmlCreator(); creator.createPluginWithFeedback(projectName, this); } } }