/** * Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. **/ var FILE_SIZE = 1024 * 1024; var displayNames = [null, null]; var paths = {}; var fileEntries = [null, null]; var texts = [null, null]; var urlNum = null; var badURL = false; var fileHistory = {}; $(document).ready(function() { readFileName('name0.txt', 0); readFileName('name1.txt', 1); $('#left-side .button.new-diff').click(function() { $('#modal-shield').removeClass('hidden'); $('.modal-dialog.new-diff').removeClass('hidden').addClass('visible'); }); $('.close-button').click(function() { $('.modal-dialog').addClass('hidden').removeClass('visible'); $('#modal-shield').addClass('hidden'); $('.enter-url input').val(''); $('.error-message').removeClass('visible'); $('.url').removeClass('form-error'); $('input.url').val(''); }); $('.button.cancel').click(function() { $('.close-button').click(); }); $('.modal-dialog.new-diff .button.submit').click(function() { submitDiffs(); }); $('.modal-dialog.new-diff .choose-file.0').click(function() { selectFile(0); }); $('.modal-dialog.new-diff .choose-file.1').click(function () { selectFile(1); }); $('.edit').click(function() { var text1 = getText(1); $('#arrow-container').addClass('arrow-edit'); $('#check-container').addClass('check-edit'); $('.file-diff.1').addClass('hidden'); $('textarea.diff-text').val(text1); $('.diff-text#editor').removeClass('hidden'); $('.edit').addClass('hidden'); $('.save').addClass('hidden'); $('#num-diffs').addClass('hidden'); $('.done').removeClass('hidden'); }); $('.done').click(function() { texts[1] = $('textarea.diff-text').val(); saveFile(texts[1], 'file1.txt'); computeDiff(texts[0], texts[1]); $('#arrow-container').removeClass('arrow-edit'); $('#check-container').removeClass('check-edit'); $('.file-diff.1').removeClass('hidden'); $('textarea.diff-text').addClass('hidden'); $('.edit').removeClass('hidden'); $('#num-diffs').removeClass('hidden'); $('.done').addClass('hidden'); $('.save').removeClass('hidden'); }); $('.save').click(function() { saveFileAs(); }); $('input.url').blur(function() { urlNum = $(this).attr('class').split(' ')[1]; selectURL(); }); $('.menubutton').click(function(event) { if (!$(this).hasClass('menulist')) { event.preventDefault(); event.stopPropagation(); $(this).children('ul.menulist').addClass('shown'); } }); $(document).click(function() { $('ul.menulist').removeClass('shown'); }); $.ajaxSetup({ error: function(xhr) { badURL = true; message = ajaxErrorMessage(xhr); $('.error-message.' + urlNum).text(message); $('.error-message.' + urlNum).addClass('visible'); $('input.url.' + urlNum).addClass('form-error'); } }); }); function registerMenulistitemClicks() { $('li.menulistitem').click(function() { if ($(this).hasClass('choose-new-file')) { var fileNum = parseInt($(this).parent().attr('class').split(' ')[1]); selectFile(fileNum, true); } else if (!$(this).hasClass('selected')) { var fileNum = parseInt($(this).parent().attr('class').split(' ')[1]); var fileName = $(this).children('.file-name').text(); $(this).parent().children('li.menulistitem').removeClass('selected'); $(this).addClass('selected'); displayNames[fileNum] = fileName; texts[fileNum] = fileHistory[paths[fileName]]; setFileName(fileNum); saveFile(texts[fileNum], 'file' + fileNum + '.txt'); saveFile(paths[displayNames[fileNum]], 'name' + fileNum + '.txt'); computeDiff(texts[0], texts[1]); } $('.menulist').removeClass('shown'); }); $('li.menulistitem .delete').click(function() { var name = $(this).parent().children('.file-name').text(); var path = paths[name]; delete fileHistory[path]; chrome.storage.local.set({'fileHistory': fileHistory}); $('li.menulistitem').each(function() { if ($(this).children('.file-name').text() == name) $(this).remove(); }) }); } function selectURL() { $('.error-message.' + urlNum).removeClass('visible'); $('.url.' + urlNum).removeClass('form-error'); var url = $('.modal-dialog.new-diff input.url.' + urlNum).val(); if (url != '') { if (!(url.slice(0, 4) == 'http')) url = 'http://' + url; $.get(url, function(text) { var urlSecs = url.split('/'); displayNames[urlNum] = urlSecs[urlSecs.length-1]; paths[displayNames[urlNum]] = url; badURL = false; texts[urlNum] = text; rememberFile(fileNum); var name = 'file' + urlNum + '.txt'; saveFile(text, name); saveFile(paths[displayNames[urlNum]], 'name' + urlNum + '.txt'); }, 'html' ); } else { badURL = false; } } function selectFile(fileNum, chooseNew) { chrome.fileSystem.chooseEntry({'type': 'openFile'}, function(fileEntry) { fileEntries[fileNum] = fileEntry; chrome.fileSystem.getDisplayPath(fileEntry, function(path) { var pathList = path.split('/'); var l = pathList.length - 1; displayNames[fileNum] = pathList[l]; paths[displayNames[fileNum]] = path; $('.modal-dialog.new-diff .file-name.' + fileNum).text(displayNames[fileNum]); fileEntries[fileNum].file(function(file) { var reader = new FileReader(); reader.onloadend = function(e) { $('.error-message.' + fileNum).removeClass('visible'); $('.url.' + fileNum).removeClass('form-error'); $('input.url.' + fileNum).val(''); texts[fileNum] = this.result; rememberFile(fileNum); var name = 'file' + fileNum + '.txt'; saveFile(texts[fileNum], name); saveFile(paths[displayNames[fileNum]], 'name' + fileNum + '.txt'); if (chooseNew) chooseNewFile(fileNum); }; reader.readAsText(file); }, errorHandler); }); }); } function getExtension(fileName) { var parts = fileName.split('.'); return parts[parts.length - 1]; } function isPatch(fileName) { return getExtension(fileName).toLowerCase() == 'patch'; } function addToMenulistDisplayed(listNum, displayNum, selected) { var name = displayNames[displayNum]; var path = paths[displayNames[displayNum]].split('/').slice(-5, -2).join('/'); $('ul.menulist.' + listNum).append( '