package org.erlide.ui.editors.erl.correction.fixes; import java.io.IOException; import java.util.Iterator; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.erlide.engine.ErlangEngine; import org.erlide.engine.model.root.IErlProject; import org.erlide.engine.services.search.ModelUtilService; import org.erlide.ui.editors.erl.correction.MarkerQuickFixExecutor; import org.erlide.util.ErlLogger; public class CreateHeaderQuickFix extends MarkerQuickFixExecutor { @Override public void run() { final ModelUtilService svc = ErlangEngine.getInstance().getModelUtilService(); final String name = getQuickFix().getArgs().get(0); final IErlProject project = svc.getProject(module); final Iterator<IPath> iterator = project.getProperties().getIncludeDirs() .iterator(); final IPath inc; if (!iterator.hasNext()) { inc = module.getResource().getParent().getProjectRelativePath(); } else { inc = iterator.next(); // if there are multiple include dirs, let user move file manually } final IProject wproject = project.getWorkspaceProject(); final IFolder folder = wproject.getFolder(inc); final IFile header = folder.getFile(name); try (final EmptyInputStream source = new EmptyInputStream()) { header.create(source, true, null); folder.refreshLocal(IResource.DEPTH_ONE, null); final IFile fileToOpen = header; final IWorkbenchPage page = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage(); IDE.openEditor(page, fileToOpen); } catch (final CoreException e) { ErlLogger.error(e); } catch (final IOException e) { ErlLogger.error(e); } } }