/
PlayPlugin.scala
53 lines (43 loc) · 1.49 KB
/
PlayPlugin.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package org.scalaide.play2
import scala.tools.eclipse.ScalaPlugin
import org.eclipse.core.resources.IProject
import org.eclipse.ui.plugin.AbstractUIPlugin
import org.osgi.framework.BundleContext
import org.eclipse.core.resources.ResourcesPlugin
import org.eclipse.core.runtime.Status
object PlayPlugin {
@volatile var plugin: PlayPlugin = _
private final val PluginId = "org.scala-ide.play2"
final val RouteFormatterMarginId = PluginId + ".routeeditor.margin"
final val TemplateExtension = "scala.html"
def prefStore = plugin.getPreferenceStore
def getImageDescriptor(path: String) = {
AbstractUIPlugin.imageDescriptorFromPlugin(PluginId, path);
}
def log(status: Int, msg: String, ex: Throwable = null) {
plugin.getLog.log(new Status(status, plugin.getBundle().getSymbolicName(), msg, ex))
}
}
class PlayPlugin extends AbstractUIPlugin {
import PlayPlugin._
override def start(context: BundleContext) = {
super.start(context)
PlayPlugin.plugin = this
initializeProjects()
}
override def stop(context: BundleContext) = {
PlayPlugin.plugin = null
super.stop(context)
}
def asPlayProject(project: IProject): Option[PlayProject] = {
val scalaProject = ScalaPlugin.plugin.asScalaProject(project)
scalaProject map (PlayProject(_))
}
def initializeProjects() = {
for {
iProject <- ResourcesPlugin.getWorkspace.getRoot.getProjects
if iProject.isOpen
playProject <- asPlayProject(iProject)
} playProject.initialize()
}
}