46613, classic skin polish and other fixes for message compose window

This commit is contained in:
ben%netscape.com 2000-09-03 05:39:33 +00:00
Родитель a9b4837fdf
Коммит 793535398b
24 изменённых файлов: 615 добавлений и 748 удалений

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

@ -649,7 +649,7 @@
tooltip="aTooltip" tooltiptext="&anchorToolbarCmd.tooltip;"/>
<!-- Formatting toolbar items. "data" are HTML tagnames, don't translate -->
<menulist id="ParagraphSelect" tooltip="aTooltip" tooltiptext="&ParagraphSelect.tooltip;">
<menulist class="toolbar-focustarget" id="ParagraphSelect" tooltip="aTooltip" tooltiptext="&ParagraphSelect.tooltip;">
<observes element="cmd_paragraphState" attribute="state" onbroadcast="onParagraphFormatChange(this.parentNode, 'cmd_paragraphState')"/>
<menupopup id="ParagraphPopup" oncommand="doStatefulCommand('cmd_paragraphState', event.target.data)">
<menuitem value="&bodyTextCmd.label;" data=""/>
@ -669,7 +669,7 @@
<!-- TODO: Use actual "face" value when combobox can display arbitrary HTML -->
<!-- "data" are HTML tagnames, don't translate -->
<menulist id="FontFaceSelect" tooltip="aTooltip" tooltiptext="&FontFaceSelect.tooltip;">
<menulist class="toolbar-focustarget" id="FontFaceSelect" tooltip="aTooltip" tooltiptext="&FontFaceSelect.tooltip;">
<observes element="cmd_fontFace" attribute="state" onbroadcast="onFontFaceChange(this.parentNode, 'cmd_fontFace')"/>
<menupopup id="FontFacePopup" oncommand="doStatefulCommand('cmd_fontFace', event.target.data)">
<menuitem value="&fontVarWidth.label;" data=""/>
@ -681,7 +681,7 @@
</menupopup>
</menulist>
<menulist id="FontSizeSelect" oncommand="EditorSelectFontSize()" tooltip="aTooltip" tooltiptext="&FontSizeSelect.tooltip;">
<menulist class="toolbar-focustarget" id="FontSizeSelect" oncommand="EditorSelectFontSize()" tooltip="aTooltip" tooltiptext="&FontSizeSelect.tooltip;">
<observes element="cmd_fontSize" attribute="state" onbroadcast="onFontSizeChange(this.parentNode, 'cmd_fontSize')"/>
<menupopup>
<menuitem value="&size-xx-smallCmd.label;"/>

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

@ -71,11 +71,10 @@
<separator class="thin"/>
<tabcontrol align="vertical" orient="vertical" flex="1">
<tabbox align="horizontal">
<tab selected="true" value="&tabHTML.label;"/>
<tabbox>
<tab value="&tabHTML.label;"/>
<tab value="&tabCSS.label;"/>
<tab value="&tabJSE.label;"/>
<spring flex="1"/>
</tabbox>
<tabpanel flex="1">
<!-- ============================================================== -->

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

@ -47,10 +47,9 @@
<keyset id="keyset"/>
<tabcontrol align="vertical" orient="vertical">
<tabbox flex="1" align="horizontal">
<tab id="TableTab" selected="true" onclick="SelectTableTab()" value="&tableTab.label;"/>
<tab id="CellTab" onclick="SelectCellTab()" value="&cellTab.label;"/>
<spring flex="1"/>
<tabbox flex="1">
<tab id="TableTab" oncommand="SelectTableTab()" value="&tableTab.label;"/>
<tab id="CellTab" oncommand="SelectCellTab()" value="&cellTab.label;"/>
</tabbox>
<tabpanel orient="vertical" id="TabPanel">

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

@ -48,7 +48,6 @@
<tab id="cookiesTab" value="&tab.cookiesonsystem.label;"/>
<tab value="&tab.bannedservers.label;"/>
<tab id="imagesTab" style="display:none" value="&tab.bannedimages.label;"/>
<spring flex="1"/>
</tabbox>
<tabpanel id="panel">
<box class="tabpanel" id="system" flex="1" orient="vertical">

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

@ -49,7 +49,6 @@
<tab id="signonSitesTab" style="display:none" value="&tab.signonsnotstored.label;"/>
<tab id="nopreview" style="display:none" value="&tab.nopreview.label;"/>
<tab id="nocapture" style="display:none" value="&tab.nocapture.label;"/>
<spring flex="1"/>
</tabbox>
<tabpanel id="panel">
<!-- saved signons -->

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

@ -32,11 +32,10 @@ Rights Reserved.
<box id="editcard" align="vertical">
<tabcontrol align="vertical" style="margin:5px">
<tabbox id="abTabBox" align="horizontal">
<tab selected="true" value="&Name.tab;"/>
<tabbox id="abTabBox">
<tab value="&Name.tab;"/>
<tab value="&Address.tab;"/>
<tab value="&Other.tab;"/>
<spring flex="1"/>
</tabbox>
<tabpanel id="abTabPanel" align="vertical" flex="1">
@ -45,9 +44,7 @@ Rights Reserved.
<box index="name" align="vertical" flex="1">
<titledbox orient="vertical" flex="1">
<title>
<text value="&Name.box;"/>
</title>
<title value="&Name.box;"/>
<box align="vertical" style="width:100%">
<box orient="horizontal">
@ -111,9 +108,7 @@ Rights Reserved.
</titledbox>
<titledbox orient="vertical" flex="1">
<title>
<text value="&Phones.box;"/>
</title>
<title value="&Phones.box;"/>
<box align="vertical" style="width:100%">
<box orient="horizontal">
@ -159,9 +154,7 @@ Rights Reserved.
<box index="address" align="vertical" flex="1">
<titledbox orient="vertical" flex="1">
<title>
<text value="&Home.box;"/>
</title>
<title value="&Home.box;"/>
<box align="vertical" style="width:100%">
@ -214,9 +207,7 @@ Rights Reserved.
</titledbox>
<titledbox orient="vertical" style="width:100%">
<title>
<text value="&Work.box;"/>
</title>
<title value="&Work.box;"/>
<box align="vertical" style="width:100%">
@ -295,19 +286,19 @@ Rights Reserved.
<box index="other" align="vertical" flex="1">
<box align="vertical" class="alignBoxWithFieldset">
<box orient="horizontal" flex="1">
<box flex="1">
<text for="Custom1" value="&Custom1.label;" class="CardEditLabel"/>
<textfield id="Custom1" flex="1"/>
</box>
<box orient="horizontal" flex="1">
<box flex="1">
<text for="Custom2" value="&Custom2.label;" class="CardEditLabel"/>
<textfield id="Custom2" flex="1"/>
</box>
<box orient="horizontal" flex="1">
<box flex="1">
<text for="Custom3" value="&Custom3.label;" class="CardEditLabel"/>
<textfield id="Custom3" flex="1"/>
</box>
<box orient="horizontal" flex="1">
<box flex="1">
<text for="Custom4" value="&Custom4.label;" class="CardEditLabel"/>
<textfield id="Custom4" flex="1"/>
</box>

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

@ -1594,3 +1594,74 @@ function LoadIdentity(startup)
}
}
}
function subjectKeyPress(event)
{
switch(event.keyCode) {
case 9:
if (!event.shiftKey) {
window._content.focus();
event.preventDefault;
}
break;
case 13:
window._content.focus();
break;
}
}
function editorKeyPress(event)
{
if (event.keyCode == 9) {
if (event.shiftKey) {
document.getElementById('msgSubject').focus();
event.preventDefault();
}
}
}
function AttachmentBucketClicked(event)
{
if (event.target.localName != 'treecell')
goDoCommand('cmd_attachFile');
}
var attachmentBucketObserver = {
onDrop: function (aEvent, aData, aDragSession)
{
var aData = aData.length ? aData[0] : aData;
if (aData.flavour != "application/x-moz-file")
return;
var dataObj = aData.data.data.QueryInterface(Components.interfaces.nsIFile);
if (!dataObj)
return;
var fileURL = nsJSComponentManager.createInstance("component://netscape/network/standard-url",
"nsIFileURL");
fileURL.file = dataObj;
AddAttachment(fileURL.spec);
},
onDragOver: function (aEvent, aFlavour, aDragSession)
{
if (aFlavour != "application/x-moz-file")
return;
var attachmentBucket = document.getElementById("attachmentBucket");
attachmentBucket.setAttribute("dragover", "true");
},
onDragExit: function (aEvent, aDragSession)
{
var attachmentBucket = document.getElementById("attachmentBucket");
attachmentBucket.removeAttribute("dragover");
},
getSupportedFlavours: function ()
{
var flavourList = { };
flavourList["application/x-moz-file"] = { width: 2, iid: "nsIFile" };
return flavourList;
},
};

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

@ -46,7 +46,7 @@ function awGetSelectItemIndex(itemData)
selectElementIndexTable = new Object();
selectElem = document.getElementById("msgRecipientType#1");
for (var i = 0; i < selectElem.childNodes[0].childNodes.length; i ++)
{
{
aData = selectElem.childNodes[0].childNodes[i].getAttribute("data");
selectElementIndexTable[aData] = i;
}
@ -311,6 +311,24 @@ function awReturnHit(inputElement)
}
}
function awDeleteHit(inputElement)
{
var row = awGetRowByInputElement(inputElement);
var nextRow = awGetInputElement(row+1);
var index = 1;
if (!nextRow) {
nextRow = awGetInputElement(row-1);
index = -1;
}
if (nextRow) {
awSetFocus(row+index, nextRow)
if (row)
awRemoveRow(row);
}
else
inputElement.value = "";
}
function awInputChanged(inputElement)
{
dump("awInputChanged\n");
@ -613,3 +631,41 @@ function awSetAutoComplete(rowNumber)
selectElem = awGetPopupElement(rowNumber);
_awSetAutoComplete(selectElem, inputElem)
}
function awRecipientKeyPress(event, element)
{
switch(event.keyCode) {
case 13:
awReturnHit(element);
break;
case 9:
awTabFromRecipient(element, event);
break;
case 46:
case 8:
if (!element.value && !this.lastVal)
awDeleteHit(element);
break;
}
this.lastVal = element.value;
}
function awKeyPress(event, treeElement)
{
switch(event.keyCode) {
case 46:
case 8:
var selItems = treeElement.selectedItems;
var kids = document.getElementById("addressWidgetBody");
for (var i = 0; i < selItems.length; i++) {
// must not delete the last item
if (kids.childNodes.length > 1)
kids.removeChild(selItems[i]);
else
selItems[i].firstChild.lastChild.childNodes[1].value = "";
top.MAX_RECIPIENTS--;
}
break;
}
}

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

@ -27,67 +27,51 @@ Rights Reserved.
<script language="JavaScript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
<!-- Addressing Widget -->
<box id="addressingWidget"
align="vertical"
>
<tree id="addressingWidgetTree"
class="addressingWidget"
rows="3"
onclick="awClickEmptySpace(event.target, true)"
ondragover="return DragOverTree(event);"
ondragdrop="return DropOnAddressingWidgetTree(event);"
>
<treecolgroup>
<treecol flex="1"/>
</treecolgroup>
<treechildren flex="1" id="addressWidgetBody">
<treeitem>
<treerow>
<treecell allowevents="true">
<menulist id="msgRecipientType#1"
onclick="awNotAnEmptyArea(event)"
oncommand="contentChanged=true;
awSetAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
<menupopup>
<menuitem data="addr_to" value="&toAddr.label;"/>
<menuitem data="addr_cc" value="&ccAddr.label;"/>
<menuitem data="addr_bcc" value="&bccAddr.label;"/>
<menuitem data="addr_reply" value="&replyAddr.label;"/>
<menuitem data="addr_newsgroups" value="&newsgroupsAddr.label;"/>
<menuitem data="addr_followup" value="&followupAddr.label;"/>
</menupopup>
</menulist>
<box autostretch="never">
<image onclick="awNotAnEmptyArea(event)"/>
</box>
<textfield id="msgRecipient#1"
flex="100%"
class="addressingWidget"
style="width:0px"
onkeypress="if (event.keyCode == 13)
awReturnHit(this);
else if (event.keyCode == 9)
awTabFromRecipient(this, event);
"
onchange="contentChanged=true;"
onclick="awNotAnEmptyArea(event);"
autocomplete="true"
timeout="300"
searchSessionType="addrbook"
displayMenu="true"
/>
</treecell>
</treerow>
</treeitem>
</treechildren>
</tree>
</box>
<!-- Addressing Widget -->
<tree id="addressingWidgetTree" style="height: 60px; width: 0px;"
class="addressingWidget inset" multiple="true"
onkeypress="awKeyPress(event, this);"
onclick="awClickEmptySpace(event.target, true)"
ondragover="return DragOverTree(event);"
ondragdrop="return DropOnAddressingWidgetTree(event);">
<treecolgroup>
<treecol flex="2"/>
<treecol flex="12"/>
</treecolgroup>
<treechildren flex="1" id="addressWidgetBody">
<treeitem>
<treerow>
<treecell class="treecell-addressingWidget" allowevents="true">
<menulist id="msgRecipientType#1" class="aw-menulist menulist-compact"
onclick="awNotAnEmptyArea(event)"
oncommand="awDisableAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
<menupopup>
<menuitem data="addr_to" value="&toAddr.label;"/>
<menuitem data="addr_cc" value="&ccAddr.label;"/>
<menuitem data="addr_bcc" value="&bccAddr.label;"/>
<menuitem data="addr_reply" value="&replyAddr.label;"/>
<menuitem data="addr_newsgroups" value="&newsgroupsAddr.label;"/>
<menuitem data="addr_followup" value="&followupAddr.label;"/>
</menupopup>
</menulist>
</treecell>
<treecell class="treecell-addressingWidget">
<box autostretch="never">
<image onclick="awNotAnEmptyArea(event)" class="person-icon"/>
</box>
<textfield id="msgRecipient#1" flex="1"
class="plain textfield-addressingWidget"
style="width:0px;" allowevents="true"
onkeypress="awRecipientKeyPress(event, this)"
onclick="awNotAnEmptyArea(event);"
autocomplete="true" timeout="300"
searchSessionType="addrbook" displayMenu="true"/>
</treecell>
</treerow>
</treeitem>
</treechildren>
</tree>
</overlay>

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

@ -1,132 +1,47 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
var msgCompSendFormat = Components.interfaces.nsIMsgCompSendFormat;
var msgCompConvertible = Components.interfaces.nsIMsgCompConvertible;
var changeDefault = false; /* Set default selection following
the recommendation. Some people think, the
default should *always* be the same. */
var param = null;
function Startup()
{
if (window.arguments && window.arguments[0])
if (window.arguments && window.arguments[0] && window.arguments[0])
{
var defaultElement = document.getElementById("SendPlainTextOnly");
// used only if changeDefault == false
// maybe make that a (default) pref
param = window.arguments[0];
param.abort = true; //if the user hit the close box, we will abort.
param.abort = true; //if the user hit the close box, we will abort.
if (param.action)
{
// Set the question label
var labeldeck = document.getElementById("mailSendFormatExplanation");
var icon = document.getElementById("convertDefault");
switch (param.convertible)
{
case msgCompConvertible.Plain:
// We shouldn't be here at all
labeldeck.setAttribute("index", 1);
// No icon
break;
case msgCompConvertible.Yes:
labeldeck.setAttribute("index", 1);
icon.setAttribute("id", "convertYes");
break;
case msgCompConvertible.Altering:
labeldeck.setAttribute("index", 2);
icon.setAttribute("id", "convertAltering");
break;
case msgCompConvertible.No:
labeldeck.setAttribute("index", 3);
icon.setAttribute("id", "convertNo");
break;
}
// Set the default radio array value and recommendation
var group = document.getElementById("mailDefaultHTMLAction");
var element;
var recommlabels = document.getElementById("hiddenLabels");
var label;
var setrecomm = false;
switch (param.action)
{
case msgCompSendFormat.AskUser:
//setrecomm = false;
break;
case msgCompSendFormat.PlainText:
element = document.getElementById("SendPlainTextOnly");
//label = recommlabels.getAttribute("plainTextOnlyRecommendedLabel");
label = document.getElementById("plainTextOnlyRecommended");
// elements for "recommended" are a workaround for bug 49623
setrecomm = true;
break;
case msgCompSendFormat.Both:
element = document.getElementById("SendPlainTextAndHtml");
//label = recommlabels.getAttribute("plainTextAndHtmlRecommendedLabel");
label = document.getElementById("plainTextAndHtmlRecommended");
setrecomm = true;
break;
case msgCompSendFormat.HTML:
element = document.getElementById("SendHtmlOnly");
//label = recommlabels.getAttribute("htmlOnlyRecommendedLabel");
label = document.getElementById("htmlOnlyRecommended");
setrecomm = true;
break;
}
if (setrecomm)
{
/*
dump(element.getAttribute("value"));
element.setAttribute("value", label);
element.setAttribute("value", "foo");
dump(element.getAttribute("value"));
*/
label.removeAttribute("hidden");
if (changeDefault)
{
group.selectedItem = element;
group.data = element.data;
}
}
if (!changeDefault)
{
group.selectedItem = defaultElement;
group.data = defaultElement.data;
}
//Set the default radio array value
var group = document.getElementById("mailDefaultHTMLAction");
var element = document.getElementById("SendPlainTextAndHtml");
group.selectedItem= element;
group.data = element.data;
//change the button label
var buttonlabels = document.getElementById("okCancelButtons");
labels = document.getElementById("okCancelButtons");
element = document.getElementById("ok");
element.setAttribute("value", buttonlabels.getAttribute("button1Label"));
element.setAttribute("value", labels.getAttribute("button1Label"));
element = document.getElementById("cancel");
element.setAttribute("value", buttonlabels.getAttribute("button2Label"));
element.setAttribute("value", labels.getAttribute("button2Label"));
/*
element = document.getElementById("Button2");
element.setAttribute("value", buttonlabels.getAttribute("button3Label"));
element.setAttribute("value", labels.getAttribute("button3Label"));
element.removeAttribute("hidden");
element.setAttribute("disabled", "true");
element = document.getElementById("Button3");
element.setAttribute("value", buttonlabels.getAttribute("button4Label"));
element.setAttribute("value", labels.getAttribute("button4Label"));
element.removeAttribute("hidden");
element.setAttribute("disabled", "true");
*/
//set buttons action
doSetOKCancel(Send, Cancel, Recipients, Help);
/* XXX Don't deliberately move windos around, compare bug 28260. Also, for any reason, the window will finally sit outside the visible screen for me. /BenB
//At this point, we cannot position the window because it still doesn't have a width and a height.
//Let move it out of the screen and then move it back at the right position, this after the first refresh.
window.moveTo(32000, 32000);
setTimeout("moveToAlertPosition();", 0);
*/
// moveToAlertPosition();
doSetOKCancel(Send, DontSend, Recipients, Help);
moveToAlertPosition();
}
}
else
{
dump("error, no return object registered\n");
}
}
function Send()
@ -144,7 +59,7 @@ function Send()
return true;
}
function Cancel()
function DontSend()
{
if (param)
param.abort = true;

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

@ -1,59 +1,35 @@
<?xml version="1.0"?><!-- -*- Mode: SGML; tab-width: 4; indent-tabs-mode: nil; -*- -->
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<!DOCTYPE window SYSTEM "chrome://messenger/locale/messengercompose/askSendFormat.dtd">
<window id="askSendFormat"
title="&windowTitle.label;"
<window title="&windowTitle.label;"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
onload="Startup()"
orient="vertical"
align="vertical"
class="dialog"
style="user-input: ignore"
>
>
<script language="JavaScript" src="chrome://messenger/content/messengercompose/askSendFormat.js"/>
<script language="JavaScript" src="chrome://messenger/content/messengercompose/askSendFormat.js"/>
<keyset id="keyset"/>
<keyset id="keyset"/>
<spring style="height:0.5em"/>
<box align="horizontal">
<spring style="width:10px"/>
<box orient="vertical" valign="middle">
<image id="convertDefault" />
</box>
<spring style="width:10px"/>
<box orient="vertical" flex="1">
<html>&recipient.label;</html>
<deck id="mailSendFormatExplanation">
<box orient="vertical"><html>&convertibleDefault.label;</html></box> <!-- Hack: <box> is a workaround for bug 44513. -->
<box orient="vertical"><html>&convertibleYes.label;</html></box>
<box orient="vertical"><html>&convertibleAltering.label;</html></box>
<box orient="vertical"><html>&convertibleNo.label;</html></box>
</deck>
<html>&question.label;</html>
<box align="vertical">
<text value="&question.label;" />
<spring style="height:1em"/>
<radiogroup id="mailDefaultHTMLAction" orient="vertical" autostretch="never">
<box orient="horizontal">
<radio group="mailDefaultHTMLAction" id="SendPlainTextAndHtml" data="0" value="&plainTextAndHtml.label;"/>
<html id="plainTextAndHtmlRecommended" hidden="true" style="margin-top: 4px;">&recommended.label;</html>
<!-- Hack: box and html are workarounds for bug 49623 -->
</box>
<box orient="horizontal">
<radio group="mailDefaultHTMLAction" id="SendPlainTextAndHtml" data="0" value="&plainTextAndHtml.label;"/>
<radio group="mailDefaultHTMLAction" id="SendPlainTextOnly" data="1" value="&plainTextOnly.label;"/>
<html id="plainTextOnlyRecommended" hidden="true" style="margin-top: 4px;">&recommended.label;</html>
</box>
<box orient="horizontal">
<radio group="mailDefaultHTMLAction" id="SendHtmlOnly" data="2" value="&htmlOnly.label;"/>
<html id="htmlOnlyRecommended" hidden="true" style="margin-top: 4px;">&recommended.label;</html>
</box>
</radiogroup>
</box>
<spring style="width:10px"/>
</box>
@ -61,15 +37,9 @@
<spring style="height:1em"/>
<box id="okCancelButtons"
button1Label="&send.label;"
button2Label="&cancel.label;"
button2Label="&dontSend.label;"
button3Label="&recipients.label;"
button4Label="&help.label;"
/>
<box id="hiddenLabels"
plainTextAndHtmlRecommendedLabel="&plainTextAndHtmlRecommended.label;"
plainTextOnlyRecommendedLabel="&plainTextOnlyRecommended.label;"
htmlOnlyRecommendedLabel="&htmlOnlyRecommended.label;"
/>
<spring style="height:1em" />
<spring style="height:0.5em" />
</window>

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

@ -19,6 +19,7 @@
- Rights Reserved.
-
- Contributor(s):
- Ben Goodger <ben@netscape.com> (ass'td polish fixes)
-->
<?xul-overlay href="chrome://global/content/charsetOverlay.xul"?>
@ -26,50 +27,37 @@
<?xul-overlay href="chrome://messenger/content/messengercompose/addressingWidgetOverlay.xul"?>
<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
<?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css" type="text/css"?>
<!--
The contents of this file are subject to the Netscape Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/NPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is Mozilla Communicator client code, released
March 31, 1998.
The Initial Developer of the Original Code is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998-1999 Netscape Communications Corporation. All
Rights Reserved.
-->
<!DOCTYPE window SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd">
<window id="main-window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:nc="http://home.netscape.com/NC-rdf#"
onunload="ComposeUnload()"
onload="ComposeLoad()"
onunload="ComposeUnload()"
onload="ComposeLoad()"
onclose="return ComposeCanClose()"
title="&msgComposeWindow.title;"
windowtype="msgcompose"
align="vertical"
width="640" height="480"
persist="screenX screenY width height"
>
title="&msgComposeWindow.title;"
windowtype="msgcompose"
orient="vertical"
width="640" height="480"
persist="screenX screenY width height">
<script language="JavaScript" src="chrome://messenger/content/accountUtils.js"/>
<script language="JavaScript" src="chrome://messenger/content/widgetglue.js"/>
<script language="JavaScript" src="chrome://editor/content/editor.js"/>
<script language="JavaScript" src="chrome://editor/content/ComposerCommands.js"/>
<script language="JavaScript" src="chrome://editor/content/EditorCommandsDebug.js"/>
<script language="JavaScript" src="chrome://global/content/strres.js"/>
<script language="JavaScript" src="chrome://messenger/content/messengercompose/MsgComposeCommands.js"/>
<script language="JavaScript" src="chrome://global/content/strres.js"></script>
<script language="JavaScript" src="chrome://messenger/content/accountUtils.js"></script>
<script language="JavaScript" src="chrome://messenger/content/widgetglue.js"></script>
<script language="JavaScript" src="chrome://editor/content/editor.js"></script>
<script language="JavaScript" src="chrome://editor/content/ComposerCommands.js"></script>
<script language="JavaScript" src="chrome://editor/content/EditorCommandsDebug.js"></script>
<script language="JavaScript" src="chrome://messenger/content/messengercompose/MsgComposeCommands.js"></script>
<!-- drag and drop -->
<script language="JavaScript" src="chrome://global/content/nsDragAndDrop.js"></script>
<script language="JavaScript" src="chrome://global/content/nsJSSupportsUtils.js"></script>
<script language="JavaScript" src="chrome://global/content/nsJSComponentManager.js"></script>
<script language="JavaScript" src="chrome://global/content/nsTransferable.js"></script>
<commands id="commands">
<commandset id="msgComposeCommandUpdate"
@ -183,7 +171,7 @@ Rights Reserved.
<!-- broadcaster id="cmd_quoteMessage" oncommand="goDoCommand('cmd_quoteMessage')"/ -->
<broadcaster id="cmd_rewrap" oncommand="goDoCommand('cmd_rewrap')"/>
<broadcaster id="Editor:Throbber" busy="false"/>
<broadcaster id="Editor:Throbber" busy="false"/>
</broadcasterset>
<broadcaster id="args" value="editorType=default"/>
@ -244,334 +232,282 @@ Rights Reserved.
<popup id="BackColorPopup"/>
</popupset>
<!-- box id="toolbar" align="vertical" style="width:100%;height:100%" -->
<toolbox class="toolbox-top">
<menubar>
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menuitem value="&newMessage.label;" accessKey="&newMessage.accesskey;" key="key_newMessage" observes="cmd_new"/>
<menu id="menu_New">
<menupopup id="menu_NewPopup">
<menuitem id="menu_newNavigator"/>
<menuitem id="menu_newEditor"/>
<toolbox class="toolbox-top">
<menubar id="compose-menubar">
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menuitem value="&newMessage.label;" accessKey="&newMessage.accesskey;" key="key_newMessage" observes="cmd_new"/>
<menu id="menu_New">
<menupopup id="menu_NewPopup">
<menuitem id="menu_newNavigator"/>
<menuitem id="menu_newEditor"/>
</menupopup>
</menu>
<menuitem value="&attachFileCmd.label;" accesskey="&attachFileCmd.accesskey;" observes="cmd_attachFile"/>
<menuitem value="&attachPageCmd.label;" accesskey="&attachPageCmd.accesskey;" observes="cmd_attachPage"/>
<menuseparator/>
<menuitem id="menu_close"/>
<menuitem value="&saveCmd.label;" key="key_save" observes="cmd_saveDefault"/>
<menu value="&saveAsCmd.label;" accessKey="&saveAsCmd.accesskey;">
<menupopup>
<menuitem value="&saveAsFileCmd.label;" accessKey="&saveAsFileCmd.accesskey;" observes="cmd_saveAsFile"/>
<menuseparator/>
<menuitem value="&saveAsDraftCmd.label;" accessKey="&saveAsDraftCmd.accesskey;" observes="cmd_saveAsDraft"/>
<menuitem value="&saveAsTemplateCmd.label;" accessKey="&saveAsTemplateCmd.accesskey;" observes="cmd_saveAsTemplate"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem value="&sendNowCmd.label;" accessKey="&sendNowCmd.accesskey;" observes="cmd_sendNow"/>
<menuitem value="&sendLaterCmd.label;" accessKey="&sendLaterCmd.accesskey;" observes="cmd_sendLater"/>
<menuseparator/>
</menupopup>
</menu>
<menuitem value="&attachFileCmd.label;" accesskey="&attachFileCmd.accesskey;" observes="cmd_attachFile"/>
<menuitem value="&attachPageCmd.label;" accesskey="&attachPageCmd.accesskey;" observes="cmd_attachPage"/>
<menuseparator/>
<menuitem id="menu_close"/>
<menuitem value="&saveCmd.label;" key="key_save" observes="cmd_saveDefault"/>
<menu value="&saveAsCmd.label;" accessKey="&saveAsCmd.accesskey;">
<menupopup>
<menuitem value="&saveAsFileCmd.label;" accessKey="&saveAsFileCmd.accesskey;" observes="cmd_saveAsFile"/>
<menuseparator/>
<menuitem value="&saveAsDraftCmd.label;" accessKey="&saveAsDraftCmd.accesskey;" observes="cmd_saveAsDraft"/>
<menuitem value="&saveAsTemplateCmd.label;" accessKey="&saveAsTemplateCmd.accesskey;" observes="cmd_saveAsTemplate"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem value="&sendNowCmd.label;" accessKey="&sendNowCmd.accesskey;" observes="cmd_sendNow"/>
<menuitem value="&sendLaterCmd.label;" accessKey="&sendLaterCmd.accesskey;" observes="cmd_sendLater"/>
<menuseparator/>
</menupopup>
</menu>
<menu id="menu_Edit">
<menupopup oncreate="EditorInitEditMenu()">
<menuitem id="menu_undo"/>
<menuitem id="menu_redo"/>
<menuseparator/>
<menuitem id="menu_cut"/>
<menuitem id="menu_copy"/>
<menuitem id="menu_paste"/>
<menuitem id="menu_pasteQuote"/>
<menuitem id="menu_delete"/>
<menuseparator/>
<menuitem id="menu_selectAll"/>
<menuseparator/>
<menuitem value="&findCmd.label;" key="key_find" accesskey="&findCmd.accesskey;" observes="cmd_find"/>
<menuitem value="&findAgainCmd.label;" key="key_findNext" accesskey="&findAgainCmd.accesskey;" observes="cmd_findNext"/>
<menuseparator/>
<menuitem value="&accountManagerCmd.label;" accesskey="&accountManagerCmd.accesskey;" observes="cmd_account"/>
<menuitem id="menu_preferences" observes="cmd_preferences"/>
</menupopup>
</menu>
<menu id="menu_View">
<menupopup>
<menu id="menu_Toolbars">
<menupopup>
<menuitem id="menu_showComposeToolbar"
value="&showComposeToolbarCmd.label;"
observes="cmd_showComposeToolbar"
accesskey="&showComposeToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showFormatToolbar"
value="&showFormatToolbarCmd.label;"
observes="cmd_showFormatToolbar"
accesskey="&showFormatToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showTaskbar"/>
</menupopup>
</menu>
<menuseparator/>
<!--
<menuitem value="&pageInfoCmd.label;" disabled="true" accesskey="&pageInfoCmd.accesskey;" cmd="nsCmd:ComposeNYI"/>
<menuseparator/>
-->
<menu id = "maileditCharsetMenu" />
</menupopup>
</menu>
<!-- entire menus comes from editorOverlay -->
<menu id="insertMenu" observes="cmd_insert"/>
<!-- menu items come from editorOverlay -->
<menu id="formatMenu" value="&formatMenu.label;" accesskey="&formatMenu.accesskey;" observes="cmd_format">
<menupopup id="formatMenuPopup">
<menu id="tableMenu"/>
<menuseparator/>
<menuitem id="objectProperties"/>
<menuitem id="colorsAndBackground"/>
</menupopup>
</menu>
<menu value="&optionsMenu.label;" accesskey="&optionsMenu.accesskey;">
<menupopup>
<menuitem value="&selectAddressCmd.label;" accesskey="&selectAddressCmd.accesskey;" observes="cmd_selectAddress"/>
<menuitem value="&checkSpellingCmd.label;" id="menu_checkspelling" accesskey="&checkSpellingCmd.accesskey;" key="key_checkspelling" observes="cmd_spelling"/>
<!--menuitem value="&quoteOrigCmd.label;" accesskey="&quoteOrigCmd.accesskey;" observes="cmd_quoteMessage"/-->
<menuitem value="&editRewrapCmd.label;" observes="cmd_rewrap" oncommand="editorShell.Rewrap(false)"/>
<menuseparator/>
<menu value="&outputFormatMenu.label;" observes="cmd_outputFormat">
<menupopup>
<menuitem type="radio" name="output_format" value="&askmeFormatCmd.label;" id="1" checked="true"/>
<menuitem type="radio" name="output_format" value="&plainTextFormatCmd.label;" id="2"/>
<menuitem type="radio" name="output_format" value="&htmlFormatCmd.label;" id="3"/>
<menuitem type="radio" name="output_format" value="&bothFormatCmd.label;" id="4"/>
</menupopup>
</menu>
<menu value="&priorityMenu.label;" oncommand="PriorityMenuSelect(event.target);">
<menupopup>
<menuitem type="radio" name="priority" value="&lowestPriorityCmd.label;" id="lowest"/>
<menuitem type="radio" name="priority" value="&lowPriorityCmd.label;" id="low"/>
<menuitem type="radio" name="priority" value="&normalPriorityCmd.label;" id="normal" checked="true"/>
<menuitem type="radio" name="priority" value="&highPriorityCmd.label;" id="high"/>
<menuitem type="radio" name="priority" value="&highestPriorityCmd.label;" id="highest"/>
</menupopup>
</menu>
<menu value="&fileCarbonCopyCmd.label;" id="fccMenu" datasources="rdf:mailnewsfolders rdf:msgaccountmanager" ref="msgaccounts:/" rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
<menupopup/>
<template>
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
<menu id="menu_Edit">
<menupopup oncreate="EditorInitEditMenu()">
<menuitem id="menu_undo"/>
<menuitem id="menu_redo"/>
<menuseparator/>
<menuitem id="menu_cut"/>
<menuitem id="menu_copy"/>
<menuitem id="menu_paste"/>
<menuitem id="menu_pasteQuote"/>
<menuitem id="menu_delete"/>
<menuseparator/>
<menuitem id="menu_selectAll"/>
<menuseparator/>
<menuitem value="&findCmd.label;" key="key_find" accesskey="&findCmd.accesskey;" observes="cmd_find"/>
<menuitem value="&findAgainCmd.label;" key="key_findNext" accesskey="&findAgainCmd.accesskey;" observes="cmd_findNext"/>
<menuseparator/>
<menuitem value="&accountManagerCmd.label;" accesskey="&accountManagerCmd.accesskey;" observes="cmd_account"/>
<menuitem id="menu_preferences" observes="cmd_preferences"/>
</menupopup>
</menu>
<menu id="menu_View">
<menupopup>
<menu id="menu_Toolbars">
<menupopup>
<!--menuitem value="[current selection]" disabled="true"/-->
<!--menuseparator/-->
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup>
<menuitem uri="..." value="&fileHereMenu.label;"
oncommand="MessageFcc(event.target)"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType" />
<menuseparator/>
</menupopup>
</menu>
<menuitem id="menu_showComposeToolbar"
value="&showComposeToolbarCmd.label;"
observes="cmd_showComposeToolbar"
accesskey="&showComposeToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showFormatToolbar"
value="&showFormatToolbarCmd.label;"
observes="cmd_showFormatToolbar"
accesskey="&showFormatToolbarCmd.accesskey;"
checked="true"/>
<menuitem id="menu_showTaskbar"/>
</menupopup>
</rule>
<rule nc:CanFileMessages="false" nc:ServerType="nntp">
<!-- don't show nntp servers in the file and copies menus -->
</rule>
<rule nc:CanFileMessages="false" iscontainer="true" isempty="false">
<!-- note, there is no "file here" -->
</menu>
<menuseparator/>
<menu id = "maileditCharsetMenu" />
</menupopup>
</menu>
<menu id="insertMenu" observes="cmd_insert"/>
<menu id="formatMenu" value="&formatMenu.label;" accesskey="&formatMenu.accesskey;" observes="cmd_format">
<menupopup id="formatMenuPopup">
<menu id="tableMenu"/>
<menuseparator/>
<menuitem id="objectProperties"/>
<menuitem id="colorsAndBackground"/>
</menupopup>
</menu>
<menu value="&optionsMenu.label;" accesskey="&optionsMenu.accesskey;">
<menupopup>
<menuitem value="&selectAddressCmd.label;" accesskey="&selectAddressCmd.accesskey;" observes="cmd_selectAddress"/>
<menuitem value="&checkSpellingCmd.label;" id="menu_checkspelling" accesskey="&checkSpellingCmd.accesskey;" key="key_checkspelling" observes="cmd_spelling"/>
<menuitem value="&quoteOrigCmd.label;" accesskey="&quoteOrigCmd.accesskey;" observes="cmd_quoteMessage"/>
<menuitem value="&editRewrapCmd.label;" observes="cmd_rewrap" oncommand="editorShell.Rewrap(false)"/>
<menuseparator/>
<menu value="&outputFormatMenu.label;" observes="cmd_outputFormat">
<menupopup>
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
<menuitem type="radio" name="output_format" value="&askmeFormatCmd.label;" id="1" checked="true"/>
<menuitem type="radio" name="output_format" value="&plainTextFormatCmd.label;" id="2"/>
<menuitem type="radio" name="output_format" value="&htmlFormatCmd.label;" id="3"/>
<menuitem type="radio" name="output_format" value="&bothFormatCmd.label;" id="4"/>
</menupopup>
</menu>
<menu value="&priorityMenu.label;" oncommand="PriorityMenuSelect(event.target);">
<menupopup>
<menuitem type="radio" name="priority" value="&lowestPriorityCmd.label;" id="lowest"/>
<menuitem type="radio" name="priority" value="&lowPriorityCmd.label;" id="low"/>
<menuitem type="radio" name="priority" value="&normalPriorityCmd.label;" id="normal" checked="true"/>
<menuitem type="radio" name="priority" value="&highPriorityCmd.label;" id="high"/>
<menuitem type="radio" name="priority" value="&highestPriorityCmd.label;" id="highest"/>
</menupopup>
</menu>
<menu value="&fileCarbonCopyCmd.label;" id="fccMenu" datasources="rdf:mailnewsfolders rdf:msgaccountmanager" ref="msgaccounts:/" rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild">
<menupopup/>
<template>
<rule nc:CanFileMessages="true" iscontainer="true" isempty="false">
<menupopup>
<!--menuitem value="[current selection]" disabled="true"/>
<menuseparator/-->
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup>
<menuitem uri="..." value="&fileHereMenu.label;"
oncommand="MessageFcc(event.target)"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup/>
</menu>
</menupopup>
</rule>
<rule nc:CanFileMessages="true">
<menupopup>
<menuitem uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="MessageFcc(event.target)"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
</menupopup>
</rule>
</template>
</menu>
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType" />
<menuseparator/>
</menupopup>
</menu>
</menupopup>
</rule>
<rule nc:CanFileMessages="false" nc:ServerType="nntp"/>
<rule nc:CanFileMessages="false" iscontainer="true" isempty="false">
<menupopup>
<menu uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup/>
</menu>
</menupopup>
</rule>
<rule nc:CanFileMessages="true">
<menupopup>
<menuitem uri="..." class="folderMenuItem" value="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="MessageFcc(event.target)"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
</menupopup>
</rule>
</template>
</menu>
<!--menuseparator/>
<menuitem value="&addSignatureCmd.label;" disabled="true" oncommand=""/>
<menuitem value="&attachVCardCmd.label;" disabled="true" accesskey="&attachVCardCmd.accesskey;" oncommand="AttachVCard()"/-->
</menupopup>
</menu>
<menu id="debugMenu"/>
<menu id="tasksMenu"/>
<menu id="menu_Help"/>
</menubar>
<!--
<menuseparator/>
<menuitem value="&addSignatureCmd.label;" disabled="true" oncommand=""/>
<menuitem value="&attachVCardCmd.label;" disabled="true" accesskey="&attachVCardCmd.accesskey;" oncommand="AttachVCard()"/>
-->
</menupopup>
</menu>
<menu id="debugMenu"/>
<menu id="tasksMenu"/>
<menu id="menu_Help"/>
<spring flex="100%"/>
</menubar>
<toolbar class="toolbar-primary" id="composeToolbar" persist="collapsed">
<box id="toolbar_button_box">
<button class="button-toolbar-2 top" id="button-send" value="&sendButton.label;" tooltip="aTooltip" tooltiptext="&sendButton.tooltip;" observes="cmd_sendNow"/>
<separator/>
<button class="button-toolbar-2 top" id="button-address" value="&addressButton.label;" tooltip="aTooltip" tooltiptext="&addressButton.tooltip;" observes="cmd_selectAddress"/>
<button class="button-toolbar-2 top" id="button-attach" value="&attachButton.label;" tooltip="aTooltip" tooltiptext="&attachButton.tooltip;" observes="cmd_attachFile"/>
<!--button class="button-toolbar-2 top" id="button-quote" value="&quoteButton.label;" tooltip="aTooltip" tooltiptext="&quoteButton.tooltip;" observes="cmd_quoteMessage"/-->
<button class="button-toolbar-2 top" id="spellingButton" value="&spellingButton.label;" observes="cmd_spelling"/>
<separator/>
<button class="button-toolbar-2 top" id="button-save" value="&saveButton.label;" tooltip="aTooltip" tooltiptext="&saveButton.tooltip;" observes="cmd_saveDefault"/>
<spring flex="100%"/>
</box>
<button class="plain" id="navigator-throbber" oncommand='goClickThrobber("compose.throbber.url")'>
<observes element="broadcaster_throbber" attribute="busy"/>
</button>
</toolbar>
<toolbar id="MsgHeadersToolbar" persist="collapsed">
<box align="horizontal" flex="100%">
<spring style="width:0.5em; min-width:0.5em"/>
<box align="vertical" flex="75%" style="min-width: 20em">
<spring style="height:0.5em"/>
<box align="horizontal">
<text value="&fromAddr.label;"/>
<spring style="width:0.5em"/>
<menulist id="msgIdentity" value="..." flex="100%" oncommand="contentChanged=true; LoadIdentity(false);">
<menupopup id="msgIdentityPopup" flex="100%"/>
</menulist>
</box>
<spring style="height:0.5em"/>
<!-- addressing widget -->
<box id="addressingWidget"/>
<spring style="height:0.5em"/>
<box align="horizontal">
<text value="&subject.label;"/>
<spring style="width:0.5em"/>
<textfield id="msgSubject" type="text" flex="100%"
onkeyup="SetComposeWindowTitle(event.keyCode);"
onkeypress="if (event.keyCode == 9) {
if (event.shiftKey == false) {
window._content.focus();
event.preventDefault();
}
}
else
if (event.keyCode == 13)
window._content.focus();"
onchange="contentChanged=true;"
/>
</box>
<spring style="height:0.5em"/>
</box>
<!--spring style="width:0.5em"/-->
<splitter id="gray_horizontal_splitter" persist="state"/>
<box align="vertical" flex="25%">
<spring style="height:0.5em"/>
<box align="vertical" style="height:1em">
<text value="&attachments.label;" flex="100%"/>
</box>
<spring style="height:0.5em"/>
<box align="vertical" style="height:8.5em; background-color:white; border-top:solid black 1px">
<tree id="attachmentBucket" flex="100%" style="width:0px"
onkeypress="if (event.keyCode == 8 || event.keyCode == 46) RemoveSelectedAttachment();"
onchange="contentChanged=true;">
<treecolgroup>
<treecol flex="1"/>
</treecolgroup>
<treechildren id="bucketBody" flex="1">
</treechildren>
</tree>
</box>
<spring style="height:0.5em"/>
</box>
<spring style="width:0.5em; min-width:0.5em"/>
</box>
</toolbar>
<!-- These toolbar items get filled out from the editorOverlay -->
<toolbar id="FormatToolbar" persist="collapsed" tbautostretch="always">
<!-- We need this else menulists get stretched -->
<box autostretch="never">
<menulist id="ParagraphSelect"/>
<menulist id="FontFaceSelect"/>
<stack id="ColorButtons"/>
<button class="button-toolbar-2 top"
id="button-send" value="&sendButton.label;"
tooltip="aTooltip" tooltiptext="&sendButton.tooltip;"
observes="cmd_sendNow"/>
<toolbarseparator/>
<button class="button-toolbar-2 top"
id="button-address" value="&addressButton.label;"
tooltip="aTooltip" tooltiptext="&addressButton.tooltip;"
observes="cmd_selectAddress"/>
<button class="button-toolbar-2 top"
id="button-attach" value="&attachButton.label;"
tooltip="aTooltip" tooltiptext="&attachButton.tooltip;"
observes="cmd_attachFile"/>
<button class="button-toolbar-2 top"
id="spellingButton" value="&spellingButton.label;"
observes="cmd_spelling"/>
<toolbarseparator/>
<button class="button-toolbar-2 top"
id="button-save" value="&saveButton.label;"
tooltip="aTooltip" tooltiptext="&saveButton.tooltip;"
observes="cmd_saveDefault"/>
<spring flex="1"/>
<button id="navigator-throbber"
oncommand="goClickThrobber('compose.throbber.url')">
<observes element="broadcaster_throbber" attribute="busy"/>
</button>
</toolbar>
<toolbar id="MsgHeadersToolbar" persist="collapsed" tborient="vertical" tbautostretch="always" flex="1">
<box id="msgheaderstoolbar-box" flex="1">
<box orient="vertical" flex="75">
<box autostretch="never">
<text class="label" value="&fromAddr.label;"/>
<menulist id="msgIdentity" value="..." flex="1" oncommand="LoadIdentity(false);">
<menupopup id="msgIdentityPopup"/>
</menulist>
</box>
<tree id="addressingWidgetTree" flex="1"/>
<box autostretch="never">
<text class="label" value="&subject.label;"/>
<textfield id="msgSubject" type="text" flex="1" onkeyup="SetComposeWindowTitle(event.which);"
onkeypress="subjectKeyPress(event);" onchange="contentChanged=true;"/>
</box>
</box>
<splitter id="attachmentbucket-sizer" collapse="after"/>
<box orient="vertical" flex="25">
<text class="label" id="attachmentBucketText" value="&attachments.label;" crop="right"/>
<tree id="attachmentBucket" class="inset toolbar-focustarget" flex="1" style="height: 0px; width: 0px;"
dragdroptree="true"
onkeypress="if (event.keyCode == 8 || event.keyCode == 46) RemoveSelectedAttachment();"
onchange="contentChanged=true;"
onclick="AttachmentBucketClicked(event);"
ondragover="nsDragAndDrop.dragOver(event, attachmentBucketObserver);"
ondragdrop="nsDragAndDrop.drop(event, attachmentBucketObserver);"
ondragexit="nsDragAndDrop.dragExit(event, attachmentBucketObserver);">
<treecolgroup>
<treecol flex="1"/>
</treecolgroup>
<treechildren id="bucketBody" flex="1"/>
</tree>
</box>
</box>
</toolbar>
<!-- These toolbar items get filled out from the editorOverlay -->
<toolbar id="FormatToolbar" persist="collapsed" tbautostretch="never">
<menulist id="ParagraphSelect"/>
<menulist id="FontFaceSelect"/>
<stack id="ColorButtons"/>
<button id="DecreaseFontSizeButton"/>
<button id="IncreaseFontSizeButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<button id="boldButton"/>
<button id="italicButton"/>
<button id="underlineButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<button id="ulButton"/>
<button id="olButton"/>
<button id="outdentButton"/>
<button id="indentButton"/>
<toolbarseparator class="toolbarseparator-standard"/>
<menu>
<button id="AlignPopupButton"/>
<menupopup id="AlignmentPopup"/>
</menu>
<menu>
<button id="InsertPopupButton"/>
<menupopup id="InsertPopup"/>
<menupopup id="InsertPopup"/>
</menu>
<spring flex="1"/>
</toolbar>
</toolbox>
</toolbox>
<!-- The mail message body frame -->
<editor type="content-primary" id="content-frame" src="about:blank" name="browser.message.body" flex="100%"
onkeypress="if (event.keyCode == 9)
if (event.shiftKey == true) {
document.getElementById('msgSubject').focus();
event.preventDefault();
}"
/>
<splitter id="compose-toolbar-sizer" collapse="after"/>
<!-- Some of this is from globarOverlay.xul -->
<statusbar id="status-bar">
<statusbarpanel class="statusbarpanel-icononly" id="offline-status"/>
<progressmeter class="progressmeter-statusbar" statusbar="true" id="statusbar-icon" mode="normal" value="0">
<observes element="Editor:Throbber" attribute="busy"/>
</progressmeter>
<statusbarpanel id="statusText" value="&defaultStatusText.label;" flex="1" crop="right"/>
</statusbar>
<!-- The mail message body frame -->
<box id="appcontent" orient="vertical" flex="1">
<editor type="content-primary" id="content-frame" src="about:blank" name="browser.message.body" flex="1"
onkeypress="editorKeyPress(event);"/>
</box>
<statusbar id="status-bar">
<progressmeter class="progressmeter-statusbar" mode="normal" value="0"/>
<statusbarpanel id="statusText" flex="1" value="&defaultStatusText.label;"/>
</statusbar>
<box id="taskbar"/>
<!-- /box -->
<box id="taskbar" class="toolbox-bottom"/>
</window>

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

@ -1,25 +1,13 @@
<!--LOCALIZATION NOTE askSendFormat.dtd UI for dialog that asks the user, which format to use for sending a message -->
<!--LOCALIZATION NOTE askSendFormat.dtd UI for dialog that ask the user which format to use for sending a message -->
<!ENTITY windowTitle.label "HTML Mail Question">
<!ENTITY recipient.label "Some of the recipients are not listed as being able to receive HTML mail.">
<!ENTITY question.label "Some of the recipients are not listed as being able to receive HTML mail. Would you like to convert the message to plain text or send it in HTML anyway?">
<!ENTITY convertibleDefault.label "">
<!ENTITY convertibleYes.label "Your message can be converted to plaintext without losing information.">
<!ENTITY convertibleAltering.label "Your message can be converted to plaintext without losing important information. However, the plaintext version might look different from what you saw in the composer.">
<!ENTITY convertibleNo.label "However, you used formatting (e.g. colors) that cannot be converted to plaintext.">
<!ENTITY question.label "Would you like to convert the message to plaintext or send it in HTML anyway?">
<!ENTITY plainTextAndHtml.label "Send in Plaintext and HTML">
<!ENTITY plainTextOnly.label "Send in Plaintext Only">
<!ENTITY plainTextAndHtml.label "Send in Plain Text and HTML">
<!ENTITY plainTextOnly.label "Send in Plain Text Only">
<!ENTITY htmlOnly.label "Send in HTML Only">
<!ENTITY plainTextAndHtmlRecommended.label "Send in Plaintext and HTML (recommended)">
<!ENTITY plainTextOnlyRecommended.label "Send in Plaintext Only (recommended)">
<!ENTITY htmlOnlyRecommended.label "Send in HTML Only (recommended)">
<!ENTITY recommended.label "(recommended)">
<!ENTITY send.label "Send">
<!ENTITY cancel.label "Cancel">
<!ENTITY dontSend.label "Don't Send">
<!ENTITY recipients.label "Recipients...">
<!ENTITY help.label "Help">

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

@ -7,6 +7,7 @@
margin : 1px 2px 1px 10px;
min-width : 0px;
cursor : pointer;
user-focus : none;
}
#navigator-throbber > .button-internal-box

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

@ -130,6 +130,7 @@
.menulist-compact
{
behavior : url("chrome://global/skin/menulistBindings.xml#menulist-compact");
user-focus : none; /* we don't take focus */
border-left : 1px solid threedhighlight;
border-top : 1px solid threedhighlight;
border-right : 1px solid threeddarkshadow;

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

@ -38,7 +38,7 @@
<xul:box class="menulist-compact-internal-box" flex="1" autostretch="never">
<xul:image class="menulist-compact-dropmarker" inherits="disabled"/>
<xul:spring flex="1"/>
<xul:text class="menulist-compact-text" inherits="value,accesskey,crop,disabled" crop="right" flex="1"/>
<xul:text class="menulist-compact-text" inherits="value,accesskey,crop,disabled" crop="right"/>
</xul:box>
</content>
</binding>

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

@ -76,7 +76,7 @@
color : graytext;
}
radio:focus > .radio-internal-box > .radio-text
radio[focused="true"] > .radio-internal-box > .radio-text
{
border : 1px dotted threeddarkshadow;
padding : 0px;

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

@ -94,4 +94,7 @@ toolbarseparator
margin : 2px 0.2em 2px 0.2em;
}
.toolbar-focustarget
{
user-focus : none !important;
}

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

@ -15,6 +15,12 @@ tree
border-bottom : 1px solid threedhighlight;
}
.tree-container-treerows[dragover="true"][dragdroptree="true"]
{
border : 2px solid highlight;
padding : 0px;
}
.tree-container-treerows
{
border-left : 1px solid threeddarkshadow;
@ -22,6 +28,11 @@ tree
border-right : 1px solid threedface;
border-bottom : 1px solid threedface;
}
.tree-container-treerows[dragdroptree="true"]
{
padding : 1px;
}
tree.inset
{

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

@ -1,85 +1,38 @@
@import url(chrome://messenger/skin/messenger.css);
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to HTML */
@namespace html url("http://www.w3.org/1999/xhtml"); /* namespace for HTML elements */
spring.spacer {
width: 5px;
height: 5px;
}
box.cleanborder {
margin: 10px;
padding: 10px;
border: 2px groove white;
width: 100%;
}
box.padded {
margin: 10px;
width: 100%;
}
/* addressing widget */
.treecell-addressingWidget
{
border-bottom : 1px solid #CACAFF;
padding : 0px !important;
}
tree[class="addressingWidget"] treeitem > treerow > treecell > box > image {
vertical-align: middle;
padding:2px;
border:none;
list-style-image: url("chrome://messenger/skin/abcard.gif");
user-focus: ignore;
}
.aw-menulist
{
margin : 0px;
}
.person-icon
{
list-style-image : url("chrome://messenger/skin/abcard.gif");
margin : 0px 3px 0px 3px;
}
.textfield-addressingWidget
{
margin : 0px;
}
/*
menulist.outset
{
padding : 0px;
border : 1px solid #000000;
background-color : #CCCCCC;
-moz-border-radius : 3px 2px 2px 3px;
margin : 1px;
}
menulist.outset > menupopup > menuitem
{
max-width: auto;
min-width: 32px;
}
menulist.outset > .menu-text
{
border : 1px outset #CCCCCC;;
padding : 1px 4px 2px 4px;
margin-right : 0px;
}
menulist.outset[open="true"] > .menu-text
{
border : 1px inset #CCCCCC;;
padding : 2px 4px 1px 4px;
}
*/
textfield.addressingWidget[autocomplete="true"] {
border : 2px solid #FFFFFF;
margin : 1px;
}
textfield.addressingWidget[autocomplete="true"][focused="true"]
{
border : 2px solid #6699cc;
margin : 1px;
}
textfield.addressingWidget[autocomplete="true"] > box
{
border : none;
}
#button-send {
list-style-image:url("chrome://messenger/skin/messengercompose/send.gif");
}
#msgheaderstoolbar-box
{
margin-top : 2px;
}
#button-send
{
list-style-image : url("chrome://messenger/skin/messengercompose/send.gif");
}
#button-send[disabled="true"],
#button-send[disabled="true"]:hover,
@ -98,9 +51,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/send-hover-active.gif");
}
#button-address {
list-style-image:url("chrome://messenger/skin/messengercompose/address.gif");
}
#button-address
{
list-style-image : url("chrome://messenger/skin/messengercompose/address.gif");
}
#button-address[disabled="true"],
#button-address[disabled="true"]:hover,
@ -119,9 +73,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/address-hover-active.gif");
}
#button-attach {
list-style-image:url("chrome://messenger/skin/messengercompose/attach.gif");
}
#button-attach
{
list-style-image : url("chrome://messenger/skin/messengercompose/attach.gif");
}
#button-attach[disabled="true"],
#button-attach[disabled="true"]:hover,
@ -140,9 +95,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/attach-hover-active.gif");
}
#button-quote {
list-style-image:url("chrome://messenger/skin/messengercompose/quote.gif");
}
#button-quote
{
list-style-image : url("chrome://messenger/skin/messengercompose/quote.gif");
}
#button-quote[disabled="true"],
#button-quote[disabled="true"]:hover,
@ -161,9 +117,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/quote-hover-active.gif");
}
#button-spelling {
list-style-image:url("chrome://messenger/skin/messengercompose/spelling.gif");
}
#button-spelling
{
list-style-image : url("chrome://messenger/skin/messengercompose/spelling.gif");
}
#button-spelling[disabled="true"],
#button-spelling[disabled="true"]:hover,
@ -182,9 +139,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/spelling-hover-active.gif");
}
#button-save {
list-style-image:url("chrome://messenger/skin/messengercompose/savemsg.gif");
}
#button-save
{
list-style-image : url("chrome://messenger/skin/messengercompose/savemsg.gif");
}
#button-save[disabled="true"],
#button-save[disabled="true"]:hover,
@ -203,9 +161,10 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://messenger/skin/messengercompose/savemsg-hover-active.gif");
}
#button-stop {
list-style-image:url("chrome://global/skin/stop.gif");
}
#button-stop
{
list-style-image : url("chrome://global/skin/stop.gif");
}
#button-stop[disabled="true"],
#button-stop[disabled="true"]:hover,
@ -224,60 +183,46 @@ textfield.addressingWidget[autocomplete="true"] > box
list-style-image : url("chrome://global/skin/stop-hover-active.gif");
}
toolbar#MsgHeadersToolbar {
border-bottom: 1px solid #999999;
}
#compose-toolbar-sizer
{
height : 3px;
border-top : 1px solid threedhighlight;
}
#content-frame
{
border-left : 1px solid threeddarkshadow;
border-top : 1px solid threeddarkshadow;
border-right : 1px solid threedface;
border-bottom : 1px solid threedface;
}
box#addressingWidget {
user-focus: normal;
}
#appcontent
{
border-left : 1px solid threeddarkshadow;
border-right : 1px solid threedhighlight;
border-top : 1px solid threedshadow;
}
tree#attachmentBucket {
user-focus: normal;
}
#msgSubject {
user-focus: normal;
}
#msgIdentity {
user-focus: normal;
}
.identity-popup-item
{
behavior: url(chrome://messenger/content/messengercompose/mailComposeBindings.xml#fromMenuitem);
}
.composemenu-text-2
{
color: gray;
font-style: italic;
}
/* askSendFormat dialog */
#askSendFormat {
width: 40em;
}
#convertYes, #convertAltering, #convertNo {
border: 1px solid black;
}
#convertYes {
list-style-image:url("chrome://messenger/skin/messengercompose/sendConvYes.gif");
}
#convertAltering {
list-style-image:url("chrome://messenger/skin/messengercompose/sendConvAltering.gif");
}
#convertNo {
list-style-image:url("chrome://messenger/skin/messengercompose/sendConvNo.gif");
}
#convertDefault {
border: 1px solid black;
list-style-image:url("chrome://messenger/skin/messengercompose/sendConvYes.gif");
} /* Workaround for bug 50217. Please remove this rule, when this bug is fixed. */
#attachmentbucket-sizer
{
width : 5px;
}
#msgIdentity, #addressingWidgetTree, #msgSubject
{
margin-right : 0px;
}
#addressingWidgetTree
{
user-focus : none;
}
#attachmentBucket, #attachmentBucketText
{
margin-left : 0px;
user-focus : none;
}

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

@ -31,12 +31,11 @@
<html:script src="chrome://communicator/content/search/search.js" />
<tabcontrol align="vertical">
<tabbox align="horizontal">
<tab id="findTab" onclick="loadPage('find', null);" value="&find.title.label;"/>
<tab id="internetTab" onclick="loadPage('internet', null);" value="&internet.title.label;"/>
<tab id="mailnewsTab" onclick="loadPage('mail', null);" value="&mailnews.title.label;"/>
<tab id="addressbookTab" onclick="loadPage('addressbook', null);" value="&addressbook.title.label;"/>
<spring flex="1"/>
<tabbox>
<tab id="findTab" oncommand="loadPage('find', null);" value="&find.title.label;"/>
<tab id="internetTab" oncommand="loadPage('internet', null);" value="&internet.title.label;"/>
<tab id="mailnewsTab" oncommand="loadPage('mail', null);" value="&mailnews.title.label;"/>
<tab id="addressbookTab" oncommand="loadPage('addressbook', null);" value="&addressbook.title.label;"/>
</tabbox>
<tabpanel />

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

@ -35,7 +35,7 @@ Contributor(s): Michael Lowe <michael.lowe@bigfoot.com> -->
<tabcontrol flex="100%" align="vertical">
<tabbox>
<tab selected="true" value="&aboutTab.label;"/>
<tab value="&aboutTab.label;"/>
<tab value="&contributorsTab.label;"/>
</tabbox>

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

@ -23,7 +23,7 @@
<box orient="vertical" flex="1">
<!-- text -->
<html id="info.header" class="header" flex="1"/>
<box id="info.box" flex="1" orient="vertical" style="max-width: 45em;"/>
<html id="info.box" flex="1" orient="vertical" style="max-width: 45em;"/>
<!-- edit fields -->
<box orient="vertical" id="loginEditField" collapsed="true">

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

@ -102,7 +102,7 @@
<binding id="tree">
<content>
<children/>
<xul:treerows class="tree-container-treerows">
<xul:treerows class="tree-container-treerows" inherits="dragover,dragdroptree">
<children includes="treehead,treechildren"/>
</xul:treerows>
</content>