/*\r
* pettanR work.js\r
- * version 0.4.2\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
\r
/* ----------------------------------------\r
* MENU BAR\r
+ * - mouseEventListener\r
+ * - controler\r
+ * \r
* div\r
* div.title\r
* ul\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 = pettanr.util.getChildIndex( this.parentNode, this);\r
i !== -1 && this.className !== 'disabled' && SELECTION_CALLBACK_ARRAY[ i]( i);\r
e.stopPropagation();\r
return false;\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
return {\r
init: function(){\r
log = $( '#history-log');\r
- delete HISTORY.init;\r
+ delete HISTORY_CONTROL.init;\r
},\r
open: function(){\r
- HISTORY.init && HISTORY.init();\r
+ HISTORY_CONTROL.init && HISTORY_CONTROL.init();\r
},\r
close: function(){\r
MENUBAR_BACK.visible( false);\r
\r
\r
/* ----------------------------------------\r
- * Save Control\r
+ * OUTPUT_CONSOLE\r
+ * - overlay\r
*/\r
-\r
var OUTPUT_CONSOLE = ( function(){\r
var jqWrap, jqOutputArea,\r
ID = 'outputConsole';\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
SAVE_AS_HTML = MENU_BAR_CONTROL.QUIT.createSelection( 'get as html', null, outputAsHtml, true, false, true),\r
SAVE_AS_JSON_STRING = MENU_BAR_CONTROL.QUIT.createSelection( 'get JsonStr', null, outputAsJsonString, true, false, true),\r
- OUTPUT = MENU_BAR_CONTROL.QUIT.createSelection( 'output', null, onOutputClick, true, false, true),\r
QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'quit', null, quit, true, true),\r
updated = false;\r
\r
function quit(){\r
- }\r
- \r
- function onOutputClick(){\r
- // OUTPUT_CONSOLE.show();\r
+ // 本来は os.application.close();\r
+ pettanr.view.show( 'entrance');\r
}\r
\r
function outputAsHtml(){\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
\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
function onClick( e){\r
pettanr.overlay.hide();\r
- if (onUpdateFunction) {\r
+ if( _g_onUpdateFunction) {\r
if( LOW_SRC === null){\r
- onUpdateFunction( SRC, imgW, imgH);\r
+ window[ _g_onUpdateFunction]( SRC, imgW, imgH);\r
+ window[ _g_onUpdateFunction] = null;\r
} else {\r
- var _onLoad = new Function( [\r
- 'window["', _g_onUpdateFunction, '"]( arguments[ 0], arguments[ 1], arguments[ 2]);',\r
- 'window["', _g_onUpdateFunction, '"] = null'\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 = new Function( [\r
- 'window["', _g_onUpdateFunction, '"]( arguments[ 0], ', data.width || 64 ,', ', data.height || 64,');',\r
- 'window["', _g_onUpdateFunction, '"] = null'\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, _onLoad, _onError);\r
- /*\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
+ pettanr.util.loadImage( SRC, window[ _onLoad], window[ _onError]);\r
+ window[ _onLoad] = window[ _onError] = undefined;\r
}\r
}\r
close();\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
},\r
jqWrap: null,\r
show: function( _onUpdateFunction){\r
- onUpdateFunction = _onUpdateFunction;\r
- if( onUpdateFunction){\r
- _g_onUpdateFunction = pettanr.util.createGlobalFunction( 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
\r
/* ----------------------------------------\r
* WINDOWS_CONTROL\r
+ * - contloler\r
+ * - mouseEventListener\r
*/ \r
var WINDOWS_CONTROL = ( function(){\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
\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( _w, _h){\r
- finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.file.TREE_TYPE_IS_IMAGE);\r
+ finder = pettanr.finder.createFinder( document.getElementById( 'image-exproler-container'), pettanr.driver.createPictureTree());\r
delete this.onFirstOpen;\r
},\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 = true, //pettanr.ua.isIE === false || pettanr.ua.ieVersion >= 8,\r
currentLock = false;\r
\r
return WINDOWS_CONTROL.createWindow(\r
- this,\r
{\r
onFirstOpen: function( _w, _h){\r
backgroundInfomationElm = $( '#panel-background-information');\r
currentElementType = _elementType;\r
}\r
if( currentElementType !== -1){\r
- inputX.update( x);\r
- inputY.update( y);\r
- inputZ.update( z);\r
- _elementType === 1 && inputA.update( a);\r
- inputW.update( w);\r
- inputH.update( h);\r
- _elementType === 0 && inputPercentW.update( wPercent);\r
- _elementType === 0 && inputPercentH.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
/* ----------------------------------------\r
* HELP_WINDOW\r
+ * - window\r
*/\r
var HELP_DOCUMENTS_WINDOW = ( function(){\r
var visible = true,\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 onSelectionClick( _pageIndex){\r
- currentPageIndex = _pageIndex || currentPageIndex;\r
- HELP_DOCUMENTS_WINDOW.open();\r
- onOpen();\r
- }\r
- function onOpen(){\r
- jqNaviItems.removeClass( 'current').eq( currentPageIndex).addClass( 'current');\r
- jqPages.hide().eq( currentPageIndex).show();\r
- }\r
- function onFirstOpen( _pageIndex){\r
+\r
+ function onAjaxStart( _pageIndex){\r
currentPageIndex = _pageIndex || currentPageIndex;\r
if( onHelpLoad !== null){\r
$.ajax({\r
});\r
onHelpLoad = null;\r
}\r
+ onAjaxStart = new Function;\r
}\r
var onHelpLoad = function( _xml){\r
var jqXML = $( _xml),\r
elmPages = document.createElement( 'div'),\r
elmPageOrigin = document.createElement( 'div'),\r
elmTitleOrigin = document.createElement( 'h2'),\r
- elmPage,\r
- numPage = 0;\r
+ elmPage;\r
elmNavi.className = 'sidenavi';\r
elmItemOrigin.className = 'sidenavi-item';\r
elmItemOrigin.href = '#';\r
elmPages.className = 'page-contents';\r
- elmPageOrigin.className = 'page-content';\r
+ elmPageOrigin.className = 'page-content main';\r
elmPageOrigin.appendChild( elmTitleOrigin);\r
\r
- // helpTitle && instance.title( helpTitle);\r
+ //helpTitle && instance.title( helpTitle);\r
\r
jqXML.find( 'page').each( function(){\r
var xmlPage = $( this),\r
elmNavi.appendChild( elmItemOrigin.cloneNode( true));\r
\r
elmTitleOrigin.innerHTML = title;\r
+ \r
elmPage = elmPageOrigin.cloneNode( true);\r
elmPage.innerHTML = content;\r
\r
jqAjaxContents.removeClass( 'loading').append( elmNavi, elmPages);\r
\r
jqNaviItems = jqAjaxContents.find( 'a.' +elmItemOrigin.className).click( onNaviClick);\r
- jqAjaxContents.find( '.' +elmPageOrigin.className).find( 'a').click( onInnerLinkClick);\r
jqPages = jqAjaxContents.find( '.page-content');\r
- setTimeout( onOpen, 0);\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
- var children = this.parentNode.getElementsByTagName( 'a'),\r
- l = children.length;\r
- for( var i=0; i<l; ++i){\r
- if( children[ i] === this) break;\r
- }\r
+ jumpPage( pettanr.util.getChildIndex( this.parentNode, this));\r
e.stopPropagation();\r
- if( i === l) return false;\r
- jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
- jqPages.hide().eq( i).show();\r
return false;\r
}\r
function onInnerLinkClick( e){\r
- var jump = this.href.split( '#jump'),\r
- n = jump[1],\r
- i = ( n && '' +parseFloat( n) === n) ? parseFloat( n) : -1;\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
- if( i === -1) return false;\r
- jqNaviItems.removeClass( 'current').eq( i).addClass( 'current');\r
- jqPages.hide().eq( i).show();\r
- currentPageIndex = i;\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: function(){\r
- onFirstOpen();\r
- },\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
})();\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
}\r
}\r
})();\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
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
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
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_ELEMENT_SIZE && _h < -MIN_ELEMENT_SIZE){\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
onCtrlUpdate: update\r
}\r
})();\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
\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
);\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
INFOMATION_WINDOW.update( null);\r
- }\r
- function restoreState( arg){\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
- saveStatus: saveComicElementStatus,\r
busy: function(){\r
return currentOperator !== null;\r
},\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
\r
delete COMIC_ELEMENT_CONTROL.init;\r
},\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
x = x || Math.floor( panelW /2 -w /2);\r
y = y || Math.floor( panelH /2 -h /2);\r
function onImageSelect( _url, _w, _h){\r
- var _comicElement = ImageElementClass.apply( {}, [ _url, imagesetID, x, y, z || -1, w, h, COMIC_ELEMENT_ARRAY.length]);\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
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
\r
delete pettanr.editor.firstOpen;\r
},\r
- onOpen: function( _option){\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
- // 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
+ 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;\r
- windowH = _windowH;\r
+ windowW = _windowW || windowW;\r
+ windowH = _windowH || windowH;\r
if( pettanr.editor.firstOpen) return;\r
/*\r
* ieは +'px'が不要みたい\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