Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: nacl/debugger/index.html

Issue 12449006: NaCl Debugger: Implement overview and filters, cleanup (Closed) Base URL: http://skia.googlecode.com/svn/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « nacl/debugger/debugger.css ('k') | nacl/src/nacl_debugger.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: nacl/debugger/index.html
===================================================================
--- nacl/debugger/index.html (revision 8014)
+++ nacl/debugger/index.html (working copy)
@@ -15,6 +15,11 @@
var skia_module = null; // Global application object.
var display_right_panel = null;
var display_bottom_row = null;
+ var overview_text = "";
+ var details_text = "Default details text.";
+ var command_list = [];
+ var command_types = {};
+ var no_filter_text = "--Filter By Available Commands--";
function openFileDialog() {
var event = document.createEvent("MouseEvents");
@@ -22,16 +27,81 @@
document.getElementById("file_open").dispatchEvent(event);
}
+ function updateOverviewDetails() {
+ var radio_buttons = document.getElementsByName("overviewdetails_radio");
+ for (var i = 0; i < radio_buttons.length; ++i) {
+ if (radio_buttons[i].checked) {
+ if (radio_buttons[i].value == "details") {
+ document.getElementById("overviewdetails").innerHTML = details_text;
+ } else {
+ document.getElementById("overviewdetails").innerHTML = overview_text;
+ }
+ return;
+ }
+ }
+ // If no radio button is checked, check the "overview" button.
+ for (var i = 0; i < radio_buttons.length; ++i) {
+ if (radio_buttons[i].value == "overview") {
+ radio_buttons[i].checked = true;
+ document.getElementById("overviewdetails").innerHTML = overview_text;
+ return;
+ }
+ }
+ }
+
+ function makeIndentString(indent_amt) {
+ var indent_str = "";
+ for (var i = 0; i < indent_amt; ++i) {
+ indent_str += "--";
+ }
+ return indent_str;
+ }
+
+ function updateCommandList(filter) {
+ var command_list_display = document.getElementById("command_list");
+ command_list_display.options.length = 0;
+ var indent = 0;
+ var indent_str = "";
+ for (var i = 0; i < command_list.length; ++i) {
+ if (command_list[i] == "Restore") {
+ indent--;
+ indent_str = makeIndentString(indent);
+ }
+ if (!filter || filter == no_filter_text || command_list[i] == filter) {
+ command_list_display.options.add(new Option(indent_str + command_list[i], i));
+ }
+ if (command_list[i] == "Save" || command_list[i] == "Save Layer") {
+ indent++;
+ indent_str = makeIndentString(indent);
+ }
+ }
+ command_list_display.selectedIndex = command_list_display.length - 1;
+
+ // TODO(borenet): Should the SKP re-draw when the command list is updated?
+ //commandSelected();
+ }
+
+ function updateFilterList() {
+ var filter_list_display = document.getElementById("command_filter");
+ filter_list_display.options.length = 0;
+ filter_list_display.options.add(new Option(no_filter_text, no_filter_text));
+ for (var command_type in command_types) {
+ if (command_types.hasOwnProperty(command_type)) {
+ filter_list_display.options.add(new Option(command_type, command_type));
+ }
+ }
+ }
+
function openFile(event) {
+ document.getElementById("overviewdetails").innerHTML = "";
var files = event.target.files;
if (files.length != 1) {
- alert("Please select one SKP file.");
+ return;
}
var file = files[0];
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
- //alert(e.target.result);
var data_prefix = "data:;base64,";
skia_module.postMessage("LoadSKP" + e.target.result.slice(data_prefix.length));
};
@@ -57,6 +127,8 @@
var bottom_row = document.getElementById("bottom_row");
display_right_panel = right_panel.style.display;
display_bottom_row = bottom_row.style.display;
+ updateOverviewDetails();
+ updateFilterList();
}
// When the module loads, begin running the application.
@@ -67,32 +139,39 @@
function handleMessage(message_event) {
var cmd_skdebugf = "SkDebugf:";
- var cmd_clearcommands = "ClearCommands";
- var cmd_addcommand = "AddCommand:";
+ var cmd_clear_commands = "ClearCommands";
+ var cmd_add_command = "AddCommand:";
+ var cmd_update_commands = "UpdateCommands";
+ var cmd_set_overview = "SetOverview:";
+ var cmd_add_filter_option = "AddFilterOption";
if (message_event.data.indexOf(cmd_skdebugf) == 0) {
var msg_contents = message_event.data.slice(cmd_skdebugf.length)
console.log("Skia: " + msg_contents);
- } else if (message_event.data.indexOf(cmd_clearcommands) == 0) {
- document.getElementById("command_list").options.length = 0;
- } else if (message_event.data.indexOf(cmd_addcommand) == 0) {
- var command_list = document.getElementById("command_list");
- var command = message_event.data.slice(cmd_addcommand.length);
- var index = command_list.options.length
- command_list.options[index] = new Option(command, index);
- command_list.selectedIndex = command_list.length - 1;
+ } else if (message_event.data.indexOf(cmd_clear_commands) == 0) {
+ command_list = [];
+ command_types = {};
+ updateCommandList();
+ updateFilterList();
+ } else if (message_event.data.indexOf(cmd_add_command) == 0) {
+ var command = message_event.data.slice(cmd_add_command.length);
+ command_list.push(command);
+ if (command_types[command] == undefined) {
+ command_types[command] = 1;
+ } else {
+ command_types[command]++;
+ }
+ } else if (message_event.data.indexOf(cmd_update_commands) == 0) {
+ updateCommandList();
+ updateFilterList();
+ } else if (message_event.data.indexOf(cmd_set_overview) == 0) {
+ overview_text = message_event.data.slice(cmd_set_overview.length);
+ document.getElementById("overview_radio").checked = true;
+ updateOverviewDetails();
} else {
alert(message_event.data);
}
}
- function commandSelected() {
- var command_list = document.getElementById("command_list");
- var selected_index = command_list.options[command_list.selectedIndex].value;
- if (selected_index >= 0) {
- sendMsg("CommandSelected:" + selected_index);
- }
- }
-
// Send a message to the plugin.
function sendMsg(msg) {
if (skia_module) {
@@ -103,6 +182,14 @@
}
}
+ function commandSelected() {
+ var command_list = document.getElementById("command_list");
+ var selected_index = command_list.options[command_list.selectedIndex].value;
+ if (selected_index >= 0) {
+ sendMsg("CommandSelected:" + selected_index);
+ }
+ }
+
function rewind() {
command_list.selectedIndex = 0;
sendMsg("Rewind");
@@ -194,10 +281,8 @@
<button><img src="icons/profile.png"/><br/>Profile</button>
</div>
<div class="column" style="text-align:right; vertical-align:middle;">
- <select>
- <option selected>--Filter By Available Commands--</option>
- </select>
- <button><img src="icons/reload.png"/><br/>Clear Filter</button>
+ <select id="command_filter" onChange="javascript:updateCommandList(this.options[this.selectedIndex].value)"></select>
+ <button onClick="javascript:updateCommandList()"><img src="icons/reload.png" /><br/>Clear Filter</button>
</div>
</div>
</div>
@@ -333,12 +418,12 @@
<div class="row-set">
<div class="row" style="height:5px; overflow:auto;">
<form id="overviewdetails_form">
- <input type="radio" name="overviewdetails_radio" value="overview" checked>Overview
- <input type="radio" name="overviewdetails_radio" value="details">Details
+ <input type="radio" name="overviewdetails_radio" onChange="javascript:updateOverviewDetails()" id="overview_radio" value="overview" checked>Overview
+ <input type="radio" name="overviewdetails_radio" onChange="javascript:updateOverviewDetails()" id="details_radio" value="details">Details
</form>
</div>
<div class="row">
- <textarea readonly id="overviewdetails"></textarea>
+ <div id="overviewdetails"></div>
</div>
</div>
</div>
« no previous file with comments | « nacl/debugger/debugger.css ('k') | nacl/src/nacl_debugger.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698