123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 |
- var UI = {};
- UI.Element = function () {};
- UI.Element.prototype = {
- setStyle: function ( style, array ) {
- for ( var i = 0; i < array.length; i ++ ) {
- this.dom.style[ style ] = array[ i ];
- }
- },
- setLeft: function () {
- this.setStyle( 'left', arguments );
- return this;
- },
- setTop: function () {
- this.setStyle( 'top', arguments );
- return this;
- },
- setRight: function () {
- this.setStyle( 'right', arguments );
- return this;
- },
- setBottom: function () {
- this.setStyle( 'bottom', arguments );
- return this;
- },
- setWidth: function () {
- this.setStyle( 'width', arguments );
- return this;
- },
- setHeight: function () {
- this.setStyle( 'height', arguments );
- return this;
- },
- // border
- setBorder: function () {
- this.setStyle( 'border', arguments );
- return this;
- },
- setBorderTop: function () {
- this.setStyle( 'borderTop', arguments );
- return this;
- },
- setBorderBottom: function () {
- this.setStyle( 'borderBottom', arguments );
- return this;
- },
- setBorderLeft: function () {
- this.setStyle( 'borderLeft', arguments );
- return this;
- },
- setBorderRight: function () {
- this.setStyle( 'borderRight', arguments );
- return this;
- },
- // margin
- setMargin: function () {
- this.setStyle( 'margin', arguments );
- return this;
- },
- setMarginTop: function () {
- this.setStyle( 'marginTop', arguments );
- return this;
- },
- setMarginBottom: function () {
- this.setStyle( 'marginBottom', arguments );
- return this;
- },
- setMarginLeft: function () {
- this.setStyle( 'marginLeft', arguments );
- return this;
- },
- setMarginRight: function () {
- this.setStyle( 'marginRight', arguments );
- return this;
- },
- // padding
- setPadding: function () {
- this.setStyle( 'padding', arguments );
- return this;
- },
- //
- setFontSize: function () {
- this.setStyle( 'fontSize', arguments );
- return this;
- },
- setFontWeight: function () {
- this.setStyle( 'fontWeight', arguments );
- return this;
- },
- //
- setColor: function () {
- this.setStyle( 'color', arguments );
- return this;
- },
- setBackgroundColor: function () {
- this.setStyle( 'backgroundColor', arguments );
- return this;
- },
- setDisplay: function () {
- this.setStyle( 'display', arguments );
- return this;
- },
- setOverflow: function () {
- this.setStyle( 'overflow', arguments );
- return this;
- }
- }
- // Panel
- UI.Panel = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'div' );
- this.dom.style.position = position || 'relative';
- // this.dom.addEventListener( 'mousedown', function ( event ) { event.preventDefault() }, false );
- return this;
- };
- UI.Panel.prototype = new UI.Element();
- UI.Panel.prototype.constructor = UI.Panel;
- UI.Panel.prototype.add = function () {
- for ( var i = 0; i < arguments.length; i ++ ) {
- this.dom.appendChild( arguments[ i ].dom );
- }
- return this;
- };
- // Text
- UI.Text = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'span' );
- this.dom.style.position = position || 'relative';
- return this;
- };
- UI.Text.prototype = new UI.Element();
- UI.Text.prototype.constructor = UI.Text;
- UI.Text.prototype.setText = function ( value ) {
- this.dom.textContent = value;
- return this;
- };
- // Color
- UI.Color = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'span' );
- this.dom.style.position = position || 'relative';
- this.dom.style.width = '64px';
- this.dom.style.height = '16px';
- this.dom.style.backgroundColor = '#000000';
- return this;
- };
- UI.Color.prototype = new UI.Element();
- UI.Color.prototype.constructor = UI.Color;
- UI.Color.prototype.getValue = function () {
- return this.dom.style.backgroundColor;
- };
- UI.Color.prototype.setValue = function ( value ) {
- this.dom.style.backgroundColor = value;
- return this;
- };
- // Number
- UI.Number = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'input' );
- this.dom.style.position = position || 'relative';
- this.dom.style.marginTop = '0px';
- this.dom.style.color = '#0080f0';
- this.dom.style.fontSize = '12px';
- this.dom.style.textDecoration = 'underline';
- this.dom.style.backgroundColor = 'transparent';
- this.dom.style.border = '0px';
- this.dom.value = '0.00';
- this.min = - Infinity;
- this.max = Infinity;
- this.onChangeCallback = null;
- var scope = this;
- var onMouseDownValue, onMouseDownScreenX, onMouseDownScreenY;
- var onMouseDown = function ( event ) {
- // event.preventDefault();
- onMouseDownValue = parseFloat( scope.dom.value );
- onMouseDownScreenX = event.screenX;
- onMouseDownScreenY = event.screenY;
- document.addEventListener( 'mousemove', onMouseMove, false );
- document.addEventListener( 'mouseup', onMouseUp, false );
- }
- var onMouseMove = function ( event ) {
- var distance = ( event.screenX - onMouseDownScreenX ) - ( event.screenY - onMouseDownScreenY );
- var amount = event.shiftKey ? 10 : 100;
- var number = onMouseDownValue + ( distance / amount );
- scope.dom.value = Math.min( scope.max, Math.max( scope.min, number ) ).toFixed( 2 );
- scope.onChangeCallback();
- }
- var onMouseUp = function ( event ) {
- document.removeEventListener( 'mousemove', onMouseMove, false );
- document.removeEventListener( 'mouseup', onMouseUp, false );
- }
- this.dom.addEventListener( 'mousedown', onMouseDown, false );
- this.dom.addEventListener( 'change', function ( event ) {
- var number = parseFloat( scope.dom.value );
- if ( number !== NaN ) {
- scope.dom.value = number.toFixed( 2 );
- scope.onChangeCallback();
- }
- }, false );
- return this;
- };
- UI.Number.prototype = new UI.Element();
- UI.Number.prototype.constructor = UI.Number;
- UI.Number.prototype.getValue = function () {
- return parseFloat( this.dom.value );
- };
- UI.Number.prototype.setValue = function ( value ) {
- this.dom.value = value.toFixed( 2 );
- return this;
- };
- UI.Number.prototype.setMin = function ( value ) {
- this.min = value;
- return this;
- };
- UI.Number.prototype.setMax = function ( value ) {
- this.max = value;
- return this;
- };
- UI.Number.prototype.onChange = function ( callback ) {
- this.onChangeCallback = callback;
- return this;
- };
- // Break
- UI.Break = function () {
- UI.Element.call( this );
- this.dom = document.createElement( 'br' );
- return this;
- };
- UI.Break.prototype = new UI.Element();
- UI.Break.prototype.constructor = UI.Break;
- // HorizontalRule
- UI.HorizontalRule = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'hr' );
- this.dom.style.position = position || 'relative';
- return this;
- };
- UI.HorizontalRule.prototype = new UI.Element();
- UI.HorizontalRule.prototype.constructor = UI.HorizontalRule;
- // Button
- UI.Button = function ( position ) {
- UI.Element.call( this );
- this.dom = document.createElement( 'button' );
- this.dom.style.position = position || 'relative';
- this.onClickCallback = null;
- var scope = this;
- this.dom.addEventListener( 'click', function ( event ) {
- scope.onClickCallback();
- }, false );
- return this;
- };
- UI.Button.prototype = new UI.Element();
- UI.Button.prototype.constructor = UI.Button;
- UI.Button.prototype.setText = function ( value ) {
- this.dom.textContent = value;
- return this;
- };
- UI.Button.prototype.onClick = function ( callback ) {
- this.onClickCallback = callback;
- return this;
- };
|