//# TextView: Text wrapping and alignment //This demo demonstrates different setting for the TextView class import ui.View as View; import ui.TextView as TextView; import ui.widget.ButtonView as ButtonView; import device; //## Class: Application exports = Class(GC.Application, function () { this.initUI = function () { this.view.style.backgroundColor = "#FFFFFF"; //Create the initial options, these options can be changed with the buttons defined below... this._textViewOpts = { superview: this.view, layout: "box", text: "Aenean ipsum nisi, facilisis id lacinia ut, viverra vel justo.", color: "#FFFFFF", backgroundColor: "#FF0000", horizontalAlign: "left", wrap: true, autoSize: false, autoFontSize: false, verticalAlign: "top", x: device.width / 2 - 140, y: 10, width: 280, height: 200, size: 70, fontFamily: "Arial Black", clip: true }; //Create the TextView with the initial options this._textView = new TextView(this._textViewOpts); var left = device.width / 2 - 140; //A button to change the contents of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 220, property: "text", options: ["Aenean ipsum nisi, facilisis id lacinia ut, viverra vel justo.", "Ipsum.", ""] }); //A button to change the width of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 255, property: "width", options: [280, 110, 60] }); //A button to change the height of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 290, property: "height", options: [200, 100, 50] }); //A button to change the font size property of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 325, property: "size", options: [70, 30, 20, 6] }); //A button the change the autoFontSize property of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 360, property: "autoFontSize", options: [false, true] }); //A button the change the autoSize property of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 395, property: "autoSize", options: [false, true] }); //A button to change the wrap property of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 430, property: "wrap", options: [true, false] }); left = device.width / 2 + 5; //A button to change the horizontal padding of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 220, property: "padding", options: [0, 25, "10,30"] }); //A button the change the maximum width of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 255, property: "minWidth", callback: bind(this, "setMinWidth"), options: [undefined, 100, 200] }); //A button to change the maximum height the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 290, property: "minHeight", callback: bind(this, "setMinHeight"), options: [undefined, 100, 200] }); //A button the change the maximum width of the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 325, property: "maxWidth", callback: bind(this, "setMaxWidth"), options: [undefined, 100, 200] }); //A button to change the maximum height the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 360, property: "maxHeight", callback: bind(this, "setMaxHeight"), options: [undefined, 100, 200] }); //A button the change the horizontal text alignment of the text within the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 395, property: "horizontalAlign", options: ["left", "center", "right", "justify"] }); //A button to change the vertical alignment of the text within the TextView new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 430, property: "verticalAlign", options: ["top", "middle", "bottom"] }); //A button to change the stroke color new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 325, property: "strokeColor", options: [undefined, "#000088"] }); //A button to change the stroke width new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 360, property: "strokeWidth", options: [2, 4, 8] }); //A button to change the shadow color new TextViewSetting({ superview: this.view, target: this._textView, textViewOpts: this._textViewOpts, x: left, y: 395, property: "shadowColor", options: [undefined, "#000000", "rgba(0,0,0,0.5)"] }); }; this.setMinWidth = function (minWidth) { this._textView.style.minWidth = minWidth; }; this.setMinHeight = function (minHeight) { this._textView.style.minHeight = minHeight; }; this.setMaxWidth = function (maxWidth) { this._textView.style.maxWidth = maxWidth; }; this.setMaxHeight = function (maxHeight) { this._textView.style.maxHeight = maxHeight; }; this.launchUI = function () {}; }); function optionValue (s) { s += ""; return (s.length > 10) ? (s.substr(0, 10) + "...") : s; } //## Class: TextViewSetting //A button to modify settings of the TextView var TextViewSetting = Class(ButtonView, function (supr) { this.init = function (opts) { opts = merge( opts, { width: 135, height: 34, images: { up: "resources/images/blue1.png", down: "resources/images/blue2.png" }, scaleMethod: "9slice", sourceSlices: { horizontal: {left: 80, center: 116, right: 80}, vertical: {top: 10, middle: 80, bottom: 10} }, destSlices: { horizontal: {left: 40, right: 40}, vertical: {top: 4, bottom: 4} }, text: { color: "#000044", size: 11, autoFontSize: false, autoSize: false }, on: { up: bind(this, "onChange") }, title: opts.property + "=" + optionValue(opts.options[0]) } ); supr(this, "init", [opts]); this._target = opts.target; this._textViewOpts = opts.textViewOpts; this._options = opts.options; this._optionIndex = 0; this._property = opts.property; }; this.onChange = function () { //Step through the available options this._optionIndex = (this._optionIndex + 1) % this._options.length; this._text.setText(this._property + "=" + optionValue(this._options[this._optionIndex])); this._textViewOpts[this._property] = this._options[this._optionIndex]; this._target.updateOpts(this._textViewOpts); }; }); //The output should look like this screenshot: //a book screenshot