blob: 48b1f5506802a2078f7ef48d938cb885484730a1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 org.apache.uima.ruta.ide.ui.wizards;
import java.util.List;
import org.apache.uima.ruta.ide.RutaIdeUIPlugin;
import org.apache.uima.ruta.ide.core.RutaNature;
import org.apache.uima.ruta.ide.core.builder.RutaProjectUtils;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.dltk.compiler.util.Util;
import org.eclipse.dltk.core.DLTKLanguageManager;
import org.eclipse.dltk.core.IDLTKLanguageToolkit;
import org.eclipse.dltk.core.IScriptFolder;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.ScriptModelUtil;
import org.eclipse.dltk.ui.wizards.NewSourceModulePage;
public class RutaFileCreationPage extends NewSourceModulePage {
@Override
protected String getPageDescription() {
return "This wizard creates a new Ruta script file.";
}
@Override
protected String[] getFileExtensions() {
String requiredNature = RutaNature.NATURE_ID;
IDLTKLanguageToolkit toolkit = DLTKLanguageManager.getLanguageToolkit(requiredNature);
String[] extensions = ScriptModelUtil.getFileExtensions(toolkit);
if (extensions != null) {
return extensions;
}
return new String[] { Util.EMPTY_STRING };
}
@Override
protected String getFileContent() {
StringBuilder sb = new StringBuilder();
IScriptFolder scriptFolder = getScriptFolder();
IScriptProject scriptProject = scriptFolder.getScriptProject();
IFolder folder = null;
try {
folder = getScriptFolderOf(scriptFolder, scriptProject);
} catch (CoreException e) {
RutaIdeUIPlugin.error(e);
}
if (folder == null) {
return "";
}
IPath path = scriptFolder.getPath();
IPath fullPath = folder.getFullPath();
IPath relativeTo = path.makeRelativeTo(fullPath);
if (!relativeTo.isEmpty()) {
sb.append("PACKAGE ");
String pathString = "";
for (int i = 0; i < relativeTo.segments().length; i++) {
pathString += relativeTo.segments()[i];
if (i < relativeTo.segments().length - 1) {
pathString += ".";
}
}
sb.append(pathString);
sb.append(";\n");
}
return sb.toString();
}
private IFolder getScriptFolderOf(IScriptFolder scriptFolder, IScriptProject scriptProject)
throws CoreException {
List<IFolder> scriptFolders = RutaProjectUtils.getScriptFolders(scriptProject);
for (IFolder each : scriptFolders) {
if (each.equals(scriptFolder.getResource())) {
return each;
}
IPath path = scriptFolder.getPath().makeRelativeTo(each.getFullPath());
IResource findMember = each.findMember(path);
if (findMember != null && findMember instanceof IFolder) {
return each;
}
}
return null;
}
@Override
protected String getRequiredNature() {
return RutaNature.NATURE_ID;
}
@Override
protected String getPageTitle() {
return "Create a new Ruta script file";
}
}