/*
* pettanR peta.apps.js
- * version 0.5.15
+ * version 0.5.17
*
* author:
* itozyun
this.onOpen = function( _w, _h ){
headerH = Util.getElementSize( document.getElementById( 'cabinet-header' ) ).height;
- self.addMouseEventListener( document.getElementById( 'cabinet-close-button' ), 'click', Cabinet.shutdown );
+ self.addEventListener( document.getElementById( 'cabinet-close-button' ), 'click', Cabinet.shutdown );
finder = self.createFinder( self.rootElement, tree );
self.onPaneResize( _w, _h );
this.onOpen = function( _w, _h ){
headerH = Util.getElementSize( document.getElementById( 'gallery-header' ) ).height;
- self.addMouseEventListener( document.getElementById( 'gallery-close-button' ), 'click', Gallery.shutdown );
+ self.addEventListener( document.getElementById( 'gallery-close-button' ), 'click', Gallery.shutdown );
finder = self.createFinder( self.rootElement, tree );
self.onPaneResize( _w, _h );
'margin:', MATH_FLOOR( itemH / 2 - h / 2 ), 'px ', MATH_FLOOR( itemW / 2 - w / 2 ), 'px 0'
].join('');
reversibleImage.resize( w, h );
- self.addMouseEventListener( elmIconWrap, 'click', onClick );
+ self.addEventListener( elmIconWrap, 'click', onClick );
};
function onClick(){
buttonW = Util.getElementSize( elmButton ).width;
- self.addMouseEventListener( elmContainer, 'mousewheel', onMouseWheel );
- self.addMouseEventListener( elmButton, 'click', clickClose );
+ self.addEventListener( elmContainer, 'mousewheel', onMouseWheel );
+ self.addEventListener( elmButton, 'click', clickClose );
tree.addTreeEventListener( Const.TREE.EVENT.UPDATE, drawIcons );
if( Driver.isPettanrFileInstance( _ARTISTIDorFILE ) === true ){
function clickOK(){
textElement && textElement.text( elmTextarea.value );
self.addAsyncCall( asyncCallback );
- }
+ };
function asyncCallback(){
onUpdate && onUpdate( textElement );
onUpdate = textElement = null;
TextEditor.shutdown();
- }
+ };
function textareaFitHeight(){
while( elmTextarea.offsetHeight < textElement.h ){
rows++;
elmTextarea.rows = rows;
- }
+ };
if( rows > 1 ) elmTextarea.rows = --rows;
- }
+ };
/* grobal method */
elmButton = document.getElementById( 'speach-edit-complete-button' );
self.addKeyEventListener( 'keydown', new Function( 'return false' ), 69, false, true );
- self.addMouseEventListener( elmButton, 'click', clickOK );
+ self.addEventListener( elmButton, 'click', clickOK );
panelX = _panelX;
panelY = _panelY;
bindWorker = pettanr.bind.createBindWorker( elmContainer, null, false, false );
- self.addMouseEventListener( elmBackButton, 'click', onBackClick );
- self.addMouseEventListener( elmNextButton, 'click', onNextClick );
+ self.addEventListener( elmBackButton, 'click', onBackClick );
+ self.addEventListener( elmNextButton, 'click', onNextClick );
numPanel = currentIndex = 0;
if( this.visible === true ) return;
elmRoot.appendChild( this.elm );
this.elm.className = ELM_ITEM_CLASSNAME + '-focus';
- this.onShow && app.addAsyncCall( this.onShow );
+ this.onShow && app.addAsyncCall( this.onShow, null, this );
this.visible = true;
},
hide: function(){
if( this.visible === false ) return;
elmBar.appendChild( this.elm );
this.elm.className = ELM_ITEM_CLASSNAME;
- this.onHide && app.addAsyncCall( this.onHide );
+ this.onHide && app.addAsyncCall( this.onHide, null, this );
this.visible = false;
},
createOption: function( title, shortcut, callback, visible, separateBefore, separateAfter ){
},
_open: function(){
for( var lis = this.optionList, i = lis.length; i; ){
- app.addMouseEventListener( lis[ --i ].elm, 'click', this.onClick );
+ app.addEventListener( lis[ --i ].elm, 'click', this.onClick );
};
},
_close: function(){
if( stackBack.length === 0 ) return;
var s = stackBack.pop();
- s.fn( s.argBack );
+ s.fn.apply( {}, s.argBack );
menubarBack.visible( stackBack.length !== 0 );
SAVE_CONTROL.panelUpdated( stackBack.length !== 0 );
if( stackForward.length === 0 ) return;
var s = stackForward.pop();
- s.fn( s.argForword );
+ s.fn.apply( {}, s.argForword );
menubarForward.visible( stackForward.length !== 0 );
stackBack.push( s );
menubarBack.visible( true );
SAVE_CONTROL.panelUpdated( true );
};
- var StackClass = function( _function, _argBack, _argForword, _destroy ){
+ var RecordClass = function( _function, _argBack, _argForword, _destroy ){
this.fn = _function;
this.argBack = _argBack;
this.argForword = _argForword;
this.destroy = _destroy;
};
- StackClass.prototype.kill = function( _callDestroy ){
+ RecordClass.prototype.kill = function( _callDestroy ){
var _argBack = this.argBack,
_argForword = this.argForword,
v;
while( s = stackForward.shift() ) s.kill( true );
menubarBack = menubarForward = stackBack = stackForward = null;
},
- saveState: function( _function, _argBack, _argForword, _destroy ){
- stackBack.push( new StackClass( _function, _argBack, _argForword, _destroy ));
+ saveState: function( _function, _argBack, _argForword, _onRecordDestroy ){
+ stackBack.push( new RecordClass( _function, _argBack, _argForword, _onRecordDestroy ));
menubarBack.visible( true );
SAVE_CONTROL.panelUpdated( true );
};
this.onFadeOut = function(){
self.elm.parentNode.removeChild( self.elm );
- self.onClose && app.addAsyncCall( self.onClose );
+ self.onClose && app.addAsyncCall( self.onClose, null, self );
};
this.close = function(){
if( visible === false) return;
delete TOOL_BOX_WINDOW.onInit;
},
onFirstOpen: function(){
- app.addMouseEventListener( document.getElementById( 'toolbox-add-image-button'), 'click', addImage );
- app.addMouseEventListener( document.getElementById( 'toolbox-add-text-button'), 'click', addText );
- app.addMouseEventListener( document.getElementById( 'toolbox-edit-bg-button'), 'click', editBG );
- app.addMouseEventListener( document.getElementById( 'toolbox-switch-grid'), 'click', switchGrid );
- app.addMouseEventListener( document.getElementById( 'toolbox-popup-help-button'), 'click', popupHelp );
+ app.addEventListener( document.getElementById( 'toolbox-add-image-button'), 'click', addImage );
+ app.addEventListener( document.getElementById( 'toolbox-add-text-button'), 'click', addText );
+ app.addEventListener( document.getElementById( 'toolbox-edit-bg-button'), 'click', editBG );
+ app.addEventListener( document.getElementById( 'toolbox-switch-grid'), 'click', switchGrid );
+ app.addEventListener( document.getElementById( 'toolbox-popup-help-button'), 'click', popupHelp );
// postButton = $( '#toolbox-post-button');
function jumpPage( _index ){
if( Type.isNumber( _index ) === true && 0 <= _index && _index < numPage && currentPageIndex !== _index ){
currentPageIndex = _index;
- }
- jqNaviItems.removeClass( 'current' ).eq( currentPageIndex).addClass( 'current' );
+ };
+ jqNaviItems.removeClass( 'current' ).eq( currentPageIndex ).addClass( 'current' );
jqPages.hide().eq( currentPageIndex ).show();
}
function onNaviClick( e ){
// this は <a>
- jumpPage( Util.getChildIndex( this.parentNode, this ));
+ jumpPage( Util.getChildIndex( this.parentNode, this ) );
return false;
}
function onInnerLinkClick( e ){
panelX, panelY, panelW, panelH,
offsetY, startY, startH,
isDragging = false;
-
- function restoreState( arg ){
- if( arg && arg.length > 3){
- PANEL_CONTROL.resize( isTop, arg[ 0 ] || panelX, arg[ 1 ] || panelY, arg[ 2 ] || panelW, arg[ 3 ] || panelH );
+ /* history */
+ function restoreState( x, y, w, h ){
+ if( arguments.length > 3){
+ PANEL_CONTROL.resize( isTop, x || panelX, y || panelY, w || panelW, h || panelH );
};
};
};
function layerBack(){
if( currentElement === null) return;
- if( PANEL_ELEMENT_CONTROL.replace( currentElement, false) === false ) return;
+ if( PANEL_ELEMENT_CONTROL.replace( currentElement, false ) === false ) return;
INFOMATION_WINDOW.update( currentElement );
- HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.restoreReplace, [ currentElement, true ], [ currentElement, false ]);
+ HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.resplace, [ currentElement, true ], [ currentElement, false ] );
var _z = currentElement.z;
LAYER_BACK_BUTTON.visible( _z > 0 );
LAYER_FORWARD_BUTTON.visible( _z < PANEL_ELEMENT_ARRAY.length -1 );
};
function layerForward(){
if( currentElement === null) return;
- if( PANEL_ELEMENT_CONTROL.replace( currentElement, true) === false) return;
+ if( PANEL_ELEMENT_CONTROL.replace( currentElement, true ) === false) return;
INFOMATION_WINDOW.update( currentElement);
- HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.restoreReplace, [ currentElement, false], [ currentElement, true]);
+ HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.replace, [ currentElement, false], [ currentElement, true ] );
var _z = currentElement.z;
- LAYER_BACK_BUTTON.visible( _z > 0);
+ LAYER_BACK_BUTTON.visible( _z > 0 );
LAYER_FORWARD_BUTTON.visible( _z < PANEL_ELEMENT_ARRAY.length -1);
};
function del(){
if( currentElement === null) return;
- buttonBackOrForward( true);
- PANEL_ELEMENT_CONTROL.remove( currentElement);
- HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.restore, [ true, currentElement], [ false, currentElement], true);
+ buttonBackOrForward( true );
+ HISTORY_CONTROL.saveState( PANEL_ELEMENT_CONTROL.restore, [ true, currentElement ], [ false, currentElement ], false ); // true
+ PANEL_ELEMENT_CONTROL.remove( currentElement );
PANEL_ELEMENT_OPERATION_MANAGER.hide();
};
function edit(){
};
function change(){
if( currentElement === null) return;
- buttonBackOrForward( true);
+ buttonBackOrForward( true );
PremiumSatge.boot( currentElement.getArtistID(), currentElement.resourcePicture );
};
function onImageSelect( resourcePicture ){
elmConsoleParent = elmConsoleWrapper.parentNode;
styleConsoleWrapper.display = 'none';
- app.addMouseEventListener( document.getElementById( 'edit-text-button' ), 'click', edit );
- app.addMouseEventListener( document.getElementById( 'delete-image-button' ), 'click', del );
- app.addMouseEventListener( document.getElementById( 'delete-text-button' ), 'click', del );
- app.addMouseEventListener( document.getElementById( 'change-image-button' ), 'click', change );
- app.addMouseEventListener( document.getElementById( 'layer-forward-button' ), 'click', layerForward );
- app.addMouseEventListener( document.getElementById( 'forward-text-button' ), 'click', layerForward );
- app.addMouseEventListener( document.getElementById( 'layer-back-button' ), 'click', layerBack );
- app.addMouseEventListener( document.getElementById( 'back-text-button' ), 'click', layerBack );
+ app.addEventListener( document.getElementById( 'edit-text-button' ), 'click', edit );
+ app.addEventListener( document.getElementById( 'delete-image-button' ), 'click', del );
+ app.addEventListener( document.getElementById( 'delete-text-button' ), 'click', del );
+ app.addEventListener( document.getElementById( 'change-image-button' ), 'click', change );
+ app.addEventListener( document.getElementById( 'layer-forward-button' ), 'click', layerForward );
+ app.addEventListener( document.getElementById( 'forward-text-button' ), 'click', layerForward );
+ app.addEventListener( document.getElementById( 'layer-back-button' ), 'click', layerBack );
+ app.addEventListener( document.getElementById( 'back-text-button' ), 'click', layerBack );
delete CONSOLE_CONTROLER.init;
},
},
onFinish: function(){
updateMouseCursor( '');
- if( w === startW && h === startH && x === startX && y === startY) return;
- PANEL_ELEMENT_OPERATION_MANAGER.resize( x, y, w, h);
+ if( w === startW && h === startH && x === startX && y === startY ) return;
+ PANEL_ELEMENT_OPERATION_MANAGER.resize( x, y, w, h );
currentElement.resize( x, y, w, h);
- PANEL_ELEMENT_OPERATION_MANAGER.saveStatus( startX, startY, startW, startH, undefined, startFilpV, startFilpH);
+ PANEL_ELEMENT_OPERATION_MANAGER.saveStatus( startX, startY, startW, startH, undefined, startFilpV, startFilpH );
},
onCancel: function(){
updateMouseCursor( '');
- PANEL_ELEMENT_OPERATION_MANAGER.resize( startX, startY, startW, startH);
+ PANEL_ELEMENT_OPERATION_MANAGER.resize( startX, startY, startW, startH );
currentElement.type === PANEL_ELEMENT_TYPE_IMAGE ?
currentElement.animate( startX, startY, startW, startH, startFilpV, startFilpH) :
currentElement.animate( startX, startY, startW, startH, angle);
currentElement = null,
currentX, currentY, currentW, currentH, angle, flipV, flipH;
- function resize( _x, _y, _w, _h, _angle ){
- currentX = _x = _x !== undefined ? _x : currentX;
- currentY = _y = _y !== undefined ? _y : currentY;
- currentW = _w = _w !== undefined ? _w : currentW;
- currentH = _h = _h !== undefined ? _h : currentH;
- angle = _angle = _angle !== undefined ? _angle : angle;
-
- RESIZE_OPERATOR.update( _x, _y, _w, _h );
- currentIsTextElement === true && TAIL_OPERATOR.update( _w, _h, angle );
- CONSOLE_CONTROLER.show( currentElement, _w, _h );
- INFOMATION_WINDOW.update( currentElement );
- };
function show( _currentElement ){
currentElement === null && RESIZE_OPERATOR.show( _currentElement );
if( currentElement !== _currentElement ){
flipV = currentIsTextElement === false ? _currentElement.flipV() : 0;
flipH = currentIsTextElement === false ? _currentElement.flipH() : 0;
- resize(
+ PANEL_ELEMENT_OPERATION_MANAGER.resize(
_currentElement.x, _currentElement.y, _currentElement.w, _currentElement.h,
currentIsTextElement === true ? _currentElement.angle() : 0
);
CONSOLE_CONTROLER.hide();
INFOMATION_WINDOW.update( null );
},
- resize: resize,
- restoreState: function( arg ){
- if( arg && arg.length !== 8 ) return;
- var _currentElement = arg[ 0 ],
- _x = arg[ 1 ], _y = arg[ 2 ], _w = arg[ 3 ], _h = arg[ 4 ],
- _a = arg[ 5 ],
- _flipV = arg[ 6 ], _flipH = arg[ 7 ];
+ resize: function( _x, _y, _w, _h, _angle ){
+ currentX = _x = _x !== undefined ? _x : currentX;
+ currentY = _y = _y !== undefined ? _y : currentY;
+ currentW = _w = _w !== undefined ? _w : currentW;
+ currentH = _h = _h !== undefined ? _h : currentH;
+ angle = _angle = _angle !== undefined ? _angle : angle;
+
+ RESIZE_OPERATOR.update( _x, _y, _w, _h );
+ currentIsTextElement === true && TAIL_OPERATOR.update( _w, _h, angle );
+ CONSOLE_CONTROLER.show( currentElement, _w, _h );
+ INFOMATION_WINDOW.update( currentElement );
+ },
+ /* history */
+ restoreState: function( _currentElement, _x, _y, _w, _h, _a, _flipV, _flipH ){
+ if( arguments.length !== 8 ) return;
if( !_currentElement && !currentOperator ) return;
_currentElement.type === PANEL_ELEMENT_TYPE_IMAGE ?
_currentElement.animate( _x, _y, _w, _h, _flipV, _flipH ) :
_currentElement.animate( _x, _y, _w, _h, _a );
currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();
currentOperator = null;
- currentElement === _currentElement ? resize( _x, _y, _w, _h, _a ) : show( _currentElement );
+ currentElement === _currentElement ? PANEL_ELEMENT_OPERATION_MANAGER.resize( _x, _y, _w, _h, _a ) : show( _currentElement );
},
saveStatus: function( startX, startY, startW, startH, startA, startFilpV, startFilpH ){
startX = startX !== undefined ? startX : currentX;
function flipReversibleImage(){
reversibleImage && reversibleImage.resize( flipH * w, flipV * h );
};
+ /* history */
function updateResourcePicture( _resourcePicture ){
resourcePicture = _resourcePicture;
balloon.angle( a );
}
}
+ /* history */
function updateText( _text ){
text = _text || text || '';
elmText.firstChild.data = text;
filter: '',
opacity: ''
}).fadeOut( onFadeOut );
- currentElement = currentElement === _panelElement ? null : currentElement;
+ if( currentElement === _panelElement ) currentElement = null;
return;
};
};
},
- restore: function( arg ){
- var isAppend = arg[ 0 ],
- panelElement = arg[ 1 ];
+ /* history */
+ restore: function( isAppend, panelElement ){
isAppend === true ? appendPanelElement( panelElement ) : PANEL_ELEMENT_CONTROL.remove( panelElement );
},
replace: function( _panelElement, goForward ){
renumber( true );
return true;
},
- restoreReplace: function( arg ){
- PANEL_ELEMENT_CONTROL.replace( arg[ 0 ], arg[ 1 ] );
- },
onPanelResize : function ( _panelX, _panelY, _panelW, _panelH, isResizerTopAction ){
/*
* リサイズが、ResizerTopによって行われた場合、panelElementのyを動かして見かけ上動かないようにする。
*/
- if( isResizerTopAction === true){
+ if( isResizerTopAction === true ){
var _shiftX = _panelW - panelW,
_shiftY = _panelH - panelH;
for( var i = PANEL_ELEMENT_ARRAY.length; i; ){
function updateMouseCursor( _cursor ){
if( currentCursor !== _cursor ){
currentCursor = _cursor;
- self.addAsyncCall( update );
+ app.addAsyncCall( update );
};
function update(){
elmMouseEventChatcher.style.cursor = currentCursor;
};
};
function centering(){
- self.onPaneResize( windowW, windowH );
+ app.onPaneResize( windowW, windowH );
};
function mouseEventRellay( e ){
var _mouseX = e.clientX,
* マウスイベントをcurrentElement(currentElement)に伝えるのが仕事
* このような実装になるのは、ここの表示オブジェクトにイベントを設定した場合、表示が追いつかずマウスカーソルが外れたタイミングでイベントが終わってしまうため。
*/
- self.addMouseEventListener( elmMouseEventChatcher, 'mousemove', mouseEventRellay );
- self.addMouseEventListener( elmMouseEventChatcher, 'mousedown', mouseEventRellay );
- self.addMouseEventListener( elmMouseEventChatcher, 'mouseup', mouseEventRellay );
- //self.addMouseEventListener( elmMouseEventChatcher, 'mouseout', mouseEventRellay );
+ self.addEventListener( elmMouseEventChatcher, 'mousemove', mouseEventRellay );
+ self.addEventListener( elmMouseEventChatcher, 'mousedown', mouseEventRellay );
+ self.addEventListener( elmMouseEventChatcher, 'mouseup', mouseEventRellay );
+ //self.addEventListener( elmMouseEventChatcher, 'mouseout', mouseEventRellay );
phase = 1;
/*\r
* pettanR system.js\r
- * version 0.5.16\r
+ * version 0.5.17\r
* \r
* \r
* Type\r
return false;\r
}\r
var r;\r
- if(v && v.nodeType === 1){\r
+ if(v && v.nodeType === 1 ){\r
try{\r
r = v.cloneNode(false);\r
} catch(n) {\r
}\r
document.createStyleSheet().cssText = "v\:shape,v\:image{behavior:url(#default#VML);display:block;};";\r
}\r
- }\r
+ };\r
})();\r
\r
\r
};\r
}, 0 );\r
\r
+ function clone( src ) {\r
+ var ret;\r
+ if( Type.isArray(src) === true ){\r
+ ret = [];\r
+ } else\r
+ if( Type.isObject(src) === true ){\r
+ ret = {};\r
+ } else\r
+ if( Type.isNumber(src) === true || Type.isString(src) === true || Type.isBoolean( src ) === true ){\r
+ return src;\r
+ } else {\r
+ return null;\r
+ };\r
+ for( var key in src ){\r
+ ret[ key ] = clone( src[ key ]);\r
+ };\r
+ return ret;\r
+ };\r
+ \r
return {\r
parse: function( v ){\r
if( Type.isString( v ) === true ){\r
};\r
};\r
return baseInstance;\r
- }, \r
+ },\r
+ copy: function( objOrArray ){\r
+ return clone( objOrArray );\r
+ },\r
cleanCommnetNode: function ( _targetElm ){\r
search( _targetElm || body );\r
\r
var AsyncCall = ( function(){\r
var CALLBACK_LIST = [];\r
\r
- var CallbackTicketClass = function( _apiuser, _callback, _argments ){\r
- this.apiuser = _apiuser;\r
- this.callback = _callback;\r
- this.argments = _argments;\r
- _apiuser = _callback = _argments = null;\r
- }\r
+ var CallbackTicketClass = function( _apiuser, _callback, _argments, _thisObject ){\r
+ this.apiuser = _apiuser;\r
+ this.callback = _callback;\r
+ this.argments = _argments;\r
+ this.thisObject = _thisObject;\r
+ };\r
CallbackTicketClass.prototype = new TicketBase();\r
CallbackTicketClass.prototype.call = function(){\r
var f = this.callback,\r
- a = this.argments;\r
+ a = this.argments,\r
+ t = this.thisObject;\r
+ this.destroy();\r
if( Type.isArray( a ) === true ){\r
- f.apply( this.apiuser, a );\r
+ f.apply( t, a );\r
} else {\r
- f( a );\r
- }\r
+ f.call( t, a );\r
+ };\r
};\r
CallbackTicketClass.prototype.destroy = function( _apiuser, _callback ){\r
if( _apiuser && _apiuser !== this.apiuser ) return false;\r
var _ticket = CALLBACK_LIST.shift();\r
if( _ticket ){\r
_ticket.call();\r
- _ticket.destroy();\r
CALLBACK_LIST.length !== 0 && SystemTimer.add( SUPER_USER_KEY, dispatch, 1, true );\r
- }\r
- }\r
+ };\r
+ };\r
\r
return {\r
- add: function( _apiuser, _callback, _argments ){\r
+ add: function( _apiuser, _callback, _argments, _thisObject ){\r
CALLBACK_LIST.length === 0 && SystemTimer.add( SUPER_USER_KEY, dispatch, 1, true );\r
- CALLBACK_LIST.push( new CallbackTicketClass( _apiuser, _callback, _argments ) );\r
+ CALLBACK_LIST.push( new CallbackTicketClass( _apiuser, _callback, _argments, _thisObject || _apiuser ) );\r
},\r
remove: function( _apiuser, _callback ){\r
var _ticket,\r
CALLBACK_LIST.splice( i, 1 );\r
} else {\r
++i;\r
- }\r
- }\r
+ };\r
+ };\r
}\r
- }\r
+ };\r
})();\r
\r
/* -----------------------------------------------------------\r
success: onSuccess,\r
error: onError\r
});\r
- }\r
+ };\r
function onSuccess( _data ){\r
currentTicket.load( _data );\r
currentTicket.kill();\r
currentTicket = null;\r
request();\r
- }\r
+ };\r
function onError(){\r
++numError;\r
currentTicket.error();\r
currentTicket.kill(); // retry\r
currentTicket = null;\r
request();\r
- }\r
+ };\r
\r
return {\r
getNumTask: function(){\r
REQUEST_TICKET_RESISTER.push( new RequestTicketClass( _apiuser, DATA_IS_JSON, _data, _url, _onLoad, _onError ));\r
currentTicket === null && request();\r
}\r
- }\r
+ };\r
})();\r
\r
var FILE_CONTROLER = {\r
_type = _ticket.eventType;\r
_callback = _ticket.callBack;\r
if( _eventType === _type && _uid === _ticket.fileUID ){\r
- AsyncCall.add( apiuser, _callback, [ _eventType, _targetFile, e.key, e.value ] );\r
+ AsyncCall.add( apiuser, _callback, [ _eventType, _targetFile, e.key, e.value ], _targetFile );\r
} else\r
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
+ AsyncCall.add( apiuser, _callback, [ _eventType, _targetFile ], instance );\r
};\r
};\r
};\r
KeyEvent.remove( self );\r
SystemTimer.remove( self );\r
AsyncCall.remove( self );\r
- Css.unload( self );\r
+ StyleSheet.unload( self );\r
\r
while( uiList.length > 0 ){\r
uiList.shift().destroy();\r
this.fetchCSS = function( _url, opt_onload, opt_onerror ){\r
if( phase === 1 ){\r
++fetchResource;\r
- Css.load( self, _url, fetchResourceComplete, fetchResourceComplete );\r
+ StyleSheet.load( self, _url, fetchResourceComplete, fetchResourceComplete );\r
};\r
};\r
\r
// overrride\r
return true;\r
}; // false の場合、close の拒否 \r
-AbstractApplication.prototype.addMouseEventListener = function( _element, _eventType, _handler ){\r
+AbstractApplication.prototype.addEventListener = function( _element, _eventType, _handler ){\r
MouseEvent.add( this, _element, _eventType, _handler );\r
};\r
AbstractApplication.prototype.removeMouseEventListener = function( _element, _eventType, _handler ){\r
AbstractApplication.prototype.removeTimer = function( handler ){\r
SystemTimer.remove( this, handler );\r
};\r
-AbstractApplication.prototype.addAsyncCall = function( _callback, _argments ){\r
- AsyncCall.add( this, _callback, _argments );\r
+AbstractApplication.prototype.addAsyncCall = function( _callback, _argments, _thisObject ){\r
+ AsyncCall.add( this, _callback, _argments, _thisObject );\r
};\r
AbstractApplication.prototype.removeAsyncCall = function( _callback ){\r
AsyncCall.remove( this, _callback );\r
} else {\r
Application.onCurrentApplicationChange( coveredApplication );\r
coveredApplication = null;\r
- }\r
+ };\r
},\r
onCurrentApplicationChange: function( _application ){\r
if( Application.isApplicationInstance( _application ) === false ) return;\r
tailList.push( tail );\r
elm = tail.elm;\r
elmContainer.appendChild( elm );\r
- self.addMouseEventListener( elm, 'click', onTailClick );\r
+ self.addEventListener( elm, 'click', onTailClick );\r
};\r
};\r
\r
* http://thudjs.tumblr.com/post/637855087/stylesheet-onload-or-lack-thereof\r
*/\r
\r
-var Css = ( function(){\r
+var StyleSheet = ( function(){\r
var head = doc.getElementsByTagName( 'head' )[ 0 ];\r
\r
var TICKET_LIST = [];\r
};\r
},\r
error: function(){\r
- for( var i = this.onerror.length, c; i; ){\r
- c = this.onerror[ --i ];\r
- Type.isFunction( c ) === true && AsyncCall.add( t.apiusers[ i ], c, t.url );\r
+ for( var i = this.onerror.length, f; i; ){\r
+ f = this.onerror[ --i ];\r
+ Type.isFunction( f ) === true && AsyncCall.add( this.apiusers[ i ], f, this.url );\r
this.onload[ i ] = this.onerror[ i ] = null;\r
};\r
},\r
}\r
})();\r
\r
+/*\r
+ * AssetLoader\r
+ * fetchCSS\r
+ * fetchJson\r
+ * fetchHtml\r
+ * fetchImage\r
+ * fetchLocalFile\r
+ * fetchLocalStorage
+ */\r
+\r
+var Image = ( function(){\r
+ var TASK_LIST = [];\r
+ /* \r
+ * FetchClass original is\r
+ * \r
+ * LICENSE: MIT?\r
+ * URL: http://d.hatena.ne.jp/uupaa/20080413/1208067631\r
+ * AUTHOR: uupaa.js@gmail.com\r
+ * \r
+ */\r
+ function detect(){\r
+ for( var i=0, t; i < TASK_LIST.length; ){\r
+ t = TASK_LIST[ i ];\r
+ if( t.complete() === true ){\r
+ TASK_LIST.splice( i, 1 );\r
+ } else {\r
+ ++i;\r
+ };\r
+ };\r
+ TASK_LIST.length === 0 && SystemTimer.remove( SUPER_USER_KEY, detect );\r
+ };\r
+ function getTask( img ){\r
+ for( var i = TASK_LIST.length; i; ){\r
+ if( TASK_LIST[ --i ].img === img ) return TASK_LIST[ i ];\r
+ };\r
+ };\r
+ function onError(){\r
+ var task = getTask( this );\r
+ if( task.finish === true ) return;\r
+ task.finish = true;\r
+ AsyncCall.add( task.apiuser, task.asyncCallback, null, task );\r
+ };\r
+ function onLoad(){\r
+ // if( finish === true ) return; // これがあると firefox3.6 で駄目、、、\r
+ // if( timer ) return; // これがあると safari3.2 で駄目、、、\r
+ var task = getTask( this );\r
+ task.finish = true;\r
+ TASK_LIST.splice( Util.getIndex( TASK_LIST, task ), 1 );\r
+ if( window.opera && !task.img.complete ){\r
+ AsyncCall.add( task.apiuser, task.asyncCallback, null, task );\r
+ return;\r
+ };\r
+ task.size = Util.getImageSize( this );\r
+ AsyncCall.add( task.apiuser, task.asyncCallback, null, task );\r
+ };\r
+\r
+\r
+ var FetchClass = function( apiuser, abspath, onLoadCallback, onErrorCallback, timeout ){\r
+ this.apiuser = apiuser;\r
+ this.abspath = abspath;\r
+ this.onLoadCallback = onLoadCallback;\r
+ this.onErrorCallback = onErrorCallback;\r
+ this.timeout = timeout;\r
+ this.tick = 0;\r
+ };\r
+ FetchClass.prototype = {\r
+ img: null,\r
+ size: null,\r
+ tick: 0,\r
+ finish: false,\r
+ load: function(){\r
+ var img = this.img = document.createElement( 'img' ); //var img = new Image(); ではieでimgのsizeが取れない、、、removeChildも失敗し、imgSizeGetterにimgが残る\r
+ img.onabort = img.onerror = onError;\r
+ img.onload = onLoad;\r
+ img.src = this.abspath;\r
+ },\r
+ complete: function(){\r
+ if( this.finish === true ) return true;\r
+ if( this.img.complete ){\r
+ this.finish = true;\r
+ if( this.img.width ) return true;\r
+ AsyncCall.add( this.apiuser, this.asyncCallback, null, this );\r
+ return true;\r
+ };\r
+ if( ( this.tick += 250 ) > this.timeout ){\r
+ this.finish = true;\r
+ AsyncCall.add( this.apiuser, this.asyncCallback, null, this );\r
+ return true;\r
+ };\r
+ },\r
+ asyncCallback: function(){\r
+ this.size ? this.onLoadCallback( this.abspath, this.size.width, this.size.height ) : this.onErrorCallback( this.abspath );\r
+ this.destroy();\r
+ },\r
+ destroy: function(){\r
+ this.finish = true;\r
+ this.img.src = this.img.onload = this.img.onabort = this.img.onerror = '';\r
+ delete this.img;\r
+ delete this.size;\r
+ delete this.onLoadCallback;\r
+ delete this.onErrorCallback;\r
+ },\r
+ stop: function(){\r
+ timer !== null && window.clearTimeout( timer );\r
+ destroy();\r
+ }\r
+ };\r
+ \r
+ return {\r
+ load: function( URLorELM, onLoad, onError, opt_timeout ){\r
+ var src, fetch;\r
+ if( Type.isString( URLorELM ) === true ){\r
+ src = URLorELM;\r
+ } else\r
+ if( Type.isHTMLElement( URLorELM ) === true && URLorELM.tagName.toLowerCase() === 'img' ){\r
+ src = URLorELM.src;\r
+ } else {\r
+ return;\r
+ };\r
+ \r
+ fetch = new FetchClass(\r
+ Util.getAbsolutePath( src ),\r
+ onLoad, onError,\r
+ Type.isFinite( opt_timeout ) === true ? opt_timeout : undefined\r
+ );\r
+ TASK_LIST.push( fetch );\r
+ \r
+ SystemTimer.add( SUPER_USER_KEY, detect, 250 );\r
+ },\r
+ unload: function( ){\r
+ \r
+ }\r
+ };\r
+})();\r
+\r
\r
/* ----------------------------------------\r
* \r
elmA.innerHTML = _newValue;\r
elmA.style.display = 'block';\r
\r
- onUpdate && _newValue !== value && AsyncCall.add( apiuser, onUpdate, [ _newValue, value ] );\r
+ onUpdate && _newValue !== value && AsyncCall.add( apiuser, onUpdate, [ _newValue, value ], instance );\r
\r
value = _newValue;\r
focus = false;\r
function onClick(){\r
focus = true;\r
// onUpdate();\r
- AsyncCall.add( apiuser, onUpdate );\r
+ AsyncCall.add( apiuser, onUpdate, null, instance );\r
return false;\r
};\r
this.focus = function(){\r
if( focus === true ){\r
OptionControl.update( instance, _value );\r
};\r
- Type.isFunction( onUpdate ) === true && AsyncCall.add( apiuser, onUpdate, [ _value ] );\r
+ Type.isFunction( onUpdate ) === true && AsyncCall.add( apiuser, onUpdate, _value, instance );\r
break;\r
};\r
};\r
onWindowResize: function( _w, _h ){\r
currentCombobox && AsyncCall.add( apiuser, updateWrapperPosition );\r
}\r
- }\r
+ };\r
})();\r
\r
var UIGroupClass = function( apiuser ){\r
i < l ? i : 0; // 0 < i < l\r
_item = currentList[ i ];\r
if( _item.enabled() === true && _item.visible() === true ){\r
- AsyncCall.add( currentUser, _item.focus );\r
+ AsyncCall.add( currentUser, _item.focus, null, _item );\r
return;\r
};\r
i += _way;\r