/*\r
* pettanR work.js\r
- * version 0.4.1\r
+ * version 0.4.15\r
* \r
* author:\r
* itozyun\r
* \r
*/\r
\r
- pettanr.LINE_FEED_CODE_TEXTAREA = ( function(){\r
- var text = document.getElementById( 'shadowTxtarea'),\r
- form = text.parentNode;\r
- form.parentNode.removeChild( form);\r
- return text.value;\r
- })();\r
- pettanr.LINE_FEED_CODE_PRE = ( function(){\r
- var pre = document.getElementById( 'shadowPre');\r
- pre.parentNode.removeChild( pre);\r
- return pettanr.ua.isIE === true ? this.LINE_FEED_CODE_TEXTAREA : pre.innerHTML; // ie ?? \r
- })();\r
\r
/* ----------------------------------------\r
* pettanr.editor\r
* - MENU_BAR_CONTROL\r
- * - HISTORY\r
+ * - HISTORY_CONTROL\r
* - SAVE_CONTROL\r
* - TEXT_EDITOR_CONTROL\r
* - IMAGE_GROUP_EXPROLER\r
COMIC_ELEMENT_ARRAY = [],\r
ELM_MOUSE_EVENT_CHATCHER = document.getElementById( 'mouse-operation-catcher'),\r
MIN_PANEL_HEIGHT = 20,\r
- MIN_OBJECT_SIZE = 19,\r
+ MIN_ELEMENT_SIZE = 19,\r
MOUSE_HIT_AREA = 10,\r
jqMouseEventChacher,\r
jqEditor,\r
\r
/* ----------------------------------------\r
* MENU BAR\r
+ * - mouseEventListener\r
+ * - controler\r
+ * \r
* div\r
* div.title\r
* ul\r
a.href = '#';\r
return ret;\r
})(),\r
- EMPTY_FUNCTION = new Function,\r
ITEM_ARRAY = [],\r
barH = pettanr.util.getElementSize( ELM_BAR).height,\r
itemW = pettanr.util.getElementSize( ELM_ITEM_ORIGN).width,\r
}\r
}\r
\r
- var MenuBarItemClass = function( title, opt_callbackArray){\r
+ var MenuBarItemClass = function( title){\r
var ELM_WRAPPER = ELM_ITEM_ORIGN.cloneNode( true),\r
ELM_TITLE = ELM_WRAPPER.getElementsByTagName( 'div')[ 0],\r
ELM_SELECTION = ELM_WRAPPER.getElementsByTagName( 'ul')[ 0],\r
INDEX = ITEM_ARRAY.length,\r
- SELECTION_CALLBACK_ARRAY = opt_callbackArray || [],\r
+ SELECTION_CALLBACK_ARRAY = [],\r
numSelection = 0,\r
visible = false;\r
ELM_TITLE.innerHTML = title;\r
\r
function onClick( e){\r
var that = this,\r
- i = ( function(){\r
- var parent = that.parentNode,\r
- children = parent.getElementsByTagName( 'li'),\r
- l = children.length;\r
- for(var i=0; i<l; ++i){\r
- if( children[ i] === that) return i;\r
- }\r
- return -1;\r
- })();\r
- i !== -1 && this.className !== 'disabled' && SELECTION_CALLBACK_ARRAY[ i]();\r
+ i = pettanr.util.getChildIndex( this.parentNode, this);\r
+ i !== -1 && this.className !== 'disabled' && SELECTION_CALLBACK_ARRAY[ i]( i);\r
e.stopPropagation();\r
- return false; \r
+ return false;\r
}\r
return {\r
elm: ELM_WRAPPER,\r
\r
\r
function createMenubarItem( title){\r
- var _item = MenuBarItemClass.apply( {}, [ title]);\r
+ var _item = new MenuBarItemClass( title);\r
ITEM_ARRAY.push( _item);\r
return _item;\r
}\r
\r
delete MENU_BAR_CONTROL.init;\r
},\r
+ open: function(){\r
+ MENU_BAR_CONTROL.init && MENU_BAR_CONTROL.init();\r
+ // ELM_BAR.style.top = ( -barH) +'px';\r
+ // anime\r
+ },\r
+ close: function(){\r
+ var l = ITEM_ARRAY.length;\r
+ for( var i=0; i<l; ++i){\r
+ ITEM_ARRAY[ i].hide();\r
+ }\r
+ },\r
h: barH,\r
onMouseMove: function( _mouseX, _mouseY){\r
if( barH >= _mouseY){\r
\r
\r
/* ----------------------------------------\r
- * HISTORY\r
+ * HISTORY_CONTROL\r
+ * - controler\r
*/\r
- var HISTORY = ( function() {\r
+ var HISTORY_CONTROL = ( function() {\r
var STACK_BACK = [],\r
STACK_FORWARD = [],\r
MENUBAR_BACK = MENU_BAR_CONTROL.EDIT.createSelection( 'back', 'ctrl + z', back, false),\r
MENUBAR_BACK.visible( true);\r
SAVE_CONTROL.panelUpdated( true);\r
}\r
+ function destroyStack( _stack, _destroy){\r
+ _stack.fn = null;\r
+ \r
+ var _argBack = _stack.argBack,\r
+ _argForword = _stack.argForword,\r
+ _value;\r
+ if( typeof _argBack.length === 'number'){ // isArray\r
+ while( _argBack.length > 0){\r
+ _value = _argBack.shift();\r
+ _destroy === true && typeof _value.destroy === 'function' && _value.destroy();\r
+ }\r
+ }\r
+ if( typeof _argForword.length === 'number'){\r
+ while( _argForword.length > 0){\r
+ _value = _argForword.shift();\r
+ _destroy === true && typeof _value.destroy === 'function' && _value.destroy();\r
+ } \r
+ } \r
+ }\r
return {\r
init: function(){\r
log = $( '#history-log');\r
- delete HISTORY.init;\r
+ delete HISTORY_CONTROL.init;\r
+ },\r
+ open: function(){\r
+ HISTORY_CONTROL.init && HISTORY_CONTROL.init();\r
+ },\r
+ close: function(){\r
+ MENUBAR_BACK.visible( false);\r
+ MENUBAR_FORWARD.visible( false);\r
+ while( STACK_BACK.length > 0){\r
+ destroyStack( STACK_BACK.shift(), true);\r
+ }\r
+ while( STACK_FORWARD.length > 0){\r
+ destroyStack( STACK_FORWARD.shift(), true);\r
+ }\r
},\r
- saveState: function( _function, _argBack, _argForword, _destory) {\r
+ saveState: function( _function, _argBack, _argForword, _destroy) {\r
STACK_BACK.push( {\r
fn: _function,\r
argBack: _argBack,\r
});\r
MENUBAR_BACK.visible( true);\r
SAVE_CONTROL.panelUpdated( true);\r
-\r
+ \r
+ var _stack;\r
while( STACK_FORWARD.length > 0){\r
- var _stack = STACK_FORWARD.shift(),\r
- _destroy = _stack.destroy,\r
- _value;\r
- _argBack = _stack.argBack;\r
- _argForword = _stack.argForword;\r
- _stack.fn = null;\r
- if( typeof _argBack === 'array'){\r
- while( _argBack.length > 0){\r
- _value = _argBack.shift();\r
- _destroy === true && typeof _value.destroy === 'function' && _value.destroy();\r
- }\r
- }\r
- if( typeof _argForword === 'array'){\r
- while( _argForword.length > 0){\r
- _value = _argForword.shift();\r
- _destroy === true && typeof _value.destroy === 'function' && _value.destroy();\r
- } \r
- }\r
+ _stack = STACK_FORWARD.shift();\r
+ destroyStack( _stack, _stack.destroy);\r
}\r
MENUBAR_FORWARD.visible( false);\r
} \r
\r
\r
/* ----------------------------------------\r
- * Save Control\r
+ * OUTPUT_CONSOLE\r
+ * - overlay\r
*/\r
+ var OUTPUT_CONSOLE = ( function(){\r
+ var jqWrap, jqOutputArea,\r
+ ID = 'outputConsole';\r
+ //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
+ \r
+ function close(){\r
+ jqWrap.hide();\r
+ jqOutputArea.val('');\r
+ }\r
+ function clickOK(){\r
+ pettanr.overlay.hide();\r
+ close(); \r
+ }\r
+ return {\r
+ init: function(){\r
+ this.jqWrap = jqWrap = $( '#output-console-wrapper').hide();\r
+ jqOutputArea = $( '#output-area');\r
+ delete OUTPUT_CONSOLE.init;\r
+ },\r
+ jqWrap: null,\r
+ show: function( _text){\r
+ jqWrap.show();\r
+\r
+ \r
+ pettanr.overlay.show( this);\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( windowH -jqWrap.height()) /2)\r
+ }\r
+ ); \r
+ \r
+ jqOutputArea.val( _text).focus();\r
+ },\r
+ onWindowResize: function(){\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( windowH -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ },\r
+ onClose: close,\r
+ ID: 'textEditor'\r
+ }\r
+ })();\r
\r
+/* ----------------------------------------\r
+ * SAVE_CONTROL\r
+ * - controler\r
+ */\r
var SAVE_CONTROL = ( function(){\r
var SAVE = MENU_BAR_CONTROL.QUIT.createSelection( 'save', 'ctrl + S', quit, false),\r
SAVE_AND_QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'save & quit', null, quit, false, false, true),\r
updated = false;\r
\r
function quit(){\r
+ // 本来は os.application.close();\r
+ pettanr.view.show( 'entrance');\r
}\r
\r
function outputAsHtml(){\r
- alert( COMIC_ELEMENT_CONTROL.getAsHTML( true, false));\r
+ OUTPUT_CONSOLE.show( COMIC_ELEMENT_CONTROL.getAsHTML( true, false));\r
}\r
function outputAsJsonString(){\r
- alert( COMIC_ELEMENT_CONTROL.getAsJsonString());\r
+ OUTPUT_CONSOLE.show( COMIC_ELEMENT_CONTROL.getAsJsonString());\r
}\r
return {\r
+ open: function(){},\r
+ close: function(){},\r
quit: quit,\r
panelUpdated: function( _updated){\r
if( _updated !== undefined && updated !== _updated){\r
})();\r
\r
/* ----------------------------------------\r
- * Text Editor (Overlay)\r
+ * Text Editor\r
+ * - overlay\r
*/\r
- \r
var TEXT_EDITOR_CONTROL = ( function(){\r
var jqWrap, jqTextarea, jqButton,\r
- textElement, onUpdateFunction;\r
- \r
- pettanr.key.addKeyDownEvent( this.ID, 69, false, false, clickOK);\r
+ textElement, onUpdateFunction,\r
+ ID = 'textEditor';\r
+ //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
\r
function close(){\r
jqWrap.hide();\r
textElement && this.show( textElement);\r
},\r
onClose: close,\r
- ID: 'textEditor'\r
+ ID: ID\r
}\r
})();\r
\r
/* ----------------------------------------\r
- * Image Group Exproler (Overlay)\r
+ * Image Group Exproler\r
+ * - overlay\r
*/\r
var IMAGE_GROUP_EXPROLER = ( function(){\r
var ICON_ARRAY = [],\r
jqWrap, jqContainer, jqItemOrigin,\r
itemW, itemH,\r
jqName, jqButton, buttonW,\r
- onUpdateFunction,\r
+ //onUpdateFunction,\r
+ _g_onUpdateFunction,\r
winW,\r
onEnterInterval = null;\r
\r
SRC = [ BASE_PATH, data.id, '.', data.ext].join( ''),\r
LOW_SRC = data.filesize && data.filesize > LIMIT_FILESIZE ? [ THUMB_PATH, data.id, '.', data.ext].join( '') : null,\r
reversibleImage = null,\r
- onEnterFlag = false;\r
+ onEnterFlag = false,\r
+ imgW, imgH;\r
JQ_ICON_WRAP.children( 'div').eq( 0).html( data.filesize + 'bytes');\r
jqContainer.append( JQ_ICON_WRAP.css( { left: INDEX * itemW}));\r
\r
+ function onImageLoad( url, _imgW, _imgH){\r
+ if( reversibleImage === null) {\r
+ alert( url);\r
+ return;\r
+ }\r
+ imgW = _imgW || data.width || 64;\r
+ imgH = _imgH || data.height || 64;\r
+ JQ_ICON_WRAP.children( 'div').eq( 1).html( imgW +'x' +imgH);\r
+ var zoom = 128 /( imgW > imgH ? imgW : imgH),\r
+ h = Math.floor( imgH *zoom),\r
+ w = Math.floor( imgW *zoom);\r
+ reversibleImage.elm.style.width = w +'px';\r
+ reversibleImage.elm.style.height = h +'px';\r
+ reversibleImage.elm.style.margin = Math.floor( itemH /2 -h /2)+'px 0 0';\r
+ reversibleImage.resize( w, h);\r
+ JQ_ICON_WRAP.click( onClick);\r
+ }\r
+ \r
+ function onClick( e){\r
+ pettanr.overlay.hide();\r
+ if( _g_onUpdateFunction) {\r
+ if( LOW_SRC === null){\r
+ window[ _g_onUpdateFunction]( SRC, imgW, imgH);\r
+ window[ _g_onUpdateFunction] = null;\r
+ } else {\r
+ var _onLoad = pettanr.util.createGlobalFunc( [\r
+ 'function( url, w, h){',\r
+ 'window["', _g_onUpdateFunction, '"]( url, w || ', data.width,', h || ', data.height,');',\r
+ 'window["', _g_onUpdateFunction, '"] = null;',\r
+ '}'\r
+ ].join( '')),\r
+ _onError = pettanr.util.createGlobalFunc( [\r
+ 'function( url){',\r
+ 'window["', _g_onUpdateFunction, '"]( url, ', data.width || 64 ,', ', data.height || 64,');',\r
+ 'window["', _g_onUpdateFunction, '"] = null;',\r
+ '}'\r
+ ].join( ''));\r
+ pettanr.util.loadImage( SRC, window[ _onLoad], window[ _onError]);\r
+ window[ _onLoad] = window[ _onError] = undefined;\r
+ }\r
+ }\r
+ close();\r
+ }\r
+ \r
return {\r
onEnter: function(){\r
if( onEnterFlag === true) return;\r
- reversibleImage = pettanr.image.createReversibleImage( LOW_SRC || SRC, itemW, itemH, function( url, imgW, imgH){\r
- if( reversibleImage === null) {\r
- alert( url);\r
- return;\r
- }\r
- /*\r
- * ieでサイズが取れない、、、\r
- */\r
- imgW = imgW || data.width || 64;\r
- imgH = imgH || data.height || 64;\r
- JQ_ICON_WRAP.children( 'div').eq( 1).html( imgW +'x' +imgH);\r
- var zoom = 128 /( imgW > imgH ? imgW : imgH),\r
- h = Math.floor( imgH *zoom),\r
- w = Math.floor( imgW *zoom);\r
- reversibleImage.elm.style.width = w +'px';\r
- reversibleImage.elm.style.height = h +'px';\r
- reversibleImage.elm.style.margin = Math.floor( itemH /2 -h /2)+'px 0 0';\r
- reversibleImage.resize( w, h);\r
- JQ_ICON_WRAP.click( function( e){\r
- pettanr.overlay.hide();\r
- if (onUpdateFunction) {\r
- if( LOW_SRC === null){\r
- onUpdateFunction( SRC, imgW, imgH);\r
- } else {\r
- ( function( onUpdate){\r
- pettanr.util.loadImage( SRC,\r
- function( _abspath, imgW, imgH){\r
- onUpdate( SRC, imgW, imgH);\r
- onUpdate = null;\r
- },\r
- function( _abspath){\r
- onUpdate( SRC, data.width || 64, data.height || 64);\r
- onUpdate = null;\r
- }\r
- ); \r
- })( onUpdateFunction); // close()で値が消えるので、クロージャに保持\r
- }\r
- }\r
- close();\r
- });\r
- });\r
+ reversibleImage = pettanr.image.createReversibleImage( LOW_SRC || SRC, itemW, itemH, onImageLoad);\r
JQ_ICON_WRAP.children( 'img').replaceWith( reversibleImage.elm);\r
- onEnterFlag = true; \r
+ onEnterFlag = true; \r
},\r
destroy: function(){\r
reversibleImage && reversibleImage.destroy();\r
ICON_ARRAY.shift().destroy();\r
}\r
onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
- onUpdateFunction = onEnterInterval = null;\r
+ onEnterInterval = _g_onUpdateFunction = null;\r
}\r
function onEnterShowImage(){\r
var l = ICON_ARRAY.length,\r
}\r
function clickOK(){\r
pettanr.overlay.hide();\r
- // onUpdateFunction && onUpdateFunction( textElement);\r
close();\r
}\r
+ function onMouseWheel( e, delta){\r
+ if( winW < containerW){\r
+ wrapX += delta *WHEEL_DELTA;\r
+ wrapX = wrapX > 0 ? 0 : wrapX < winW -containerW ? winW -containerW : wrapX;\r
+ jqContainer.css( { left: wrapX});\r
+ \r
+ onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
+ onEnterInterval = window.setTimeout( onEnterShowImage, 500);\r
+ }\r
+ //e.stopPropagation();\r
+ return false; \r
+ }\r
return {\r
init: function(){\r
this.jqWrap = jqWrap = $( '#image-gruop-wrapper').hide();\r
- jqContainer = $( '#image-icon-container').mousewheel(\r
- function( e, delta){\r
- if( winW < containerW){\r
- wrapX += delta *WHEEL_DELTA;\r
- wrapX = wrapX > 0 ? 0 : wrapX < winW -containerW ? winW -containerW : wrapX;\r
- jqContainer.css( { left: wrapX});\r
- \r
- onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
- onEnterInterval = window.setTimeout( onEnterShowImage, 500);\r
- }\r
- //e.stopPropagation();\r
- return false;\r
- });\r
+ jqContainer = $( '#image-icon-container').mousewheel( onMouseWheel);\r
containerH = pettanr.util.getElementSize( jqContainer.get( 0)).height;\r
jqItemOrigin = $( $( '#imageGruopItemTemplete').remove().html());\r
var itemSize = pettanr.util.getElementSize( jqItemOrigin.get( 0));\r
},\r
jqWrap: null,\r
show: function( _onUpdateFunction){\r
- onUpdateFunction = _onUpdateFunction;\r
+ //onUpdateFunction = _onUpdateFunction;\r
+ if( _onUpdateFunction){\r
+ _g_onUpdateFunction = pettanr.util.createGlobalFunction( _onUpdateFunction);\r
+ } else {\r
+ _g_onUpdateFunction = null;\r
+ }\r
pettanr.overlay.show( this);\r
\r
var CURRENT_GROUP_ARRAY = IMAGE_DATA[ 'pen001'] || [],\r
\r
/* ----------------------------------------\r
* WINDOWS_CONTROL\r
+ * - contloler\r
+ * - mouseEventListener\r
*/ \r
var WINDOWS_CONTROL = ( function(){\r
/*\r
} else {\r
jqWrapper.find( '.window-footer').remove();\r
}\r
- update( x, y, w, h);\r
+ this.onFirstOpen && this.onFirstOpen( w, h -headerH -footerH);\r
\r
- this.onFirstOpen && this.onFirstOpen();\r
+ update( x, y, w, h);\r
\r
delete this.firstOpen;\r
},\r
}\r
}\r
},\r
+ onFadeIn: function(){\r
+ instance.firstOpen && instance.firstOpen();\r
+ instance.onOpen && setTimeout( callOnOpen, 0);\r
+ function callOnOpen(){\r
+ instance.onOpen( w, bodyH);\r
+ }\r
+ },\r
+ onFadeOut: function(){\r
+ var elmWrapper = jqWrapper.get(0);\r
+ elmWrapper.parentNode.removeChild( elmWrapper);\r
+ instance.onClose && setTimeout( instance.onClose, 0);\r
+ },\r
close: function(){\r
if( visible === false) return;\r
instance.visible = visible = false;\r
- instance.onClose && setTimeout( instance.onClose, 0);\r
- closeWindow( instance);\r
+ jqWrapper.fadeOut( instance.onFadeOut);\r
MENUBAR_SELWCTION.title( 'show ' +title);\r
},\r
bodyBackOrForward: bodyBackOrForward,\r
\r
if( x > _mouseX || y > _mouseY || x +w < _mouseX || y +headerH < _mouseY ) return;\r
if( CLOSE_BUTTON_ENABLED === true && x +w -closeButtonWidth < _mouseX){\r
- this.close();\r
+ instance.close();\r
return;\r
}\r
\r
}\r
};\r
\r
- function getCurrentWindow( _mouseX, _mouseY){\r
+ function getCurrentIndex( _mouseX, _mouseY){\r
if( currentWindow && currentWindow.busy() === true) return currentWindowIndex;\r
var l = WINDOW_ARRAY.length,\r
_currentWindow = null,\r
if( _window.visible !== true) return;\r
var _jqWindow = _window.$;\r
jqContainer.append( _jqWindow);// appendした後に fadeIn() しないと ie で filterが適用されない.\r
- _jqWindow.fadeIn(\r
- function(){\r
- _window.firstOpen && _window.firstOpen();\r
- _window.onOpen && setTimeout( _window.onOpen, 0);\r
- }\r
- );\r
+ _jqWindow.fadeIn( _window.onFadeIn);\r
return;\r
}\r
- function closeWindow( _window){\r
- if( _window.visible !== false) return;\r
- var l = WINDOW_ARRAY.length;\r
- for( var i=0; i<l; ++i){\r
- if( WINDOW_ARRAY[ i] === _window){\r
- //WINDOW_ARRAY.splice( i, 1);\r
- //WINDOW_ARRAY.push( _window);\r
- _window.$.stop().fadeOut( function(){\r
- this.parentNode.removeChild( this);\r
- });\r
- return;\r
- }\r
- }\r
- }\r
\r
return {\r
init: function(){\r
\r
delete WINDOWS_CONTROL.init;\r
},\r
+ open: function(){\r
+ WINDOWS_CONTROL.init && WINDOWS_CONTROL.init();\r
+ },\r
+ close: function(){\r
+ \r
+ },\r
onMouseMove: function( _mouseX, _mouseY){\r
- var _index = getCurrentWindow( _mouseX, _mouseY);\r
+ var _index = getCurrentIndex( _mouseX, _mouseY);\r
if( _index === 0){\r
currentWindow.onMouseMove( _mouseX, _mouseY);\r
return true;\r
} else\r
- if( _index !== -1){ // 先頭のクリックでない場合\r
+ if( _index > 0){ // 先頭のクリックでない場合\r
// Array を前に\r
WINDOW_ARRAY.splice( currentWindowIndex, 1);\r
WINDOW_ARRAY.unshift( currentWindow);\r
return false;\r
},\r
onMouseUp: function( _mouseX, _mouseY){\r
- if( getCurrentWindow( _mouseX, _mouseY) === 0){\r
+ if( getCurrentIndex( _mouseX, _mouseY) === 0){\r
currentWindow.onMouseUp( _mouseX, _mouseY);\r
return true;\r
}\r
return false;\r
},\r
onMouseDown: function( _mouseX, _mouseY){\r
- if( getCurrentWindow( _mouseX, _mouseY) === 0){\r
+ if( getCurrentIndex( _mouseX, _mouseY) === 0){\r
currentWindow.onMouseDown( _mouseX, _mouseY);\r
return true;\r
}\r
* 画面外に出るwindowの移動\r
*/\r
},\r
- createWindow: function( scope, EXTENDS, bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH){\r
+ createWindow: function( EXTENDS, bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH){\r
opt_visible = opt_visible !== false;\r
opt_closeButtonEnabled = opt_closeButtonEnabled === true;\r
opt_resizeButtonEnabled = opt_resizeButtonEnabled === true;\r
opt_minWindowH = opt_minWindowH || ( h < DEFAULT_MIN_WINDOW_HEIGHT) ? h : DEFAULT_MIN_WINDOW_HEIGHT;\r
\r
var _window = pettanr.util.extend(\r
- WindowClass.apply( scope, [ bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH]),\r
+ new WindowClass(\r
+ bodyTempleteID, title, x, y, w, h, opt_visible, opt_closeButtonEnabled, opt_resizeButtonEnabled, opt_minWindowW, opt_minWindowH\r
+ ),\r
EXTENDS\r
);\r
WINDOW_ARRAY.unshift( _window);\r
\r
/* ----------------------------------------\r
* TOOL_BOX_WINDOW\r
+ * - window\r
*/\r
var TOOL_BOX_WINDOW = ( function(){\r
var addImageButton, addTextButton, editBgButton, switchGridButton, popupHelpButton, postButton,\r
\r
function addImage( e){\r
setTimeout( COMIC_ELEMENT_CONTROL.createImageElement, 0);\r
- e && e.preventDefault();\r
+ e && e.preventDefault && e.preventDefault();\r
return false;\r
}\r
function addText( e){\r
setTimeout( COMIC_ELEMENT_CONTROL.createTextElement, 0);\r
- e && e.preventDefault();\r
+ e && e.preventDefault && e.preventDefault();\r
return false;\r
}\r
function switchGrid( e){\r
setTimeout( GRID_CONTROL.update, 0);\r
- e && e.preventDefault();\r
+ e && e.preventDefault && e.preventDefault();\r
return false;\r
}\r
function popupHelp( e){\r
instance.bodyBackOrForward( true);\r
setTimeout( HELP_DOCUMENTS_WINDOW.open, 0);\r
- e && e.preventDefault();\r
+ e && e.preventDefault && e.preventDefault();\r
return false;\r
}\r
function editBG( e){\r
instance.bodyBackOrForward( true);\r
setTimeout( INFOMATION_WINDOW.open, 0); \r
- e && e.preventDefault();\r
+ e && e.preventDefault && e.preventDefault();\r
return false;\r
}\r
\r
return WINDOWS_CONTROL.createWindow(\r
- this,\r
{\r
onInit: function(){\r
instance = this;\r
\r
/* ----------------------------------------\r
* IMAGE_EXPROLER\r
+ * - window\r
*/\r
var IMAGE_EXPLORER_WINDOW = ( function(){\r
var instance, finder;\r
\r
return WINDOWS_CONTROL.createWindow(\r
- this,\r
{\r
onInit: function(){\r
instance = this;\r
delete this.onInit;\r
},\r
- onFirstOpen: function(){\r
- finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.file.TREE_TYPE_IS_IMAGE);\r
+ onFirstOpen: function( _w, _h){\r
+ finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.driver.createPictureTree());\r
delete this.onFirstOpen;\r
},\r
- onOpen: function(){\r
- finder.onOpen();\r
+ onOpen: function( _w, _h){\r
+ finder.onOpen( _w, _h);\r
},\r
onResize: function( _w, _h){\r
- finder.onWindowResize( _w, _h);\r
+ finder.resize( _w, _h);\r
}\r
},\r
'image-exproler', 'Album', 0, 215, 400, 350, false, true, true, 300, 300\r
\r
/* ----------------------------------------\r
* INFOMATION_WINDOW\r
+ * - window\r
*/ \r
var INFOMATION_WINDOW = ( function(){\r
- var FADE_EFFECT_ENABLED = pettanr.ua.isIE === false || pettanr.ua.ieVersion >= 8,\r
+ var FADE_EFFECT_ENABLED = true, //pettanr.ua.isIE === false || pettanr.ua.ieVersion >= 8,\r
FADE_IN_EFFECT = FADE_EFFECT_ENABLED === true ? 'fadeIn' : 'show',\r
FADE_OUT_EFFECT = FADE_EFFECT_ENABLED === true ? 'fadeOut' : 'hide',\r
backgroundInfomationElm,\r
jqComicElementInformation,\r
- elmValueX, elmValueY, elmValueZ, elmValueA, elmValueW, elmValueH, elmAspect,\r
- elmPercentW, elmPercentH,\r
+ inputX, inputY, inputZ, inputA, inputW, inputH, inputAspectRatio,\r
+ inputPercentW, inputPercentH,\r
currentComicElement = null,\r
- currentElementType = -1;\r
+ currentElementType = -1,\r
+ currentLock = false;\r
\r
return WINDOWS_CONTROL.createWindow(\r
- this,\r
{\r
- onFirstOpen: function(){\r
+ onFirstOpen: function( _w, _h){\r
backgroundInfomationElm = $( '#panel-background-information');\r
\r
jqComicElementInformation = $( '#comic-element-infomation').hide().css( {\r
- height: this.bodyHeight()\r
+ height: _h\r
});\r
var TAB_GROUP_ID = 'comic-element-attribute';\r
- var CREATER = pettanr.key.createEditableText;\r
- elmValueX = CREATER( $( '#comic-element-x'), null, TAB_GROUP_ID);\r
- elmValueY = CREATER( $( '#comic-element-y'), null, TAB_GROUP_ID);\r
- elmValueZ = CREATER( $( '#comic-element-z'), null, TAB_GROUP_ID);\r
- elmValueA = CREATER( $( '#comic-element-a'), null, TAB_GROUP_ID);\r
- elmValueW = CREATER( $( '#comic-element-w'), null, TAB_GROUP_ID);\r
- elmValueH = CREATER( $( '#comic-element-h'), null, TAB_GROUP_ID);\r
- elmPercentW = CREATER( $( '#comic-element-w-percent'), null, TAB_GROUP_ID);\r
- elmPercentH = CREATER( $( '#comic-element-h-percent'), null, TAB_GROUP_ID);\r
- elmAspect = $( '#comic-element-keep-aspect');\r
+ var CREATER = pettanr.form.createInputText;//pettanr.key.createEditableText;\r
+ inputX = CREATER( document.getElementById( 'comic-element-x'), null, TAB_GROUP_ID);\r
+ inputY = CREATER( document.getElementById( 'comic-element-y'), null, TAB_GROUP_ID);\r
+ inputZ = CREATER( document.getElementById( 'comic-element-z'), null, TAB_GROUP_ID);\r
+ inputA = CREATER( document.getElementById( 'comic-element-a'), null, TAB_GROUP_ID);\r
+ inputW = CREATER( document.getElementById( 'comic-element-w'), null, TAB_GROUP_ID);\r
+ inputH = CREATER( document.getElementById( 'comic-element-h'), null, TAB_GROUP_ID);\r
+ inputPercentW = CREATER( document.getElementById( 'comic-element-w-percent'), null, TAB_GROUP_ID);\r
+ inputPercentH = CREATER( document.getElementById( 'comic-element-h-percent'), null, TAB_GROUP_ID);\r
+ inputAspectRatio = $( '#comic-element-keep-aspect');\r
delete this.onFirstOpen;\r
},\r
- onResize: function( w, h){\r
- jqComicElementInformation && jqComicElementInformation.css( {\r
- height: h\r
+ onResize: function( _w, _h){\r
+ jqComicElementInformation.css( {\r
+ height: _h\r
});\r
},\r
- update: function( _elementType, x, y, z, a, w, h, wPercent, hPercent, keepAspect){\r
- if( !backgroundInfomationElm) return; // なぜか !backgroundInfomationElm が必要\r
+ update: function( currentElement){\r
+ \r
+ if( currentLock === true && currentElement === null) return;\r
+ \r
+ var _elementType = currentElement === null ? -1 : currentElement.type,\r
+ x = currentElement !== null ? currentElement.x : 0,\r
+ y = currentElement !== null ? currentElement.y : 0,\r
+ z = currentElement !== null ? currentElement.z : 0,\r
+ a = _elementType === COMIC_ELEMENT_TYPE_TEXT ? Math.floor( currentElement.angle()) : 0,\r
+ w = currentElement !== null ? currentElement.w : 0,\r
+ h = currentElement !== null ? currentElement.h : 0,\r
+ actualW = _elementType === COMIC_ELEMENT_TYPE_IMAGE ? currentElement.actualW() : 1,\r
+ actualH = _elementType === COMIC_ELEMENT_TYPE_IMAGE ? currentElement.actualH() : 1,\r
+ wPercent = _elementType === COMIC_ELEMENT_TYPE_IMAGE ? Math.floor( w / actualW *100) : 0,\r
+ hPercent = _elementType === COMIC_ELEMENT_TYPE_IMAGE ? Math.floor( h / actualH *100) : 0,\r
+ keepAspect = currentElement !== null && currentElement.keepAspect === true;\r
+ \r
if( currentElementType !== _elementType){\r
if( _elementType !== -1){\r
if( _elementType === 1){\r
- elmValueA.show();\r
- elmPercentW.hide();\r
- elmPercentH.hide();\r
- elmAspect.hide();\r
+ inputA.visible( true);\r
+ inputPercentW.visible( false);\r
+ inputPercentH.visible( false);\r
+ inputAspectRatio.hide();\r
} else {\r
- elmValueA.hide();\r
- elmPercentW.show();\r
- elmPercentH.show();\r
- elmAspect.show();\r
+ inputA.visible( false);\r
+ inputPercentW.visible( true);\r
+ inputPercentH.visible( true);\r
+ inputAspectRatio.show();\r
}\r
currentElementType === -1 && jqComicElementInformation.stop().css( {\r
filter: '',\r
currentElementType = _elementType;\r
}\r
if( currentElementType !== -1){\r
- elmValueX.update( x);\r
- elmValueY.update( y);\r
- elmValueZ.update( z);\r
- _elementType === 1 && elmValueA.update( a);\r
- elmValueW.update( w);\r
- elmValueH.update( h);\r
- _elementType === 0 && elmPercentW.update( wPercent);\r
- _elementType === 0 && elmPercentH.update( hPercent); \r
+ inputX.value( x);\r
+ inputY.value( y);\r
+ inputZ.value( z);\r
+ _elementType === 1 && inputA.value( a);\r
+ inputW.value( w);\r
+ inputH.value( h);\r
+ _elementType === 0 && inputPercentW.value( wPercent);\r
+ _elementType === 0 && inputPercentH.value( hPercent); \r
} else {\r
\r
}\r
+ },\r
+ lock: function( _currentLock){\r
+ currentLock = !!_currentLock;\r
+ this.bodyBackOrForward( !currentLock);\r
}\r
},\r
'infomation-window', 'Infomation', 0, 30, 200, 180, true\r
\r
/* ----------------------------------------\r
* HELP_WINDOW\r
+ * - window\r
*/\r
var HELP_DOCUMENTS_WINDOW = ( function(){\r
var visible = true,\r
- hasAjaxContents = false,\r
jqAjaxContents,\r
jqNaviItems,\r
jqPages,\r
+ currentPageIndex = 0,\r
+ numPage = 0,\r
HELP = MENU_BAR_CONTROL.HELP,\r
- onLoadFunction = HELP.createAjaxSelection( onFirstOpen),\r
+ onLoadFunction = HELP.createAjaxSelection( onAjaxStart),\r
instance;\r
- function jumpPage( _index){\r
- \r
- }\r
- function onFirstOpen( _pageIndex){\r
- _pageIndex = _pageIndex || 0;\r
- if( hasAjaxContents === false){\r
+\r
+ function onAjaxStart( _pageIndex){\r
+ currentPageIndex = _pageIndex || currentPageIndex;\r
+ if( onHelpLoad !== null){\r
$.ajax({\r
url: 'help/jp.xml',\r
dataType: 'xml',\r
- success: function( _xml){\r
- var jqXML = $( _xml),\r
- helpTitle = jqXML.find( 'pages').eq( 0).attr( 'title'),\r
- elmNavi = document.createElement( 'div'),\r
- elmItemOrigin = document.createElement( 'a'),\r
- elmPages = document.createElement( 'div'),\r
- elmPageOrigin = document.createElement( 'div'),\r
- elmTitleOrigin = document.createElement( 'h2'),\r
- elmPage,\r
- numPage = 0;\r
- elmNavi.className = 'sidenavi';\r
- elmItemOrigin.className = 'sidenavi-item';\r
- elmItemOrigin.href = '#';\r
- elmPages.className = 'page-contents';\r
- elmPageOrigin.className = 'page-content';\r
- elmPageOrigin.appendChild( elmTitleOrigin);\r
- \r
- // helpTitle && instance.title( helpTitle);\r
- \r
- jqXML.find( 'page').each( function(){\r
- var xmlPage = $( this),\r
- title = xmlPage.attr( 'title'),\r
- content = xmlPage.text();\r
- \r
- elmItemOrigin.innerHTML = title;\r
- elmNavi.appendChild( elmItemOrigin.cloneNode( true));\r
- \r
- elmTitleOrigin.innerHTML = title;\r
- elmPage = elmPageOrigin.cloneNode( true);\r
- elmPage.innerHTML = content;\r
- \r
- pettanr.util.cleanElement( elmPage);\r
- \r
- if( elmPage.childNodes.length > 0){\r
- elmPage.insertBefore( elmTitleOrigin.cloneNode( true), elmPage.childNodes[0]);\r
- } else {\r
- elmPage.appendChild( elmTitleOrigin.cloneNode( true));\r
- }\r
- elmPages.appendChild( elmPage);\r
- \r
- HELP.createSelection( title, null, ( function( _pageIndex){\r
- return function(){\r
- HELP_DOCUMENTS_WINDOW.open();\r
- onOpen( _pageIndex); \r
- }\r
- })( numPage), true);\r
- ++numPage;\r
- });\r
- onLoadFunction();\r
- onLoadFunction = null;\r
- \r
- jqAjaxContents.removeClass( 'loading').append( elmNavi, elmPages);\r
- \r
- jqNaviItems = jqAjaxContents.find( 'a.' +elmItemOrigin.className)\r
- .click( function( e){\r
- var that = this,\r
- parent = this.parentNode,\r
- i = ( function(){\r
- var children = parent.getElementsByTagName( 'a'),\r
- l = children.length;\r
- for( var i=0; i<l; ++i){\r
- if( children[ i] === that) return i;\r
- }\r
- return -1;\r
- })();\r
- e.stopPropagation();\r
- if( i === -1) return false;\r
- jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
- jqPages.hide().eq( i).show();\r
- \r
- return false;\r
- });\r
- jqAjaxContents.find( '.' +elmPageOrigin.className).find( 'a')\r
- .click( function( e){\r
- var that = this,\r
- i = ( function(){\r
- var href = that.href,\r
- i = href.split( '#jump'),\r
- n = i[1]\r
- if( n && '' +parseFloat( n) === n){\r
- return parseFloat( n)\r
- }\r
- return -1;\r
- })();\r
- e.stopPropagation();\r
- if( i === -1) return false;\r
- jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
- jqPages.hide().eq( i).show();\r
- \r
- return false;\r
- });\r
- jqNaviItems.eq( _pageIndex).addClass( 'current');\r
- jqPages = jqAjaxContents.find( '.page-content');\r
- jqPages.eq( _pageIndex).show();\r
- }\r
+ success: onHelpLoad\r
});\r
- hasAjaxContents = true;\r
+ onHelpLoad = null;\r
}\r
- function onOpen( _pageIndex){\r
- _pageIndex = _pageIndex || 0;\r
- jqNaviItems.removeClass( 'current').eq( _pageIndex).addClass( 'current');\r
- jqPages.hide().eq( _pageIndex).show();\r
+ onAjaxStart = new Function;\r
+ }\r
+ var onHelpLoad = function( _xml){\r
+ var jqXML = $( _xml),\r
+ helpTitle = jqXML.find( 'pages').eq( 0).attr( 'title'),\r
+ elmNavi = document.createElement( 'div'),\r
+ elmItemOrigin = document.createElement( 'a'),\r
+ elmPages = document.createElement( 'div'),\r
+ elmPageOrigin = document.createElement( 'div'),\r
+ elmTitleOrigin = document.createElement( 'h2'),\r
+ elmPage;\r
+ elmNavi.className = 'sidenavi';\r
+ elmItemOrigin.className = 'sidenavi-item';\r
+ elmItemOrigin.href = '#';\r
+ elmPages.className = 'page-contents';\r
+ elmPageOrigin.className = 'page-content main';\r
+ elmPageOrigin.appendChild( elmTitleOrigin);\r
+ \r
+ //helpTitle && instance.title( helpTitle);\r
+ \r
+ jqXML.find( 'page').each( function(){\r
+ var xmlPage = $( this),\r
+ title = xmlPage.attr( 'title'),\r
+ content = xmlPage.text();\r
+ \r
+ elmItemOrigin.innerHTML = title;\r
+ elmNavi.appendChild( elmItemOrigin.cloneNode( true));\r
+ \r
+ elmTitleOrigin.innerHTML = title;\r
+ \r
+ elmPage = elmPageOrigin.cloneNode( true);\r
+ elmPage.innerHTML = content;\r
+ \r
+ pettanr.util.cleanElement( elmPage);\r
+ \r
+ if( elmPage.childNodes.length > 0){\r
+ elmPage.insertBefore( elmTitleOrigin.cloneNode( true), elmPage.childNodes[0]);\r
+ } else {\r
+ elmPage.appendChild( elmTitleOrigin.cloneNode( true));\r
+ }\r
+ elmPages.appendChild( elmPage);\r
+ \r
+ HELP.createSelection( title, null, onSelectionClick, true);\r
+ ++numPage;\r
+ });\r
+ onLoadFunction();\r
+ onLoadFunction = null;\r
+ \r
+ jqAjaxContents.removeClass( 'loading').append( elmNavi, elmPages);\r
+ \r
+ jqNaviItems = jqAjaxContents.find( 'a.' +elmItemOrigin.className).click( onNaviClick);\r
+ jqPages = jqAjaxContents.find( '.page-content');\r
+ jqPages.find( 'a').click( onInnerLinkClick);\r
+ \r
+ setTimeout( jumpPage, 0);\r
+ }\r
+ function onSelectionClick( _pageIndex){\r
+ HELP_DOCUMENTS_WINDOW.open();\r
+ jumpPage( _pageIndex);\r
+ }\r
+ function jumpPage( _index){\r
+ if( typeof _index === 'number' && 0 <= _index && _index < numPage && currentPageIndex !== _index){\r
+ currentPageIndex = _index;\r
}\r
+ jqNaviItems.removeClass( 'current').eq( currentPageIndex).addClass( 'current');\r
+ jqPages.hide().eq( currentPageIndex).show();\r
+ }\r
+ function onNaviClick( e){\r
+ // this は <a>\r
+ jumpPage( pettanr.util.getChildIndex( this.parentNode, this));\r
+ e.stopPropagation();\r
+ return false;\r
+ }\r
+ function onInnerLinkClick( e){\r
+ var jump = ( this.href || '').split( '#jump'),\r
+ n = jump[1];\r
+ if( !n) return;\r
+ jumpPage( '' + parseFloat( n) === n ? parseFloat( n) : -1);\r
+ e.stopPropagation();\r
+ return false; \r
}\r
return WINDOWS_CONTROL.createWindow(\r
- this,\r
{\r
onInit: function(){\r
instance = this;\r
- jqAjaxContents = this.$.find( '.window-body').addClass( 'loading').css( { height: this.bodyHeight()});\r
+ jqAjaxContents = this.$.find( '.window-body').addClass( 'loading');\r
delete this.onInit;\r
},\r
- onFirstOpen: onFirstOpen,\r
- onResize: function( w, h){\r
- jqAjaxContents && jqAjaxContents.css( { height: h});\r
+ onFirstOpen: function( _w, _h){\r
+ jqAjaxContents.css( { height: _h});\r
+ onAjaxStart();\r
+ delete this.onFirstOpen;\r
},\r
- setAjaxContent: function( html){\r
- \r
- delete this.onLoadAjaxContent;\r
+ onResize: function( _w, _h){\r
+ jqAjaxContents && jqAjaxContents.css( { height: _h});\r
}\r
},\r
null, 'Help', 0, 215, 400, 350, false, true, true, 300, 300\r
\r
/* ----------------------------------------\r
* GRID_CONTROL\r
+ * - control\r
+ * - panelResizeListener\r
*/\r
var GRID_CONTROL = ( function(){\r
var ELM_GRID = document.getElementById( 'grid'),\r
+ BG_URL = "url('images/grid.gif')",\r
jqGrid,\r
visible = false;\r
\r
jqGrid = $( ELM_GRID);\r
delete GRID_CONTROL.init;\r
},\r
+ open: function(){\r
+ GRID_CONTROL.init && GRID_CONTROL.init();\r
+ },\r
+ close: function(){\r
+ \r
+ },\r
onPanelResize: function( _panelX, _panelY){\r
ELM_GRID.style.backgroundPosition = [ _panelX % 10, 'px ', _panelY % 10, 'px'].join( '');\r
ELM_GRID.style.height = windowH +'px';\r
\r
visible = !visible;\r
\r
- if( visible === true && !ELM_GRID.style.backgroundImage){\r
- ELM_GRID.style.backgroundImage = "url('images/grid.gif')";\r
+ if( visible === true && BG_URL !== null){\r
+ ELM_GRID.style.backgroundImage = BG_URL;\r
+ BG_URL = null;\r
}\r
return visible; \r
}\r
}\r
})();\r
\r
- /*\r
- * WHITE_GLASS_CONTROL\r
- */ \r
+/* ----------------------------------------\r
+ * WHITE_GLASS_CONTROL\r
+ * - panelResizeListener\r
+ */\r
var WHITE_GLASS_CONTROL = ( function(){\r
var styleTop = document.getElementById( 'whiteGlass-top').style,\r
styleLeft = document.getElementById( 'whiteGlass-left').style,\r
})();\r
\r
\r
-/*\r
+/* ----------------------------------------\r
* PANEL_CONTROL\r
+ * - controler\r
+ * - mouseEventListener\r
+ * \r
* panel-border の表示と onPanelResize の通知.\r
* panel drag.\r
* \r
isDragging = false,\r
isDraggable = false;\r
\r
+ pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 32, false, false, onSpaceUpdate);\r
+ \r
function onSpaceUpdate(e){\r
if( e.type === 'keyup'){\r
currentListener === null && updateMouseCursor( '');\r
}\r
\r
return {\r
- init: function( _panelW, _panelH, _borderSize){\r
+ open: function( _panelW, _panelH, _borderSize){\r
panelW = _panelW || DEFAULT_PANEL_WIDTH;\r
panelH = _panelH || DEFAULT_PANEL_HEIGHT;\r
- panelX = Math.floor( ( windowW -panelW) /2);\r
- panelY = Math.floor( ( windowH -panelH) /2);\r
+ //panelX = Math.floor( ( windowW -panelW) /2);\r
+ //panelY = Math.floor( ( windowH -panelH) /2);\r
borderSize = _borderSize !== undefined ? _borderSize : borderSize;\r
\r
- pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 32, false, false, onSpaceUpdate);\r
- \r
- setTimeout( PANEL_CONTROL.resize, 0);\r
+ //setTimeout( PANEL_CONTROL.resize, 0);\r
+ },\r
+ close: function(){\r
\r
- delete PANEL_CONTROL.init;\r
},\r
x: function(){\r
return panelX;\r
}\r
})();\r
\r
-/*\r
- * --------------------------------------------------------------------------------------------\r
- * panel resizer\r
+/* --------------------------------------------------------------------------------------------\r
+ * PanelResizerClass\r
+ * - mouseEventListener\r
*/\r
var PanelResizerClass = function( ID, isTop){\r
var ELM = document.getElementById( ID),\r
}\r
\r
return {\r
- busy: function(){\r
- return isDragging;\r
- },\r
onMouseDown: function( _mouseX, _mouseY){\r
var _x = _mouseX -panelX,\r
_y = _mouseY -panelY;\r
},\r
onMouseUp: function( _mouseX, _mouseY){\r
if( isDragging !== true) return;\r
- ( startY !== panelY || startH !== panelH) && HISTORY.saveState( restoreState, [ NaN, startY, NaN, startH], [ NaN, panelY, NaN, panelH]);\r
+ ( startY !== panelY || startH !== panelH) && HISTORY_CONTROL.saveState( restoreState, [ NaN, startY, NaN, startH], [ NaN, panelY, NaN, panelH]);\r
isDragging = false;\r
MOUSE_CURSOR( '');\r
},\r
\r
PanelResizerClass = undefined;\r
\r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * CONSOLE_CONTROLER\r
+ */\r
var CONSOLE_CONTROLER = ( function(){\r
var LAYER_BACK_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'layer back', 'ctrl + B', layerBack, false, true, false),\r
LAYER_FORWARD_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'layer forward', 'ctrl + F', layerForward, false, false, false),\r
DELETE_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'delete', 'ctrl + D', del, false, true, true),\r
EDIT_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'Edit Text', 'ctrl + E', edit, false, true, false),\r
CHANGE_BUTTON = MENU_BAR_CONTROL.EDIT.createSelection( 'change', 'ctrl + U', change, false, false, true),\r
- SAVE = HISTORY.saveState,\r
+ SAVE = HISTORY_CONTROL.saveState,\r
jqStage,\r
jqConsoleParent,\r
jqConsoleWrapper,\r
}\r
function layerBack(){\r
if( currentElement === null) return;\r
- COMIC_ELEMENT_CONTROL.replaceComicElement( currentElement, false);\r
- updateInfomation();\r
- SAVE( COMIC_ELEMENT_CONTROL.restoreReplaceObject, [ currentElement, true], [ currentElement, false]);\r
+ if( COMIC_ELEMENT_CONTROL.replace( currentElement, false) === false) return;\r
+ INFOMATION_WINDOW.update( currentElement);\r
+ SAVE( COMIC_ELEMENT_CONTROL.restoreReplace, [ currentElement, true], [ currentElement, false]);\r
var _z = currentElement.z;\r
LAYER_BACK_BUTTON.visible( _z > 0);\r
LAYER_FORWARD_BUTTON.visible( _z < COMIC_ELEMENT_ARRAY.length -1);\r
}\r
function layerForward(){\r
if( currentElement === null) return;\r
- COMIC_ELEMENT_CONTROL.replaceComicElement( currentElement, true);\r
- updateInfomation();\r
- SAVE( COMIC_ELEMENT_CONTROL.restoreReplaceObject, [ currentElement, false], [ currentElement, true]);\r
+ if( COMIC_ELEMENT_CONTROL.replace( currentElement, true) === false) return;\r
+ INFOMATION_WINDOW.update( currentElement);\r
+ SAVE( COMIC_ELEMENT_CONTROL.restoreReplace, [ currentElement, false], [ currentElement, true]);\r
var _z = currentElement.z;\r
LAYER_BACK_BUTTON.visible( _z > 0);\r
LAYER_FORWARD_BUTTON.visible( _z < COMIC_ELEMENT_ARRAY.length -1);\r
function del(){\r
if( currentElement === null) return;\r
buttonBackOrForward( true);\r
- COMIC_ELEMENT_CONTROL.removeComicElement( currentElement);\r
- SAVE( COMIC_ELEMENT_CONTROL.restoreComicElement, [ true, currentElement], [ false, currentElement], true);\r
+ COMIC_ELEMENT_CONTROL.remove( currentElement);\r
+ SAVE( COMIC_ELEMENT_CONTROL.restore, [ true, currentElement], [ false, currentElement], true);\r
COMIC_ELEMENT_OPERATION_MANAGER.hide();\r
}\r
function edit(){\r
}\r
})();\r
\r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * TAIL_OPERATOR\r
+ * - comicElementOperator\r
+ */\r
var TAIL_OPERATOR = ( function(){\r
var MOUSE_CURSOR = updateMouseCursor,\r
ELM_MOVER = document.getElementById( 'balloon-tail-mover'),\r
_mouseY > 0 ? 90 : -90\r
);\r
currentText && currentText.angle( balloonA);\r
- COMIC_ELEMENT_OPERATION_MANAGER.updateInfomation( undefined, undefined, undefined, balloonA);\r
+ INFOMATION_WINDOW.update( currentText);\r
},\r
onFinish: function(){\r
startA !== currentText.angle() && COMIC_ELEMENT_OPERATION_MANAGER.saveStatus( x, y, w, h, startA);\r
currentText = null;\r
}\r
}\r
- })(),\r
- RESIZE_OPERATOR = ( function(){\r
+ })();\r
+\r
+/* --------------------------------------------------------------------------------------------\r
+ * RESIZE_OPERATOR\r
+ * - comicElementOperator\r
+ */\r
+ var RESIZE_OPERATOR = ( function(){\r
var MOUSE_CURSOR = updateMouseCursor,\r
GRID_ENABLED = GRID_CONTROL.enabled;\r
\r
y = _y !== undefined ? _y : y;\r
w = _w !== undefined ? _w : w;\r
h = _h !== undefined ? _h : h;\r
- elmResizerContainerStyle.left = x +'px';\r
- elmResizerContainerStyle.top = y +'px';\r
- elmResizerContainerStyle.width = w +'px';\r
- elmResizerContainerStyle.height = h +'px';\r
- elmResizerTopStyle.left = FLOOR( w /2 -10 /2) +'px';\r
- elmResizerLeftStyle.top = FLOOR( h /2 -10 /2) +'px';\r
- elmResizerRightStyle.top = FLOOR( h /2 -10 /2) +'px';\r
- elmResizerBottomStyle.left = FLOOR( w /2 -10 /2) +'px';\r
+ try {\r
+ elmResizerContainerStyle.left = x +'px';\r
+ elmResizerContainerStyle.top = y +'px';\r
+ elmResizerContainerStyle.width = w +'px';\r
+ elmResizerContainerStyle.height = h +'px';\r
+ elmResizerTopStyle.left = FLOOR( w /2 -10 /2) +'px';\r
+ elmResizerLeftStyle.top = FLOOR( h /2 -10 /2) +'px';\r
+ elmResizerRightStyle.top = FLOOR( h /2 -10 /2) +'px';\r
+ elmResizerBottomStyle.left = FLOOR( w /2 -10 /2) +'px'; \r
+ } catch(e){\r
+ alert( [x, y, w, h].join( ','));\r
+ return;\r
+ }\r
+\r
\r
POSITION_ARRAY.splice( 0, POSITION_ARRAY.length);\r
POSITION_ARRAY.push(\r
currentElement.resize( x, y, w, h);\r
currentIsTextElement === true && TAIL_OPERATOR.update( w, h);\r
CONSOLE_CONTROLER.show( currentElement, w, h);\r
- COMIC_ELEMENT_OPERATION_MANAGER.updateInfomation( x, y, undefined, undefined, w, h);\r
+ INFOMATION_WINDOW.update( currentElement);\r
}\r
\r
- function flip( _flipV, _flipH){\r
+ function flip( _flipH, _flipV){\r
var p = CURSOR_AND_FLIP[ currentIndex];\r
currentIndex = _flipH === true || _flipV === true ? p[\r
_flipH === true && _flipV === true ? 'vh' : ( _flipH === true ? 'h' : 'v')\r
] : currentIndex;\r
MOUSE_CURSOR( CURSOR_AND_FLIP[ currentIndex].cursor);\r
elmResizerContainer.className = 'current-resizer-is-' +currentIndex;\r
- currentElement.flip( _flipV, _flipH);\r
+ currentElement.flip( _flipH, _flipV);\r
}\r
return {\r
update: draw,\r
_momoryW = 0,\r
_momoryH = 0;\r
/*\r
- * Opera 11+ often forget values, why ??
+ * Opera 11+ often forget values, why ??\r
*/\r
while( _x === undefined || _y === undefined || _w === undefined || _h === undefined){\r
_x = _x !== undefined ? _x : baseX +moveX *com.x;\r
}\r
}\r
\r
- if( _w >= MIN_OBJECT_SIZE && _h >= MIN_OBJECT_SIZE){\r
+ if( _w >= MIN_ELEMENT_SIZE && _h >= MIN_ELEMENT_SIZE){\r
\r
} else \r
- if( _w >= -MIN_OBJECT_SIZE && _h >= -MIN_OBJECT_SIZE){\r
+ if( _w >= -MIN_ELEMENT_SIZE && _h >= -MIN_ELEMENT_SIZE){\r
//return;\r
- if( _w < MIN_OBJECT_SIZE){\r
- //_x += Math.abs( MIN_OBJECT_SIZE -_w);\r
+ if( _w < MIN_ELEMENT_SIZE){\r
+ //_x += Math.abs( MIN_ELEMENT_SIZE -_w);\r
_x = currentX;\r
- _w = MIN_OBJECT_SIZE;\r
+ _w = MIN_ELEMENT_SIZE;\r
}\r
- if( _h < MIN_OBJECT_SIZE){\r
- //_y += Math.abs( MIN_OBJECT_SIZE -_h);\r
+ if( _h < MIN_ELEMENT_SIZE){\r
+ //_y += Math.abs( MIN_ELEMENT_SIZE -_h);\r
_y = currentY;\r
- _h = MIN_OBJECT_SIZE;\r
+ _h = MIN_ELEMENT_SIZE;\r
}\r
} else \r
if( currentElement.type === COMIC_ELEMENT_TYPE_TEXT){\r
return;\r
} else \r
- if( _w < -MIN_OBJECT_SIZE || _h < -MIN_OBJECT_SIZE){\r
+ if( _w < -MIN_ELEMENT_SIZE || _h < -MIN_ELEMENT_SIZE){\r
\r
- if( _w < -MIN_OBJECT_SIZE && _h > MIN_OBJECT_SIZE){\r
+ if( _w < -MIN_ELEMENT_SIZE && _h > MIN_ELEMENT_SIZE){\r
// flipH\r
_memoryX = _x;\r
baseX = _x = _x +_w;\r
baseY = _y;\r
baseW = _w = _memoryX -_x;\r
baseH = _h;\r
- flip( false, true);\r
+ flip( true, false);\r
flipV = currentElement.flipV();\r
} else \r
- if( _w > MIN_OBJECT_SIZE && _h < -MIN_OBJECT_SIZE){\r
+ if( _w > MIN_ELEMENT_SIZE && _h < -MIN_ELEMENT_SIZE){\r
// flipV\r
_memoryY = _y;\r
baseX = _x;\r
baseY = _y = _y +_h;\r
baseW = _w;\r
baseH = _h = _memoryY -_y;\r
- flip( true, false);\r
+ flip( false, true);\r
flipH = currentElement.flipH();\r
} else {\r
// flipVH\r
onShiftUpdate: update,\r
onCtrlUpdate: update\r
}\r
- })(),\r
- POSITION_OPERATOR = ( function(){\r
+ })();\r
+\r
+/* --------------------------------------------------------------------------------------------\r
+ * POSITION_OPERATOR\r
+ * - comicElementOperator\r
+ */\r
+ var POSITION_OPERATOR = ( function(){\r
var MOUSE_CURSOR = updateMouseCursor,\r
GRID_ENABLED = GRID_CONTROL.enabled;\r
\r
y = _y !== undefined ? _y : y;\r
RESIZE_OPERATOR.update( x, y);\r
currentElement.resize( x, y);\r
- COMIC_ELEMENT_OPERATION_MANAGER.updateInfomation( x, y);\r
+ INFOMATION_WINDOW.update( currentElement);\r
}\r
\r
return {\r
})();\r
\r
\r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+/* --------------------------------------------------------------------------------------------\r
* COMIC_ELEMENT_OPERATION_MANAGER\r
*/\r
var COMIC_ELEMENT_OPERATION_MANAGER = ( function(){\r
var MOUSE_CURSOR = updateMouseCursor,\r
- SAVE = HISTORY.saveState,\r
+ SAVE = HISTORY_CONTROL.saveState,\r
GRID_ENABLED = GRID_CONTROL.enabled,\r
HIT_AREA = MOUSE_HIT_AREA,\r
currentIsTextElement = false,\r
RESIZE_OPERATOR.update( currentx, currenty, currentw, currenth);\r
currentIsTextElement === true && TAIL_OPERATOR.update( currentw, currenth, angle);\r
CONSOLE_CONTROLER.show( currentElement, currentw, currenth);\r
- updateInfomation( currentx, currenty, currentElement.z, angle, currentw, currenth);\r
- }\r
- function updateInfomation( _x, _y, _z, _a, _w, _h, keepAspect){\r
- _w = _w !== undefined ? _w : currentw;\r
- _h = _h !== undefined ? _h : currenth;\r
- INFOMATION_WINDOW.update(\r
- currentElement === null ? -1 : currentElement.type,\r
- _x !== undefined ? _x : currentx,\r
- _y !== undefined ? _y : currenty,\r
- _z !== undefined ? _z : ( currentElement === null ? '*' : currentElement.z),\r
- _a !== undefined ? Math.floor( _a) : ( currentIsTextElement === true ? Math.floor( angle) : '-'),\r
- _w,\r
- _h,\r
- currentElement === null || currentIsTextElement === true ? '-' : ( currentElement.actualW() === 0 ? '?' : Math.floor( _w / currentElement.actualW() *100)),\r
- currentElement === null || currentIsTextElement === true ? '-' : ( currentElement.actualH() === 0 ? '?' : Math.floor( _h / currentElement.actualH() *100)),\r
- currentElement === null || currentIsTextElement === true ? '-' : currentElement.keepAspect\r
- );\r
+ INFOMATION_WINDOW.update( currentElement);\r
}\r
function show( _currentElement){\r
currentElement === null && RESIZE_OPERATOR.show( _currentElement);\r
);\r
}\r
}\r
- function hide(){\r
+\r
+ pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 16, undefined, undefined, function( e){\r
+ currentOperator !== null && currentOperator.onShiftUpdate && currentOperator.onShiftUpdate();\r
+ });\r
+ pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 17, undefined, undefined, function( e){\r
+ currentOperator !== null && currentOperator.onCtrlUpdate && currentOperator.onCtrlUpdate();\r
+ });\r
+ pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 27, false, false, function( e){\r
+ currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
+ currentOperator = null;\r
+ });\r
+ return {\r
+ open: function(){\r
+ this.hide();\r
+ },\r
+ close: function(){\r
+ \r
+ },\r
+ hide: function(){\r
currentElement !== null && RESIZE_OPERATOR.hide();\r
currentElement = null;\r
MOUSE_CURSOR( '');\r
TAIL_OPERATOR.hide();\r
CONSOLE_CONTROLER.hide();\r
- updateInfomation();\r
- }\r
- function restoreState( arg){\r
+ INFOMATION_WINDOW.update( null);\r
+ },\r
+ resize: resize,\r
+ restoreState: function( arg){\r
if( arg && arg.length !== 8) return;\r
var _currentElement = arg[ 0],\r
_x = arg[ 1], _y = arg[ 2], _w = arg[ 3], _h = arg[ 4],\r
currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
currentOperator = null;\r
currentElement === _currentElement ? resize( _x, _y, _w, _h, _a) : show( _currentElement);\r
- }\r
- function saveComicElementStatus( startX, startY, startW, startH, startA, startFilpV, startFilpH){\r
+ },\r
+ saveStatus: function( startX, startY, startW, startH, startA, startFilpV, startFilpH){\r
startX = startX !== undefined ? startX : currentx;\r
startY = startY !== undefined ? startY : currenty;\r
startW = startW !== undefined ? startW : currentw;\r
startA = startA !== undefined ? startA : angle;\r
startFilpV = startFilpV !== undefined ? startFilpV : flipV;\r
startFilpH = startFilpH !== undefined ? startFilpH : flipH;\r
- currentElement && SAVE( restoreState,\r
+ currentElement && SAVE( COMIC_ELEMENT_OPERATION_MANAGER.restoreState,\r
[ currentElement, startX, startY, startW, startH, startA, startFilpV, startFilpH],\r
[ currentElement, currentx, currenty, currentw, currenth, angle, flipV, flipH]\r
);\r
- }\r
- pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 16, undefined, undefined, function( e){\r
- currentOperator !== null && currentOperator.onShiftUpdate && currentOperator.onShiftUpdate();\r
- });\r
- pettanr.key.addKeyUpdateEvent( pettanr.view.EDITOR, 17, undefined, undefined, function(){\r
- currentOperator !== null && currentOperator.onCtrlUpdate && currentOperator.onCtrlUpdate();\r
- });\r
- pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 27, false, false, function(){\r
- currentOperator !== null && currentOperator.onCancel && currentOperator.onCancel();\r
- currentOperator = null;\r
- });\r
- return {\r
- init: function(){\r
- hide();\r
- delete COMIC_ELEMENT_OPERATION_MANAGER.init;\r
},\r
- hide: hide,\r
- resize: resize,\r
- restoreState: restoreState,\r
- updateInfomation: updateInfomation,\r
- saveStatus: saveComicElementStatus,\r
busy: function(){\r
return currentOperator !== null;\r
},\r
- hitareaX: function( _comicElement, _x){\r
- if( _comicElement === currentElement){\r
- var _consoleX = CONSOLE_CONTROLER.x();\r
- return currentx +( _consoleX < 0 ? _consoleX : 0) -HIT_AREA;\r
- }\r
- return _x -HIT_AREA;\r
- },\r
- hitareaY: function( _comicElement, _y){\r
- return _y -HIT_AREA;\r
- },\r
- hitareaW: function( _comicElement, _w){\r
- if( _comicElement === currentElement){\r
- var _consoleW = CONSOLE_CONTROLER.w();\r
- return ( _consoleW < currentw ? currentw : _consoleW) +HIT_AREA *2;\r
- }\r
- return _w +HIT_AREA *2;\r
- },\r
- hitareaH: function( _comicElement, _h){\r
- if( _comicElement === currentElement){\r
- var _consoleY = CONSOLE_CONTROLER.y();\r
- return ( _consoleY < currenth ? currenth : _consoleY +CONSOLE_CONTROLER.h()) +HIT_AREA *2;\r
- }\r
- return _h +HIT_AREA *2;\r
- },\r
hitTest: function( _mouseX, _mouseY, _comicElement){\r
var _x, _y, _w, _h;\r
if( _comicElement === currentElement){\r
h: h, \r
z: z,\r
timing: timing,\r
- hitareaX: function(){ return OPERATOR.hitareaX( this, this.x);},\r
- hitareaY: function(){ return OPERATOR.hitareaY( this, this.y);},\r
- hitareaW: function(){ return OPERATOR.hitareaW( this, this.w);},\r
- hitareaH: function(){ return OPERATOR.hitareaH( this, this.h);},\r
hitTest: function( _mouseX, _mouseY){ return OPERATOR.hitTest( _mouseX, _mouseY, this);},\r
shift: function( _shiftX, _shiftY){\r
update( this.x +_shiftX, this.y +_shiftY);\r
}\r
}\r
};\r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+\r
+/* --------------------------------------------------------------------------------------------\r
* ImageElementClass\r
*/\r
var jqImageElementOrigin;\r
\r
var JQ_WRAPPER = jqImageElementOrigin.clone( true),\r
OPERATOR = COMIC_ELEMENT_OPERATION_MANAGER,\r
- SAVE = HISTORY.saveState,\r
+ SAVE = HISTORY_CONTROL.saveState,\r
HIT_AREA = MOUSE_HIT_AREA,\r
reversibleImage = null,\r
actualW = 0, actualH = 0,\r
*/\r
\r
\r
-/*\r
- * --------------------------------------------------------------------------------------------\r
+/* --------------------------------------------------------------------------------------------\r
* TextElementClass\r
* \r
- * ELM はpettanr.domで書き出したものを突っ込むcreateの場合\r
- * \r
* type\r
* 0.none\r
* 1.speach balloon\r
TEXT_ELM = JQ_WRAPPER.find( 'td,.speach-inner').eq( 0),\r
OPERATOR = COMIC_ELEMENT_OPERATION_MANAGER,\r
HIT_AREA = MOUSE_HIT_AREA,\r
- SAVE = HISTORY.saveState,\r
+ SAVE = HISTORY_CONTROL.saveState,\r
instance;\r
\r
JQ_WRAPPER.find( 'img').eq( 0).replaceWith( XBROWSER_BALLOON.elm);\r
].join( '');\r
},\r
getAsXML: function(){}\r
- \r
}\r
);\r
}\r
\r
-\r
+/* --------------------------------------------------------------------------------------------\r
+ * COMIC_ELEMENT_CONTROL\r
+ * - mouseEventListener\r
+ */\r
var COMIC_ELEMENT_CONTROL = ( function(){\r
- var SAVE = HISTORY.saveState,\r
+ var SAVE = HISTORY_CONTROL.saveState,\r
ELM_CONTAINER = document.getElementById( 'comic-element-container'),\r
currentElement = null,\r
currentLockTest = false,\r
currentLock = false,\r
panelX, panelY, panelW, panelH,\r
startX, startY;\r
- \r
/*\r
* append, remove, replace\r
* \r
COMIC_ELEMENT_ARRAY[ insertIndex].$.before( _jqElm.fadeIn());\r
COMIC_ELEMENT_ARRAY.splice( insertIndex, 0, _comicElement);\r
}\r
- numberingComicElement();\r
+ renumber();\r
}\r
function removeComicElement( _comicElement) {\r
var l = COMIC_ELEMENT_ARRAY.length;\r
for( var i=0; i<l; ++i){\r
if( COMIC_ELEMENT_ARRAY[ i] === _comicElement){\r
COMIC_ELEMENT_ARRAY.splice( i, 1);\r
- numberingComicElement();\r
+ renumber();\r
_comicElement.$.stop().css( {\r
filter: '',\r
opacity: ''\r
* COMIC_ELEMENT_ARRAY の順番を基準に、zの再計算\r
* jqElmの並び替え。\r
*/\r
- function numberingComicElement(){\r
+ function renumber(){\r
var l = COMIC_ELEMENT_ARRAY.length,\r
_comicElement, jqElm, jqNext;\r
for( var i=0; i < l; ++i){\r
}\r
return -1;\r
})();\r
- if( i === -1) return;\r
+ if( i === -1) return false;\r
if( goForward === true){\r
- if( i === 0) return;\r
+ if( i === 0) return false;\r
COMIC_ELEMENT_ARRAY.splice( i, 1);\r
COMIC_ELEMENT_ARRAY.splice( i -1, 0, _comicElement);\r
} else {\r
- if( i === l -1) return;\r
+ if( i === l -1) return false;\r
COMIC_ELEMENT_ARRAY.splice( i, 1);\r
COMIC_ELEMENT_ARRAY.splice( i +1, 0, _comicElement);\r
}\r
- numberingComicElement();\r
+ renumber();\r
+ return true;\r
}\r
- function restoreReplaceObject( arg){\r
+ function restoreReplaceElement( arg){\r
replaceComicElement( arg[ 0], arg[ 1]);\r
}\r
\r
\r
delete COMIC_ELEMENT_CONTROL.init;\r
},\r
- removeComicElement: removeComicElement,\r
- restoreComicElement: restoreComicElement,\r
- replaceComicElement: replaceComicElement,\r
- restoreReplaceObject: restoreReplaceObject,\r
+ open: function(){\r
+ COMIC_ELEMENT_CONTROL.init && COMIC_ELEMENT_CONTROL.init();\r
+ },\r
+ close: function(){\r
+ while( COMIC_ELEMENT_ARRAY.length > 0){\r
+ COMIC_ELEMENT_ARRAY.shift().destroy();\r
+ }\r
+ },\r
+ remove: removeComicElement,\r
+ restore: restoreComicElement,\r
+ replace: replaceComicElement,\r
+ restoreReplace: restoreReplaceElement,\r
onPanelResize : function ( _panelX, _panelY, _panelW, _panelH, isResizerTopAction){\r
/*\r
* リサイズが、ResizerTopによって行われた場合、comicElementのyを動かして見かけ上動かないようにする。\r
onMouseUp: function( _mouseX, _mouseY){\r
var ret = currentElement !== null && currentElement.busy() === true;\r
ret === true && currentElement.onMouseUp( _mouseX -startX || panelX, _mouseY -startY || panelY);\r
- RESIZE_OPERATOR.lock( currentLockTest);\r
- currentLock = currentLockTest;\r
+ currentLock = currentLockTest === true && currentElement.hitTest( _mouseX -panelX, _mouseY -panelY) === true;\r
+ RESIZE_OPERATOR.lock( currentLock);\r
+ INFOMATION_WINDOW.lock( currentLock);\r
return ret;\r
},\r
onMouseDown: function( _mouseX, _mouseY){\r
h = h || 150; //ActualHeight\r
x = x || Math.floor( panelW /2 -w /2);\r
y = y || Math.floor( panelH /2 -h /2);\r
- IMAGE_GROUP_EXPROLER.show( function( _url, _w, _h){\r
- var _comicElement = ImageElementClass.apply( {}, [ _url, imagesetID, x, y, z || -1, w, h, COMIC_ELEMENT_ARRAY.length]);\r
+ function onImageSelect( _url, _w, _h){\r
+ var _comicElement = new ImageElementClass( _url, imagesetID, x, y, z || -1, _w, _h, COMIC_ELEMENT_ARRAY.length);\r
appendComicElement( _comicElement);\r
_comicElement.animate( undefined, undefined, _w, _h);\r
- SAVE( restoreComicElement, [ false, _comicElement], [ true, _comicElement], true);\r
- });\r
+ SAVE( restoreComicElement, [ false, _comicElement], [ true, _comicElement], true); \r
+ }\r
+ IMAGE_GROUP_EXPROLER.show( onImageSelect);\r
},\r
createTextElement: function( type, angle, text, x, y, z, w, h){\r
type = type || 0;\r
return {\r
init: function( _option){\r
option = _option;\r
+ \r
},\r
firstOpen: function(){\r
- var jqWindow = pettanr.jqWindow();\r
- windowW = jqWindow.width();\r
- windowH = jqWindow.height();\r
- \r
- jqEditor = $( '#editor');\r
-\r
/*\r
* MOUSE_LISTENER_ARRAY は、表示順に格納.手前の要素が最初\r
* MENU_BAR_CONTROL,\r
* WINDOW_CONTROL,\r
* COMIC_ELEMENT_CONTROL,\r
* PANEL_CONTROL\r
- * .busy() === true なら、そのままonMouseMove()にイベントを流す.これはArrayの後ろから、奥の表示要素から\r
+ * .busy() === true なら、そのままonMouseMove()にイベントを流す.\r
* onMouseMove()に流してみて、false が帰れば、次にリスナーにも流す.\r
*/\r
MOUSE_LISTENER_ARRAY.push( MENU_BAR_CONTROL, WINDOWS_CONTROL, PANEL_RESIZER_TOP, PANEL_RESIZER_BOTTOM, COMIC_ELEMENT_CONTROL, PANEL_CONTROL);\r
-\r
- HISTORY.init();\r
- \r
- WINDOWS_CONTROL.init();\r
\r
- GRID_CONTROL.init();\r
- PANEL_CONTROL.init();\r
CONSOLE_CONTROLER.init();\r
- COMIC_ELEMENT_OPERATION_MANAGER.init();\r
- COMIC_ELEMENT_CONTROL.init();\r
- \r
- // last\r
- MENU_BAR_CONTROL.init();\r
\r
+ OUTPUT_CONSOLE.init();\r
TEXT_EDITOR_CONTROL.init();\r
IMAGE_GROUP_EXPROLER.init();\r
\r
/*\r
- * centering
+ * centering\r
*/\r
pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 96, false, true, centering); // ctrl + 0\r
pettanr.key.addKeyDownEvent( pettanr.view.EDITOR, 48, false, true, centering); // ctrl + 0\r
\r
delete pettanr.editor.firstOpen;\r
},\r
- onOpen: function( _option){\r
- pettanr.editor.firstOpen !== undefined && pettanr.editor.firstOpen();\r
-\r
- // HISTORY.onOpen();\r
- // WINDOWS_CONTROL.onOpen();\r
- // COMIC_ELEMENT_CONTROL.onOpen();\r
- // MENU_BAR_CONTROL.onOpen();\r
- // TEXT_EDITOR_CONTROL.onOpen();\r
- // IMAGE_GROUP_EXPROLER.onOpen();\r
- },\r
- onClose: function(){\r
- },\r
- onWindowResize: function( _windowW, _windowH){\r
- windowW = _windowW;\r
- windowH = _windowH;\r
+ onOpen: function( _w, _h, _file){\r
+ if( pettanr.file.isFileInstance( _file) === true){\r
+ // pettanr.file.isPettanFileInstance( _file) === true\r
+ // \r
+ }\r
+ jqEditor = jqEditor || $( '#editor');\r
+ \r
+ HISTORY_CONTROL.open();\r
+ \r
+ WINDOWS_CONTROL.open();\r
+ \r
+ GRID_CONTROL.open();\r
+ PANEL_CONTROL.open();\r
+ \r
+ COMIC_ELEMENT_OPERATION_MANAGER.open();\r
+ COMIC_ELEMENT_CONTROL.open();\r
\r
+ // last\r
+ MENU_BAR_CONTROL.open();\r
+ \r
+ pettanr.editor.firstOpen !== undefined && pettanr.editor.firstOpen();\r
+ \r
+ windowW = _w;\r
+ windowH = _h;\r
+ pettanr.editor.onWindowResize( _w, _h );\r
+ },\r
+ onClose: function(){\r
+ HISTORY_CONTROL.close();\r
+ \r
+ WINDOWS_CONTROL.close();\r
+ \r
+ GRID_CONTROL.close();\r
+ PANEL_CONTROL.close();\r
+ \r
+ COMIC_ELEMENT_OPERATION_MANAGER.close();\r
+ COMIC_ELEMENT_CONTROL.close();\r
+ \r
+ // last\r
+ MENU_BAR_CONTROL.open();\r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ windowW = _windowW || windowW;\r
+ windowH = _windowH || windowH;\r
+ if( pettanr.editor.firstOpen) return;\r
/*\r
* ieは +'px'が不要みたい\r
*/\r
MIN_HEIGHT: 320\r
}\r
})();\r
+\r
+// create hidden iframe\r
+// write script\r
+// setInterval\r
+pettanr.proxy = ( function(){\r
+ \r
+ function FormProxy( formJsUrl, callback){\r
+ var timer = null,\r
+ iWin, idoc;\r
+\r
+ pettanr.util.createIframe( 'id00000', onCreateIframe);\r
+ \r
+ function onCreateIframe( _iframe){\r
+ iWin = _iframe.contentWindow;\r
+ idoc = _iframe.contentWindow.document;\r
+\r
+ idoc.open();\r
+ idoc.write( '<body>');\r
+ idoc.writeln( '<script type="text\/javascript" src="' + pettanr.CONST.JQUERY_URL+ '"><\/script>');\r
+ idoc.close();\r
+\r
+ timer = window.setInterval( detect, 250 );\r
+ }\r
+ function detect(){\r
+ if( iWin.jQuery){\r
+ window.clearInterval( timer );\r
+ //callback( idoc);\r
+ iWin.jQuery( iWin).ready( onJQueryReady );\r
+ }\r
+ }\r
+ function onJQueryReady(){\r
+ callback( idoc);\r
+ }\r
+ }\r
+ \r
+ return {\r
+ createFormProxy: function( _formJsUrl, _callback){\r
+ new FormProxy( _formJsUrl, _callback);\r
+ }\r
+ }\r
+ \r
+})();\r
+\r
+\r
+pettanr.comicConsole = ( function(){\r
+ var COMIC_CONSOLE = ( function(){\r
+ var jqWrap,\r
+ ID = 'comicConsole',\r
+ elmWrap = document.getElementById( 'comic-console-wrapper' ),\r
+ elmHeader = document.getElementById( 'comic-console-header' ),\r
+ elmProgress = document.getElementById( 'comic-console-progress' ),\r
+ inputTitle, inputW, inputH, inputVisible, inputEditable,\r
+ elmUploader = null,\r
+ elmScript = null\r
+ elmIframe = null,\r
+ elmForm = null,\r
+ timer = null,\r
+ isUploading = false;\r
+ //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
+ \r
+ function clickOK(){\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+ // validate\r
+ isUploading = true;\r
+ elmProgress.innerHTML = '■';\r
+ copyAndSubmit();\r
+ }\r
+\r
+ function copyAndSubmit(){\r
+ var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+ _input, _name;\r
+ for( var i=0, l= _inputList.length; i<l; ++i){\r
+ _input = _inputList[ i ];\r
+ _name = _input.name;\r
+ if( _name === 'comic[title]'){\r
+ _input.value = inputTitle.value();\r
+ } else\r
+ if( _name === 'comic[width]'){\r
+ _input.value = inputW.value();\r
+ } else\r
+ if( _name === 'comic[height]'){\r
+ _input.value = inputH.value();\r
+ }\r
+ }\r
+ var _selectList = elmForm.getElementsByTagName( 'select' ),\r
+ _select, _name, _optionList;\r
+ for( i=0, l= _selectList.length; i<l; ++i){\r
+ _select = _selectList[ i ];\r
+ _name = _select.name;\r
+ _optionList = _select.getElementsByTagName( 'option' )\r
+ if( _name === 'comic[visible]'){\r
+ _select.selectedIndex = 1;\r
+ } else\r
+ if( _name === 'comic[editable]'){\r
+ _select.selectedIndex = 0;\r
+ }\r
+ }\r
+ try {\r
+ elmForm.submit();\r
+ } catch( e){\r
+ elmProgress.innerHTML = 'submit() err..';\r
+ isUploading = false;\r
+ setTimeout( clickCancel , 3000);\r
+ return;\r
+ }\r
+ if( pettanr.ua.isIE){\r
+ elmIframe.onreadystatechange = detectIframe;\r
+ } else {\r
+ elmIframe.onload = onIframeUpdate;\r
+ }\r
+ elmProgress.innerHTML = 'uploading..';\r
+ }\r
+ /*\r
+ * ie の 場合、readyState をチェック.\r
+ */\r
+ function detectIframe(){\r
+ if ( elmIframe.readyState === 'complete') {\r
+ elmIframe.onreadystatechange = new Function();\r
+ elmIframe.onreadystatechange = null;\r
+ onIframeUpdate();\r
+ }\r
+ }\r
+ function onIframeUpdate(){\r
+ elmIframe.onload = null;\r
+ ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+ elmIframe = null;\r
+ elmProgress.innerHTML = 'success!';\r
+ setTimeout( clickCancel , 1000);\r
+ isUploading = false;\r
+ }\r
+ \r
+ function clickCancel(){\r
+ if( isUploading === true) return false;\r
+ pettanr.overlay.hide();\r
+ COMIC_CONSOLE.onClose();\r
+ }\r
+ function detectForm(){\r
+ elmForm = elmUploader.getElementsByTagName( 'form' )[ 0 ];\r
+ if( elmForm){\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ pettanr.util.createIframe( 'targetFrameCreateComic', onCreateIframe );\r
+ elmProgress.innerHTML = 'create iframe';\r
+ }\r
+ }\r
+ function onCreateIframe( _iframe ){\r
+ elmUploader.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ elmProgress.innerHTML = '';\r
+ }\r
+ \r
+ return {\r
+ init: function(){\r
+ this.jqWrap = jqWrap = $( '#comic-console-wrapper').hide();\r
+ $( '#comic-console-post-button').click( clickOK );\r
+ $( '#comic-console-cancel-button').click( clickCancel );\r
+ \r
+ var CREATER = pettanr.form.createInputText;//pettanr.key.createEditableText;\r
+ inputTitle = CREATER( document.getElementById( 'comic-console-title'), null, ID);\r
+ inputW = CREATER( document.getElementById( 'comic-console-width'), null, ID);\r
+ inputH = CREATER( document.getElementById( 'comic-console-height'), null, ID);\r
+ inputVisible = CREATER( document.getElementById( 'comic-console-visible'), null, ID);\r
+ inputEditable = CREATER( document.getElementById( 'comic-console-editable'), null, ID);\r
+ \r
+ delete COMIC_CONSOLE.init;\r
+ },\r
+ jqWrap: null,\r
+ show: function( w, h){\r
+ jqWrap.show();\r
+\r
+ pettanr.overlay.show( COMIC_CONSOLE );\r
+ \r
+ inputTitle.start();\r
+ \r
+ elmUploader = document.createElement( 'div');\r
+ elmUploader.id = "newcomic";\r
+ elmUploader.style.cssText = 'height:1px;line-height:1px;visibility:hidden;overflow:hidden;';\r
+ elmWrap.appendChild( elmUploader);\r
+ \r
+ var elmScript = document.createElement( 'script');\r
+ elmScript.type = 'text\/javascript';\r
+ elmScript.src = pettanr.CONST.CREATE_COMIC_JS;\r
+ elmWrap.appendChild( elmScript);\r
+ \r
+ elmProgress.innerHTML = 'loading form.';\r
+ \r
+ if( timer === null){\r
+ timer = window.setInterval( detectForm, 250);\r
+ }\r
+ \r
+ COMIC_CONSOLE.onWindowResize( w, h);\r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( _windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( _windowH -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ },\r
+ onClose: function(){\r
+ elmForm !== null && $( elmUploader ).remove();\r
+ elmForm = null;\r
+ isUploading = false;\r
+ \r
+ if( elmScript !== null ){\r
+ document.body.removeChild( elmScript);\r
+ elmScript = null; \r
+ }\r
+ if( timer !== null){\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ }\r
+ \r
+ jqWrap.hide();\r
+ },\r
+ ID: ID\r
+ }\r
+ })();\r
+ \r
+ return {\r
+ init: function(){\r
+ COMIC_CONSOLE.init();\r
+ delete pettanr.comicConsole.init;\r
+ },\r
+ onOpen: function( _w, _h, _file){\r
+ if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+ // _data = _file.read();\r
+ }\r
+ },\r
+ onClose: function(){\r
+ \r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ },\r
+ _quickAccessShow: function(){\r
+ jqWindow = pettanr.jqWindow();\r
+ var w = jqWindow.width(),\r
+ h = jqWindow.height();\r
+ COMIC_CONSOLE.show( w, h);\r
+ }\r
+ }\r
+})();\r
+\r
+pettanr.uploadConsole = ( function(){\r
+ var UPLOAD_CONSOLE = ( function(){\r
+ var jqWrap, windowW, windowH,\r
+ ID = 'uploadConsole',\r
+ TARGET_FRAME_NAME = 'targetFrame',\r
+ elmContainer = document.getElementById( 'uploader'),\r
+ elmProgress = document.getElementById( 'upload-console-progress'),\r
+ timer = null,\r
+ elmScript = null,\r
+ elmForm = null,\r
+ elmFile = null,\r
+ elmIframe = null,\r
+ isUploading = false;\r
+ /*\r
+ * upload ボタンが押されたらまず iframe をつくる.
+ */\r
+ function clickOK(){\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+ if( elmFile.value.length === 0) return false;\r
+ elmProgress.innerHTML = 'uploading.';\r
+ isUploading = true;\r
+ submit();\r
+ return false;\r
+ }\r
+ /*\r
+ * form の target に iframe を指定したのち submit();
+ */\r
+ function submit(){\r
+ try {\r
+ elmForm.submit();\r
+ } catch( e){\r
+ elmProgress.innerHTML = 'submit() err..';\r
+ isUploading = false;\r
+ setTimeout( clickCancel , 3000);\r
+ return;\r
+ }\r
+ \r
+ if( pettanr.ua.isIE){\r
+ elmIframe.onreadystatechange = detectIframe;\r
+ } else {\r
+ elmIframe.onload = onLoad;\r
+ }\r
+ elmProgress.innerHTML = 'uploading..';\r
+ }\r
+ /*\r
+ * ie の 場合、readyState をチェック.
+ */\r
+ function detectIframe(){\r
+ if ( elmIframe.readyState === 'complete') {\r
+ elmIframe.onreadystatechange = new Function();\r
+ elmIframe.onreadystatechange = null;\r
+ onLoad();\r
+ }\r
+ }\r
+ function onLoad(){\r
+ elmIframe.onload = null;\r
+ ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+ elmProgress.innerHTML = 'success!';\r
+ setTimeout( clickCancel , 1000);\r
+ isUploading = false;\r
+ }\r
+ \r
+ function detectForm(){\r
+ elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+ if( elmForm){\r
+ var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+ _input;\r
+ for( var i=0, l= _inputList.length; i<l; ++i){\r
+ _input = _inputList[ i ];\r
+ if( _input.type === 'file'){\r
+ elmFile = _input;\r
+ }\r
+ if( _input.type === 'submit'){\r
+ _input.style.display = 'none';\r
+ }\r
+ }\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+ elmProgress.innerHTML = 'create iframe';\r
+ }\r
+ }\r
+ function onCreateIframe( _iframe ){\r
+ elmContainer.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ elmProgress.innerHTML = '';\r
+ UPLOAD_CONSOLE.onWindowResize( windowW, windowH );\r
+ }\r
+ /*\r
+ *
+ */\r
+ function clickCancel(){\r
+ if( isUploading === true) return false;\r
+ pettanr.overlay.hide();\r
+ UPLOAD_CONSOLE.onClose();\r
+ return false;\r
+ }\r
+ \r
+ return {\r
+ init: function(){\r
+ this.jqWrap = jqWrap = $( '#upload-console-wrapper').hide();\r
+ $( '#upload-console-post-button').click( clickOK );\r
+ $( '#upload-console-cancel-button').click( clickCancel );\r
+\r
+ delete UPLOAD_CONSOLE.init;\r
+ },\r
+ jqWrap: null,\r
+ show: function( w, h){\r
+ /*\r
+ * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.
+ */ \r
+ elmScript = document.createElement( 'script');\r
+ elmScript.type = 'text\/javascript';\r
+ elmScript.src = pettanr.CONST.UPLOAD_PICTURE_JS;\r
+ document.body.appendChild( elmScript);\r
+ \r
+ jqWrap.show();\r
+ pettanr.overlay.show( UPLOAD_CONSOLE );\r
+\r
+ if( timer === null){\r
+ timer = window.setInterval( detectForm, 250);\r
+ }\r
+ \r
+ elmProgress.innerHTML = 'loading form.';\r
+ \r
+ UPLOAD_CONSOLE.onWindowResize( w, h);\r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ windowW = _windowW;\r
+ windowH = _windowH;\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( _windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( _windowH -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ },\r
+ onClose: function(){\r
+ elmForm !== null && $( elmContainer.children ).remove();\r
+ elmForm = elmFile = elmIframe = null;\r
+ isUploading = false;\r
+ \r
+ if( elmScript !== null ){\r
+ document.body.removeChild( elmScript);\r
+ elmScript = null; \r
+ }\r
+ if( timer !== null){\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ }\r
+ jqWrap.hide();\r
+ },\r
+ ID: ID\r
+ }\r
+ })();\r
+ \r
+ return {\r
+ init: function(){\r
+ UPLOAD_CONSOLE.init();\r
+ delete pettanr.comicConsole.init;\r
+ },\r
+ onOpen: function( _w, _h, _file){\r
+ if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+ // _data = _file.read();\r
+ }\r
+ },\r
+ onClose: function(){\r
+ \r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ },\r
+ _quickAccessShow: function(){\r
+ jqWindow = pettanr.jqWindow();\r
+ var w = jqWindow.width(),\r
+ h = jqWindow.height();\r
+ UPLOAD_CONSOLE.show( w, h);\r
+ }\r
+ }\r
+})();\r
+\r
+pettanr.panelConsole = ( function(){\r
+ var PANEL_CONSOLE = ( function(){\r
+ var jqWrap, windowW, windowH,\r
+ ID = 'panelConsole',\r
+ TARGET_FRAME_NAME = 'targetFrameCreateNewPanel',\r
+ elmContainer = document.getElementById( 'newpanel'),\r
+ elmProgress = document.getElementById( 'panel-console-progress'),\r
+ timer = null,\r
+ elmScript = null,\r
+ elmForm = null,\r
+ elmIframe = null,\r
+ isUploading = false;\r
+ /*\r
+ * upload ボタンが押されたらまず iframe をつくる.\r
+ */\r
+ function clickOK(){\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+ elmProgress.innerHTML = 'uploading.';\r
+ isUploading = true;\r
+ submit();\r
+ return false;\r
+ }\r
+ /*\r
+ * form の target に iframe を指定したのち submit();\r
+ */\r
+ function submit(){\r
+ try {\r
+ elmForm.submit();\r
+ } catch( e){\r
+ elmProgress.innerHTML = 'submit() err..';\r
+ isUploading = false;\r
+ setTimeout( clickCancel , 3000);\r
+ return;\r
+ }\r
+ \r
+ if( pettanr.ua.isIE){\r
+ elmIframe.onreadystatechange = detectIframe;\r
+ } else {\r
+ elmIframe.onload = onLoad;\r
+ }\r
+ elmProgress.innerHTML = 'uploading..';\r
+ }\r
+ /*\r
+ * ie の 場合、readyState をチェック.\r
+ */\r
+ function detectIframe(){\r
+ if ( elmIframe.readyState === 'complete') {\r
+ elmIframe.onreadystatechange = new Function();\r
+ elmIframe.onreadystatechange = null;\r
+ onLoad();\r
+ }\r
+ }\r
+ function onLoad(){\r
+ elmIframe.onload = null;\r
+ ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+ elmProgress.innerHTML = 'success!';\r
+ setTimeout( clickCancel , 1000);\r
+ isUploading = false;\r
+ }\r
+ \r
+ function detectForm(){\r
+ elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+ if( elmForm){\r
+ var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+ _input;\r
+ for( var i=0, l= _inputList.length; i<l; ++i){\r
+ _input = _inputList[ i ];\r
+ if( _input.type === 'submit'){\r
+ _input.style.display = 'none';\r
+ }\r
+ }\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+ elmProgress.innerHTML = 'create iframe';\r
+ }\r
+ }\r
+ function onCreateIframe( _iframe ){\r
+ elmContainer.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ elmProgress.innerHTML = '';\r
+ PANEL_CONSOLE.onWindowResize( windowW, windowH );\r
+ }\r
+ /*\r
+ * \r
+ */\r
+ function clickCancel(){\r
+ if( isUploading === true) return false;\r
+ pettanr.overlay.hide();\r
+ PANEL_CONSOLE.onClose();\r
+ return false;\r
+ }\r
+ \r
+ return {\r
+ init: function(){\r
+ this.jqWrap = jqWrap = $( '#panel-console-wrapper').hide();\r
+ $( '#panel-console-post-button').click( clickOK );\r
+ $( '#panel-console-cancel-button').click( clickCancel );\r
+\r
+ delete PANEL_CONSOLE.init;\r
+ },\r
+ jqWrap: null,\r
+ show: function( w, h){\r
+ /*\r
+ * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.\r
+ */ \r
+ elmScript = document.createElement( 'script');\r
+ elmScript.type = 'text\/javascript';\r
+ elmScript.src = pettanr.CONST.CREATE_PANEL_JS;\r
+ document.body.appendChild( elmScript);\r
+ \r
+ jqWrap.show();\r
+ pettanr.overlay.show( PANEL_CONSOLE );\r
+\r
+ if( timer === null){\r
+ timer = window.setInterval( detectForm, 250 );\r
+ }\r
+ \r
+ elmProgress.innerHTML = 'loading form.';\r
+ \r
+ PANEL_CONSOLE.onWindowResize( w, h );\r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ windowW = _windowW;\r
+ windowH = _windowH;\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( _windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( _windowH -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ },\r
+ onClose: function(){\r
+ elmForm !== null && $( elmContainer.children ).remove();\r
+ elmForm = elmIframe = null;\r
+ isUploading = false;\r
+ \r
+ if( elmScript !== null ){\r
+ document.body.removeChild( elmScript);\r
+ elmScript = null; \r
+ }\r
+ if( timer !== null){\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ }\r
+ jqWrap.hide();\r
+ },\r
+ ID: ID\r
+ }\r
+ })();\r
+ \r
+ return {\r
+ init: function(){\r
+ PANEL_CONSOLE.init();\r
+ delete pettanr.comicConsole.init;\r
+ },\r
+ onOpen: function( _w, _h, _file ){\r
+ \r
+ },\r
+ onClose: function(){\r
+ \r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ },\r
+ _quickAccessShow: function(){\r
+ jqWindow = pettanr.jqWindow();\r
+ var w = jqWindow.width(),\r
+ h = jqWindow.height();\r
+ PANEL_CONSOLE.show( w, h);\r
+ }\r
+ }\r
+})();\r
+\r
+pettanr.artistConsole = ( function(){\r
+ var ARTIST_CONSOLE = ( function(){\r
+ var jqWrap, windowW, windowH,\r
+ ID = 'artistConsole',\r
+ TARGET_FRAME_NAME = 'targetFrameRegisterArtist',\r
+ elmContainer = document.getElementById( 'register'),\r
+ elmProgress = document.getElementById( 'artist-console-progress'),\r
+ timer = null,\r
+ elmScript = null,\r
+ elmForm = null,\r
+ elmIframe = null,\r
+ isUploading = false;\r
+ /*\r
+ * upload ボタンが押されたらまず iframe をつくる.\r
+ */\r
+ function clickOK(){\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+ elmProgress.innerHTML = 'uploading.';\r
+ isUploading = true;\r
+ submit();\r
+ return false;\r
+ }\r
+ /*\r
+ * form の target に iframe を指定したのち submit();\r
+ */\r
+ function submit(){\r
+ try {\r
+ elmForm.submit();\r
+ } catch( e){\r
+ elmProgress.innerHTML = 'submit() err..';\r
+ isUploading = false;\r
+ setTimeout( clickCancel , 3000);\r
+ return;\r
+ }\r
+ \r
+ if( pettanr.ua.isIE){\r
+ elmIframe.onreadystatechange = detectIframe;\r
+ } else {\r
+ elmIframe.onload = onLoad;\r
+ }\r
+ elmProgress.innerHTML = 'uploading..';\r
+ }\r
+ /*\r
+ * ie の 場合、readyState をチェック.\r
+ */\r
+ function detectIframe(){\r
+ if ( elmIframe.readyState === 'complete') {\r
+ elmIframe.onreadystatechange = new Function();\r
+ elmIframe.onreadystatechange = null;\r
+ onLoad();\r
+ }\r
+ }\r
+ function onLoad(){\r
+ elmIframe.onload = null;\r
+ ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+ elmProgress.innerHTML = 'success!';\r
+ setTimeout( clickCancel , 1000);\r
+ isUploading = false;\r
+ }\r
+ \r
+ function detectForm(){\r
+ elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+ if( elmForm){\r
+ var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+ _input;\r
+ for( var i=0, l= _inputList.length; i<l; ++i){\r
+ _input = _inputList[ i ];\r
+ if( _input.type === 'submit'){\r
+ _input.style.display = 'none';\r
+ }\r
+ }\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+ elmProgress.innerHTML = 'create iframe';\r
+ }\r
+ }\r
+ function onCreateIframe( _iframe ){\r
+ elmContainer.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ elmProgress.innerHTML = '';\r
+ ARTIST_CONSOLE.onWindowResize( windowW, windowH );\r
+ }\r
+ /*\r
+ * \r
+ */\r
+ function clickCancel(){\r
+ if( isUploading === true) return false;\r
+ pettanr.overlay.hide();\r
+ ARTIST_CONSOLE.onClose();\r
+ return false;\r
+ }\r
+ \r
+ return {\r
+ init: function(){\r
+ this.jqWrap = jqWrap = $( '#artist-console-wrapper').hide();\r
+ $( '#artist-console-post-button').click( clickOK );\r
+ $( '#artist-console-cancel-button').click( clickCancel );\r
+\r
+ delete ARTIST_CONSOLE.init;\r
+ },\r
+ jqWrap: null,\r
+ show: function( w, h){\r
+ /*\r
+ * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.\r
+ */ \r
+ elmScript = document.createElement( 'script');\r
+ elmScript.type = 'text\/javascript';\r
+ elmScript.src = pettanr.CONST.REGISTER_ARTIST_JS;\r
+ document.body.appendChild( elmScript);\r
+ \r
+ jqWrap.show();\r
+ pettanr.overlay.show( ARTIST_CONSOLE );\r
+\r
+ if( timer === null){\r
+ timer = window.setInterval( detectForm, 250 );\r
+ }\r
+ \r
+ elmProgress.innerHTML = 'loading form.';\r
+ \r
+ ARTIST_CONSOLE.onWindowResize( w, h );\r
+ },\r
+ onWindowResize: function( _windowW, _windowH ){\r
+ windowW = _windowW;\r
+ windowH = _windowH;\r
+ jqWrap.css(\r
+ {\r
+ left: Math.floor( ( _windowW -jqWrap.width()) /2),\r
+ top: Math.floor( ( _windowH -jqWrap.height()) /2)\r
+ }\r
+ );\r
+ },\r
+ onClose: function(){\r
+ elmForm !== null && $( elmContainer.children ).remove();\r
+ elmForm = elmIframe = null;\r
+ isUploading = false;\r
+ \r
+ if( elmScript !== null ){\r
+ document.body.removeChild( elmScript);\r
+ elmScript = null; \r
+ }\r
+ if( timer !== null){\r
+ window.clearInterval( timer);\r
+ timer = null;\r
+ }\r
+ jqWrap.hide();\r
+ },\r
+ ID: ID\r
+ }\r
+ })();\r
+ \r
+ return {\r
+ init: function(){\r
+ ARTIST_CONSOLE.init();\r
+ delete pettanr.comicConsole.init;\r
+ },\r
+ onOpen: function( _w, _h, _option ){\r
+ \r
+ },\r
+ onClose: function(){\r
+ \r
+ },\r
+ onWindowResize: function( _windowW, _windowH){\r
+ },\r
+ _quickAccessShow: function(){\r
+ jqWindow = pettanr.jqWindow();\r
+ var w = jqWindow.width(),\r
+ h = jqWindow.height();\r
+ ARTIST_CONSOLE.show( w, h);\r
+ }\r
+ }\r
+})();
\ No newline at end of file