Другие технические решения

Материал из Вики проекта PascalABC.NET
Версия от 11:16, 8 июля 2009; Juliet (обсуждение | вклад) (Новая: Категория:WDE == Мультифайловость в редакторе == === Описание === Работа с несколькими файлами одновреме...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Мультифайловость в редакторе

Описание

Работа с несколькими файлами одновременно вещь весьма полезная. Выбранный редактор с подсветкой синтаксиса EditArea эту возможность предоставляет. Однако, задать заголовок вкладки в нем можно только при её первом открытии, что, конечно, неудобно. В связи с этим в файл edit_area_full.js были внесены поправки и добавлен метод для изменения не только содержимого вкладки, но и её заголовка.

changeFile

В EAL.prototype добавлен метод changeFile.

changeFile : function(id, newFile) {
    var curID = this.execCommand(id, 'curr_file')
        
    this.execCommand(id, 'change_curFileTabParams', newFile);
    this.setValue(id, newFile['text']);
},

change_curFileTabParams

В содержимое editAreaLoader.iframe_script, например, перед update_file:

"EA.Ä.change_curFileTabParams=Ã(new_Ês){var curID = this.curr_file; this.update_file(curID, new_Ês); var elem=document.getElementById(this.files[curID]['html_id']); var html_curID='tab_file_'+encodeURIComponent(curID); this.filesIdAssoc[html_curID]=curID; this.files[curID]['html_id']= html_curID; var close=\"<img src=\\\"\"+È.eAL.baseURL+\"images/close.gif\\\" title=\\\"\"+Á.get_translation('close_tab','word')+\"\\\" onclick=\\\"eA.execCommand('close_file',eA.filesIdAssoc['\"+html_curID+\"']);return Ì;\\\" class=\\\"hidden\\\" onmouseover=\\\"Á.className=''\\\" onmouseout=\\\"Á.className='hidden'\\\" />\";elem.innerHTML=\"<a onclick=\\\"javascript:eA.execCommand('switch_to_file',eA.filesIdAssoc['\"+html_curID+\"']);\\\" selec=\\\"none\\\"><b><span><strong class=\\\"edited\\\">*</strong>\"+Á.files[curID]['title']+close+\"</span></b></a>\";};"

Или, если работаете не с edit_area_full.js, в edit_area_functions.js:

EditArea.prototype.change_curFileTabParams = function(new_Ês){
    var curID = this.curr_file;
    this.update_file(curID, new_Ês);

    var elem = document.getElementById(this.files[curID]['html_id']);
    var html_curID = 'tab_file_' + encodeURIComponent(curID);
    this.filesIdAssoc[html_curID] = curID;
    this.files[curID]['html_id'] = html_curID;
    
    var close = "<img src=\""+ parent.editAreaLoader.baseURL +"images/close.gif\" title=\""+ this.get_translation('close_tab', 'word') +"\" onclick=\"editArea.execCommand('close_file', editArea.filesIdAssoc['"+ html_id +"']);return false;\" class=\"hidden\" onmouseover=\"this.className=''\" onmouseout=\"this.className='hidden'\" />";
    elem.innerHTML = "<a onclick=\"javascript:editArea.execCommand('switch_to_file', editArea.filesIdAssoc['"+ html_id +"']);\" selec=\"none\"><b><span><strong class=\"edited\">*</strong>"+ this.files[id]['title'] + close +"</span></b></a>";
}