NewKotlinFileAction: J2K

This commit is contained in:
Dmitry Jemerov
2016-06-02 16:51:29 +02:00
parent 2ee03a71f9
commit 28100be46b
@@ -14,83 +14,67 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.idea.actions; package org.jetbrains.kotlin.idea.actions
import com.intellij.ide.IdeView; import com.intellij.ide.actions.CreateFileFromTemplateAction
import com.intellij.ide.actions.CreateFileFromTemplateAction; import com.intellij.ide.actions.CreateFileFromTemplateDialog
import com.intellij.ide.actions.CreateFileFromTemplateDialog; import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys
import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys
import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.openapi.module.Module; import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project
import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory
import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.psi.PsiFile
import com.intellij.openapi.roots.ProjectRootManager; import org.jetbrains.kotlin.idea.KotlinBundle
import com.intellij.psi.PsiDirectory; import org.jetbrains.kotlin.idea.KotlinFileType
import com.intellij.psi.PsiFile; import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.configuration.showConfigureKotlinNotificationIfNeeded
import org.jetbrains.kotlin.idea.KotlinFileType;
import org.jetbrains.kotlin.idea.KotlinIcons;
import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtilsKt;
import java.util.Map; class NewKotlinFileAction
: CreateFileFromTemplateAction(KotlinBundle.message("new.kotlin.file.action"),
"Creates new Kotlin file or class",
KotlinFileType.INSTANCE.icon),
DumbAware
{
override fun postProcess(createdElement: PsiFile?, templateName: String?, customProperties: Map<String, String>?) {
super.postProcess(createdElement, templateName, customProperties)
public class NewKotlinFileAction extends CreateFileFromTemplateAction implements DumbAware { val module = ModuleUtilCore.findModuleForPsiElement(createdElement!!)
public NewKotlinFileAction() {
super(KotlinBundle.message("new.kotlin.file.action"), "Creates new Kotlin file or class", KotlinFileType.INSTANCE.getIcon());
}
@Override
protected void postProcess(PsiFile createdElement, String templateName, Map<String, String> customProperties) {
super.postProcess(createdElement, templateName, customProperties);
Module module = ModuleUtilCore.findModuleForPsiElement(createdElement);
if (module != null) { if (module != null) {
ConfigureKotlinInProjectUtilsKt.showConfigureKotlinNotificationIfNeeded(module); showConfigureKotlinNotificationIfNeeded(module)
} }
} }
@Override override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) {
protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) { builder.setTitle("New Kotlin File/Class")
builder .addKind("File", KotlinFileType.INSTANCE.icon, "Kotlin File")
.setTitle("New Kotlin File/Class")
.addKind("File", KotlinFileType.INSTANCE.getIcon(), "Kotlin File")
.addKind("Class", KotlinIcons.CLASS, "Kotlin Class") .addKind("Class", KotlinIcons.CLASS, "Kotlin Class")
.addKind("Interface", KotlinIcons.INTERFACE, "Kotlin Interface") .addKind("Interface", KotlinIcons.INTERFACE, "Kotlin Interface")
.addKind("Enum class", KotlinIcons.ENUM, "Kotlin Enum") .addKind("Enum class", KotlinIcons.ENUM, "Kotlin Enum")
.addKind("Object", KotlinIcons.OBJECT, "Kotlin Object"); .addKind("Object", KotlinIcons.OBJECT, "Kotlin Object")
} }
@Override override fun getActionName(directory: PsiDirectory, newName: String, templateName: String): String {
protected String getActionName(PsiDirectory directory, String newName, String templateName) { return KotlinBundle.message("new.kotlin.file.action")
return KotlinBundle.message("new.kotlin.file.action");
} }
@Override override fun isAvailable(dataContext: DataContext): Boolean {
protected boolean isAvailable(DataContext dataContext) {
if (super.isAvailable(dataContext)) { if (super.isAvailable(dataContext)) {
IdeView ideView = LangDataKeys.IDE_VIEW.getData(dataContext); val ideView = LangDataKeys.IDE_VIEW.getData(dataContext)!!
Project project = PlatformDataKeys.PROJECT.getData(dataContext); val project = PlatformDataKeys.PROJECT.getData(dataContext)!!
assert ideView != null && project != null; val projectFileIndex = ProjectRootManager.getInstance(project).fileIndex
ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); return ideView.directories.any { projectFileIndex.isInSourceContent(it.virtualFile) }
for (PsiDirectory dir : ideView.getDirectories()) {
if (projectFileIndex.isInSourceContent(dir.getVirtualFile())) {
return true;
}
}
} }
return false; return false
} }
@Override override fun hashCode(): Int {
public int hashCode() { return 0
return 0;
} }
@Override override fun equals(obj: Any?): Boolean {
public boolean equals(Object obj) { return obj is NewKotlinFileAction
return obj instanceof NewKotlinFileAction;
} }
} }