[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 23/483: Fix tree styling of anchor nodes
David Prévot
taffit at moszumanska.debian.org
Thu Jan 22 21:41:23 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus-element-hiding-helper.
commit f717cb6b93b7c59bd8ba253f7e2252c9d3b0f658
Author: Wladimir Palant <trev at gtchat.de>
Date: Wed Jan 10 14:11:00 2007 +0000
Fix tree styling of anchor nodes
--HG--
extra : convert_revision : svn%3Ad8bf93c1-8190-44a8-bb31-1ea94378a4df/trunk%40620
---
chrome/content/composer.js | 129 ++++++++++++++++++++++++++++++--------------
chrome/content/composer.xul | 4 +-
2 files changed, 91 insertions(+), 42 deletions(-)
diff --git a/chrome/content/composer.js b/chrome/content/composer.js
index ca64414..39824ec 100644
--- a/chrome/content/composer.js
+++ b/chrome/content/composer.js
@@ -27,6 +27,10 @@ var nodeData;
var selectedNode = null;
var advancedMode = false;
+/*******************
+ * NodeData object *
+ *******************/
+
function NodeData(node, parentNode) {
this.tagName = {value: node.tagName, checked: false};
@@ -59,6 +63,75 @@ function NodeData(node, parentNode) {
this.customCSS = {selected: "", checked: false};
}
+/*******************
+ * TreeView object *
+ *******************/
+
+function TreeView(tree) {
+ var origView = tree.view;
+ this.getRowProperties = TreeView_getRowProperties;
+ this.getCellProperties = TreeView_getCellProperties;
+
+ createQIProxy(this, origView)
+
+ for (var key in origView) {
+ if (this.hasOwnProperty(key))
+ continue;
+
+ createPropertyProxy(this, origView, key);
+ }
+
+ tree.view = this;
+}
+
+function createQIProxy(obj, orig) {
+ obj.QueryInterface = function(iid) {
+ var impl = orig.QueryInterface(iid);
+ if (impl != orig)
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+
+ return obj;
+ }
+}
+
+function createPropertyProxy(obj, orig, key) {
+ if (typeof orig[key] == "function") {
+ obj[key] = function() {
+ return orig[key].apply(orig, arguments);
+ }
+ }
+ else {
+ obj.__defineGetter__(key, function() {
+ return orig[key];
+ });
+ obj.__defineSetter__(key, function(value) {
+ orig[key] = value;
+ });
+ }
+}
+
+var atomService = Components.classes["@mozilla.org/atom-service;1"]
+ .getService(Components.interfaces.nsIAtomService);
+var selectedAtom = atomService.getAtom("selected-false");
+var anchorAtom = atomService.getAtom("anchor");
+
+function TreeView_getRowProperties(row, properties) {
+ if (!this.selection.isSelected(row))
+ properties.AppendElement(selectedAtom);
+
+ var item = this.getItemAtIndex(row);
+ if (item && (item.nodeData.expressionRaw != "*" || item.nodeData == nodeData))
+ properties.AppendElement(anchorAtom);
+}
+
+function TreeView_getCellProperties(row, col, properties) {
+ this.getRowProperties(row, properties);
+}
+
+/*********************
+ * General functions *
+ *********************/
+
function init() {
var element = window.arguments[0];
var wnd = element.ownerDocument.defaultView;
@@ -94,6 +167,8 @@ function init() {
setAdvancedMode(document.documentElement.getAttribute("advancedMode") == "true");
updateExpression();
+ new TreeView(document.getElementById("nodes-tree"));
+
setTimeout(function() {
fillDomains(domainData);
document.getElementById("domainGroup").selectedItem.focus();
@@ -151,15 +226,6 @@ function updateExpression() {
curNode.expressionSimple = expressionSimple;
curNode.expressionRaw = expressionRaw;
- var cells = curNode.treeCells;
- var row = curNode.treeRow;
- var properties = (expressionRaw != "*" || curNode == nodeData ? "anchor" : "");
- if (properties != "" && curNode != selectedNode)
- properties += " selected-false";
- for (var i = 0; i < cells.length; i++)
- cells[i].setAttribute("properties", properties);
- row.setAttribute("properties", properties);
-
if (expressionSimple == null || (expressionRaw != "*" && curNode != nodeData))
simpleMode = false;
@@ -230,6 +296,9 @@ function updateExpression() {
}
document.getElementById("expression").value = expression;
+
+ var tree = document.getElementById("nodes-tree");
+ tree.boxObject.invalidateRow(tree.view.selection.currentIndex);
}
function fillDomains(domainData) {
@@ -268,30 +337,23 @@ function fillNodes(nodeData) {
if (nodeData.attributes.length > i && nodeData.attributes[i].name == "class")
className = nodeData.attributes[i++].value;
- nodeData.treeCells = [];
-
var item = document.createElement("treeitem");
var row = document.createElement("treerow");
var cell = document.createElement("treecell");
cell.setAttribute("label", nodeData.tagName.value);
row.appendChild(cell);
- nodeData.treeCells.push(cell);
var cell = document.createElement("treecell");
cell.setAttribute("label", id);
row.appendChild(cell);
- nodeData.treeCells.push(cell);
var cell = document.createElement("treecell");
cell.setAttribute("label", className);
row.appendChild(cell);
- nodeData.treeCells.push(cell);
item.appendChild(row);
item.nodeData = nodeData;
- nodeData.treeRow = row;
- nodeData.treeItem = item;
if (curChildren) {
item.appendChild(curChildren);
@@ -415,8 +477,14 @@ function setAdvancedMode(mode) {
if (advancedMode && selectedNode) {
var tree = document.getElementById("nodes-tree");
- var index = tree.view.getIndexOfItem(selectedNode.treeItem);
- tree.view.selection.select(index);
+
+ // Expand all containers
+ var items = tree.getElementsByTagName("treeitem");
+ for (var i = 0; i < items.length; i++)
+ if (items[i].getAttribute("container") == "true")
+ items[i].setAttribute("open", "true");
+
+ tree.view.selection.select(tree.view.rowCount - 1);
}
}
@@ -429,32 +497,13 @@ function updateNodeSelection() {
var min = {};
selection.getRangeAt(0, min, {});
- var item = tree.view.getItemAtIndex(min.value);
+ var item = tree.view
+ .QueryInterface(Components.interfaces.nsITreeContentView)
+ .getItemAtIndex(min.value);
if (!item || !item.nodeData)
return;
- if (selectedNode != null) {
- // HACKHACK: Adjust selected-false property
- var cells = selectedNode.treeCells;
- for (var i = 0; i < cells.length; i++)
- if (cells[i].getAttribute("properties"))
- cells[i].setAttribute("properties", cells[i].getAttribute("properties") + " selected-false");
-
- var row = selectedNode.treeRow;
- if (row.getAttribute("properties"))
- row.setAttribute("properties", row.getAttribute("properties") + " selected-false");
- }
-
fillAttributes(item.nodeData);
-
- cells = selectedNode.treeCells;
- for (i = 0; i < cells.length; i++)
- if (cells[i].getAttribute("properties"))
- cells[i].setAttribute("properties", cells[i].getAttribute("properties").replace(/ selected-false$/, ''));
-
- row = selectedNode.treeRow;
- if (row.getAttribute("properties"))
- row.setAttribute("properties", row.getAttribute("properties").replace(/ selected-false$/, ''));
}
function addExpression() {
diff --git a/chrome/content/composer.xul b/chrome/content/composer.xul
index 9640ea1..50ac563 100644
--- a/chrome/content/composer.xul
+++ b/chrome/content/composer.xul
@@ -67,9 +67,9 @@
<treecols>
<treecol id="nodes-tree-node" label="&nodes-tree.node.label;" primary="true" flex="2" persist="width ordinal hidden"/>
<splitter class="tree-splitter"/>
- <treecol id="nodes-tree-id" label="&nodes-tree.id.label;" flex="1" persist="width ordinal hidden"/>
+ <treecol id="nodes-tree-id" label="&nodes-tree.id.label;" flex="1" hidden="true" persist="width ordinal hidden"/>
<splitter class="tree-splitter"/>
- <treecol id="nodes-tree-class" label="&nodes-tree.class.label;" flex="1" persist="width ordinal hidden"/>
+ <treecol id="nodes-tree-class" label="&nodes-tree.class.label;" flex="1" hidden="true" persist="width ordinal hidden"/>
</treecols>
<treechildren id="nodes-tree-children"/>
</tree>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus-element-hiding-helper.git
More information about the Pkg-mozext-commits
mailing list