package com.redhat.ceylon.eclipse.code.wizard; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.ui.ide.undo.CreateFileOperation; class CreateSourceFileOperation extends CreateFileOperation { private IPackageFragment packageFragment; private String unitName; private IPackageFragmentRoot sourceDir; CreateSourceFileOperation(IPackageFragmentRoot sourceDir, IPackageFragment packageFragment, String unitName, boolean includePreamble, String contents) { super(getFile(sourceDir, packageFragment, unitName), null, new CeylonSourceStream(getProject(sourceDir), includePreamble, contents), unitName.equals("package") ? "Create Ceylon Package" : "Create Ceylon Source File"); this.sourceDir = sourceDir; this.packageFragment = packageFragment; this.unitName = unitName; } IFile getFile() { return getFile(sourceDir, packageFragment, unitName); } private static IFile getFile(IPackageFragmentRoot sourceDir, IPackageFragment packageFragment, String unitName) { IPath path = packageFragment.getPath() .append(unitName + ".ceylon"); IProject project = getProject(sourceDir); IPath relativePath = path.makeRelativeTo(project.getFullPath()); return project.getFile(relativePath); } private static IProject getProject(IPackageFragmentRoot sourceDir) { return sourceDir.getJavaProject().getProject(); } }