summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/editor/TextEditor.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-10-06 16:01:13 -0400
committerJules Laplace <jules@okfoc.us>2014-10-06 16:01:13 -0400
commitc19fbc87676404636a2f5df304ddd7875fc98e66 (patch)
tree7e46b018e7abb7a982bcedb40024c0ca70e6c755 /public/assets/javascripts/ui/editor/TextEditor.js
parent0250ce5260ce75f7c4337693b4e8e7f434e29458 (diff)
new scenery type: text
Diffstat (limited to 'public/assets/javascripts/ui/editor/TextEditor.js')
-rw-r--r--public/assets/javascripts/ui/editor/TextEditor.js85
1 files changed, 82 insertions, 3 deletions
diff --git a/public/assets/javascripts/ui/editor/TextEditor.js b/public/assets/javascripts/ui/editor/TextEditor.js
index 0319a31..0d082ca 100644
--- a/public/assets/javascripts/ui/editor/TextEditor.js
+++ b/public/assets/javascripts/ui/editor/TextEditor.js
@@ -1,6 +1,8 @@
var TextEditor = FormView.extend({
el: "#textEditor",
+ tainted: false,
+ scenery: null,
events: {
"keydown": 'taint',
@@ -9,20 +11,87 @@ var TextEditor = FormView.extend({
"change [name=font-family]": 'changeFontFamily',
"change [name=font-size]": 'changeFontSize',
"input [name=text-body]": 'changeText',
- "click [data-role=destroy-media]": "destroy",
+ "click [data-role=destroy-text]": "destroy",
},
initialize: function(opt){
this.parent = opt.parent
this.__super__.initialize.call(this)
+ this.$settings = this.$(".setting")
+ this.$noTextMessage = this.$(".no-text")
this.$fontFamily = this.$("[name=font-family]")
this.$fontSize = this.$("[name=font-size]")
this.$textBody = this.$("[name=text-body]")
},
toggle: function(state){
- this.$el.toggleClass("active", state);
+ $("#keyhint").fadeOut(200)
+
+ this.$el.toggleClass("active", state)
+ if (state) {
+ Scenery.nextMedia = { type: 'text', width: 300, height: 150 }
+ this.createMode(true)
+ }
+ },
+
+ hide: function(scenery){
+ if (this.scenery) {
+ this.unbind()
+ }
+ this.toggle(false)
+ },
+
+ taint: function(e){
+ e.stopPropagation()
+ this.tainted = true
+ },
+
+ bind: function(scenery){
+ this.tainted = false
+ this.scenery = scenery
+ this.scenery.mx.bound = true
+ this.scenery.mx.el.classList.add("picked")
+ },
+
+ unbind: function(){
+ if (this.scenery && this.tainted) {
+ Minotaur.watch( app.router.editorView.settings )
+
+ if (this.scenery.mx) {
+ this.scenery.mx.bound = false
+ this.scenery.mx.el.classList.remove("picked")
+ }
+ }
+ this.tainted = false
+ this.scenery = null
+ },
+
+ createMode: function(state){
+ this.$settings.toggle(! state)
+ this.$noTextMessage.toggle(!! state)
+ $("body").toggleClass("addText", !! state)
+ },
+
+ pick: function(scenery){
+ if (this.scenery) {
+ this.unbind()
+ }
+
+ Scenery.resize.show(scenery)
+ Scenery.hovering = true
+
+ this.bind(scenery)
+ this.$el.toggleClass("active", true)
+ this.$textBody.val( this.scenery.media.description )
+
+ this.createMode(false)
+
+ if (! this.scenery.media.description) {
+ setTimeout(function(){
+ this.$textBody.focus()
+ }.bind(this), 100)
+ }
},
taint: function(e){
@@ -35,7 +104,17 @@ var TextEditor = FormView.extend({
changeFontSize: function(){
},
- changeText: function(){
+ changeText: function(e){
+ e.stopPropagation()
+ var text = this.$textBody.val()
+ this.scenery.setText(text)
},
+
+ destroy: function(){
+ var scenery = this.scenery
+ this.hide()
+ Scenery.remove(scenery.id)
+ Scenery.resize.hide()
+ },
})