This commit is contained in:
sspitzer%netscape.com 2000-05-11 02:54:03 +00:00
Родитель de4d385819
Коммит 5177ec9d6d
3 изменённых файлов: 128 добавлений и 89 удалений

Просмотреть файл

@ -43,7 +43,7 @@
url("chrome://communicator/skin/sidebar/sidebar-bottomright-cap.gif");
}
splitter#sidebar-splitter > grippy {
#sidebar-splitter > grippy {
margin: 0px;
padding: 0px;
border: 2px solid #003366;
@ -54,46 +54,46 @@ splitter#sidebar-splitter > grippy {
background-position: 50% 50%;
}
splitter#sidebar-splitter > grippy:hover,
splitter#sidebar-splitter > grippy:active {
#sidebar-splitter > grippy:hover,
#sidebar-splitter > grippy:active {
background-color: #99CCFF;
background-image:
url("chrome://communicator/skin/sidebar/sbgrippy-left-hover.gif");
}
splitter#sidebar-splitter[collapsed="true"] > grippy {
#sidebar-splitter[collapsed="true"] > grippy {
background-image:
url("chrome://communicator/skin/sidebar/sbgrippy-right.gif");
}
splitter#sidebar-splitter[collapsed="true"] > grippy:hover,
splitter#sidebar-splitter[collapsed="true"] > grippy:active {
#sidebar-splitter[collapsed="true"] > grippy:hover,
#sidebar-splitter[collapsed="true"] > grippy:active {
background-image:
url("chrome://communicator/skin/sidebar/sbgrippy-right-hover.gif");
}
image#sidebar-status-grippy {
#sidebar-status-grippy {
padding: 2px 2px 2px 0px;
background-color: #003366;
background-image:
url("chrome://communicator/skin/sidebar/sidebar-open.gif");
}
image#sidebar-status-grippy:hover {
#sidebar-status-grippy:hover {
background-image:
url("chrome://communicator/skin/sidebar/sidebar-open-hover.gif");
}
image#sidebar-status-grippy[open="true"] {
#sidebar-status-grippy[open="true"] {
background-image:
url("chrome://communicator/skin/sidebar/sidebar-close.gif");
}
image#sidebar-status-grippy[open="true"]:hover {
#sidebar-status-grippy[open="true"]:hover {
background-image:
url("chrome://communicator/skin/sidebar/sidebar-close-hover.gif");
}
/**/
box#sidebar-box {
#sidebar-box {
margin-top: 1px;
width: 162px;
min-height: 1px;
@ -103,94 +103,81 @@ box#sidebar-box {
border-bottom: 8px solid #003366;
}
box#sidebar-panels {
#sidebar-panels {
min-width: 1px;
min-height: 1px;
min-height: 10px;
margin-top: 1px;
}
text.loading-image {
.text-panel-loading {
margin: 5px 0px;
}
image.loading-image {
.image-panel-loading {
margin: 5px;
list-style-image: url("resource:/res/rdf/loading.gif");
}
iframe.panel-frame {
.iframe-panel {
min-width: 1px;
min-height: 1px;
}
/*
* Sidebar and Panel title buttons
*/
.sidebar-main-header {
color: #CCFFFF;
background-color: #003366;
border: 0px !important;
padding-left: 4px;
min-width: 1px;
}
.sidebar-main-header > text {
font-weight: bold;
margin: 2px;
}
menu#sidebar-panel-picker:hover {
background-color: #336699;
}
menu#sidebar-panel-picker:hover {
background-color: #336699;
}
menu#sidebar-panel-picker > .menu-right {
list-style-image: url("chrome://global/skin/toolbar-menu-arrow.gif");
padding-right: 2px;
}
menu#sidebar-panel-picker > .menu-text {
color: #CCFFFF;
padding-left: 4px;
}
menu#sidebar-panel-picker > .menu-accel {
display: none;
}
sidebarheader[type="box"] {
behavior: url(chrome://global/content/globalBindings.xml#sidebar-header-box);
}
sidebarheader[type="splitter"] {
behavior: url(chrome://global/content/globalBindings.xml#sidebar-header-splitter);
/* a vertical splitter */
cursor: n-resize;
}
box.texttab.sidebar-tab {
.sidebarheader-main {
color: #CCFFFF;
background-color: #003366;
border: 0px !important;
padding-left: 4px;
min-width: 1px;
min-height: 1px;
}
.sidebarheader-main > text {
font-weight: bold;
margin: 2px;
}
#sidebar-panel-picker:hover {
background-color: #336699;
}
#sidebar-panel-picker > .menu-right {
list-style-image: url("chrome://global/skin/toolbar-menu-arrow.gif");
padding-right: 2px;
}
#sidebar-panel-picker > .menu-text {
color: #CCFFFF;
padding-left: 4px;
}
#sidebar-panel-picker > .menu-accel {
display: none;
}
.texttab.texttab-sidebar {
background-color: #CCCCCC;
padding: 0px;
margin: 0px;
}
box.texttab.sidebar-tab[top-panel="true"],
box.texttab.sidebar-tab[first-panel-after-selected="true"] {
.texttab.texttab-sidebar[top-panel="true"],
.texttab.texttab-sidebar[first-panel-after-selected="true"] {
background-color: white;
}
box.texttab.sidebar-tab > .remain-space {
.texttab.texttab-sidebar > .remain-space {
width: 30px;
min-width: 1px;
}
box.texttab.sidebar-tab[last-panel="true"] > .remain-space {
.texttab.texttab-sidebar[last-panel="true"] > .remain-space {
border-bottom: none;
}
box.texttab.sidebar-tab[last-panel="true"][selected="true"] > .remain-space {
.texttab.texttab-sidebar[last-panel="true"][selected="true"] > .remain-space {
border-bottom: 1px solid black;
}
*[hidden="true"] {
display: none;
}
*[collapsed="true"] {
visibility: collapse;
}

Просмотреть файл

@ -8,6 +8,9 @@
/* import the widget style sheets */
/* all localizable skin settings shall live here */
@import url(chrome://global/locale/intl.css);
@import url(chrome://global/skin/box.css);
@import url(chrome://global/skin/button.css);
@import url(chrome://global/skin/checkbox.css);
@ -44,10 +47,11 @@ titledbutton {
/**
* The is the outer most tag in a xul document all xul
* content will be inside it.
*
* - font: 3mm tahoma,arial,helvetica,sans-serif; moved to intl.css
*/
window {
background-color: white;
font: 3mm tahoma,arial,helvetica,sans-serif;
padding: 0px;
}

Просмотреть файл

@ -73,19 +73,16 @@
<property name="value" onget="return this.anonymousContent[0].selectedItem.data">
<setter>
<![CDATA[
dump("(" + this.tagName + "): preselecting " + val + "\n");
var menulist = this.anonymousContent[0];
var dataItems = menulist.getElementsByAttribute("data", val);
dump("Found " + dataItems.length + " items\n");
menulist.selectedItem = dataItems[0];
dump("done.\n");
if (dataItems.length > 0)
menulist.selectedItem = dataItems[0];
]]>
</setter>
</property>
<method name="refreshList">
<body>
<![CDATA[
dump("Refreshing " + this.tagName + " id=" + this.id + "\n");
var menuItemIds = this.valueIds;
var menuItemStrings = this.valueStrings;
@ -244,21 +241,34 @@
this.internalValue = val;
var attrib = val.attrib;
this.searchAttribute = attrib;
if (type == Components.interfaces.nsMsgSearchAttrib.Priority)
if (attrib == Components.interfaces.nsMsgSearchAttrib.Priority)
this.anonymousContent[1].data=val.priority;
else if (type == Components.interfaces.nsMsgSearchAttrib.MsgStatus)
else if (attrib == Components.interfaces.nsMsgSearchAttrib.MsgStatus)
this.anonymousContent[2].data=val.status;
else
this.anonymousContent[0].value = val.str;
]]>
</setter>
</property>
<method name="save">
<body>
<![CDATA[
dump("Saving searchvalue\n");
var searchValue = this.value;
var searchAttribute = this.searchAttribute;
var nsMsgSearchAttrib = Components.interfaces.nsMsgSearchAttrib;
if (searchAttribute == nsMsgSearchAttrib.Priority)
searchValue.priority = this.anonymousContent[1].selectedItem.data;
else if (searchAttribute == nsMsgSearchAttrib.MsgStatus)
searchValue.status = this.anonymousContent[2].selectedItem.data;
else
searchValue.str = this.anonymousContent[0].value;
]]>
</body>
</method>
</interface>
</binding>
<binding id="searchterm" extends="xul:box">
<content>
<xul:text value="searchterm"/>
</content>
<interface>
<!-- the three tags that make up a term - to use, set the
attribute in the XUL to the ID of the term.
@ -274,12 +284,12 @@
var searchOperator=this.searchoperator;
var searchValue=this.searchvalue;
dump("Setting searchAttribute.value\n");
// now reflect all attributes of the searchterm into the widgets
if (searchAttribute) searchAttribute.value = term.attrib;
dump("Setting searchOperator.value\n");
if (searchOperator) searchOperator.value = val.op;
dump("Setting searchValue.value\n");
if (searchValue) searchValue.value = term.value;
this.booleanAnd = val.booleanAnd;
]]>
</setter>
</property>
@ -287,15 +297,15 @@
<property name="searchScope">
<getter>
<![CDATA[
var searchAttribute = this.searchAttribute;
var searchAttribute = this.searchattribute;
if (searchAttribute)
return this.searchAttribute.searchScope;
return searchAttribute.searchScope;
return undefined;
]]>
</getter>
<setter>
<![CDATA[
var searchAttribute = this.searchAttribute;
var searchAttribute = this.searchattribute;
if (searchAttribute) searchAttribute.searchScope=val;
]]>
</setter>
@ -311,17 +321,55 @@
<property name="searchvalue"
onget="return document.getElementById(this.getAttribute('searchvalue'));"
onset="this.setAttribute('searchvalue',val.id)"/>
<property name="booleanNodes">
<![CDATA[
null;
]]>
</property>
<property name="stringBundle">
<![CDATA[
srGetStrBundle("chrome://messenger/locale/search.properties");
]]>
</property>
<property name="booleanAnd" onget="return this.internalBooleanAnd">
<setter>
<![CDATA[
// whenever you set this, all nodes in booleanNodes
// are updated to reflect the string
<!-- takes an nsIMsgSearchValue and initializes the appropriate widget
with the right value
-->
<!-- right now only handles filters - need to abstract termlist -->
<method name="initialize">
<argument name="filter"/>
<argument name="termIndex"/>
<argument name="scope"/>
if (this.internalBooleanAnd == val) return;
this.internalBooleanAnd = val;
var booleanNodes = this.booleanNodes;
if (!booleanNodes) return;
var stringBundle = this.stringBundle;
var andString = booleanAnd ? "And" : "Or";
for (var i=0; i<booleanNodes.length; i++) {
try {
var staticString =
stringBundle.GetStringFromName("search" + andString + i);
if (staticString && staticString.length>0)
booleanNodes[i].setAttribute("value", staticString);
} catch (ex) { /* no error, means string not found */}
}
]]>
</setter>
</property>
<method name="save">
<body>
<![CDATA[
var searchTerm = this.searchTerm;
dump("Saving searchterm = " + searchTerm + "\n");
dump("Saving (" + this.searchattribute.value + "," +
this.searchoperator.value + "," +
this.searchvalue.value + "," +
this.booleanAnd + ")\n");
searchTerm.attrib = this.searchattribute.value;
searchTerm.op = this.searchoperator.value;
this.searchvalue.save();
searchTerm.booleanAnd = this.booleanAnd;
]]>
</body>
</method>