package org.nodeclipse.jjs.wizards;
import org.nodeclipse.jjs.nature.NashornNature;
import org.nodeclipse.ui.wizards.AbstractNodeProjectWizard;
/**
* AbstractNashornProjectWizard (copied AbstractNodeProjectWizard), then made as subclass;
* just like AbstractPhantomjsProjectWizard
* @author Paul Verest
*/
//@SuppressWarnings("restriction")
public abstract class AbstractNashornProjectWizard extends AbstractNodeProjectWizard {
//extends Wizard implements INewWizard {
//+ to let overriding
@Override
protected String getProjectNature(){
return NashornNature.NATURE_ID;
}
// private IWorkbench workbench;
// private IStructuredSelection selection;
//
// private IProject newProject;
//
// public AbstractPhantomjsProjectWizard() {
// setNeedsProgressMonitor(true);
// }
//
// @Override
// public void init(IWorkbench workbench, IStructuredSelection selection) {
// this.workbench = workbench;
// this.selection = selection;
// }
//
// public IWorkbench getWorkbench() {
// return workbench;
// }
//
// protected IStructuredSelection getSelection() {
// return selection;
// }
//
// @Override
// public boolean performFinish() {
// newProject = createNewProject();
// if (newProject == null) {
// return false;
// }
//
// updatePerspective();
// selectAndReveal();
// return true;
// }
//
// protected abstract IProject createNewProject();
//
// protected IProjectDescription createProjectDescription(IProject newProjectHandle, URI location) {
// IWorkspace workspace = ResourcesPlugin.getWorkspace();
// final IProjectDescription description = workspace
// .newProjectDescription(newProjectHandle.getName());
// description.setLocationURI(location);
// String[] natures = description.getNatureIds();
// String[] newNatures = new String[natures.length + 2];
// System.arraycopy(natures, 0, newNatures, 0, natures.length);
// newNatures[natures.length] = PhantomjsNature.NATURE_ID;
// newNatures[natures.length+1] = JavaScriptCore.NATURE_ID;
// description.setNatureIds(newNatures);
//
// return description;
// }
//
// protected void generateTemplates(String path, IProject projectHandle) throws CoreException {
// Bundle bundle = Activator.getDefault().getBundle();
// if (bundle == null) {
// throw new CoreException(new Status(IStatus.ERROR,
// Activator.PLUGIN_ID, "bundle not found"));
// }
//
// try {
// URL location = FileLocator.toFileURL(bundle.getEntry("/"));
// File templateRoot = new File(location.getPath(), path);
// LogUtil.info("templateRoot: " + templateRoot.getAbsolutePath());
//
// RelativityFileSystemStructureProvider structureProvider = new RelativityFileSystemStructureProvider(
// templateRoot);
// ImportOperation operation = new ImportOperation(
// projectHandle.getFullPath(), templateRoot,
// structureProvider, new IOverwriteQuery() {
// public String queryOverwrite(String pathString) {
// return ALL;
// }
// }, structureProvider.getChildren(templateRoot));
//
// operation.setContext(getShell());
// operation.run(null);
// } catch (Exception e) {
// throw new CoreException(new Status(IStatus.ERROR,
// Activator.PLUGIN_ID, e.getLocalizedMessage()));
// }
// }
//
// protected void rewriteFile(String filename, IProject projectHandle)
// throws CoreException {
// String newLine = System.getProperty("line.separator");
// IFile readme = projectHandle.getFile(filename);
// if (!readme.exists()) {
// throw new CoreException(new Status(IStatus.ERROR,
// Activator.PLUGIN_ID, filename + "not found"));
// }
// InputStreamReader ir = new InputStreamReader(readme.getContents());
// BufferedReader br = new BufferedReader(ir);
// StringBuilder sb = new StringBuilder();
// String line;
// try {
// while ((line = br.readLine()) != null) {
// if (line.contains("${projectname}")) {
// line = line.replace("${projectname}",
// projectHandle.getName());
// }
// sb.append(line);
// sb.append(newLine);
// }
// ByteArrayInputStream source = new ByteArrayInputStream(sb
// .toString().getBytes());
// readme.setContents(source, true, true, null);
// } catch (IOException e) {
// throw new CoreException(new Status(IStatus.ERROR,
// Activator.PLUGIN_ID, "Cannot read " + filename));
// } finally {
// try {
// ir.close();
// br.close();
// } catch (IOException e) {
// }
// ir = null;
// br = null;
// }
// }
//
// protected void runJSHint(IProject projectHandle) throws CoreException {
// String builderId = "com.eclipsesource.jshint.ui.builder";
// IProjectDescription description = projectHandle.getDescription();
//
// if (!containsBuildCommand(description, builderId)) {
// addBuildCommand(description, builderId);
// projectHandle.setDescription(description, null);
// }
//
// triggerClean(projectHandle, builderId);
// }
//
// protected boolean isExistsProjectFolder(IProjectDescription description) {
// URI location = description.getLocationURI();
// String name = description.getName();
//
// File folder = null;
// if(location != null) {
// folder = FileUtil.toPath(FileUtil.canonicalURI(location)).toFile();
// } else {
// Workspace workspace = (Workspace)ResourcesPlugin.getWorkspace();
// folder = workspace.getRoot().getLocation().append(name).toFile();
// }
//
// if(folder.exists()) {
// if(folder.isDirectory()) {
// File[] files = folder.listFiles();
// if(files.length == 0) {
// return false;
// } else {
// return true;
// }
// } else {
// return true;
// }
// } else {
// return false;
// }
// }
//
// protected boolean containsBuildCommand(IProjectDescription description,
// String builderId) {
// for (ICommand command : description.getBuildSpec()) {
// if (command.getBuilderName().equals(builderId)) {
// return true;
// }
// }
// return false;
// }
//
// protected void addBuildCommand(IProjectDescription description, String builderId) {
// ICommand[] oldCommands = description.getBuildSpec();
// ICommand[] newCommands = new ICommand[oldCommands.length + 1];
// System.arraycopy(oldCommands, 0, newCommands, 0, oldCommands.length);
// newCommands[newCommands.length - 1] = createBuildCommand(description, builderId);
// description.setBuildSpec(newCommands);
// }
//
// protected ICommand createBuildCommand(IProjectDescription description, String builderId) {
// ICommand command = description.newCommand();
// command.setBuilderName(builderId);
// return command;
// }
//
// protected void triggerClean(IProject project, String builderName) throws CoreException {
// project.build(IncrementalProjectBuilder.CLEAN_BUILD, builderName, null, null);
// }
//
// private void selectAndReveal() {
// BasicNewResourceWizard.selectAndReveal(newProject, workbench.getActiveWorkbenchWindow());
// }
//
// protected void updatePerspective() {
// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
// IPerspectiveRegistry reg = WorkbenchPlugin.getDefault().getPerspectiveRegistry();
// PerspectiveDescriptor rtPerspectiveDesc = (PerspectiveDescriptor) reg.findPerspectiveWithId(NodePerspective.ID);
// // Now set it as the active perspective.
// if (window != null) {
// IWorkbenchPage page = window.getActivePage();
// page.setPerspective(rtPerspectiveDesc);
// }
// }
}