Skip to content

Commit 8933a69

Browse files
committed
Abstracting away common part for plugin and build file #SCL-21374
1 parent af09862 commit 8933a69

File tree

3 files changed

+38
-50
lines changed

3 files changed

+38
-50
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.jetbrains.plugins.scala.actions
2+
3+
import com.intellij.ide.IdeView
4+
import com.intellij.ide.fileTemplates.actions.CreateFromTemplateActionBase
5+
import com.intellij.ide.fileTemplates.{FileTemplate, FileTemplateManager}
6+
import com.intellij.openapi.actionSystem.{CommonDataKeys, DataContext}
7+
import com.intellij.openapi.project.Project
8+
import com.intellij.openapi.ui.Messages
9+
import com.intellij.openapi.util.NlsActions
10+
import com.intellij.psi.PsiDirectory
11+
import org.jetbrains.plugins.scala.ScalaBundle
12+
import org.jetbrains.plugins.scala.extensions.PsiNamedElementExt
13+
14+
import javax.swing.Icon
15+
16+
abstract class NewPredefinedSbtFileAction(@NlsActions.ActionText title: String, @NlsActions.ActionDescription description: String, icon: Icon) extends CreateFromTemplateActionBase(title, description, icon) {
17+
18+
override def getTemplate(project: Project, dir: PsiDirectory): FileTemplate = FileTemplateManager.getDefaultInstance.getInternalTemplate(ScalaBundle.message("newclassorfile.menu.action.sbt.text"))
19+
20+
override def getTargetDirectory(dataContext: DataContext, view: IdeView): PsiDirectory = {
21+
val directories: Array[PsiDirectory] = view.getDirectories
22+
for (directory <- directories) {
23+
if (directory.findFile(ScalaBundle.message("newclassorfile.menu.action.build.sbt.defaultName") + ".sbt") != null) {
24+
Messages.showErrorDialog(CommonDataKeys.PROJECT.getData(dataContext),
25+
ScalaBundle.message("error.package.already.contains.build.sbt", directory.name),
26+
ScalaBundle.message("error.title.package.already.contains.file", directory.name))
27+
return null
28+
}
29+
}
30+
super.getTargetDirectory(dataContext, view)
31+
}
32+
}
Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,14 @@
11
package org.jetbrains.plugins.scala.actions
22

3-
import com.intellij.ide.IdeView
4-
import com.intellij.ide.fileTemplates.actions.{AttributesDefaults, CreateFromTemplateActionBase}
5-
import com.intellij.ide.fileTemplates.{FileTemplate, FileTemplateManager}
6-
import com.intellij.openapi.actionSystem.{CommonDataKeys, DataContext}
7-
import com.intellij.openapi.project.Project
8-
import com.intellij.openapi.ui.Messages
9-
import com.intellij.psi.PsiDirectory
10-
import org.jetbrains.plugins.scala.extensions.PsiNamedElementExt
3+
import com.intellij.ide.fileTemplates.actions.AttributesDefaults
4+
import com.intellij.openapi.actionSystem.DataContext
115
import org.jetbrains.plugins.scala.ScalaBundle
126
import org.jetbrains.sbt.icons.Icons
137

14-
final class NewSbtBuildFileAction extends CreateFromTemplateActionBase(
8+
final class NewSbtBuildFileAction extends NewPredefinedSbtFileAction(
159
ScalaBundle.message("newclassorfile.menu.action.build.sbt.text"),
1610
ScalaBundle.message("newclassorfile.menu.action.sbt.description"),
1711
Icons.SBT_FILE
1812
) {
19-
20-
override def getTemplate(project: Project, dir: PsiDirectory): FileTemplate = FileTemplateManager.getDefaultInstance.getInternalTemplate(ScalaBundle.message("newclassorfile.menu.action.sbt.text"))
21-
2213
protected override def getAttributesDefaults(dataContext: DataContext): AttributesDefaults = new AttributesDefaults(ScalaBundle.message("newclassorfile.menu.action.build.sbt.defaultName")).withFixedName(true)
23-
24-
override def getTargetDirectory(dataContext: DataContext, view: IdeView): PsiDirectory = {
25-
val directories: Array[PsiDirectory] = view.getDirectories
26-
for (directory <- directories) {
27-
if (directory.findFile(ScalaBundle.message("newclassorfile.menu.action.build.sbt.defaultName") + ".sbt") != null) {
28-
Messages.showErrorDialog(CommonDataKeys.PROJECT.getData(dataContext),
29-
ScalaBundle.message("error.package.already.contains.build.sbt", directory.name),
30-
"Cannot Create File")
31-
return null
32-
}
33-
}
34-
super.getTargetDirectory(dataContext, view)
35-
}
3614
}
Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,14 @@
11
package org.jetbrains.plugins.scala.actions
22

3-
import com.intellij.ide.IdeView
4-
import com.intellij.ide.fileTemplates.actions.{AttributesDefaults, CreateFromTemplateActionBase}
5-
import com.intellij.ide.fileTemplates.{FileTemplate, FileTemplateManager}
6-
import com.intellij.openapi.actionSystem.{CommonDataKeys, DataContext}
7-
import com.intellij.openapi.project.Project
8-
import com.intellij.openapi.ui.Messages
9-
import com.intellij.psi.PsiDirectory
3+
import com.intellij.ide.fileTemplates.actions.AttributesDefaults
4+
import com.intellij.openapi.actionSystem.DataContext
105
import org.jetbrains.plugins.scala.ScalaBundle
11-
import org.jetbrains.plugins.scala.extensions.PsiNamedElementExt
126
import org.jetbrains.sbt.icons.Icons
137

14-
final class NewSbtPluginFileAction extends CreateFromTemplateActionBase(
8+
final class NewSbtPluginFileAction extends NewPredefinedSbtFileAction(
159
ScalaBundle.message("newclassorfile.menu.action.plugin.sbt.text"),
1610
ScalaBundle.message("newclassorfile.menu.action.sbt.description"),
1711
Icons.SBT_FILE
1812
) {
19-
20-
override def getTemplate(project: Project, dir: PsiDirectory): FileTemplate = FileTemplateManager.getDefaultInstance.getInternalTemplate(ScalaBundle.message("newclassorfile.menu.action.sbt.text"))
21-
2213
protected override def getAttributesDefaults(dataContext: DataContext): AttributesDefaults = new AttributesDefaults(ScalaBundle.message("newclassorfile.menu.action.plugin.sbt.defaultName")).withFixedName(true)
23-
24-
override def getTargetDirectory(dataContext: DataContext, view: IdeView): PsiDirectory = {
25-
val directories: Array[PsiDirectory] = view.getDirectories
26-
for (directory <- directories) {
27-
if (directory.findFile(ScalaBundle.message("newclassorfile.menu.action.plugin.sbt.defaultName") + ".sbt") != null) {
28-
Messages.showErrorDialog(CommonDataKeys.PROJECT.getData(dataContext),
29-
ScalaBundle.message("error.package.already.contains.plugin.sbt", directory.name),
30-
"Cannot Create File")
31-
return null
32-
}
33-
}
34-
super.getTargetDirectory(dataContext, view)
35-
}
3614
}

0 commit comments

Comments
 (0)