Skip to content

Commit

Permalink
Major refactor to remove Session type from Webpage and Website.
Browse files Browse the repository at this point in the history
  • Loading branch information
darkfrog26 committed Mar 14, 2015
1 parent fdf0dc0 commit 5b02434
Show file tree
Hide file tree
Showing 131 changed files with 411 additions and 396 deletions.
Expand Up @@ -17,9 +17,9 @@ object Bootstrap extends Module {

override def dependencies = List(jQuery)

override def init[S <: Session](website: Website[S]) = {}
override def init(website: Website) = {}

override def load[S <: Session](webpage: Webpage[S]) = {
override def load(webpage: Webpage) = {
webpage.head.contents += new tag.Meta(httpEquiv = "X-UA-Compatible", content = "IE=edge")
webpage.head.meta("viewport", "width=device-width, initial-scale=1")

Expand Down
Expand Up @@ -31,12 +31,12 @@ object ContentEditor extends Module with StorageComponent[ContentEditor, HTMLTag

override def dependencies = List(Rangy, Realtime)

override def init[S <: Session](website: Website[S]) = {
override def init(website: Website) = {
website.register("/js/contenteditor.js", "contenteditor.js")
website.register("/js/hyperscala-contenteditor.js", "hyperscala-contenteditor.js")
}

override def load[S <: Session](webpage: Webpage[S]) = {
override def load(webpage: Webpage) = {
webpage.head.contents += new tag.Script(src = "/js/contenteditor.js")
webpage.head.contents += new tag.Script(src = "/js/hyperscala-contenteditor.js")
}
Expand Down Expand Up @@ -176,7 +176,7 @@ class ContentEditor private(val container: HTMLTag) extends Listenable {

private def ifFocused[R](statement: Statement[R]) = MultiStatement(sideEffects = true, s"if (ContentEditor.byId('${container.identity}').focused()) { ", statement, " }")
private def call(function: String) = send(s"ContentEditor.byId('${container.identity}').$function;")
private def send(js: JavaScriptContent) = container.connected[Webpage[Session]] {
private def send(js: JavaScriptContent) = container.connected[Webpage] {
case webpage => webpage.eval(js)
}

Expand Down
3 changes: 2 additions & 1 deletion core/src/main/scala/org/hyperscala/Page.scala
Expand Up @@ -3,14 +3,15 @@ package org.hyperscala
import org.powerscala.concurrent.Temporal
import org.powerscala.event.Listenable
import org.powerscala.log.Logging
import org.powerscala.property.ReadOnlyPropertyLense

/**
* @author Matt Hicks <matt@outr.com>
*/
trait Page extends Listenable with Temporal with Logging {
protected def parentIntercept: MarkupIntercepting = null

def rendered: Boolean
def rendered: ReadOnlyPropertyLense[Boolean]
val intercept = new MarkupIntercepting(parentIntercept)

def require(name: String): Unit
Expand Down
Expand Up @@ -16,7 +16,7 @@ object CreateJS extends Module {

override def dependencies = List(EaselJS, TweenJS)

override def init[S <: Session](website: Website[S]) = {}
override def init(website: Website) = {}

override def load[S <: Session](webpage: Webpage[S]) = {}
override def load(webpage: Webpage) = {}
}
4 changes: 2 additions & 2 deletions createjs/src/main/scala/org/hyperscala/easeljs/EaselJS.scala
Expand Up @@ -16,11 +16,11 @@ object EaselJS extends Module {

override def dependencies = List(Realtime)

override def init[S <: Session](website: Website[S]) = {
override def init(website: Website) = {
website.register("/js/hyperscala-easel.js", "hyperscala-easel.js")
}

override def load[S <: Session](webpage: Webpage[S]) = {
override def load(webpage: Webpage) = {
webpage.head.contents += new tag.Script(src = s"https://code.createjs.com/easeljs-0.8.0.min.js")
webpage.head.contents += new tag.Script(src = "/js/hyperscala-easel.js")
}
Expand Down
2 changes: 1 addition & 1 deletion createjs/src/main/scala/org/hyperscala/easeljs/Stage.scala
Expand Up @@ -16,7 +16,7 @@ class Stage private(val canvas: tag.Canvas) {

def update() = send(JavaScriptString(s"EaselJS.stage('${canvas.identity}').update();"))

def send(js: JavaScriptContent) = canvas.connected[Webpage[Session]] {
def send(js: JavaScriptContent) = canvas.connected[Webpage] {
case webpage => webpage.eval(js)
}
}
Expand Down
8 changes: 4 additions & 4 deletions createjs/src/main/scala/org/hyperscala/tweenjs/TweenJS.scala
Expand Up @@ -17,20 +17,20 @@ object TweenJS extends Module {

override def dependencies = List(EaselJS)

override def init[S <: Session](website: Website[S]) = {
override def init(website: Website) = {
}

override def load[S <: Session](webpage: Webpage[S]) = {
override def load(webpage: Webpage) = {
webpage.head.contents += new tag.Script(src = s"https://code.createjs.com/tweenjs-0.6.0.min.js")
}
}

object Ticker {
def setFPS(stage: Stage, fps: Int) = stage.canvas.connected[Webpage[Session]] {
def setFPS(stage: Stage, fps: Int) = stage.canvas.connected[Webpage] {
case webpage => webpage.eval(JavaScriptString(s"createjs.Ticker.setFPS($fps);"))
}

def addEventListener(eventType: String, stage: Stage) = stage.canvas.connected[Webpage[Session]] {
def addEventListener(eventType: String, stage: Stage) = stage.canvas.connected[Webpage] {
case webpage => webpage.eval(JavaScriptString(s"createjs.Ticker.addEventListener('$eventType', EaselJS.stage('${stage.id}'));"))
}
}
Expand Down
Expand Up @@ -10,7 +10,7 @@ import org.hyperscala.web.Webpage
trait Example extends tag.Div {
def exampleName = getClass.getSimpleName

def require(interface: Interface) = connected[Webpage[_]] {
def require(interface: Interface) = connected[Webpage] {
case webpage => webpage.require(interface)
}

Expand Down
Expand Up @@ -6,6 +6,6 @@ import com.outr.net.http.session.Session
/**
* @author Matt Hicks <matt@outr.com>
*/
trait ExamplePage[S <: Session] extends Webpage[S] {
trait ExamplePage extends Webpage {
def example: Example
}
Expand Up @@ -8,7 +8,7 @@ import org.hyperscala.web.Website
/**
* @author Matt Hicks <mhicks@outr.com>
*/
class DynamicPageExample[S <: Session](website: Website[S]) extends DynamicWebpage(website) {
class DynamicPageExample extends DynamicWebpage {
def dynamicTag = DynamicTag.url[tag.HTML](getClass.getName, getClass.getClassLoader.getResource("dynamic_page.html"))

val message = getById[tag.Strong]("message")
Expand Down
Expand Up @@ -10,7 +10,7 @@ import com.outr.net.http.session.Session
/**
* @author Matt Hicks <matt@outr.com>
*/
class LargePageExample[S <: Session](website: Website[S]) extends Webpage(website) {
class LargePageExample extends Webpage {
require(PageTimer)

val table = new tag.Table
Expand Down
Expand Up @@ -16,7 +16,7 @@ import org.powerscala.Color
class ModalComponentExample extends Example {
require(ModalComponent)

connected[Webpage[_ <: Session]] {
connected[Webpage] {
case webpage => ModalComponent(webpage).modalClicked.on {
case evt => ModalComponent(webpage).selected := null
}
Expand Down
Expand Up @@ -16,7 +16,7 @@ class RealtimeFormExample extends Example {
this.require(Realtime)
this.require(Gritter)

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => webpage.connectForm()
}

Expand Down
Expand Up @@ -20,7 +20,7 @@ object ScopedExample extends Example {

contents += new tag.Div(id = "replaceable", content = "Original Content")

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
ScopedReplacement(webpage, Scope.Page, getById[tag.Div]("replaceable")) {
case t => t.contents += s": ${loaded()}"
Expand Down
Expand Up @@ -15,7 +15,7 @@ import com.outr.net.http.session.Session
*/
class StyleSheetExample extends Example {
require(Realtime)
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => webpage.connectStandard()
}

Expand Down
Expand Up @@ -10,7 +10,7 @@ import com.outr.net.http.session.Session
* @author Matt Hicks <mhicks@outr.com>
*/
class UserAgentExample extends Example {
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
contents += new tag.Div(content = s"Operating System: ${UserAgent(webpage).os}")
contents += new tag.Div(content = s"Browser: ${UserAgent(webpage).browser}")
Expand Down
Expand Up @@ -10,7 +10,7 @@ import org.hyperscala.web.{Website, Webpage}
/**
* @author Matt Hicks <matt@outr.com>
*/
class BootstrapSignin[S <: Session](site: Website[S]) extends Webpage(site) {
class BootstrapSignin extends Webpage {
require(Bootstrap)

head.contents += new tag.Link(href = "/form.css")
Expand Down
Expand Up @@ -11,7 +11,7 @@ import org.hyperscala.web.{Website, Webpage}
/**
* @author Matt Hicks <matt@outr.com>
*/
class BootstrapTheme[S <: Session](site: Website[S]) extends Webpage(site) {
class BootstrapTheme extends Webpage {
require(Bootstrap)

body.role := "document"
Expand Down
Expand Up @@ -17,7 +17,7 @@ import com.outr.net.http.session.Session
*
* @author Matt Hicks <mhicks@outr.com>
*/
class PlayHelloWorldPage[S <: Session](website: Website[S]) extends Webpage(website) {
class PlayHelloWorldPage extends Webpage {
require(Realtime)
this.connectStandard()

Expand Down Expand Up @@ -85,7 +85,7 @@ class PlayHelloWorldPage[S <: Session](website: Website[S]) extends Webpage(webs
}
}

class PlayHelloWorldConfiguration[S <: Session](page: PlayHelloWorldPage[S]) extends DynamicContent("configure") {
class PlayHelloWorldConfiguration(page: PlayHelloWorldPage) extends DynamicContent("configure") {
def dynamicString = DynamicString.url("play_hello_world_configuration.html", PlayHelloWorldPage.configuration)

val nameContainer = load[tag.Dl]("name_field")
Expand Down
Expand Up @@ -20,7 +20,7 @@ import org.powerscala.Color
/**
* @author Matt Hicks <matt@outr.com>
*/
class ContentEditorExample(site: Website[MapSession]) extends Example {
class ContentEditorExample(site: Website) extends Example {
require(Realtime)
require(Bootstrap)
require(Gritter)
Expand All @@ -42,7 +42,7 @@ class ContentEditorExample(site: Website[MapSession]) extends Example {
style.border := "none"
style.outline := "none"
}
val editorPage = new EditablePageExample(this, site)
val editorPage = new EditablePageExample(this)
frame.currentPage := editorPage
contents += frame

Expand Down Expand Up @@ -151,7 +151,7 @@ class ContentEditorExample(site: Website[MapSession]) extends Example {
contents += controls
}

class EditablePageExample(example: ContentEditorExample, site: Website[MapSession]) extends Webpage[MapSession](site) {
class EditablePageExample(example: ContentEditorExample) extends Webpage {
require(ContentEditor)
require(Gritter)

Expand Down
Expand Up @@ -24,7 +24,7 @@ class ScreenExample extends Example {
val heading = new tag.H1(content = "Example")
contents += heading

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => screens = new ExampleScreens(webpage, ScreenExample.this)
}

Expand Down Expand Up @@ -57,7 +57,7 @@ class ScreenExample extends Example {
def notify(message: String) = Gritter.add(this.webpage, "Screen Change", message)
}

class ExampleScreens(webpage: Webpage[Session], example: ScreenExample) extends Screens(webpage) {
class ExampleScreens(webpage: Webpage, example: ScreenExample) extends Screens(webpage) {
val screen1 = screen(example.screen1URI, new HeadingScreen(example, "Screen 1"))
val screen2 = screen(example.screen2URI, new HeadingScreen(example, "Screen 2"))
val screen3 = screen(example.screen3URI, new HeadingScreen(example, "Screen 3"))
Expand Down
Expand Up @@ -11,7 +11,7 @@ import org.hyperscala.web.{Website, Webpage}
import com.outr.net.http.session.Session
import org.powerscala.property.Property

class TodoMVC[S <: Session](website: Website[S]) extends Webpage[S](website) {
class TodoMVC(website: Website) extends Webpage {
require(Realtime)
this.connectForm()

Expand Down
Expand Up @@ -16,7 +16,7 @@ import com.outr.net.http.session.Session
class CaseFormExample extends Example {
this.require(Realtime)
this.require(Gritter)
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
webpage.connectForm()
webpage.head.contents += new tag.Link(href = "/css/case_form.css")
Expand Down
Expand Up @@ -23,7 +23,7 @@ class ChangeableExample extends Example {
this.require(Changeable)
this.require(Realtime)

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => webpage.connectForm()
}

Expand Down
Expand Up @@ -49,8 +49,8 @@ class ChatExample extends Example {
case (nick, text) => messages.contents += new ChatEntry(nick, text)
}

connected[Webpage[Session]] {
case webpage => updateNickname()
connected[Website] {
case website => updateNickname()
}

def sendMessage() = {
Expand All @@ -62,7 +62,7 @@ class ChatExample extends Example {
}

def updateNickname() = {
val website = this.website[MapSession]
val website = this.website
val sessionNickname = website.session.getOrElse[String]("chatNickname", null)
val current = chatName.value() match {
case "" | null => website.session.getOrElse[String]("chatNickname", "guest")
Expand All @@ -84,14 +84,13 @@ object ChatExample {

private var history = List.empty[(String, String)]

def instances[S <: Session](website: Website[S]) = {
implicit val sessionManifest = website.manifest
website.pages.byType[ExamplePage[S]].map(p => p.example).collect {
def instances(website: Website) = {
website.pages.byType[ExamplePage].map(p => p.example).collect {
case chat: ChatExample => chat
}.toList
}
@tailrec
def generateNick[S <: Session](website: Website[S], nickname: String, increment: Int = 0): String = {
def generateNick(website: Website, nickname: String, increment: Int = 0): String = {
val nick = increment match {
case 0 => nickname
case _ => s"$nickname$increment"
Expand All @@ -102,7 +101,7 @@ object ChatExample {
generateNick(website, nickname, increment + 1)
}
}
def sendMessage[S <: Session](website: Website[S], nickname: String, message: String) = synchronized {
def sendMessage(website: Website, nickname: String, message: String) = synchronized {
instances(website).foreach {
case chat => chat.messages.contents.insert(0, new ChatEntry(nickname, message))
}
Expand Down
Expand Up @@ -22,7 +22,7 @@ class ClipboardExample extends Example {
val input = new tag.Input(id = "myInput")
val textArea = new tag.TextArea(id = "myTextArea", content = "My Text Area!")

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
Clipboard.connect(page.body)
Clipboard(webpage).configureDefaultHandling()
Expand Down
Expand Up @@ -14,7 +14,7 @@ import com.outr.net.http.session.Session
* @author Matt Hicks <matt@outr.com>
*/
class ComplianceExample extends Example {
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
webpage.require(Realtime)

Expand Down
Expand Up @@ -16,7 +16,7 @@ import scala.language.reflectiveCalls
class ConfirmDialogExample extends Example {
this.require(Realtime)
this.require(jQueryUI)
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => webpage.connectForm()
}

Expand Down
Expand Up @@ -65,7 +65,7 @@ class CoordinatesExample extends Example {
style.height := 6.px
style.zIndex := 100
style.backgroundColor := Color.Red
connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
WindowSized.resized(webpage, new JavaScriptString(
"""
Expand All @@ -78,7 +78,7 @@ class CoordinatesExample extends Example {
}
contents += centerDiv

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
Bounding.monitor(webpage, Selector.clazz("bounding"), 0.5)

Expand Down
Expand Up @@ -34,7 +34,7 @@ class DynamicURLExample extends Example {
contents += "DynamicURL module allows a convenient mechanism to modify and monitor changes to hash values applied to a URL."
}

connected[Webpage[Session]] {
connected[Webpage] {
case webpage => {
val durl = DynamicURL(webpage)
val test = durl.property("test", "")
Expand Down

0 comments on commit 5b02434

Please sign in to comment.