aboutsummaryrefslogtreecommitdiff
path: root/mavigator-cockpit/src/main/scala/mavigator/util
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-02-24 20:33:51 -0800
committerJakob Odersky <jakob@odersky.com>2016-02-24 20:33:51 -0800
commit8186b3622ce1c9d2b50df3d264ab526dc1e61d77 (patch)
treeb4446408291c9f179e1c270a561523023ac6a105 /mavigator-cockpit/src/main/scala/mavigator/util
parent6c4e8849d753734b3e50523dcdb372fbdbccc2c1 (diff)
parenta41de68066007852d7d3dbf019d75b4caf7463ad (diff)
downloadmavigator-8186b3622ce1c9d2b50df3d264ab526dc1e61d77.tar.gz
mavigator-8186b3622ce1c9d2b50df3d264ab526dc1e61d77.tar.bz2
mavigator-8186b3622ce1c9d2b50df3d264ab526dc1e61d77.zip
Merge branch 'akka-streams'
Diffstat (limited to 'mavigator-cockpit/src/main/scala/mavigator/util')
-rw-r--r--mavigator-cockpit/src/main/scala/mavigator/util/Application.scala26
-rw-r--r--mavigator-cockpit/src/main/scala/mavigator/util/environment.scala24
2 files changed, 50 insertions, 0 deletions
diff --git a/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala b/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala
new file mode 100644
index 0000000..7cb6f27
--- /dev/null
+++ b/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala
@@ -0,0 +1,26 @@
+package mavigator
+package util
+
+import scala.scalajs.js.annotation.JSExport
+import scala.scalajs.js
+
+import org.scalajs.dom.html
+
+trait Application {
+
+ def main(args: Map[String, String])(implicit env: Environment): Unit
+
+ @JSExport
+ final def start(settings: js.Dynamic): Unit = {
+
+ val env = new StaticEnvironment(
+ root = settings.root.asInstanceOf[html.Element],
+ assetsBase = settings.assetsBase.asInstanceOf[String]
+ )
+
+ val args = settings.args.asInstanceOf[js.Dictionary[Any]].mapValues(_.toString).toMap
+
+ main(args)(env)
+ }
+
+}
diff --git a/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala b/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala
new file mode 100644
index 0000000..3d58c5a
--- /dev/null
+++ b/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala
@@ -0,0 +1,24 @@
+package mavigator
+package util
+
+import org.scalajs.dom.html
+
+/** Represents an application's environment */
+trait Environment {
+
+ /** The application's root element. */
+ def root: html.Element
+
+ /** Retrieve an asset's URL based on its file location. */
+ def asset(file: String): String
+
+}
+
+class StaticEnvironment(
+ override val root: html.Element,
+ assetsBase: String
+) extends Environment {
+
+ override def asset(file: String): String = assetsBase + "/" + file
+
+}