OSDN Git Service

version 0.5.9, fixed ui & keyEvent.
authoritozyun <itozyun@gmail.com>
Sat, 18 Aug 2012 14:59:33 +0000 (23:59 +0900)
committeritozyun <itozyun@gmail.com>
Sat, 18 Aug 2012 14:59:33 +0000 (23:59 +0900)
0.5.x/javascripts/peta.common.js
0.5.x/javascripts/system.js

index 32a922b..458809a 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR peta.common.js\r
- *   version 0.5.6\r
+ *   version 0.5.8\r
  * \r
  *   author:\r
  *     itozyun\r
@@ -40,7 +40,7 @@ var pettanr = ( function(){
                })(),\r
                IS_DEBUG = Type.isBoolean( URL_PARAMS.debug ) ? URL_PARAMS.debug : IS_LOCAL === true;\r
        return {\r
-               version: '0.5.5',\r
+               version: '0.5.8',\r
                URL_PARAMS: URL_PARAMS,\r
                LOCAL: IS_LOCAL,\r
                DEBUG: IS_DEBUG,\r
index 38fbb84..efd5da9 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR system.js\r
- *   version 0.5.8\r
+ *   version 0.5.9\r
  * \r
  * \r
  * Type\r
                                elm.innerHTML = html;\r
                                return elm.firstChild;\r
                        },\r
-                       getElementsByClassName: function( _elm, _className, opt_tagName){\r
+                       getElementsByClassName: function( _elm, _className, opt_tagName ){\r
                                var _all = !opt_tagName || opt_tagName === '*',\r
-                                       _nodes = _all === true ? ( _elm.all || _elm.getElementsByTagName( '*')) : _elm.getElementsByTagName( opt_tagName),\r
+                                       _nodes = _all === true ? ( _elm.all || _elm.getElementsByTagName( '*' )) : _elm.getElementsByTagName( opt_tagName ),\r
                                        _node, _classes, ret = [];\r
-                               for( var i=0, l = _nodes.length; i<l; ++i){\r
-                                       _node = _nodes[ i];\r
-                                       _node.nodeType === 1 && this.hasClassName( _node, _className) === true && ret.push( _node);\r
+                               for( var i=0, l = _nodes.length; i<l; ++i ){\r
+                                       _node = _nodes[ i ];\r
+                                       _node.nodeType === 1 && Util.hasClassName( _node, _className ) === true && ret.push( _node );\r
                                }\r
                                return ret;\r
+                               \r
+                               var sp = ' ', cn,\r
+                                       _cnames = _className.replace( /\s+/g, sp ).split( sp ),\r
+                                       _nodes = Util.copyArray( _livenodes );\r
+                               \r
+                               for( var i = _cnames.length; i; ){\r
+                                       cn = _cnames[ --i ];\r
+                                       for( var j = _nodes.length; j > 0; ){\r
+                                               _node = _nodes[ --j ];\r
+                                               if( _node.nodeType !== 1 || Util.hasClassName( _node, cn ) === false ){\r
+                                                       _nodes.split( j, 1 );\r
+                                                       --j;\r
+                                               };\r
+                                       };\r
+                               };\r
                        },\r
                        getChildIndex: function( _parent, _child ){\r
                                var _children = _parent.getElementsByTagName( _child.tagName ),\r
@@ -988,13 +1003,13 @@ var File = ( function(){
                getFileUID: function( FILEDATAorFILE ){\r
                        if( FILEDATAorFILE instanceof FileClass ){\r
                                return FILEDATAorFILE.getUID();\r
-                       }\r
+                       };\r
                        \r
                        var uid = Util.getIndex( FILEDATA_RESITER, FILEDATAorFILE );\r
                        if( uid === -1 ){\r
                                uid = FILEDATA_RESITER.length;\r
                                FILEDATA_RESITER.push( FILEDATAorFILE );\r
-                       }\r
+                       };\r
                        return uid;\r
                },\r
                getFileDataAccess: function( UIDorFILEorFILEDATA ){\r
@@ -1016,7 +1031,7 @@ var File = ( function(){
                        } else\r
                        if( Util.getIndex( FILEDATA_RESITER, UIDorFILEorFILEDATA ) !== -1 ){\r
                                return UIDorFILEorFILEDATA;\r
-                       }\r
+                       };\r
                        return null;\r
                },\r
                getChildren: function( UIDorFILEorFILEDATA ){\r
@@ -1060,8 +1075,8 @@ var File = ( function(){
                                if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback ){\r
                                        EVENT_LISTENER_REGISTER.splice( i, 1 );\r
                                        _ticket.kill();\r
-                               }\r
-                       }\r
+                               };\r
+                       };\r
                },\r
                getTreeAccess: function(){\r
                        \r
@@ -1081,11 +1096,11 @@ var File = ( function(){
                                        if( FILE_CONTROLER.getFileData( _tree.getCurrentFile() ) === _data ){\r
                                                _treeAccess = TREE_ACCESS_ARRAY[ _tree.getUID() ];\r
                                                _treeAccess && _treeAccess.dispatchFileEvent( _event );\r
-                                       }\r
-                               }\r
-                       }\r
+                                       };\r
+                               };\r
+                       };\r
                }\r
-       }\r
+       };\r
        \r
        var TreeClass = function( apiuser, rootFileData ){\r
                var PARENT_FILE_RESITER = [],\r
@@ -1116,9 +1131,9 @@ var File = ( function(){
                                if( _type === Const.TREE.EVENT.UPDATE && _eventType === Const.FILE.EVENT.GET_SEQENTIAL_FILES ){\r
                                        //_callback( _eventType, _targetFile );\r
                                        AsyncCall.add( apiuser, _callback, [ _eventType, _targetFile ] );\r
-                               }\r
-                       }\r
-               }\r
+                               };\r
+                       };\r
+               };\r
                \r
                this.getUID = function(){\r
                        return Util.getIndex( TREE_ACCESS_ARRAY, ACCESS );\r
@@ -1179,12 +1194,12 @@ var File = ( function(){
                        while( PARENT_FILE_RESITER.length > 0 ){\r
                                _currentFile = PARENT_FILE_RESITER.shift();\r
                                _currentFile.destroy();\r
-                       }\r
+                       };\r
                        \r
                        AsyncCall.remove( apiuser );\r
                        instance = apiuser = null;\r
                        return true;\r
-               }\r
+               };\r
        };\r
 \r
        var FileEventTicketClass = function( _uid, _eventType, _callback ){\r
@@ -2712,6 +2727,8 @@ var ResizeEvent = ( function(){
  */\r
 var KeyEvent = ( function(){\r
        var EVENT_LIST_MAP = [],\r
+               LOCK_UP      = [],\r
+               LOCK_DOWN    = [],\r
                application    = null,\r
                currentList    = null;\r
 \r
@@ -2722,24 +2739,32 @@ var KeyEvent = ( function(){
                keyupTicket    = null,\r
                keyPress       = null,\r
                keypressTicket = null;\r
-\r
+       \r
+       function unlock( lock, key ){\r
+               lock.splice( Util.getIndex( lock, key ), 1 );\r
+       };\r
+       \r
        function onKeyChange( e ){\r
                var cancel         = false,\r
                        type           = e.type,\r
                        key            = e.keyCode || e.charCode || e.which,\r
                        shift          = Type.isBoolean( e.shiftKey ) === true ? e.shiftKey : ( e.modifiers & Event.SHIFT_MASK ),\r
                        ctrl           = Type.isBoolean( e.ctrlKey  ) === true ? e.ctrlKey  : ( e.modifiers & Event.CONTROL_MASK ),\r
-                       t;\r
-\r
+                       lock           = type === 'keyup' ? LOCK_UP : LOCK_DOWN;\r
+               // block chattering\r
+               if( Util.getIndex( lock, key ) !== -1 ) return false;\r
+               lock.push( key );\r
+               AsyncCall.add( SUPER_USER_KEY, unlock, [ lock, key ] );\r
+               \r
                if( key === 16 || shift === true ){\r
                        KeyEvent.shiftEnabled = type !== 'keyup';\r
                };\r
                if( key === 17 || ctrl === true ){\r
                        KeyEvent.ctrlEnabled  = type !== 'keyup';\r
                };\r
-\r
-               for( var i=currentList.length; t = currentList[ --i ]; ){\r
+               for( var i=currentList.length, t; t = currentList[ --i ]; ){\r
                        if( Type.isFunction( t[ type ] ) === true && t.keyCode === key && ( t.shift === undefined || t.shift === shift ) && ( t.ctrl === undefined || t.ctrl === ctrl )){\r
+                               \r
                                AsyncCall.add( t.apiuser, t[ type ], e );\r
                                cancel = true;\r
                        };\r
@@ -2778,8 +2803,8 @@ var KeyEvent = ( function(){
                                        if( _handler !== this.keydown ) return false;\r
                                } else {\r
                                        if( _handler !== this.keyup )   return false;\r
-                               }\r
-                       }\r
+                               };\r
+                       };\r
                        if( _keyCode  && _keyCode  !== this.keyCode ) return false;\r
                        if( _shift    && _shift    !== this.shift )   return false;\r
                        if( _ctrl     && _ctrl     !== this.ctrl )    return false;\r
@@ -2794,7 +2819,7 @@ var KeyEvent = ( function(){
                        \r
                        return true;\r
                }\r
-       }\r
+       };\r
        \r
        function registerEvent( _apiuser, _type, _onKeydown, _onKeyup, _keyCode, _shift, _ctrl ){\r
                var _uid  = _apiuser.getUID(),\r
@@ -2823,7 +2848,7 @@ var KeyEvent = ( function(){
                        } else\r
                        if( _type === 'cursol' ){\r
                                \r
-                       }\r
+                       };\r
                },\r
                remove: function( _apiuser, _type, _handler, _keyCode, _shift, _ctrl ){\r
                        var _list = EVENT_LIST_MAP[ _apiuser.getUID() ],\r
@@ -3245,7 +3270,7 @@ var UI = ( function(){
                        elmA.innerHTML     = _newValue;\r
                        elmA.style.display = 'block';\r
                        \r
-                       onUpdate && _newValue !== value && onUpdate( _newValue, value );\r
+                       onUpdate && _newValue !== value && AsyncCall.add( apiuser, onUpdate, [ _newValue, value ] );\r
                        \r
                        value = _newValue;\r
                        focus = false;\r
@@ -3270,7 +3295,7 @@ var UI = ( function(){
                };\r
                instance.value( value );\r
                MouseEvent.add( apiuser, elmWrapper, 'click', instance.focus );\r
-       }\r
+       };\r
        \r
        var ButtonClass = function( apiuser, uiGroup, elmWrapper, onUpdate ){\r
                var instance  = this,\r
@@ -3281,7 +3306,8 @@ var UI = ( function(){
                \r
                function onClick(){\r
                        focus = true;\r
-                       onUpdate();\r
+                       // onUpdate();\r
+                       AsyncCall.add( apiuser, onUpdate );\r
                        return false;\r
                };\r
                this.focus = function(){\r
@@ -3313,7 +3339,7 @@ var UI = ( function(){
                        MouseEvent.remove( apiuser, elmWrapper );\r
                        apiuser = uiGroup = elmWrapper = onUpdate = instance = null;\r
                };\r
-       }\r
+       };\r
 \r
        var FileInputClass = function( apiuser, uiGroup, elmWrapper, onUpdate, validater, elmFileInput ){\r
                var elmFilePath = Util.getElementsByClassName( elmWrapper, 'file-path' )[ 0 ],\r
@@ -3412,11 +3438,11 @@ var UI = ( function(){
                                                if( focus === true ){\r
                                                        OptionControl.update( instance, _value );\r
                                                };\r
-                                               Type.isFunction( onUpdate ) === true && onUpdate( _value );\r
+                                               Type.isFunction( onUpdate ) === true && AsyncCall.add( apiuser, onUpdate, [ _value ] );\r
                                                break;\r
-                                       }\r
-                               }\r
-                       }\r
+                                       };\r
+                               };\r
+                       };\r
                        return value;\r
                };\r
                this.selectIndex = function(){\r
@@ -3714,12 +3740,12 @@ var UI = ( function(){
                        KeyEvent.remove( SUPER_USER_KEY, Const.KEY.EVENT.KEY_DOWN, onKeyDown, 27 );\r
                        KeyEvent.remove( SUPER_USER_KEY, Const.KEY.EVENT.KEY_DOWN, onKeyDown,  9 );\r
                        KeyEvent.updateCurrentListener( _apiuser );\r
-               }\r
-       }\r
+               };\r
+       };\r
 \r
        function onKeyDown( e ){\r
                if( currentItem === null ) return true;\r
-               var keyCode = e.keyCode,\r
+               var keyCode = e.keyCode || e.charCode,\r
                        _index  = Util.getIndex( currentList, currentItem );\r
                if( keyCode === 13 || keyCode === 27 || keyCode === 9 || keyCode === 18 || e.altKey === true ){ // 13.return 27.esc 9.tab 18.alt\r
                        keyCode === 9  && tabShift( _index, e.shiftKey === true ? -1 : 1 );\r
@@ -3728,7 +3754,7 @@ var UI = ( function(){
                        currentItem && currentItem.blur( keyCode );\r
                };\r
                return false;\r
-       }\r
+       };\r
 \r
        function tabShift( _index, _way ){\r
                var l = currentList.length,\r