/*\r
* pettanR common.js\r
- * version 0.4.2\r
+ * version 0.4.4\r
* \r
* author: itozyun\r
*/\r
if( 1 < l){\r
var query = search.substring( 1),\r
params = query.split( '&'),\r
- ret = {}, elm, name;\r
+ ret = {}, elm, name, v;\r
while( params.length > 0){\r
elm = params.shift().split( '=');\r
name = decodeURIComponent( elm[ 0]);\r
if( elm.length === 2){\r
- ret[ name] = ( function( v){\r
- if( '' + parseFloat( v) === v) return parseFloat( v);\r
- if( v === 'true') return true;\r
- if( v === 'false') return false;\r
- if( v === 'null') return null;\r
- if( v === 'undefined') return undefined;\r
- return v;\r
- })( decodeURIComponent( elm[ 1]));\r
+ v = decodeURIComponent( elm[ 1]);\r
+ if( '' + parseFloat( v) === v) v = parseFloat( v);\r
+ if( '' + parseInt( v) === '0' + v) v = parseInt( v);\r
+ if( v === 'true') v = true;\r
+ if( v === 'false') v = false;\r
+ if( v === 'null') v = null;\r
+ if( v === 'undefined') v = undefined;\r
+ ret[ name] = v;\r
} else\r
if( elm.length === 1){\r
ret[ name] = true;\r
IS_DEBUG = typeof URL_PARAMS.debug === 'boolean' ? URL_PARAMS.debug : IS_LOCAL === true,\r
jqWindow , jqDocument , jqBody;\r
return {\r
- version: '0.4.2',\r
+ version: '0.4.4',\r
init: function(){\r
jqWindow = $( window);\r
jqDocument = $( document);\r
if( !IDorELM) return;\r
IDorELM.parentNode && IDorELM.parentNode.removeChild( IDorELM);\r
if( IDorELM.id && IDorELM.id.indexOf( 'templete-') === 0){\r
- IDorELM.id = '';\r
+ IDorELM.removeAttribute( 'id');\r
}\r
return IDorELM;\r
},\r
_node, _classes, ret = [];\r
for( var i=0, l = _nodes.length; i<l; ++i){\r
_node = _nodes[ i];\r
- if( _node.nodeType === 1){\r
- _classes = _node.className.split( ' ');\r
- for( var j=0, m=_classes.length; j<m; ++j){\r
- if( _classes[ j] === _className){\r
- ret.push( _node);\r
- break;\r
- }\r
- }\r
- }\r
+ _node.nodeType === 1 && this.hasClassName( _node, _className) === true && ret.push( _node);\r
}\r
return ret;\r
},\r
+ getChildIndex: function( _parent, _child){\r
+ var _children = _parent.getElementsByTagName( _child.tagName),\r
+ l = _children.length;\r
+ for(var i=0; i<l; ++i){\r
+ if( _children[ i] === _child) return i;\r
+ }\r
+ return -1;\r
+ },\r
hasClassName: function( _elm, _className){\r
- var _classes = _elm.className.split( ' ');\r
+ var _classes = ( _elm.className || '').split( ' ');\r
for( var i=0, l=_classes.length; i<l; ++i){\r
if( _classes[ i] === _className) return true;\r
}\r
_node.parentNode && _node.parentNode.removeChild( _node);\r
}\r
},\r
+ getIndex: function( _array, _element){\r
+ if( Array.prototype.indexof){\r
+ pettanr.util.getIndex = function( _array, _element){\r
+ return _array.indexof( _element);\r
+ }\r
+ } else {\r
+ pettanr.util.getIndex = function( _array, _element){\r
+ for( var i=0, l = _array.length; i<l; ++i){\r
+ if( _array[ i] === _element) return i;\r
+ }\r
+ return -1; \r
+ }\r
+ }\r
+ return pettanr.util.getIndex( _array, _element);\r
+ },\r
/*\r
* \r
*/\r
ieVersion = isIE === true ? parseInt( navigator.appVersion.toLowerCase().replace( /.*msie[ ]/, '').match( /^[0-9]+/)) : 0,\r
ieRenderingVersion = ieVersion === 8 ? document.documentMode : ieVersion,\r
isStanderdMode = document.compatMode === 'CSS1Compat',\r
- VML = ( function(){\r
+ ActiveX = ( function(){\r
if( isIE === false || ieVersion > 8) return false;\r
+ var b = document.body,\r
+ c = b.className || '',\r
+ x,\r
+ ret = pettanr.URL_PARAMS.ActiveX,\r
+ ns = 'pettanr-ActiveX-',\r
+ enabled = 'enabled',\r
+ disabled = 'disabled';\r
+ if( ret !== true && ret !== false){\r
+ if( pettanr.util.hasClassName( b, ns + enabled) === true) return true;\r
+ if( pettanr.util.hasClassName( b, ns + disabled) === true) return false;\r
+ x = document.createElement('div');\r
+ b.appendChild(x);\r
+ x.style.cssText = 'width:1px;height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+ ret = x.offsetHeight > 1;\r
+ b.removeChild(x);\r
+ }\r
+ b.className += [ c !== '' ? ' ' : c, ns, ret === true ? enabled : disabled ].join( '');\r
+ return ret;\r
+ })(),\r
+ VML = ( function(){\r
+ if( ActiveX === false || isIE === false || ieVersion > 8) return false;\r
var globalObjectName = pettanr.util.createGlobalUniqueName(),\r
- script;\r
- document.write( [ '<!--[if gte vml 1]><script id="detectVML">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( ''));\r
+ script,\r
+ id = 'detectVML';\r
+ document.write( [ '<!--[if gte vml 1]><script id="', id, '">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( ''));\r
if( window[globalObjectName] === 1){\r
- script = document.getElementById( 'detectVML');\r
+ script = document.getElementById( id);\r
script.parentNode.removeChild( script);\r
- window[globalObjectName] = script = null;\r
+ window[globalObjectName] = null;\r
return true;\r
}\r
- //pettanr.util.cleanCommnetNode();\r
return false;\r
})(),\r
isStandAloneMode = ( function(){\r
if( isIE === false) return false;\r
if( VML === true) return false;\r
var globalObjectName = pettanr.util.createGlobalUniqueName(),\r
- script;\r
- document.write( [ '<!--[if IE ', Math.floor( ieVersion), ']><script id="detectStandAlone">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( ''));\r
+ script,\r
+ id = 'detectStandAlone';\r
+ document.write( [ '<!--[if IE ', Math.floor( ieVersion), ']><script id="', id, '">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( ''));\r
if( window[globalObjectName] === 1){\r
- script = document.getElementById( 'detectStandAlone');\r
+ script = document.getElementById( id);\r
script.parentNode.removeChild( script);\r
- window[globalObjectName] = script = null;\r
+ window[globalObjectName] = null;\r
return false;\r
}\r
- //pettanr.util.cleanCommnetNode();\r
return true;\r
})();\r
return {\r
}\r
return '';\r
})(),\r
- ACTIVEX: ( function(){\r
- if( isIE === false || ieVersion > 8) return false;\r
- var b = document.body,\r
- c = b.className || '',\r
- x,\r
- ret = pettanr.URL_PARAMS.ActiveX;\r
- if( ret === undefined){\r
- if( pettanr.util.hasClassName( b, 'pettanr-ActiveX-enabled') === true) return true;\r
- if( pettanr.util.hasClassName( b, 'pettanr-ActiveX-disabled') === true) return false;\r
- x = document.createElement('div');\r
- b.appendChild(x);\r
- x.style.cssText = 'width:1px;height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
- ret = x.offsetHeight > 1;\r
- b.removeChild(x);\r
- }\r
- b.className += [ c !== '' ? ' ' : c, 'pettanr-ActiveX-', ret === true ? 'enabled' : 'disabled'].join( '');\r
- return ret;\r
- })(),\r
+ ACTIVEX: ActiveX,\r
VML: VML,\r
STANDALONE: isStandAloneMode,\r
startVML: function(){\r
\r
pettanr.CONST = ( function(){\r
var isLocal = pettanr.LOCAL === true || pettanr.URL_PARAMS.exjson === false,\r
- RETTANR_ROOOT_PATH = 'http:\/\/pettanr.heroku.com\/';\r
+ isLocalhost = document.location.href.indexOf( 'http:\/\/localhost:3000\/' ) === 0,\r
+ RETTANR_ROOT_PATH = isLocalhost === true ? 'http:\/\/localhost:3000\/' : 'http:\/\/pettanr.heroku.com\/';\r
+ \r
return {\r
- PETTANR_ROOT_PATH: RETTANR_ROOOT_PATH,\r
- URL_ORIGINAL_PICTURES_JSON: ( isLocal === true ? 'json\/' : RETTANR_ROOOT_PATH) + 'original_pictures.json',\r
- URL_PANELS_JSON: ( isLocal === true ? 'json\/' : RETTANR_ROOOT_PATH) + 'panels.json',\r
+ PETTANR_ROOT_PATH: RETTANR_ROOT_PATH,\r
+ URL_ORIGINAL_PICTURES_JSON: ( isLocal === true ? 'json\/' : RETTANR_ROOT_PATH) + 'original_pictures.json',\r
+ URL_PANELS_JSON: ( isLocal === true ? 'json\/' : RETTANR_ROOT_PATH) + 'panels.json',\r
NS_PETTANR_COMIC: 'pettanr-comic',\r
- RESOURCE_PICTURE_PATH: ( isLocal === true ? pettanr.ROOT_PATH : RETTANR_ROOOT_PATH) + 'resource_pictures\/'\r
+ RESOURCE_PICTURE_PATH: ( isLocal === true ? pettanr.ROOT_PATH : RETTANR_ROOT_PATH) + 'resource_pictures\/'\r
}\r
})();\r
\r
pettanr.view = ( function(){\r
/* create iframe overlay for user console */\r
var location = document.location.pathname,\r
- isWorkPage = location.indexOf( '\/work.html') !== -1 || location.indexOf( '\work.html') !== -1,\r
+ isWorkPage = document.location.href.indexOf( 'http:\/\/localhost:3000\/' ) === 0 ||\r
+ location.indexOf( pettanr.CONST.PETTANR_ROOT_PATH ) === 0 ||\r
+ location.indexOf( '\/work.html') !== -1 ||\r
+ location.indexOf( '\work.html') !== -1,\r
deep = location.indexOf( '\/diary\/') !== -1 ||\r
location.indexOf( '\/test\/') !== -1 ||\r
location.indexOf( '\/help\/') !== -1 ||\r
location.indexOf( '\/sitemap\/') !== -1 ||\r
location.indexOf( '\/wiki\/') !== -1,\r
LoginUserNavi;\r
-\r
+ \r
if( isWorkPage === false){\r
LoginUserNavi = ( function(){\r
var _body = document.body,\r
- _root = document.getElementsByTagName( 'html')[ 0],\r
+ _root = document.getElementsByTagName( 'html' )[ 0 ],\r
filter,\r
iframe, visible = false;\r
return {\r
- init: function( viewIndex){\r
- filter = document.createElement( 'div');\r
- filter.style.position = 'absolute';\r
- filter.style.left = filter.style.top = '0px';\r
- filter.style.width = filter.style.height ='100%';\r
- filter.style.backgroundColor = '#fff';\r
- \r
- var ua = pettanr.ua,\r
- id = 'work',\r
- src = [\r
- deep === true ? '../' : '',\r
- 'work.html',\r
- typeof viewIndex === 'number' ? '?view=' +viewIndex : ''\r
- ].join( '');\r
- \r
- var el = document.createElement(ua.isIE ? '<iframe name="' + id + '" src="' + src + '">' : 'iframe');\r
- el.id = el.name = id;\r
- el.setAttribute( 'name', id);\r
- \r
- el.style.position = 'absolute';\r
- el.style.left = el.style.top = '0px';\r
- el.style.width = el.style.height ='100%';\r
- //el.style.overflow = 'hidden';\r
- el.hspace = el.vspace = el.marginheight = el.marginwidth = 0;\r
- \r
- _body.appendChild(el);\r
- window[id] = el;\r
- iframe = el;\r
- \r
- if (!ua.isIE) {\r
- var idoc;//WebKit > 521 corresponds with Safari 3, which started with 522 WebKit version.\r
- if (ua.isWebKit > 521) {\r
- idoc = el.contentWindow.document;\r
- } else if (ua.isSafari) {\r
- idoc = el.document;\r
- } else { // if(d.isMozilla){\r
- idoc = el.contentWindow;\r
- }\r
- \r
- if ( !idoc) {\r
- try {\r
- el.src = src;\r
- el.contentWindow.location.replace = src; \r
- } catch (e){}\r
- try {\r
- //el.contentWindow.location = src; \r
- } catch (e){}\r
- try {\r
- el.location = src; // for Safari 2.0.3 ??\r
- } catch (e){}\r
- \r
- } else if( ua.isOpera){\r
- el.src = src; // for Opera\r
- el.contentWindow.location.replace = src; // for Opera\r
- } else {\r
- //el.src = src; // for firefox\r
- idoc.location.replace(src);\r
- }\r
- }\r
- \r
- delete LoginUserNavi.init;\r
- },\r
show: function(){\r
- if(visible === true) return;\r
- if (_root) {\r
- _root.style.overflow = 'hidden';\r
- }\r
- _body.style.overflow = 'hidden';\r
- \r
- var index = ( function( a){\r
- var node = a.parentNode.getElementsByTagName( 'a'),\r
- l = node.length;\r
- for( var i=0; i<l; ++i){\r
- if( node[ i] === a) return i\r
- }\r
- return -1;\r
- })( this);\r
- if( index === -1) return false;\r
- \r
- LoginUserNavi.init && LoginUserNavi.init( index);\r
- \r
- iframe.parentNode !== _body && _body.appendChild( iframe);\r
- \r
- _body.insertBefore( filter, iframe);\r
- \r
- visible = true;\r
- \r
- return false;\r
+ document.location.href = [\r
+ deep === true ? '../' : '',\r
+ 'work.html',\r
+ typeof viewIndex === 'number' ? '?view=' + viewIndex : ''\r
+ ].join( '');\r
},\r
- hide: function(){\r
- if(visible === false) return;\r
- \r
- _body.removeChild(filter);\r
- _body.style.overflow = '';\r
- if (_root) {\r
- _root.style.overflow = '';\r
- }\r
- _body.removeChild(iframe);\r
- \r
- visible = false;\r
- }\r
+ hide: function(){}\r
}\r
})();\r
} else {\r
LoginUserNavi = ( function(){\r
return {\r
show: function(){\r
- var _nodes = this.parentNode.getElementsByTagName( 'a');\r
- for( var i=0, l=_nodes.length; i<l; ++i){\r
- if( _nodes[ i] === this){\r
- pettanr.view.show( i);\r
- break;\r
- }\r
- }\r
+ var i = pettanr.util.getChildIndex( this.parentNode, this );\r
+ i !== -1 && pettanr.view.show( i );\r
return false;\r
},\r
hide: function(){}\r
})();\r
\r
/*\r
- * bind : 出版
+ * bind : 製本
*/\r
pettanr.bind = ( function(){\r
var BIND_WORKER_ARRAY = [],\r
TIMER = null,\r
FILTER = 'filter',\r
OPACITY = 'opacity',\r
+ REG_ALPHA = /alpha\([^)]*\)/i,\r
CORON = ':',\r
EMPTY = '',\r
SEMICORON = ';';\r
}\r
}\r
// coputedStyle と _cssObject を比較して , 一致及び非数は削除しつつ コピー\r
+ // filter opacity の追加 REG_ALPHA.test( _value ) ? _value.replace( REG_ALPHA, opacity ) : _value + " " + opacity\r
+ /*\r
+ * cssObject をまわす\r
+ * 非数は削除\r
+ * cssText と一致も削除\r
+ * coputedStyle と一致も削除\r
+ * updateTraget ととして記録\r
+ * 初期値を cssObject としてセット\r
+ * cssTest にセット zoom もセット
+ */\r
+ \r
//\r
+ /*\r
+ var style = elem.style,\r
+ currentStyle = elem.currentStyle,\r
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\r
+ filter = currentStyle && currentStyle.filter || style.filter || "";\r
+\r
+ // IE has trouble with opacity if it does not have layout\r
+ // Force it by setting the zoom level\r
+ style.zoom = 1;
+ */\r
+ \r
var _currentParameters = [],\r
_offsetParameters = [],\r
_endParameters = [],\r
if( _numAttributes > 1){\r
var _cssTexts = _elm.style.cssText.split( ';'), _css,\r
_separate,\r
- _cssObject = {}, _target, _value, _number, _type, _new,\r
+ _cssObject = {}, _target, _value, _number, _px,\r
j;\r
for(var i=0, l=_cssTexts.length; i<l; ++i){\r
_css = _cssTexts[ i];\r
if( _target === FILTER){\r
for( j=0; j<_numAttributes; ++j){\r
if( _targetAttributes[ j] === OPACITY){\r
- \r
- \r
- \r
+ _cssTexts[ i] = [\r
+ _target, ':',\r
+ _value.replace( REG_ALPHA, "alpha(opacity=" + _updateParameters[ j] * 100 + ")")\r
+ ].join( '');\r
break;\r
}\r
}\r
*/\r
} else {\r
_number = '' + parseFloat( _value);\r
- _type = _value.indexOf( _number);\r
- _type = _type > 0 ? _value.substr( _type + _number.length) : '';\r
+ _px = _value.indexOf( _number);\r
+ _px = _px > 0 ? _value.substr( _px + _number.length) : '';\r
for( j=0; j<_numAttributes; ++j){\r
if( _targetAttributes[ j] === _target){\r
- _cssTexts[ i] = [ _target, ':', _updateParameters[ j], _type].join( '');\r
+ _cssTexts[ i] = [ _target, ':', _updateParameters[ j], _px].join( '');\r
break;\r
}\r
} \r
/*\r
* 一度に update する Attributes が少ない場合、cssText は使用しない.
*/\r
- \r
}\r
\r
var AnimationTaskClass = function( ELM, currentParameters, offsetParameters, endParameters, targetAttributes, onComplete, onEnterFrame, numFrames){\r
/*
* pettanR system.js
- * version 0.4.2
+ * version 0.4.4
*
* author:
* itozyun
* 画像一覧を読み込むタイミング
*/
pettanr.file = ( function(){
- var TREE_TYPE_IS_COMIC = 1,
- TREE_TYPE_IS_IMAGE = 2,
- FILE_TYPE_IS_FOLDER = 1,
- FILE_TYPE_IS_COMIC = 10,
- FILE_TYPE_IS_PANEL = 11,
- FILE_TYPE_IS_IMAGE = 20,
- FILE_TYPE_IS_HTML = 30,
- FILE_TYPE_IS_SETTING = 40,
- FOLDER_TYPE_IS_COMIC = 1,
- FILE_STATE_IS_UNKNOWN = 0,
- FILE_STATE_IS_OK = 1,
- FILE_STATE_IS_LOADING = 2,
- FILE_STATE_IS_ERROR = 3,
- FILE_STATE_IS_BROKEN = 4,
- TREE_EVENT_UPDATE = 'onTreeUpdate',
- FILE_EVENT_UPDATE_ATTRIVUTE = 'onFileUpdate',
- FILE_EVENT_GET_SEQENTIAL_FILES = 'gotSeqentilFiles',
- ROLE_IS_SUPER_USER = 2^4,
- ROLE_IS_OWNER = 2^3,
- ROLE_IS_CREATOR = 2^2,
- ROLE_IS_ARTIST = 2^1,
- ROLE_IS_VISITOR = 2^0,
- ROLE_IS_UNKROWN = 2^-1,
- UPDATE_POLICY_SOCAV = parseInt( '11111', 2),// s: super user
- UPDATE_POLICY_SOCA_ = parseInt( '11110', 2),// o: owner( comic || panel || picture )
- UPDATE_POLICY_SOC__ = parseInt( '11100', 2),// c: creator
- UPDATE_POLICY_SO_A_ = parseInt( '11010', 2),// a: artist
- UPDATE_POLICY_SO___ = parseInt( '11000', 2),// v: visitor
- UPDATE_POLICY__O___ = parseInt( '01000', 2),// l: lisence manager
- UPDATE_POLICY_S____ = parseInt( '10000', 2),
- UPDATE_POLICY______ = parseInt( '00000', 2),
+ var FILE_TYPE_IS_FOLDER = 1,
+ numFileType = FILE_TYPE_IS_FOLDER,
FILEDATA_RESITER = [], // store all of fileData( json object )
- FILEDATA_HAS_domainID_RESISTER = {},
FILEDATA_ACCESS = [], // file operations for Kernel only ! hide from Out of pettanr.file
- FILE_OBJECT_POOL = [];
+ FILE_OBJECT_POOL = [],
+ EVENT_LISTENER_RESISTER = [],
+ TREE_ARRAY = [],
+ TREE_ACCESS_ARRAY = [];
var REQUEST_CONTROLER = ( function(){
var REQUEST_TICKET_RESISTER = [],
}
return {
- init: function(){
- delete REQUEST_CONTROLER.init;
- },
getNumTask: function(){
return REQUEST_TICKET_RESISTER.length;
},
var FILE_CONTROLER = ( function(){
- var EVENT_LISTENER_RESISTER = [],
- TREE_ARRAY = [],
- TREE_ACCESS_ARRAY = [],
- instance;
-
- var TreeClass = function( ROOTFILE_DATA){
- var UID = TREE_ACCESS_ARRAY.length,
- PARENT_FILE_RESITER = [],
- ACCESS = {
- fileEventChatcher: dispatchFileEvent,
- destroy: onDestroy
- },
- EVENT_LISTENER_ARRAY = [],
- rootFile,
- rootFileData,
- currentFile,
- currentFileData,
- instance;
-
- TREE_ACCESS_ARRAY.push( ACCESS);
-
- function onDestroy(){
-
- }
-
- function dispatchFileEvent( e){
- var _eventType = e.eventType,
- _targetFile = e.targetFile,
- _ticket, _type, _file, _callback,
- l = EVENT_LISTENER_RESISTER.length;
- for(var i=0; i<l; ++i){
- _ticket = EVENT_LISTENER_RESISTER[i],
- _type = _ticket.eventType,
- _file = _ticket.targetFile,
- _callback = _ticket.callBack;
- if( _eventType === _type && _file.getUID() === _targetFile.getUID()){
- _callback( _type, _targetFile, e.key, e.value);
- } else if( _type === TREE_EVENT_UPDATE && _eventType === FILE_EVENT_GET_SEQENTIAL_FILES){
- _callback( TREE_EVENT_UPDATE, _targetFile);
- }
- }
- }
-
- return {
- init: function(){
- instance = this;
- currentFile = rootFile = new FileClass( this, null, ROOTFILE_DATA);
- rootFile.init();
- FILE_CONTROLER.getSeqentialFiles( currentFile);
- delete this.init;
- },
- getUID: function(){ return UID},
- getRootFile : function(){
- return rootFile;
- },
- getCurrentFile: function(){
- return currentFile;
- },
- hierarchy: function(){
- return PARENT_FILE_RESITER.length;
- },
- getParentFileAt: function( _index){
- var l = PARENT_FILE_RESITER.length;
- if( typeof _index !== 'number' || _index < 0 || _index >= l) return null;
- return PARENT_FILE_RESITER[ l -1 -_index];
- },
- down: function( _index){
- if( typeof _index !== 'number' || _index < 0 || _index >= currentFile.getChildFileLength()) return;
- PARENT_FILE_RESITER.unshift( currentFile);
- currentFile = currentFile.getChildFileByIndex( _index);
- FILE_CONTROLER.getSeqentialFiles( currentFile);
- return currentFile;
- },
- up: function( _index){
- var l = PARENT_FILE_RESITER.length;
- if( l === 0) return null;
- if( typeof _index === 'number'){
- if( _index >= l) return null;
- currentFile = this.getParentFileAt( _index);
- PARENT_FILE_RESITER.splice( 0, l -_index);
- } else {
- currentFile = PARENT_FILE_RESITER.shift();
- }
- FILE_CONTROLER.getSeqentialFiles( currentFile);
- return currentFile;
- },
- addTreeEventListener: function( _eventType, _callback){
- EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( null, _eventType, _callback));
- },
- removeTreeEventListener: function( _eventType, _callback){
-
- },
- createSearchResultFolder: function( _searchParam){
-
- },
- destroySearchResultFolder: function( _searchParam){
-
- },
- destroy: function(){
- destroyTree( UID);
- }
- }
- };
- /**
- * _access.DATA === FILEDATA_RESITER[uid]
- */
- function getFileDataAccess( UIDorFILEorFILEDATA){
- var l = FILEDATA_ACCESS.length,
- _uid,
- _data,
- _access;
-
- if( typeof UIDorFILEorFILEDATA === 'number'){
- _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
- } else
- if( UIDorFILEorFILEDATA instanceof FileClass){
- _uid = UIDorFILEorFILEDATA.getUID();
- _data = FILEDATA_RESITER[ _uid] || null;
- } else {
- _data = UIDorFILEorFILEDATA || null;
- }
-
- if( _data === null || !_data) return null;
- for(var i=0; i<l; ++i){
- _access = FILEDATA_ACCESS[ i];
- if( _access.DATA === _data) return _access;
- }
- return null;
- }
- function getChildren( UIDorFILE){
- var _access = getFileDataAccess( UIDorFILE);
- return _access !== null ? _access.DATA.CHILDREN : null
- }
- function onLoadJson( _file, _json){
- var _access = getFileDataAccess( _file),
- _data = _access !== null ? _access.DATA : null,
- l = _json.length,
- _fileData;
- if( _data == null){
- onErrorJson( _file);
- return;
- }
- if( l === 0) return;
- if( !_data.children){
- _data.children = [];
- }
- var _children = _data.children,
- _childType = _data.childType,
- _newData,
- _rFolderData,
- _artistFolderData, _artistFolder,
- _comicFolderData, _comicFolder,
- _authorFolderData, _authorFolder,
- _reaourceID = buildDomainID( _data.json, _childType);
-
- for(var i=0; i<l; ++i){
- _newData = buildFileData( _json[ i], _data.json, _data, _childType);
-
- if( _reaourceID !== null){
- _rFolderData = getDomainFolder( _reaourceID, _childType, _file);
- _rFolderData.children.push( _newData);
- }
- if( _newData.artist){
- _artistFolderData = _artistFolderData || getDomainFolder( buildDomainID( _data.json, 'artist'), 'Artists', _file);
- _artistFolder = _artistFolder || new FileClass( SYSTEM_TREE, _file, _artistFolderData);
- _rFolderData = getDomainFolder( buildDomainID( _artistFolderData.rID, '' +_newData.artist.id), _newData.artist.name, _artistFolder);
- _rFolderData.children.push( _newData);
- }
- if( _newData.comic){
- _comicFolderData = _comicFolderData || getDomainFolder( buildDomainID( _data.json, 'comic'), 'Comics', _file);
- _comicFolder = _comicFolder || new FileClass( SYSTEM_TREE, _file, _comicFolderData);
- _rFolderData = getDomainFolder( buildDomainID( _comicFolderData.rID, '' +_newData.comic.id), _newData.comic.title, _comicFolder);
- _rFolderData.children.push( _newData);
- }
- if( _newData.author){
- _authorFolderData = _authorFolderData || getDomainFolder( buildDomainID( _data.json, 'author'), 'Author', _file);
- _authorFolder = _authorFolder || new FileClass( SYSTEM_TREE, _file, _authorFolderData);
- _rFolderData = getDomainFolder( buildDomainID( _authorFolderData.rID, '' +_newData.author.id), _newData.author.name, _authorFolder);
- _rFolderData.children.push( _newData);
- }
- }
- delete _data.json;
- _artistFolder && _artistFolder.collect();
- _comicFolder && _comicFolder.collect();
- _authorFolder && _authorFolder.collect();
- _access.fileEventChatcher( new FileEventClass( FILE_EVENT_GET_SEQENTIAL_FILES, _file, 'children', null));
- }
- function onErrorJson( _file){
- var _access = getFileDataAccess( _file),
- _data = _access !== null ? _access.DATA : null;
- if( _data !== null){
- _data.state = FILE_STATE_IS_ERROR;
- }
- }
- function buildFileData( _data, _url, _parent, _type){
- _data.type = _type;
-
- if( _type === FILE_TYPE_IS_PANEL){
- _data.comicFileData = _parent;
- }
-
- FILEDATA_RESITER.push( _data);
-
- return _data;
- }
- function buildDomainID( _url, _type){
- if( !_url) return null;
- var _typeStr = null;
-
- if( typeof _type !== 'number'){
- _typeStr = _type
- } else
- if( _type === FILE_TYPE_IS_IMAGE){
- _typeStr = 'image';
- } else
- if( _type === FILE_TYPE_IS_COMIC){
- _typeStr = 'comic';
- }
- if( _type === FILE_TYPE_IS_PANEL){
- _typeStr = 'panel';
- }
- if( _typeStr === null) return null;
-
- return [ _url.replace(/https?:\/\/([^\/]*).*/, '$1'), _typeStr].join('_');
- }
- /**
- * getFileByResourceID( _domainID, opt_name, opt_folder)
- * opt 指定で 新しいフォルダの作成
- * rID を持つ Object は {} にも格納.
- */
- function getDomainFolder( _domainID, opt_name, opt_folder){
- if( FILEDATA_HAS_domainID_RESISTER[ _domainID]){
- return FILEDATA_HAS_domainID_RESISTER[ _domainID];
- }
- if( !opt_name && !opt_folder) return;
-
- var _fileName;
-
- if( typeof opt_name === 'string'){
- _fileName = opt_name;
- } else
- if( opt_name === FILE_TYPE_IS_IMAGE){
- _fileName = 'Pictures';
- } else
- if( opt_name === FILE_TYPE_IS_COMIC){
- _fileName = 'Comics';
- } else
- if( opt_name === FILE_TYPE_IS_PANEL){
- _fileName = 'Panels';
- } else {
- _fileName = typeof opt_name;
- }
-
- var _newData = {
- name: _fileName,
- type: FILE_TYPE_IS_FOLDER,
- rID: _domainID,
- children: []
- };
- FILEDATA_RESITER.push( _newData);
- FILEDATA_HAS_domainID_RESISTER[ _domainID] = _newData;
-
- if( opt_folder && opt_folder.isChildFile( _newData) === false){
- var _access = getFileDataAccess( opt_folder),
- _data = _access !== null ? _access.DATA : null;
- _access === null && alert( _domainID)
- if( _data !== null){
- _data.children.push( _newData);
- }
- }
-
- return _newData;
- }
-
- function destroyTree(){
-
- }
return {
- init: function(){
- instance = this;
- delete FILE_CONTROLER.init;
- },
createTree: function( _rootFileData){
var _tree = new TreeClass( _rootFileData);
_tree.init();
TREE_ARRAY.push( _tree);
return _tree;
},
- getFileData: function( _file){
- var _access = getFileDataAccess( _file);
+ getFileData: function( UIDorFILEorFILEDATA){
+ var _access = FILE_CONTROLER.getFileDataAccess( UIDorFILEorFILEDATA);
return _access !== null ? _access.DATA : null;
},
+ getChildren: function( UIDorFILEorFILEDATA){
+ var _data = FILE_CONTROLER.getFileData( UIDorFILEorFILEDATA);
+ return _data !== null ? _data.children || null : null;
+ },
+ getFileDataAccess: function( UIDorFILEorFILEDATA){
+ var _uid, _data, _access;
+
+ if( typeof UIDorFILEorFILEDATA === 'number'){
+ _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
+ } else
+ if( UIDorFILEorFILEDATA instanceof FileClass){
+ _uid = UIDorFILEorFILEDATA.getUID();
+ _data = FILEDATA_RESITER[ _uid] || null;
+ } else {
+ _data = UIDorFILEorFILEDATA || null;
+ }
+
+ if( _data === null || !_data) return null;
+ for( var i=0, l = FILEDATA_ACCESS.length; i<l; ++i){
+ _access = FILEDATA_ACCESS[ i];
+ if( _access.DATA === _data) return _access;
+ }
+ return null;
+ },
+ getDriver: function( _file){
+ var _data = FILE_CONTROLER.getFileData( _file);
+ return _data !== null && _data.driver ? ( _data.driver || FileDriverBase) : null;
+ },
getUID: function ( _filedata){
var l = FILEDATA_RESITER.length;
for( var i=0; i<l; ++i){
return -1;
},
getSeqentialFiles: function( _file){
- var _data = this.getFileData( _file),
- _json = _data ? _data.json : null;
- if( _json !== null){
- REQUEST_CONTROLER.getJson( _file, _json, onLoadJson, onErrorJson);
+ var _driver = FILE_CONTROLER.getDriver( _file);
+ if( _driver !== null && typeof _driver.getSeqentialFiles === 'function'){
+ _driver.getSeqentialFiles( _file);
}
},
updateFileAttribute: function( _uid, key, _value, _opt_callback){
- var _data = getFileDataAccess( _uid),
+ var _data = FILE_CONTROLER.getFileDataAccess( _uid),
_type = _data.TYPE;
},
getFileAttribute: function( _uid, KEYorKEYARRAY){
- var _fileData = getFileDataAccess( _uid),
+ var _fileData = FILE_CONTROLER.getFileDataAccess( _uid),
_type = _fileData.TYPE;
},
move: function( _prentUID, _targetfile, _newFolder, _newIndex, _opt_callback){
- var _parentData = getFileDataAccess( _prentUID),
+ var _parentData = FILE_CONTROLER.getFileDataAccess( _prentUID),
_parentType = _parentData.TYPE,
- _targetData = getFileDataAccess( _targetfile),
+ _targetData = FILE_CONTROLER.getFileDataAccess( _targetfile),
_targetType = _targetData.TYPE;
},
replace: function( _uid, _file, _newIndex){
},
+ addEventListener: function( FILEorNULL, _eventType, _callback){
+ var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL;
+ EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( _uid, _eventType, _callback));
+ },
+ removeEventListener: function( FILEorNULL, _eventType, _callback){
+ var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL,
+ _ticket;
+ for(var i=0, l = EVENT_LISTENER_RESISTER.length; i<l; ++i){
+ _ticket = EVENT_LISTENER_RESISTER[i];
+ if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback){
+ EVENT_LISTENER_RESISTER.splice( i, 1);
+ _ticket.destroy();
+ }
+ }
+ },
fileEventRellay: function( _targetFile, _targetTree, _event){
var _uid = _targetTree.getUID(),
_access = TREE_ACCESS_ARRAY[ _uid],
l = TREE_ARRAY.length,
_tree, _currentFile;
- _access !== undefined && _access.fileEventChatcher( _event);
+ _access !== undefined && _access.dispatchFileEvent( _event);
for(var i=0; i<l; ++i){
if( i !== _uid){
_tree = TREE_ARRAY[i];
_currentFile = _tree.getCurrentFile();
if( FILE_CONTROLER.getFileData( _currentFile) === _access.DATA){
- _tree.fileEventChatcher( _event);
+ TREE_ACCESS_ARRAY[ _tree.getUID()].dispatchFileEvent( _event);
}
}
}
}
})();
- var FileEventTicketClass = function( UID, _eventType, _callback){
+ var TreeClass = function( ROOTFILE_DATA){
+ var UID = TREE_ACCESS_ARRAY.length,
+ PARENT_FILE_RESITER = [],
+ ACCESS = {
+ dispatchFileEvent: dispatchFileEvent,
+ destroy: onDestroy
+ },
+ EVENT_LISTENER_ARRAY = [],
+ rootFile,
+ rootFileData,
+ currentFile,
+ currentFileData,
+ instance;
+
+ TREE_ACCESS_ARRAY.push( ACCESS);
+
+ function onDestroy(){
+
+ }
+
+ function dispatchFileEvent( e){
+ var _eventType = e.eventType,
+ _targetFile = e.targetFile,
+ _uid = _targetFile.getUID(),
+ _ticket, _type, _callback;
+ for(var i=0, l = EVENT_LISTENER_RESISTER.length; i<l; ++i){
+ _ticket = EVENT_LISTENER_RESISTER[i],
+ _type = _ticket.eventType,
+ _callback = _ticket.callBack;
+ if( _eventType === _type && _uid === _ticket.fileUID){
+ _callback( _eventType, _targetFile, e.key, e.value);
+ } else
+ if( _type === pettanr.file.TREE_EVENT.UPDATE && _eventType === pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES){
+ _callback( _eventType, _targetFile);
+ }
+ }
+ }
+
return {
- fileUID: UID,
- eventType: _eventType,
- callBack: _callback,
+ init: function(){
+ instance = this;
+ currentFile = rootFile = new FileClass( this, null, ROOTFILE_DATA);
+ rootFile.init();
+ FILE_CONTROLER.getSeqentialFiles( currentFile);
+ delete this.init;
+ },
+ getUID: function(){ return UID},
+ getRootFile : function(){
+ return rootFile;
+ },
+ getCurrentFile: function(){
+ return currentFile;
+ },
+ hierarchy: function(){
+ return PARENT_FILE_RESITER.length;
+ },
+ getParentFileAt: function( _index){
+ var l = PARENT_FILE_RESITER.length;
+ if( typeof _index !== 'number' || _index < 0 || _index >= l) return null;
+ return PARENT_FILE_RESITER[ l -1 -_index];
+ },
+ down: function( _index){
+ if( typeof _index !== 'number' || _index < 0 || _index >= currentFile.getChildFileLength()) return;
+ PARENT_FILE_RESITER.unshift( currentFile);
+ currentFile = currentFile.getChildFileByIndex( _index);
+ FILE_CONTROLER.getSeqentialFiles( currentFile);
+ return currentFile;
+ },
+ up: function( _index){
+ var l = PARENT_FILE_RESITER.length;
+ if( l === 0) return null;
+ if( typeof _index === 'number'){
+ if( _index >= l) return null;
+ currentFile = this.getParentFileAt( _index);
+ PARENT_FILE_RESITER.splice( 0, l -_index);
+ } else {
+ currentFile = PARENT_FILE_RESITER.shift();
+ }
+ FILE_CONTROLER.getSeqentialFiles( currentFile);
+ return currentFile;
+ },
+ addTreeEventListener: function( _eventType, _callback){
+ FILE_CONTROLER.addEventListener( null, _eventType, _callback);
+ },
+ removeTreeEventListener: function( _eventType, _callback){
+ FILE_CONTROLER.removeEventListener( null, _eventType, _callback);
+ },
destroy: function(){
- this.callBack = _callback = null;
+ FILE_CONTROLER.destroyTree( UID);
}
}
+ };
+
+ var FileEventTicketClass = function( UID, _eventType, _callback){
+ this.fileUID = UID;
+ this.eventType = _eventType;
+ this.callBack = _callback;
+ this.destroy = function(){
+ this.callBack = _callback = null;
+ }
}
var FileEventClass = function( eventType, file, key, value){
- return {
- eventType: eventType,
- targetFile: file,
- updatedAttribute: key,
- updatedValue: value
- }
+ this.eventType = eventType;
+ this.targetFile = file;
+ this.updatedAttribute = key;
+ this.updatedValue = value;
}
/*
data.children = [];
}
var TYPE = data.type,
- name = data.name || null,
+ name = null,
+ driver = data.driver || FileDriverBase,
thumbnail = null,
uid = FILE_CONTROLER.getUID( data),
CHILDREN = data.children,
- instance;
+ instance = this;
if( uid === -1){
- //alert( 'invalid uid');
uid = FILEDATA_RESITER.length;
FILEDATA_RESITER.push( data);
}
DATA: data,
destroy: destroy,
updateParent: updateParent,
- fileEventChatcher: dispatchEvent
+ dispatchFileEvent: dispatchEvent
}
);
function destroy(){
- name = thumbnail = parentFile = data = CHILDREN = null;
+ name = thumbnail = parentFile = data = CHILDREN = driver = null;
}
function updateParent( _parent){
/* grobal Methods */
this.init = function(){
- instance = this;
+ //instance = this;
delete this.init;
}
- this.TYPE = function(){
+ this.getType = function(){
return TYPE;
}
this.getName = function(){
if( name !== null) return name;
- if( data.name){
- return data.name;
- }
- if( TYPE === FILE_TYPE_IS_IMAGE){
- name = [ data.id, data.ext].join( '.');
- } else
- if( TYPE === FILE_TYPE_IS_PANEL){
- name = data.comic.title + ' | ' +data.t;
+ if( typeof driver.getName === 'function'){
+ name = driver.getName( instance);
}
- return name || 'no_name';
+ return name;
}
this.getThumbnail = function(){
if( thumbnail !== null) return thumbnail;
- if( TYPE === FILE_TYPE_IS_IMAGE){
- thumbnail = [ 'thumbnail/', data.id, '.', data.ext].join( '');
+ if( typeof driver.getThumbnail === 'function'){
+ thumbnail = driver.getThumbnail( instance);
}
return thumbnail || null;
}
this.getUID = function(){
return uid;
}
- this.getState = function(){
- return data.state !== undefined ? data.state : FILE_STATE_IS_OK;
- }
- this.getChildFileLength = function(){
- return CHILDREN && typeof CHILDREN.length === 'number' ? CHILDREN.length : 0;
- }
this.getChildFileByIndex = function( _index){
if( typeof _index !== 'number' || _index < 0 || typeof CHILDREN.length !== 'number' || _index >= CHILDREN.length) return null;
_file = new FileClass( TREE, this, CHILDREN[ _index]);
_file.init();
return _file;
}
- this.getChildFileIndex = function( _FILEorFILEDATA){
+ this.move = function( _newFolder, _newIndex, opt_callback){
+ TREE.move( parentFile, UID, _newFolder, _newIndex, opt_callback);
+ }
+ this.replace = function( _newIndex, opt_callback){
+ TREE.replace( parentFile, UID, _newIndex, opt_callback);
+ }
+ this.destroy = function(){
+
+ }
+ };
+ FileClass.prototype = {
+ isChildFile: function( _FILEorFILEDATA){
+ return this.getChildFileIndex( _FILEorFILEDATA) !== -1;
+ },
+ getSeqentialFiles: function(){
+ FILE_CONTROLER.getSeqentialFiles( this);
+ },
+ addEventListener: function( _eventType, _callback){
+ FILE_CONTROLER.addEventListener( this, _eventType, _callback);
+ },
+ removeEventListener: function( _eventType, _callback){
+ FILE_CONTROLER.removeEventListener( this, _eventType, _callback);
+ },
+ getChildFileLength: function(){
+ var CHILDREN = FILE_CONTROLER.getChildren( this);
+ return CHILDREN && typeof CHILDREN.length === 'number' ? CHILDREN.length : 0;
+ },
+ getChildFileIndex: function( _FILEorFILEDATA){
+ var CHILDREN = FILE_CONTROLER.getChildren( this);
+
if( !CHILDREN || typeof CHILDREN.length !== 'number') return -1;
var l = CHILDREN.length,
_fileData = FILE_CONTROLER.getFileData( _FILEorFILEDATA);
if( CHILDREN[ i] === _fileData) return i;
}
return -1;
+ },
+ getState: function(){
+ var _data = FILE_CONTROLER.getFileData( this);
+ return _data.state !== undefined ? _data.state : pettanr.file.FILE_STATE.OK;
}
- this.isChildFile = function( _FILEorFILEDATA){
- return this.getChildFileIndex( _FILEorFILEDATA) !== -1;
- }
- this.getAttribute = function( KEYorKEYARRAY){
- return FILE_CONTROLER.getFileAttribute( UID, KEYorKEYARRAY);
- }
- this.getSeqentialFiles = function(){
- FILE_CONTROLER.getSeqentialFiles( this);
- }
- this.updateAttribute = function( key, value, opt_callback){
- TREE.updateFileAttribute( UID, key, value, opt_callback);
- }
- this.move = function( _newFolder, _newIndex, opt_callback){
- TREE.move( parentFile, UID, _newFolder, _newIndex, opt_callback);
- }
- this.replace = function( _newIndex, opt_callback){
- TREE.replace( parentFile, UID, _newIndex, opt_callback);
- }
- this.addEventListener = function( _eventType, _callback){
- FILE_CONTROLER.addEventListener( UID, _eventType, _callback);
- }
- this.removeEventListener = function( _eventType, _callback){
- FILE_CONTROLER.removeEventListener( UID, _eventType, _callback);
- }
- this.collect = function(){
+ }
+
+ /*
+ * FileDriverBase
+ */
+ var FileDriverBase = {
+ getSeqentialFiles: function( _file){
+ },
+ getName: function( _file){
+ var _data = FILE_CONTROLER.getFileData( _file);
+ return _data.name || 'No Name';
+ },
+ getThumbnail: function( _file){
+ var _data = FILE_CONTROLER.getFileData( _file);
+ _type = _data.type,
+ _className = '';
+ if( _type === pettanr.file.FILE_TYPE.FOLDER){
+ _className = 'folder';
+ } else
+ if( _type === pettanr.file.FILE_TYPE.IMAGE){
+
+ } else
+ if( _type === pettanr.file.FILE_TYPE.TEXT){
+
+ } else
+ if( _type === pettanr.file.FILE_TYPE.HTML){
+
+ } else
+ if( _type === pettanr.file.FILE_TYPE.CSV){
+
+ } else
+ if( _type === pettanr.file.FILE_TYPE.JSON){
+
+ } else
+ if( _type === pettanr.file.FILE_TYPE.XML){
+
+ }
+ return {
+ image: null,
+ className: ' file-type-' + _className
+ }
+ },
+ isWritable: function( _file){
+ return false;
+ },
+ isSortable: function( _file){
+ return false;
+ },
+ isCreatable: function( _file){
+ return false;
+ },
+ read: function(){
+ return false;
+ },
+ write: function( _newName, _newData){
+ return false;
+ },
+ onCreate: function(){
+
+ },
+ onSort: function(){
+
+ },
+ onCopy: function(){
+
+ },
+ onDelete: function(){
}
- };
+ }
+
function getFileObject( TREE, parentFile, data){
- var _file;
- if( FILE_OBJECT_POOL.length > 0){
- _file = FILE_OBJECT_POOL.shift();
- } else {
- _file = new FileClass();
- }
+ var _file = FILE_OBJECT_POOL.length > 0 ? FILE_OBJECT_POOL.shift() : new FileClass();
_file.init( TREE, parentFile, data);
return _file;
}
var ROOT_FILEDATA = {
- name: 'root',
+ name: 'system root',
type: FILE_TYPE_IS_FOLDER,
children: []
},
- IMAGE_FILEDATA = {
- name: 'image root',
- type: FILE_TYPE_IS_FOLDER,
- json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON,
- children: [
- {
- name: 'My Pictures',
- type: FILE_TYPE_IS_FOLDER,
- children: [],
- childType: FILE_TYPE_IS_IMAGE
- }
- ],
- childType: FILE_TYPE_IS_IMAGE
- },
- COMIC_FILEDATA = {
- name: 'comic root',
- type: FILE_TYPE_IS_FOLDER,
- json: pettanr.CONST.URL_PANELS_JSON,
- children: [
- {
- name: 'My Comics',
- type: FILE_TYPE_IS_FOLDER,
- children: [],
- childType: FILE_TYPE_IS_COMIC
- }
- ],
- childType: FILE_TYPE_IS_PANEL
- };
- //FILEDATA_RESITER.push( ROOT_FILEDATA, IMAGE_FILEDATA, IMAGE_FILEDATA.children[0], COMIC_FILEDATA);
- ROOT_FILEDATA.children.push( COMIC_FILEDATA, IMAGE_FILEDATA);
-
- var SYSTEM_TREE = FILE_CONTROLER.createTree( ROOT_FILEDATA),
- ROOT_FILE = SYSTEM_TREE.getRootFile(),
- COMIC_ROOT_INDEX = ROOT_FILE.getChildFileIndex( COMIC_FILEDATA),
- IMAGE_ROOT_INDEX = ROOT_FILE.getChildFileIndex( IMAGE_FILEDATA);
-
+ SYSTEM_TREE = FILE_CONTROLER.createTree( ROOT_FILEDATA),
+ ROOT_FILE = SYSTEM_TREE.getRootFile();
+
+ function createFolderUnderRoot( _fileData){
+ ROOT_FILEDATA.children.push( _fileData);
+ FILE_CONTROLER.getFileDataAccess( ROOT_FILE)
+ .dispatchFileEvent( new FileEventClass( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, ROOT_FILE, 'children', null));
+ }
+ function createFileEvent( _eventType, _file, _key, _value){
+ return new FileEventClass( _eventType, _file, _key, _value)
+ }
+ function createFileTypeID(){
+ return ++numFileType;
+ }
+
return {
init: function(){
- REQUEST_CONTROLER.init();
- FILE_CONTROLER.init();
+ //REQUEST_CONTROLER.init();
+ //FILE_CONTROLER.init();
delete pettanr.file.init;
},
- createTree: function( _treeType){
- var _rootFile;
- if( _treeType === TREE_TYPE_IS_COMIC) _rootFile = COMIC_FILEDATA;
- if( _treeType === TREE_TYPE_IS_IMAGE) _rootFile = IMAGE_FILEDATA;
- if( !_rootFile) return null;
+ resisterDriver: function( _driver){
+ _driver.prototype = FileDriverBase;
+ /*
+ * File API
+ */
+ return {
+ createFolderUnderRoot: createFolderUnderRoot,
+ getFileDataAccess: FILE_CONTROLER.getFileDataAccess,
+ getFileData: FILE_CONTROLER.getFileData,
+ getJson: REQUEST_CONTROLER.getJson,
+ createFileEvent: createFileEvent,
+ createFileTypeID: createFileTypeID
+ }
+ },
+ createTree: function( _rootFile){
return FILE_CONTROLER.createTree( _rootFile);
},
- TREE_TYPE_IS_COMIC: 1,
- TREE_TYPE_IS_IMAGE: 2,
- TREE_TYPE_IS_SETTING: 3,
- FILE_TYPE_IS_FOLDER: FILE_TYPE_IS_FOLDER,
- FILE_TYPE_IS_IMAGE: FILE_TYPE_IS_IMAGE,
- FILE_TYPE_IS_PANEL: FILE_TYPE_IS_PANEL,
- FILE_TYPE_IS_SETTING: FILE_TYPE_IS_SETTING
+ isTreeInstance: function( _tree){
+ return _tree instanceof TreeClass;
+ },
+ isFileInstance: function( _file){
+ return _file instanceof FileClass;
+ },
+ FILE_TYPE: {
+ FOLDER: FILE_TYPE_IS_FOLDER,
+ IMAGE: createFileTypeID(),
+ TEXT: createFileTypeID(),
+ HTML: createFileTypeID(),
+ CSV: createFileTypeID(),
+ JSON: createFileTypeID(),
+ XML: createFileTypeID()
+ },
+ FILE_STATE: {
+ UNKNOWN: 0,
+ OK: 1,
+ LOADING: 2,
+ ERROR: 3,
+ BROKEN: 4
+ },
+ TREE_EVENT: {
+ UPDATE: 'onTreeUpdate'
+ },
+ FILE_EVENT: {
+ UPDATE_ATTRIVUTE: 'onFileUpdate',
+ GET_SEQENTIAL_FILES:'gotSeqentilFiles'
+ },
+ FILE_DATA_PROPERTY_RESERVED: [
+ 'children', 'driver', 'state', 'type', 'name'
+ ]
}
})();
function draw(){
var _thumb = file.getThumbnail();
- if( _thumb !== null){
+ if( _thumb.image){
ELM_THUMBNAIL.className = ICON_CLASSNAME + ' has-thumbnail';
- ELM_THUMBNAIL.style.backgroundImage = [ 'url(', _thumb, ')'].join( '');
+ ELM_THUMBNAIL.style.backgroundImage = [ 'url(', _thumb.image, ')'].join( '');
} else {
- ELM_THUMBNAIL.className = ICON_CLASSNAME + ' file-type-' +file.TYPE();
+ ELM_THUMBNAIL.className = ICON_CLASSNAME + ' ' +_thumb.className;
ELM_THUMBNAIL.style.backgroundImage = '';
}
ELM_FILENAME.innerHTML = file.getName();
onResize: function( w){
},
- collect: function(){
+ destroy: function(){
elmContainer.removeChild( ELM_WRAPPER);
file = elmContainer = null;
FINDER_ICON_POOL.push( instansce);
callback;
ELM_WRAPPER.onclick = onClick;
function draw(){
- ELM_FILENAME.className = 'file-icon-' +file.TYPE();
+ ELM_FILENAME.className = 'file-icon-' +file.getType();
ELM_FILENAME.innerHTML = file.getName();
}
function resize( index){
}
function onClick(){
callback( index);
+ return false;
}
return {
onResize: function( w){
},
- collect: function(){
+ destroy: function(){
elmContainer.removeChild( ELM_WRAPPER);
file = elmContainer = null;
BREAD_OBJECT_POOL.push( this);
}
}
- var FinderClass = function( ELM_CONTAINER, TREE_TYPE, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){
+ var FinderClass = function( ELM_CONTAINER, tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){
var ICON_ARRAY = [],
BREAD_ARRAY = [],
elmContainer = ELM_ORIGIN_CONTAINER.cloneNode( true),
elmStyleButton = nodesDiv[2],
elmActionButton = nodesDiv[3],
elmBody = nodesDiv[ nodesDiv.length -1],
- tree = pettanr.file.createTree( TREE_TYPE),
+ //tree = pettanr.file.createTree( TREE_TYPE),
headX,
headY,
headH = pettanr.util.getElementSize( ELM_ORIGIN_FINDER_ICON).height,
style = 0;
w = 800;
- tree.addTreeEventListener( 'onTreeUpdate', draw);
+ tree.addTreeEventListener( pettanr.file.TREE_EVENT.UPDATE, draw);
function draw(){
var l = tree.hierarchy() +1,
}
}
while( l < BREAD_ARRAY.length){
- BREAD_ARRAY.pop().collect();
+ BREAD_ARRAY.pop().destroy();
}
l = _file.getChildFileLength();
}
}
while( l < ICON_ARRAY.length){
- ICON_ARRAY.pop().collect();
+ ICON_ARRAY.pop().destroy();
}
}
function onHeadClick( i){
var l = ICON_ARRAY.length;
if( i < l){
var _file = tree.getCurrentFile().getChildFileByIndex( i);
- if( _file !== null && _file.TYPE() === pettanr.file.FILE_TYPE_IS_FOLDER){
+ if( _file !== null && ( _file.getChildFileLength() > 0 || _file.getType() === pettanr.file.FILE_TYPE.FOLDER)){
tree.down( i);
draw();
}
}
}
- return {
- init: function(){
- ELM_CONTAINER.appendChild( elmContainer);
- //$( elmLocation).click( onHeadClick);
- //$( elmContainer).click( onBodyClick);
- var position = pettanr.util.getAbsolutePosition( elmLocation);
- headX = position.x;
- headY = position.y;
- bodyY = pettanr.util.getAbsolutePosition( elmBody).y;
- delete this.init;
- },
- onOpen: function(){
- this.init !== undefined && this.init();
- draw();
- },
- onClose: function(){
-
- },
- onWindowResize: function( _w, _h){
+ this.init = function(){
+ ELM_CONTAINER.appendChild( elmContainer);
+ //$( elmLocation).click( onHeadClick);
+ //$( elmContainer).click( onBodyClick);
+ var position = pettanr.util.getAbsolutePosition( elmLocation);
+ headX = position.x;
+ headY = position.y;
+ bodyY = pettanr.util.getAbsolutePosition( elmBody).y;
+ delete this.init;
+ }
+ this.onOpen = function(){
+ this.init !== undefined && this.init();
+ draw();
+ }
+ this.onClose = function(){
+
+ }
+ this.onWindowResize = function( _w, _h){
- }
}
}
function getFinderIcon( _file, _elmContainer, w, index, style, callback){
init: function(){
},
- createFinder: function( _elmTarget, _treeType, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){
- var _finder = new FinderClass( _elmTarget, _treeType, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled);
+ createFinder: function( _elmTarget, _tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled){
+ var _finder = new FinderClass( _elmTarget, _tree, detailSwitchEnabled, styleSwitchEnabled, actionSwitchEnabled);
FINDER_ARRAY.push( _finder);
return _finder;
+ },
+ createFinderHead: function(){
+
+ },
+ resisterFinderPane: function( _finderPane){
+
+ },
+ isFinderInstance: function( _finder){
+ return _finder instanceof FinderClass;
}
}
})();
+
+pettanr.driver = ( function(){
+ var MyAuthorID = 'current_author' in window ? current_author.id : 1,
+ MyArtistID = 'current_artist' in window ? current_artist.id : 1,
+ Driver = {
+ getSeqentialFiles: function( _file){
+ var _data = FileAPI.getFileData( _file),
+ _json = _data !== null ? _data.json : null;
+ if( typeof _json === 'string'){
+ FileAPI.getJson( _file, _json, onLoadJson, onErrorJson);
+ _data.state = pettanr.file.FILE_STATE.LOADING;
+ delete _data.json;
+ }
+ },
+ getName: function( _file){
+ var _data = FileAPI.getFileData( _file),
+ _type = _data !== null ? _data.type : null;
+ if( _type === pettanr.driver.FILE_TYPE.PICTURE){
+ return [ _data.id, _data.ext ].join( '.');
+ } else
+ if( _type === pettanr.driver.FILE_TYPE.PANEL){
+ return [ _data.t, ':', _data.comic.name || _data.comic.title ].join( '');
+ } else
+ if( _type === pettanr.driver.FILE_TYPE.ARTIST){
+ return _data.name + '先生';
+ } else
+ if( _type === pettanr.driver.FILE_TYPE.AUTHOR){
+ return _data.name + '先生';
+ }
+ return _data.name || _data.title;
+ },
+ getThumbnail: function( _file){
+ var _data = FileAPI.getFileData( _file);
+ _type = _data !== null ? _data.type : null;
+ if( _type === pettanr.driver.FILE_TYPE.PICTURE){
+ return { image: [ pettanr.CONST.RESOURCE_PICTURE_PATH, 'thumbnail/', _data.id, '.', _data.ext ].join( '')};
+ }
+ if( _data === FILE_DATA_COMIC_ROOT){
+ return { className: 'file-type-cabinet'};
+ }
+ if( _type === pettanr.driver.FILE_TYPE.COMIC){
+ return { className: 'file-type-comic'};
+ }
+ if( _type === pettanr.driver.FILE_TYPE.PANEL){
+ return { className: 'file-type-panel'};
+ }
+ if( _type === pettanr.driver.FILE_TYPE.AUTHOR){
+ return { className: 'file-type-author'};
+ }
+ if( _type === pettanr.driver.FILE_TYPE.ARTIST){
+ return { className: 'file-type-artist'};
+ }
+ if( _type === pettanr.driver.FILE_TYPE.FOLDEER){
+ return { className: 'file-type-folder'};
+ }
+ return { className: 'file-type-folder'};
+ }
+ },
+ FileAPI = pettanr.file.resisterDriver( Driver),
+ FILE_DATA_SERVICE_ROOT = {
+ name: 'PettanR root',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_COMIC_ROOT = {
+ name: 'Comics',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: [],
+ driver: Driver,
+ json: pettanr.CONST.URL_PANELS_JSON
+ },
+ FILE_DATA_PICTURE_ROOT = {
+ name: 'Picutures',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: [],
+ driver: Driver,
+ json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON
+ },
+ FILE_DATA_MY_COMICS_ROOT = {
+ name: 'My Comics',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_MY_PICTURES_ROOT = {
+ name: 'My Pictures',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_AUTHOR_ROOT = {
+ name: 'Authors',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_ARTIST_ROOT = {
+ name: 'Artists',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_LICENSE_ROOT = {
+ name: 'Original Licenses',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ FILE_DATA_BALLOON_ROOT = {
+ name: 'Balloon templetes',
+ type: pettanr.file.FILE_TYPE.FOLDER,
+ children: []
+ },
+ AUTHOR_ARRAY = [],
+ ARTIST_ARRAY = [],
+ PANEL_ARRAY = [],
+ COMIC_ARRAY = [],
+ RESOURCE_PICTURE_ARRAY = [],
+ BALLOON_TEMPLETE_ARRAY = [],
+ ORIGINAL_LICENSE_ARRAY = [],
+ BASIC_LICENSES = 'cc_by,cc_nc,cc_nd,cc_sa,keep_aspect_ratio,no_convert,no_flip,no_resize'.split( ',');
+ FILE_DATA_SERVICE_ROOT.children.push( FILE_DATA_COMIC_ROOT, FILE_DATA_PICTURE_ROOT, FILE_DATA_LICENSE_ROOT, FILE_DATA_BALLOON_ROOT);
+ FILE_DATA_COMIC_ROOT.children.push( FILE_DATA_MY_COMICS_ROOT, FILE_DATA_AUTHOR_ROOT);
+ FILE_DATA_PICTURE_ROOT.children.push( FILE_DATA_MY_PICTURES_ROOT, FILE_DATA_ARTIST_ROOT);
+
+ FileAPI.createFolderUnderRoot( FILE_DATA_SERVICE_ROOT);
+
+ function onLoadJson( _file, _json){
+ var _access = FileAPI.getFileDataAccess( _file),
+ _data = _access !== null ? _access.DATA : null,
+ l = _json.length;
+ if( _data === null){
+ onErrorJson( _file);
+ return;
+ }
+ _data.state = pettanr.file.FILE_STATE.OK;
+ if( l === 0) return;
+ for(var i=0; i<l; ++i){
+ buildFileData( _json[ i], _data);
+ }
+ _access.dispatchFileEvent( FileAPI.createFileEvent( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, _file, 'children', null));
+ }
+ function onErrorJson( _file){
+ var _data = FileAPI.getFileData( _file);
+ if( _data !== null){
+ _data.state = pettanr.file.FILE_STATE.ERROR;
+ }
+ }
+ function buildFileData( _data, _parent){
+ var _type, _array,
+ _id = _data.id,
+ i, l;
+ if( _parent === FILE_DATA_COMIC_ROOT){
+ _data.type = pettanr.driver.FILE_TYPE.PANEL;
+ _array = PANEL_ARRAY;
+ } else
+ if( _parent === FILE_DATA_PICTURE_ROOT){
+ _data.type = pettanr.driver.FILE_TYPE.PICTURE;
+ _array = RESOURCE_PICTURE_ARRAY;
+
+ // original_license を含まなければ、license object を削除して ビットデータ で保持
+ // original_license なら ファイルを作る buildFileData( _license, FILE_DATA_LICENSE_ROOT)
+ var _license = _data.license,
+ _Math_pow = Math.pow,
+ _bits = 0;
+ if( typeof _license === 'object'){
+ for( i=0, l=BASIC_LICENSES.length; i<l; ++i){
+ if( typeof _license[ BASIC_LICENSES[ i]] === 'number'){
+ _bits += _Math_pow( 2, i);
+ }
+ }
+ _data.license = _bits;
+ }
+ } else
+ if( _parent === FILE_DATA_LICENSE_ROOT){
+ _data.type = pettanr.driver.FILE_TYPE.LICENSE;
+ _array = ORIGINAL_LICENSE_ARRAY;
+ }
+
+ _data.driver = Driver;
+
+ // _array に _data を格納 または 上書き
+ if( typeof _id === 'number'){
+ var __data = _array[ _id];
+ if( __data){
+ for( var key in _data){
+ __data[ key ] = _data[ key ];
+ }
+ _data = __data; // このタイミングで参照が切れるので注意!!
+ } else {
+ _array[ _id] = _data;
+ }
+ }
+
+ if( _parent === FILE_DATA_COMIC_ROOT){
+ if( _data.comic && _data.author){
+ var _comic = getFolderData( _data, 'comic', FILE_DATA_COMIC_ROOT),
+ _comics = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT).children;
+ _comic.children.push( _data);
+ pettanr.util.getIndex( _comics, _comic) === -1 && _comics.push( _comic);
+ }
+ // picture data をファイルに取り出し
+ var _elements = _data.panel_elements || [],
+ _elm;
+ for(var i=0, l=_elements.length; i<l; ++i){
+ _elm = _elements[ i];
+ if( _elm.resource_picture){
+ _elm.resource_picture = buildFileData( _elm.resource_picture, FILE_DATA_PICTURE_ROOT); // 上記参照切れに備えてここで上書き
+ }
+ if( _elm.resource_picture_id && RESOURCE_PICTURE_ARRAY[ _elm.resource_picture_id]){
+ _elm.resource_picture = RESOURCE_PICTURE_ARRAY[ _elm.resource_picture_id];
+ }
+ }
+ } else
+ if( _parent === FILE_DATA_PICTURE_ROOT){
+ _data.artist && getFolderData( _data, 'artist', FILE_DATA_ARTIST_ROOT).children.push( _data);
+ }
+
+ return _data;
+ }
+ /**
+ * folder には Artist, Author, Comic,
+ */
+ function getFolderData( _data, _key, _parentData){
+ if( typeof _data[ _key ] !== 'object') return {children:[]};
+ var _ret,
+ _id = _data[ _key ].id,
+ _array;
+ if( typeof _id !== 'number') return {children:[]};
+
+ _array = _parentData === FILE_DATA_ARTIST_ROOT ? ARTIST_ARRAY :
+ _parentData === FILE_DATA_AUTHOR_ROOT ? AUTHOR_ARRAY :
+ _parentData === FILE_DATA_COMIC_ROOT ? COMIC_ARRAY : []
+
+ if( typeof _array[ _id] === 'object'){
+ var __data = _array[ _id];
+ for( var i in _data[ _key ]){
+ __data[ i ] = _data[ _key ][ i ];
+ }
+ return _data[ _key ] = __data;// このタイミングで参照が切れるので注意!!
+ }
+
+ _ret = _array[ _id ] = _data[ _key ];
+ if( _ret.title){
+ _ret.name = _ret.title;
+ delete _ret.title;
+ }
+ _ret.children = [];
+ _ret.driver = Driver;
+
+ if( _parentData === FILE_DATA_AUTHOR_ROOT){
+ _ret.type = pettanr.driver.FILE_TYPE.AUTHOR;
+ _id === MyAuthorID && FILE_DATA_MY_COMICS_ROOT.children.push( _ret);
+ } else
+ if( _parentData === FILE_DATA_ARTIST_ROOT){
+ _ret.type = pettanr.driver.FILE_TYPE.ARTIST;
+ _id === MyArtistID && FILE_DATA_MY_PICTURES_ROOT.children.push( _ret);
+ } else
+ if( _parentData === FILE_DATA_COMIC_ROOT){
+ _ret.type = pettanr.driver.FILE_TYPE.COMIC;
+ return _ret;
+ } else {
+ _ret.type = pettanr.file.FILE_TYPE.FOLDER;
+ }
+
+ _parentData.children.push( _ret);
+
+ return _ret;
+ }
+
+ return {
+ createComicTree: function(){
+ return pettanr.file.createTree( FILE_DATA_SERVICE_ROOT); //FILE_DATA_COMIC_ROOT);
+ },
+ createPictureTree: function(){
+ return pettanr.file.createTree( FILE_DATA_PICTURE_ROOT);
+ },
+ createServiceTree: function(){
+ return pettanr.file.createTree( FILE_DATA_SERVICE_ROOT);
+ },
+ isPettanrFile: function( _file){
+
+ },
+ FILE_TYPE: {
+ COMIC: FileAPI.createFileTypeID(),
+ PANEL: FileAPI.createFileTypeID(),
+ PICTURE: FileAPI.createFileTypeID(),
+ PANEL_PICTURE: FileAPI.createFileTypeID(),
+ BALLOON: FileAPI.createFileTypeID(),
+ AUTHOR: FileAPI.createFileTypeID(),
+ ARTIST: FileAPI.createFileTypeID(),
+ LICENSE: FileAPI.createFileTypeID()
+ }
+ }
+})();
+
+
pettanr.gallery = ( function(){
var finder,
elmContainer = document.getElementById( 'gallery'),
delete pettanr.gallery.init;
},
firstOpen: function(){
- finder = pettanr.finder.createFinder( elmContainer, pettanr.file.TREE_TYPE_IS_IMAGE);
+ finder = pettanr.finder.createFinder( elmContainer, pettanr.driver.createPictureTree());
delete pettanr.gallery.firstOpen;
},
onOpen: function(){
delete pettanr.cabinet.init;
},
firstOpen: function(){
- finder = pettanr.finder.createFinder( elmContainer, pettanr.file.TREE_TYPE_IS_COMIC);
+ finder = pettanr.finder.createFinder( elmContainer, pettanr.driver.createComicTree());
delete pettanr.cabinet.firstOpen;
},
onOpen: function(){
/*\r
* pettanR work.js\r
- * version 0.4.2\r
+ * version 0.4.4\r
* \r
* author:\r
* itozyun\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
].join( ''));\r
pettanr.util.loadImage( SRC, window[ _onLoad], window[ _onError]);\r
window[ _onLoad] = window[ _onError] = undefined;\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
}\r
}\r
close();\r
ICON_ARRAY.shift().destroy();\r
}\r
onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
- onEnterInterval = null;// onUpdateFunction = \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
/* ----------------------------------------\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
\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
\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
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
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
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( _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
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
-[\r
+[\r
{\r
"artist": {\r
"api_url": null, \r
"author_id": 1, \r
"created_at": "2012-01-05T23:58:39Z", \r
"crowled_at": null, \r
- "default_lisence_id": 1, \r
+ "default_license_id": 1, \r
"email": null, \r
"homepage_url": null, \r
"id": 1, \r
"filesize": 11881, \r
"height": 474, \r
"id": 1, \r
- "lisence": {\r
+ "license": {\r
"cc_by": 0, \r
"cc_nc": 0, \r
"cc_nd": 0, \r
"created_at": "2012-01-11T07:49:36Z", \r
"id": 1, \r
"keep_aspect_ratio": 0, \r
- "name": "%%<\81\84\82 \82 \82 ", \r
+ "name": "%%<>あああ", \r
"no_convert": 0, \r
"no_flip": 0, \r
"no_resize": 0, \r
"updated_at": "2012-01-11T07:49:36Z", \r
- "url": "\82¨\82¨~"\r
+ "url": "おお~"\r
}, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"resource_picture": {\r
"artist_id": 1, \r
"created_at": "2012-01-05T23:59:01Z", \r
"filesize": 11881, \r
"height": 474, \r
"id": 1, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"original_picture_id": 1, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 449\r
"author_id": 1, \r
"created_at": "2012-01-05T23:58:39Z", \r
"crowled_at": null, \r
- "default_lisence_id": 1, \r
+ "default_license_id": 1, \r
"email": null, \r
"homepage_url": null, \r
"id": 1, \r
"filesize": 9960, \r
"height": 463, \r
"id": 2, \r
- "lisence": {\r
+ "license": {\r
"cc_by": 0, \r
"cc_nc": 0, \r
"cc_nd": 0, \r
"created_at": "2012-01-11T07:49:36Z", \r
"id": 1, \r
"keep_aspect_ratio": 0, \r
- "name": "%%<\81\84\82 \82 \82 ", \r
+ "name": "%%<>あああ", \r
"no_convert": 0, \r
"no_flip": 0, \r
"no_resize": 0, \r
"updated_at": "2012-01-11T07:49:36Z", \r
- "url": "\82¨\82¨~"\r
+ "url": "おお~"\r
}, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"resource_picture": {\r
"artist_id": 1, \r
"created_at": "2012-01-05T23:59:18Z", \r
"filesize": 9960, \r
"height": 463, \r
"id": 2, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"original_picture_id": 2, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 333\r
"author_id": 1, \r
"created_at": "2012-01-05T23:58:39Z", \r
"crowled_at": null, \r
- "default_lisence_id": 1, \r
+ "default_license_id": 1, \r
"email": null, \r
"homepage_url": null, \r
"id": 1, \r
"filesize": 8492, \r
"height": 450, \r
"id": 3, \r
- "lisence": {\r
+ "license": {\r
"cc_by": 0, \r
"cc_nc": 0, \r
"cc_nd": 0, \r
"created_at": "2012-01-11T07:49:36Z", \r
"id": 1, \r
"keep_aspect_ratio": 0, \r
- "name": "%%<\81\84\82 \82 \82 ", \r
+ "name": "%%<>あああ", \r
"no_convert": 0, \r
"no_flip": 0, \r
"no_resize": 0, \r
"updated_at": "2012-01-11T07:49:36Z", \r
- "url": "\82¨\82¨~"\r
+ "url": "おお~"\r
}, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"resource_picture": {\r
"artist_id": 1, \r
"created_at": "2012-01-05T23:59:34Z", \r
"filesize": 8492, \r
"height": 450, \r
"id": 3, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"original_picture_id": 3, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 333\r
"author_id": 1, \r
"created_at": "2012-01-05T23:58:39Z", \r
"crowled_at": null, \r
- "default_lisence_id": 1, \r
+ "default_license_id": 1, \r
"email": null, \r
"homepage_url": null, \r
"id": 1, \r
"filesize": 9232, \r
"height": 500, \r
"id": 4, \r
- "lisence": {\r
+ "license": {\r
"cc_by": 0, \r
"cc_nc": 0, \r
"cc_nd": 0, \r
"created_at": "2012-01-11T07:49:36Z", \r
"id": 1, \r
"keep_aspect_ratio": 0, \r
- "name": "%%<\81\84\82 \82 \82 ", \r
+ "name": "%%<>あああ", \r
"no_convert": 0, \r
"no_flip": 0, \r
"no_resize": 0, \r
"updated_at": "2012-01-11T07:49:36Z", \r
- "url": "\82¨\82¨~"\r
+ "url": "おお~"\r
}, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"resource_picture": {\r
"artist_id": 1, \r
"created_at": "2012-01-06T00:00:01Z", \r
"filesize": 9232, \r
"height": 500, \r
"id": 4, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"original_picture_id": 4, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 500\r
"author_id": 1, \r
"created_at": "2012-01-05T23:58:39Z", \r
"crowled_at": null, \r
- "default_lisence_id": 1, \r
+ "default_license_id": 1, \r
"email": null, \r
"homepage_url": null, \r
"id": 1, \r
- "name": "no name", \r
+ "name": "yas", \r
"updated_at": "2012-01-05T23:58:39Z"\r
}, \r
"artist_id": 1, \r
"filesize": 7875, \r
"height": 425, \r
"id": 5, \r
- "lisence": {\r
+ "license": {\r
"cc_by": 0, \r
"cc_nc": 0, \r
"cc_nd": 0, \r
"created_at": "2012-01-11T07:49:36Z", \r
"id": 1, \r
"keep_aspect_ratio": 0, \r
- "name": "%%<\81\84\82 \82 \82 ", \r
+ "name": "%%<>あああ", \r
"no_convert": 0, \r
"no_flip": 0, \r
"no_resize": 0, \r
"updated_at": "2012-01-11T07:49:36Z", \r
- "url": "\82¨\82¨~"\r
+ "url": "おお~"\r
}, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"resource_picture": {\r
"artist_id": 1, \r
"created_at": "2012-01-06T00:00:20Z", \r
"filesize": 7875, \r
"height": 425, \r
"id": 5, \r
- "lisence_id": 1, \r
+ "license_id": 1, \r
"original_picture_id": 5, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 252\r
}, \r
"updated_at": "2012-01-15T07:49:12Z", \r
"width": 252\r
+ }, \r
+ {\r
+ "artist": {\r
+ "api_url": null, \r
+ "author_id": 2, \r
+ "created_at": "2012-01-22T10:13:10Z", \r
+ "crowled_at": null, \r
+ "default_license_id": 0, \r
+ "email": null, \r
+ "homepage_url": null, \r
+ "id": 2, \r
+ "name": "iz", \r
+ "updated_at": "2012-01-22T10:13:10Z"\r
+ }, \r
+ "artist_id": 2, \r
+ "created_at": "2012-01-22T10:14:57Z", \r
+ "ext": "jpeg", \r
+ "filesize": 140234, \r
+ "height": 800, \r
+ "id": 6, \r
+ "license_id": 0, \r
+ "resource_picture": {\r
+ "artist_id": 2, \r
+ "created_at": "2012-01-22T10:14:57Z", \r
+ "ext": "jpeg", \r
+ "filesize": 140234, \r
+ "height": 800, \r
+ "id": 6, \r
+ "license_id": 0, \r
+ "original_picture_id": 6, \r
+ "updated_at": "2012-01-22T10:14:57Z", \r
+ "width": 712\r
+ }, \r
+ "updated_at": "2012-01-22T10:14:57Z", \r
+ "width": 712\r
}\r
]
\ No newline at end of file
--- /dev/null
+[\r
+ {\r
+ "author": {\r
+ "id": 1, \r
+ "name": "no name"\r
+ }, \r
+ "author_id": 1, \r
+ "border": 1, \r
+ "comic": {\r
+ "author_id": 1, \r
+ "created_at": "2012-01-06T07:39:55Z", \r
+ "editable": 0, \r
+ "height": 200, \r
+ "id": 1, \r
+ "title": "コミック作るテスト", \r
+ "updated_at": "2012-01-06T07:39:55Z", \r
+ "visible": 0, \r
+ "width": 400\r
+ },\r
+ "comic_id": 1, \r
+ "created_at": "2012-01-06T07:40:25Z",\r
+ "height": 200, \r
+ "id": 1, \r
+ "resource_picture_id": 1, \r
+ "t": 1, \r
+ "updated_at": "2012-01-06T07:40:25Z", \r
+ "width": 400, \r
+ "x": 0, \r
+ "y": 0, \r
+ "z": 1\r
+ }, \r
+ {\r
+ "author": {\r
+ "id": 1, \r
+ "name": "no name"\r
+ }, \r
+ "author_id": 1, \r
+ "border": 1, \r
+ "comic": {\r
+ "author_id": 1, \r
+ "created_at": "2012-01-06T07:39:55Z", \r
+ "editable": 0, \r
+ "height": 200, \r
+ "id": 1, \r
+ "title": "コミック作るテスト", \r
+ "updated_at": "2012-01-06T07:39:55Z", \r
+ "visible": 0, \r
+ "width": 400\r
+ }, \r
+ "comic_id": 1, \r
+ "created_at": "2012-01-10T08:23:36Z", \r
+ "height": 300, \r
+ "id": 2, \r
+ "resource_picture_id": 1, \r
+ "t": 2, \r
+ "updated_at": "2012-01-10T08:23:36Z", \r
+ "width": 400, \r
+ "x": 0, \r
+ "y": 0, \r
+ "z": 0\r
+ }, \r
+ {\r
+ "author": {\r
+ "id": 1, \r
+ "name": "Tester"\r
+ }, \r
+ "author_id": 1, \r
+ "border": 1, \r
+ "comic": {\r
+ "author_id": 1, \r
+ "created_at": "2012-01-06T07:39:55Z", \r
+ "editable": 0, \r
+ "height": 200, \r
+ "id": 1, \r
+ "title": "コミック作るテスト", \r
+ "updated_at": "2012-01-06T07:39:55Z", \r
+ "visible": 0, \r
+ "width": 400\r
+ }, \r
+ "comic_id": 1, \r
+ "created_at": "2012-01-10T08:25:41Z", \r
+ "height": 300, \r
+ "id": 3, \r
+ "resource_picture_id": 1, \r
+ "t": 3, \r
+ "updated_at": "2012-01-10T08:25:41Z", \r
+ "width": 400, \r
+ "x": 0, \r
+ "y": 0, \r
+ "z": 0\r
+ }\r
+]
\ No newline at end of file
height: 100%;\r
border: 0;\r
padding: 0;\r
- margin: 0;\r
+ margin: 0 !important;\r
text-align: center;\r
vertical-align: middle;\r
}\r
-moz-opacity: 0.7;\r
-khtml-opacity: 0.7;\r
}\r
- .pettanr-ActiveX-disabled #whiteGlass-container div {\r
+ .pettanr-ActiveX-enabled #whiteGlass-container div {\r
filter: alpha(opacity=70);\r
-ms-filter: alpha(opacity=70); \r
}\r
margin: 0;\r
}\r
.finder-header li a,\r
- .finder-header li a:link\r
+ .finder-header li a:link,\r
.finder-header li a:visited {\r
display: block;\r
height: 14px;\r
padding: 16px 0 10px 20px;\r
margin: 0;\r
color: #eee;\r
+ overflow: hidden;\r
}\r
.finder-header li a:hover {\r
text-decoration: none;\r
background-position: 50% 50%;\r
background-repeat: no-repeat;\r
}\r
- .finder-icon .file-type-1 {\r
- background-image: url('../images/folder_general.png');\r
+ .finder-icon-thumbnail {\r
+ background-image: url('../images/sprite.gif');\r
+ }\r
+ \r
+ .finder-icon .file-type-folder {\r
+ background-position: 0 -80px;\r
}\r
- .finder-icon .file-type-2 {\r
+ .finder-icon .file-type-album {\r
background-image: url('../images/folder_album.png');\r
}\r
- .finder-icon .file-type-11 {\r
- background-image: url('../images/cabinet.png');\r
+ .finder-icon .file-type-author {\r
+ background-position: -70px -80px;\r
+ } \r
+ .finder-icon .file-type-comic {\r
+ background-position: 0 -150px;\r
}\r
- \r
+ .finder-icon .file-type-cabinet {\r
+ background-position: -70px -150px;\r
+ }\r
+ .finder-icon .file-type-panel {\r
+ background-position: 0 -220px;\r
+ }\r
+ .finder-icon .file-type-artist {\r
+ background-position: -70px -220px;\r
+ }\r
+ .finder-icon .file-type-balloon {\r
+ background-position: 0 -290px;\r
+ }\r
+ .finder-icon .file-type-charactor {\r
+ background-position: -70px -290px;\r
+ } \r
.has-thumbnail {\r
background-image: url('../images/folder_album.png');\r
}\r
/*\r
* http://www.iconfinder.com/icondetails/18336/64/folder_image_photo_icon\r
* http://www.iconfinder.com/icondetails/27849/48/folder_yellow_icon\r
- * http://www.iconfinder.com/icondetails/45347/64/cabinet_icon
+ * http://www.iconfinder.com/icondetails/45347/64/cabinet_icon\r
+ * http://www.iconfinder.com/icondetails/3659/64/broken_file_icon\r
+ * http://www.iconfinder.com/icondetails/44733/64/address_book_icon
*/\r
.finder-icon-filename {\r
position: absolute;\r