Bug 430213: Fill details pane when folders in the left tree of the Library are selected, patch by Marco Bonardo <mak77@supereva.it>, r=mano, a=mconnor

git-svn-id: svn://10.0.0.236/trunk@250786 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
gavin%gavinsharp.com
2008-04-25 16:47:35 +00:00
parent ac2b77456e
commit 217c5385c0
2 changed files with 34 additions and 10 deletions

View File

@@ -230,6 +230,7 @@ var PlacesOrganizer = {
}
this._setSearchScopeForNode(node);
this._fillDetailsPane(node);
},
/**
@@ -311,6 +312,18 @@ var PlacesOrganizer = {
}
},
/**
* Handle focus changes on the trees.
* When moving focus between panes we should update the details pane contents.
* @param aEvent
* The mouse event.
*/
onTreeFocus: function PO_onTreeFocus(aEvent) {
var currentView = aEvent.currentTarget;
var selectedNode = currentView.selectedNode;
this._fillDetailsPane(selectedNode);
},
openFlatContainer: function PO_openFlatContainerFlatContainer(aContainer) {
if (aContainer.itemId != -1)
this._places.selectItems([aContainer.itemId]);
@@ -606,6 +619,13 @@ var PlacesOrganizer = {
},
onContentTreeSelect: function PO_onContentTreeSelect() {
this._fillDetailsPane(this._content.selectedNode);
},
_fillDetailsPane: function PO__fillDetailsPane(aSelectedNode) {
var infoBox = document.getElementById("infoBox");
var detailsDeck = document.getElementById("detailsDeck");
// If a textbox within a panel is focused, force-blur it so its contents
// are saved
if (gEditItemOverlay.itemId != -1) {
@@ -614,31 +634,33 @@ var PlacesOrganizer = {
focusedElement instanceof HTMLTextAreaElement) &&
/^editBMPanel.*/.test(focusedElement.parentNode.parentNode.id))
focusedElement.blur();
}
var infoBox = document.getElementById("infoBox");
var detailsDeck = document.getElementById("detailsDeck");
var selectedNode = this._content.selectedNode;
if (selectedNode && !PlacesUtils.nodeIsSeparator(selectedNode)) {
// don't update the panel if we are already editing this node
if (aSelectedNode && gEditItemOverlay.itemId == aSelectedNode.itemId &&
detailsDeck.selectedIndex == 1)
return;
}
if (aSelectedNode && !PlacesUtils.nodeIsSeparator(aSelectedNode)) {
detailsDeck.selectedIndex = 1;
infoBox.hidden = false;
// Using the concrete itemId is arguably wrong. The bookmarks API
// does allow setting properties for folder shortcuts as well, but since
// the UI does not distinct between the couple, we better just show
// the concrete item properties.
if (selectedNode.type ==
if (aSelectedNode.type ==
Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER_SHORTCUT) {
gEditItemOverlay.initPanel(asQuery(selectedNode).folderItemId,
gEditItemOverlay.initPanel(asQuery(aSelectedNode).folderItemId,
{ hiddenRows: ["folderPicker"],
forceReadOnly: true });
}
else {
var itemId = selectedNode.itemId;
var itemId = aSelectedNode.itemId;
gEditItemOverlay.initPanel(itemId != -1 ? itemId :
PlacesUtils._uri(selectedNode.uri),
PlacesUtils._uri(aSelectedNode.uri),
{ hiddenRows: ["folderPicker"] });
}
this._detectAndSetDetailsPaneMinimalState(selectedNode);
this._detectAndSetDetailsPaneMinimalState(aSelectedNode);
}
else {
detailsDeck.selectedIndex = 0;

View File

@@ -401,6 +401,7 @@
hidecolumnpicker="true" context="placesContext"
onselect="PlacesOrganizer.onPlaceSelected(true);"
onclick="PlacesOrganizer.onTreeClick(event);"
onfocus="PlacesOrganizer.onTreeFocus(event);"
seltype="single"
persist="width"
width="200"
@@ -460,6 +461,7 @@
ondblclick="PlacesOrganizer.openSelectedNode(event);"
onopenflatcontainer="PlacesOrganizer.openFlatContainer(aContainer);"
onselect="PlacesOrganizer.onContentTreeSelect();"
onfocus="PlacesOrganizer.onTreeFocus(event);"
onclick="PlacesOrganizer.onTreeClick(event);">
<treecols id="placeContentColumns" context="placesColumnsContext">
<treecol label="&col.name.label;" id="placesContentTitle" anonid="title" flex="5" primary="true" ordinal="1"