/* * Copyright (c) 2012, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.eclipse.wizards; import com.google.dart.eclipse.DartEclipseUI; import com.google.dart.tools.core.generator.AbstractSample; import com.google.dart.tools.core.generator.DartIdentifierUtil; import com.google.dart.tools.ui.DartToolsPlugin; 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.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PartInitException; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; /** * Standard workbench wizard that creates a new Dart project resource in the workspace. */ public class DartProjectWizard extends Wizard implements INewWizard { private IWorkbench workbench; private ISelection selection; private IProject newProject; private DartProjectWizardPage page; private IFile createdSampleFile; public DartProjectWizard() { setWindowTitle("New Dart Project"); setNeedsProgressMonitor(true); } @Override public void addPages() { page = new DartProjectWizardPage(selection); addPage(page); } @Override public void init(IWorkbench workbench, IStructuredSelection selection) { this.workbench = workbench; this.selection = selection; } @Override public boolean performFinish() { return createAndRevealNewProject(); } protected boolean createAndRevealNewProject() { String name = page.getProjectName(); newProject = ProjectUtils.createNewProject(name, page.getProjectLocation(), false, getContainer(), getShell()); if (newProject == null) { return false; } try { AbstractSample sampleContent = page.getSampleContent(); if (sampleContent != null) { createdSampleFile = sampleContent.generateInto(newProject, DartIdentifierUtil.createValidIdentifier(name)); } } catch (CoreException e) { DartEclipseUI.logError(e); } ProjectUtils.updatePerspective(); if (createdSampleFile != null) { selectAndReveal(createdSampleFile); try { IDE.openEditor(workbench.getActiveWorkbenchWindow().getActivePage(), createdSampleFile); } catch (PartInitException e) { DartToolsPlugin.log(e); } } else { selectAndReveal(newProject); } return true; } protected void selectAndReveal(IResource newResource) { BasicNewResourceWizard.selectAndReveal(newResource, workbench.getActiveWorkbenchWindow()); } }