浏览代码

fixed editor support

Gerald 12 年之前
父节点
当前提交
8302d26695
共有 4 个文件被更改,包括 30 次插入27 次删除
  1. 2 1
      confirm.html
  2. 4 10
      confirm.js
  3. 23 15
      editor.js
  4. 1 1
      options.js

+ 2 - 1
confirm.html

@@ -4,7 +4,7 @@
 		<meta http-equiv="content-type" content="text/html;charset=utf-8">
 		<link rel="stylesheet" type="text/css" href="style.css" />
 		<link rel="shortcut icon" type="image/png" href="icons/icon_16.png" />
-		<script type="text/javascript" src="lib/src-min-noconflict/ace.js"></script>
+		<script type="text/javascript" src="load.js"></script>
 		<title class=i18n>extName</title>
 	</head>
 	<body class=fill>
@@ -24,4 +24,5 @@
 	</body>
 </html>
 <script src=common.js></script>
+<script src="editor.js"></script>
 <script src=confirm.js></script>

+ 4 - 10
confirm.js

@@ -6,21 +6,15 @@ function checkScript(t){
 		});
 	} else {	// may be JS code
 		M.innerHTML=_('msgLoadedJS',[data.url]);
-		T.setValue(t);T.gotoLine(0,0);
+		T.setValueAndFocus(t);
 		I.disabled=false;
 	}
 }
 var $=document.getElementById.bind(document),M=$('msg'),I=$('bInstall'),data={},
-		C=$('cClose'),T=ace.edit('eCode');
-T.setTheme('ace/theme/github');
-T.setReadOnly(true);
-(function(s){
-	s.setMode('ace/mode/javascript');
-	s.setUseWrapMode(true);
-	s.setUseWorker(true);
-})(T.getSession());
+		B=$('bClose'),C=$('cClose'),T;
 initCSS();initI18n();
-$('bClose').onclick=function(){window.close();};
+B.onclick=function(){window.close();};
+initEditor(function(o){T=o;},{exit:B.onclick,readonly:true});
 C.onchange=function(){
 	chrome.runtime.sendMessage({cmd:'SetOption',data:{key:'closeAfterInstall',value:C.checked}});
 };

+ 23 - 15
editor.js

@@ -1,4 +1,5 @@
-function initAce(callback){
+function initAce(callback,data){
+	data=data||{};
 	addScript({src:'lib/ace-min-noconflict/ace.js'},function(){
 		var T=ace.edit('eCode'),s=T.getSession();
 		T.setTheme('ace/theme/github');
@@ -6,28 +7,30 @@ function initAce(callback){
 			T.setValue(v);T.focus();T.gotoLine(0,0);
 		};
 		s.setMode('ace/mode/javascript');
-		s.on('change',E.markDirty);
 		s.setUseSoftTabs(false);
 		s.setUseWrapMode(true);
 		s.setUseWorker(true);
 		T.clearHistory=s.getUndoManager().reset;
-		T.commands.addCommand({
+		if(data.onchange) s.on('change',data.onchange);
+		if(data.save) T.commands.addCommand({
 			name:'Save',
 			bindKey:{win:'Ctrl-S',mac:'Command-S'},
-			exec:eSave,
+			exec:data.save,
 			readOnly:false,
 		});
-		T.commands.addCommand({
+		if(data.exit) T.commands.addCommand({
 			name:'Exit',
 			bindKey:{win:'Esc'},
-			exec:E.close,
+			exec:data.exit,
 			readOnly:true,
 		});
+		if(data.readonly) T.setReadOnly(data.readonly);
 		callback(T);
 	});
 }
 
-function initCodeMirror(callback){
+function initCodeMirror(callback,data){
+	data=data||{};
 	addCSS([
 		{href:'lib/CodeMirror/lib/codemirror.css'},
 	]);
@@ -41,13 +44,15 @@ function initCodeMirror(callback){
 			{src:'lib/CodeMirror/addon/search/searchcursor.js'},
 			{src:'lib/CodeMirror/addon/selection/active-line.js'},
 		],function(){
-			CodeMirror.keyMap.vm={
-				'Esc':'close',
-				'Ctrl-S':'save',
-				'fallthrough':'default'
-			};
-			CodeMirror.commands.save=eSave;
-			CodeMirror.commands.close=E.close;
+			CodeMirror.keyMap.vm={'fallthrough':'default'};
+			if(data.save) {
+				CodeMirror.keyMap.vm['Ctrl-S']='save';
+				CodeMirror.commands.save=data.save;
+			}
+			if(data.exit) {
+				CodeMirror.keyMap.vm['Esc']='exit';
+				CodeMirror.commands.exit=data.exit;
+			}
 			var T=CodeMirror($('eCode'),{
 				lineNumbers:true,
 				matchBrackets:true,
@@ -61,9 +66,12 @@ function initCodeMirror(callback){
 			});
 			T.clearHistory=function(){T.getDoc().clearHistory();};
 			T.setValueAndFocus=function(v){T.setValue(v);T.focus();};
-			T.on('change',E.markDirty);
 			T.getWrapperElement().setAttribute('style','position:absolute;height:100%;width:100%;');
+			if(data.onchange) T.on('change',data.onchange);
+			if(data.readonly) T.setOption('readOnly',data.readonly);
 			callback(T);
 		});
 	});
 }
+
+var initEditor=initCodeMirror;

+ 1 - 1
options.js

@@ -289,7 +289,6 @@ var E=$('editor'),U=$('eUpdate'),M=$('meta'),
     mI=$('mInclude'),mE=$('mExclude'),mM=$('mMatch'),
     cI=$('cInclude'),cE=$('cExclude'),cM=$('cMatch'),
 		eS=$('eSave'),eSC=$('eSaveClose'),T;
-initCodeMirror(function(o){T=o;});
 function markClean(){
 	T.clearHistory();
 	eS.disabled=eSC.disabled=true;
@@ -365,6 +364,7 @@ $('mOK').onclick=function(){
 eS.onclick=eSave;
 eSC.onclick=function(){eSave();eClose();};
 E.close=$('eClose').onclick=function(){if(confirmCancel(!eS.disabled)) eClose();};
+initEditor(function(o){T=o;},{save:eSave,exit:E.close,onchange:E.markDirty});
 
 // Load at last
 var ids,map,cache;