gecko-dev/mailnews/addrbook/resources/content/addressbook.xul

472 строки
24 KiB
XML

<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK *****
Version: MPL 1.1/GPL 2.0/LGPL 2.1
The contents of this file are subject to the Mozilla 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/MPL/
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 the Initial Developer are Copyright (C) 1998-1999
the Initial Developer. All Rights Reserved.
Contributor(s):
Seth Spitzer <sspitzer@netscape.com>
Alternatively, the contents of this file may be used under the terms of
either of the GNU General Public License Version 2 or later (the "GPL"),
or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
in which case the provisions of the GPL or the LGPL are applicable instead
of those above. If you wish to allow use of your version of this file only
under the terms of either the GPL or the LGPL, and not to allow others to
use your version of this file under the terms of the MPL, indicate your
decision by deleting the provisions above and replace them with the notice
and other provisions required by the GPL or the LGPL. If you do not delete
the provisions above, a recipient may use your version of this file under
the terms of any one of the MPL, the GPL or the LGPL.
***** END LICENSE BLOCK ***** -->
<?xml-stylesheet href="chrome://messenger/skin/addressbook/addressbook.css" type="text/css"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/addressbook/abDirTreeOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xul"?>
<?xul-overlay href="chrome://messenger/content/addressbook/abCardViewOverlay.xul"?>
<!DOCTYPE window [
<!ENTITY % abMainWindowDTD SYSTEM "chrome://messenger/locale/addressbook/abMainWindow.dtd" >
%abMainWindowDTD;
<!ENTITY % abResultsPaneOverlayDTD SYSTEM "chrome://messenger/locale/addressbook/abResultsPaneOverlay.dtd" >
%abResultsPaneOverlayDTD;
<!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
%messengerDTD;
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
%brandDTD;
]>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
id="addressbookWindow"
height="450"
width="750"
title="&addressbookWindow.title;"
windowtype="mail:addressbook"
persist="width height screenX screenY sizemode"
onload="OnLoadAddressBook()"
onunload="OnUnloadAddressBook()">
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_addressBook" src="chrome://messenger/locale/addressbook/addressBook.properties"/>
<stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
<stringbundle id="bundle_brand" src="chrome://branding/locale/brand.properties"/>
</stringbundleset>
<script type="application/x-javascript" src="chrome://messenger/content/accountUtils.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/widgetglue.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/addressbook/addressbook.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/addressbook/abCommon.js"/>
<script type="application/x-javascript" src="chrome://communicator/content/contentAreaClick.js"/>
<script type="application/x-javascript" src="chrome://communicator/content/printing.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/msgPrintEngine.js"/>
<commandset id="addressBook">
<commandset id="CommandUpdate_AddressBook"
commandupdater="true"
events="focus,addrbook-select"
oncommandupdate="CommandUpdate_AddressBook()"/>
<commandset id="selectEditMenuItems"/>
<commandset id="undoEditMenuItems"/>
<commandset id="globalEditMenuItems"/>
<command id="cmd_newNavigator"/>
<command id="cmd_newEditor"/>
<command id="cmd_newcard" oncommand="AbNewCard();"/>
<command id="cmd_newlist" oncommand="AbNewList();"/>
<command id="cmd_newmessage" oncommand="AbNewMessage()"/>
<command id="cmd_newim" oncommand="AbIMSelected()"/>
<command id="cmd_printSetup" oncommand="NSPrintSetup()"/>
<command id="cmd_printCard" oncommand="AbPrintCard()"/>
<command id="cmd_printPreviewCard" oncommand="AbPrintPreviewCard()"/>
<command id="cmd_printAddressBook" oncommand="AbPrintAddressBook()"/>
<command id="cmd_printPreviewAddressBook" oncommand="AbPrintPreviewAddressBook()"/>
<command id="cmd_quit"/>
<command id="cmd_close" oncommand="AbClose()"/>
<command id="cmd_properties" oncommand="goDoCommand('button_edit');"/>
<command id="cmd_undo"/>
<command id="cmd_redo"/>
<command id="cmd_copy"/>
<command id="cmd_paste"/>
<command id="cmd_cut"/>
<command id="cmd_delete"
valueAddressBook="&deleteAbCmd.label;"
valueCard="&deleteCardCmd.label;"
valueCards="&deleteCardsCmd.label;"
valueList="&deleteListCmd.label;"
valueLists="&deleteListsCmd.label;"
valueItems="&deleteItemsCmd.label;"/>
<command id="cmd_selectAll"/>
<command id="button_delete" oncommand="goDoCommand('button_delete');"/>
<command id="cmd_swapFirstNameLastName" oncommand="AbSwapFirstNameLastName()"/>
<commandset id="tasksCommands"/>
</commandset>
<broadcasterset id="abBroadcasters">
<!-- File Menu -->
<!-- Edit Menu -->
<broadcaster id="broadcaster-throbber" busy="false"/>
<broadcaster id="button_delete" disabled="true"/>
<broadcaster id="Communicator:WorkMode"/>
</broadcasterset>
<keyset id="tasksKeys">
<!-- File Menu -->
<key id="key_newNavigator"/>
<key id="key_newBlankPage"/>
<key id="key_printCard" key="&printCardViewCmd.key;" command="cmd_printCard" modifiers="accel"/>
<key id="key_close"/>
<key id="key_quit"/>
<!-- Edit Menu -->
<key id="key_delete"/>
<key id="key_delete2"/> <!-- secondary delete key -->
<key id="key_undo"/>
<key id="key_redo"/>
<key id="key_cut"/>
<key id="key_copy"/>
<key id="key_paste"/>
<key id="key_selectAll"/>
<key id="key_properties" key="&propertiesCmd.key;" command="cmd_properties" modifiers="accel"/>
<!-- Tab/F6 Keys -->
<key keycode="VK_TAB" oncommand="SwitchPaneFocus(event);" modifiers="control,shift"/>
<key keycode="VK_TAB" oncommand="SwitchPaneFocus(event);" modifiers="control"/>
<key keycode="VK_F6" oncommand="SwitchPaneFocus(event);" modifiers="control,shift"/>
<key keycode="VK_F6" oncommand="SwitchPaneFocus(event);" modifiers="control"/>
<key keycode="VK_F6" oncommand="SwitchPaneFocus(event);" modifiers="shift"/>
<key keycode="VK_F6" oncommand="SwitchPaneFocus(event);"/>
</keyset>
<popup id="dirTreeContext">
<menuitem id="dirTreeContext-properties"
label="&editButton.label;"
accesskey="&editButton.accesskey;"
command="cmd_properties"/>
<menuseparator/>
<menuitem id="dirTreeContext-newcard"
label="&newcardButton.label;"
accesskey="&newcardButton.accesskey;"
command="cmd_newcard"/>
<menuitem id="dirTreeContext-newlist"
label="&newlistButton.label;"
accesskey="&newlistButton.accesskey;"
command="cmd_newlist"/>
<menuseparator/>
<menuitem id="dirTreeContext-delete"
label="&deleteButton.label;"
accesskey="&deleteButton.accesskey;"
command="button_delete"/>
</popup>
<popup id="abResultsTreeContext">
<menuitem id="abResultsTreeContext-properties"
label="&editButton.label;"
accesskey="&editButton.accesskey;"
command="cmd_properties"/>
<menuseparator/>
<menuitem id="abResultsTreeContext-newmessage"
label="&newmsgButton.label;"
accesskey="&newmsgButton.accesskey;"
command="cmd_newmessage"/>
<menuitem id="abResultsTreeContext-newim"
label="&newimButton.label;"
accesskey="&newimButton.accesskey;"
command="cmd_newim"/>
<menuseparator/>
<menuitem id="abResultsTreeContext-delete"
label="&deleteButton.label;"
accesskey="&deleteButton.accesskey;"
command="button_delete"/>
</popup>
<toolbox class="toolbox-top">
<menubar id="ab-menubar" grippytooltiptext="&menuBar.tooltip;">
<menu id="menu_File">
<menupopup id="menu_FilePopup">
<menu id="menu_New">
<menupopup id="menu_NewPopup">
<menuitem label="&newCard.label;" accesskey="&newCard.accesskey;" oncommand="AbNewCard();"/>
<menuitem label="&newListCmd.label;" accesskey="&newListCmd.accesskey;" oncommand="AbNewList();"/>
<menuitem label="&newAddressBookCmd.label;" accesskey="&newAddressBookCmd.accesskey;" oncommand="AbNewAddressBook()"/>
<menuitem label="&newLDAPDirectoryCmd.label;" id="addLDAP" accesskey="&newLDAPDirectoryCmd.accesskey;" oncommand="AbNewLDAPDirectory()"/>
<menuseparator/>
<menuitem id="menu_newNavigator"/>
<menuitem id="menu_newEditor"/>
</menupopup>
</menu>
<menuitem id="menu_close"/>
<menuseparator/>
<menuitem id="printSetupMenuItem" label="&printSetupCmd.label;" accesskey="&printSetupCmd.accesskey;" command="cmd_printSetup"/>
<menuitem id="printPreviewMenuItem" label="&printPreviewCardViewCmd.label;" accesskey="&printPreviewCardViewCmd.accesskey;" command="cmd_printPreviewCard"/>
<menuitem id="printPreviewAddressBook" label="&printPreviewAddressBook.label;" accesskey="&printPreviewAddressBook.accesskey;" command="cmd_printPreviewAddressBook"/>
<menuitem id="printMenuItem" label="&printCardViewCmd.label;" accesskey="&printCardViewCmd.accesskey;" key="key_printCard" command="cmd_printCard"/>
<menuitem id="printAddressBook" label="&printAddressBook.label;" accesskey="&printAddressBook.accesskey;" command="cmd_printAddressBook"/>
</menupopup>
</menu>
<menu id="menu_Edit">
<menupopup>
<menuitem id="menu_undo"/>
<menuitem id="menu_redo"/>
<menuseparator/>
<menuitem id="menu_cut"/>
<menuitem id="menu_copy"/>
<menuitem id="menu_paste"/>
<menuitem id="menu_delete"/>
<menuseparator/>
<menuitem id="menu_selectAll"/>
<menuseparator/>
<!-- LOCALIZATION NOTE: set "hideSwapFnLnUI" to false in .dtd to enable the UI -->
<menuitem label="&swapFirstNameLastNameCmd.label;"
accesskey="&swapFirstNameLastNameCmd.accesskey;"
hidden="&hideSwapFnLnUI;"
command="cmd_swapFirstNameLastName"/>
<menuitem label="&propertiesCmd.label;"
accesskey="&propertiesCmd.accesskey;"
key="key_properties"
command="cmd_properties"/>
<menuitem id="menu_preferences" oncommand="goPreferences('mailnews', 'chrome://messenger/content/addressbook/pref-addressing.xul', 'mailaddressbookpref')"/>
</menupopup>
</menu>
<menu id="menu_View">
<menupopup id="menu_View_Popup">
<menu id="menu_Toolbars">
<menupopup id="view_toolbars_popup">
<menuitem id="menu_showAbToolbar"
label="&showAbToolbarCmd.label;"
accesskey="&showAbToolbarCmd.accesskey;"
oncommand="goToggleToolbar('abToolbar', 'menu_showAbToolbar')"
checked="true" type="checkbox"/>
<menuitem id="menu_showSearchToolbar"
label="&showSearchToolbarCmd.label;"
accesskey="&showSearchToolbarCmd.accesskey;"
oncommand="goToggleToolbar('searchBox','menu_showSearchToolbar')"
checked="true" type="checkbox"/>
<menuitem id="menu_showTaskbar"
type="checkbox"/>
<menuseparator/>
<menuitem id="menu_showCardPane"
label="&showCardPane.label;"
accesskey="&showCardPane.accesskey;"
oncommand="goToggleSplitter('results-splitter', 'menu_showCardPane')"
checked="true" type="checkbox"/>
</menupopup>
</menu>
<menuseparator/>
<menu label="&menu_ShowNameAs.label;" accesskey="&menu_ShowNameAs.accesskey;">
<menupopup>
<menuitem type="radio" name="shownameas"
id="firstLastCmd"
label="&firstLastCmd.label;"
accesskey="&firstLastCmd.accesskey;"
oncommand="SetNameColumn('firstLastCmd')"/>
<menuitem type="radio" name="shownameas"
id="lastFirstCmd"
label="&lastFirstCmd.label;"
accesskey="&lastFirstCmd.accesskey;"
oncommand="SetNameColumn('lastFirstCmd')"/>
<menuitem type="radio" name="shownameas"
id="displayNameCmd"
label="&displayNameCmd.label;"
accesskey="&displayNameCmd.accesskey;"
oncommand="SetNameColumn('displayNameCmd')"/>
</menupopup>
</menu>
<menu label="&sortMenu.label;" accesskey="&sortMenu.accesskey;">
<menupopup id="sortMenuPopup" onpopupshowing="InitViewSortByMenu()">
<menuitem label="&GeneratedName.label;"
id="cmd_SortByGeneratedName"
accesskey="&GeneratedName.accesskey;"
oncommand="SortResultPane('GeneratedName');" name="sortas" type="radio" checked="true"/>
<menuitem label="&PrimaryEmail.label;"
id="cmd_SortByPrimaryEmail"
accesskey="&PrimaryEmail.accesskey;"
oncommand="SortResultPane('PrimaryEmail');" name="sortas" type="radio" checked="true"/>
<menuitem label="&ScreenName.label;"
id="cmd_SortBy_AimScreenName"
accesskey="&ScreenName.accesskey;"
oncommand="SortResultPane('_AimScreenName');" name="sortas" type="radio" checked="true"/>
<menuitem label="&Company.label;"
id="cmd_SortByCompany"
accesskey="&Company.accesskey;"
oncommand="SortResultPane('Company');" name="sortas" type="radio" checked="true"/>
<!-- LOCALIZATION NOTE:
Fields for phonetic are disabled as default and can be enabled by
editing "mail.addr_book.show_phonetic_fields"
-->
<menuitem label="&_PhoneticName.label;"
id="cmd_SortBy_PhoneticName"
hidden="true"
accesskey="&_PhoneticName.accesskey;"
oncommand="SortResultPane('_PhoneticName');" name="sortas" type="radio" checked="true"/>
<menuitem label="&NickName.label;"
id="cmd_SortByNickName"
accesskey="&NickName.accesskey;"
oncommand="SortResultPane('NickName');" name="sortas" type="radio" checked="true"/>
<menuitem label="&SecondEmail.label;"
id="cmd_SortBySecondEmail"
accesskey="&SecondEmail.accesskey;"
oncommand="SortResultPane('SecondEmail');" name="sortas" type="radio" checked="true"/>
<menuitem label="&Department.label;"
id="cmd_SortByDepartment"
accesskey="&Department.accesskey;"
oncommand="SortResultPane('Department');" name="sortas" type="radio" checked="true"/>
<menuitem label="&JobTitle.label;"
id="cmd_SortByJobTitle"
accesskey="&JobTitle.accesskey;"
oncommand="SortResultPane('JobTitle');" name="sortas" type="radio" checked="true"/>
<menuitem label="&CellularNumber.label;"
id="cmd_SortByCellularNumber"
accesskey="&CellularNumber.accesskey;"
oncommand="SortResultPane('CellularNumber');" name="sortas" type="radio" checked="true"/>
<menuitem label="&PagerNumber.label;"
id="cmd_SortByPagerNumber"
accesskey="&PagerNumber.accesskey;"
oncommand="SortResultPane('PagerNumber');" name="sortas" type="radio" checked="true"/>
<menuitem label="&FaxNumber.label;"
id="cmd_SortByFaxNumber"
accesskey="&FaxNumber.accesskey;"
oncommand="SortResultPane('FaxNumber');" name="sortas" type="radio" checked="true"/>
<menuitem label="&HomePhone.label;"
id="cmd_SortByHomePhone"
accesskey="&HomePhone.accesskey;"
oncommand="SortResultPane('HomePhone');" name="sortas" type="radio" checked="true"/>
<menuitem label="&WorkPhone.label;"
id="cmd_SortByWorkPhone"
accesskey="&WorkPhone.accesskey;"
oncommand="SortResultPane('WorkPhone');" name="sortas" type="radio" checked="true"/>
<menuseparator/>
<menuitem id="sortAscending" type="radio" name="sortdirection" label="&sortAscending.label;" accesskey="&sortAscending.accesskey;" oncommand="AbSortAscending()"/>
<menuitem id="sortDescending" type="radio" name="sortdirection" label="&sortDescending.label;" accesskey="&sortDescending.accesskey;" oncommand="AbSortDescending()"/>
</menupopup>
</menu>
</menupopup>
</menu>
<menu id="tasksMenu">
<menupopup id="taskPopup">
<menuitem label="&searchAddressesCmd.label;"
accesskey="&searchAddressesCmd.accesskey;"
id="menu_search_addresses"
oncommand="onAdvancedAbSearch();"/>
<menuitem label="&importCmd.label;" accesskey="&importCmd.accesskey;" oncommand="toImport()"/>
<menuitem label="&exportCmd.label;" accesskey="&exportCmd.accesskey;" oncommand="AbExport()"/>
<menuseparator/>
<menuitem label="&allowOnlineCheck.label;"
accesskey="&allowOnlineCheck.accesskey;"
id="menu_allow_online_check"
oncommand="onAllowOnlineCheck(event.target);"
type="checkbox"/>
<menuseparator/>
</menupopup>
</menu>
<menu id="windowMenu"/>
<menu id="menu_Help"/>
<spacer flex="1"/>
</menubar>
<!-- toolbar -->
<toolbar class="chromeclass-toolbar toolbar-primary" id="abToolbar" persist="collapsed" grippytooltiptext="&addressbookToolbar.tooltip;">
<hbox id="toolbar_button_box">
<toolbarbutton class="toolbarbutton-1" id="button-newcard" label="&newcardButton.label;" tooltiptext="&newcardButton.tooltip;" command="cmd_newcard"/>
<toolbarbutton class="toolbarbutton-1" id="button-newlist" label="&newlistButton.label;" tooltiptext="&newlistButton.tooltip;" command="cmd_newlist"/>
<toolbarseparator class="toolbarseparator-primary"/>
<toolbarbutton class="toolbarbutton-1" id="button-editcard" label="&editButton.label;" tooltiptext="&editButton.tooltip;" command="cmd_properties"/>
<toolbarbutton class="toolbarbutton-1" id="button-newmessage" label="&newmsgButton.label;" tooltiptext="&newmsgButton.tooltip;" command="cmd_newmessage"/>
<toolbarbutton class="toolbarbutton-1" id="button-newim" label="&newIM.label;" tooltiptext="&newIM.tooltip;" command="cmd_newim"/>
<toolbarbutton class="toolbarbutton-1" id="button-delete" observes="button_delete" label="&deleteButton.label;" tooltiptext="&deleteButton.tooltip;" command="button_delete"/>
<vbox flex="1">
<spacer flex="1"/>
<!--html id="searchlabel">&showNames.label;</html>
<textbox id="searchtext" type="text" align="bottom"/>
<spacer flex="1"/-->
</vbox>
<!--button id="button_stop" class="other28" align="top" label="&stopButton.label;" tooltiptext="&stopButton.tooltip;" disabled="true" oncommand="AbStop()"/>
<button id="button_search" class="other28" align="top" label="&searchButton.label;" disabled="true" tooltiptext="&searchButton.tooltip;" oncommand="AbSearch()"/-->
</hbox>
<hbox id="throbber-box" align="center">
<button id="navigator-throbber" oncommand="goClickThrobber('addressbook.throbber.url')" tooltiptext="&throbber.tooltip;">
<observes element="broadcaster_throbber" attribute="busy"/>
</button>
</hbox>
</toolbar>
</toolbox>
<!-- The main address book three pane -->
<hbox flex="1">
<vbox id="dirTreeBox" persist="width collapsed">
<tree id="dirTree" context="dirTreeContext"
style="min-width:150px" flex="1" persist="width"/>
</vbox>
<splitter id="dirTree-splitter" collapse="before" persist="state">
<grippy/>
</splitter>
<vbox flex="1" style="min-width:100px">
<hbox id="searchBox" persist="collapsed" align="center">
<label id="searchCriteria" value="&SearchNameOrEmail.label;"
accesskey="&SearchNameOrEmail.accesskey;"
control="searchInput"/>
<textbox id="searchInput" flex="1"
type="timed" timeout="800"
oninput="SearchInputChanged();"
oncommand="onEnterInSearchBar();"
onkeypress="if (event.keyCode == KeyEvent.DOM_VK_RETURN) this.select();"
onfocus="this.select();" onclick="this.select();"/>
<button id="clear" label="&clearButton.label;" disabled="true"
accesskey="&clearButton.accesskey;"
oncommand="onAbClearSearch();"
tooltiptext="&clearButton.tooltip;"/>
<button id="advancedButton" label="&advancedButton.label;"
accesskey="&advancedButton.accesskey;"
tooltiptext="&advancedButton.tooltip;"
oncommand="onAdvancedAbSearch();"/>
</hbox>
<!-- results pane -->
<tree id="abResultsTree" context="abResultsTreeContext" flex="1" />
<splitter id="results-splitter" collapse="after" persist="state">
<grippy/>
</splitter>
<!-- card view -->
<hbox id="CardViewOuterBox" flex="1" persist="height">
<vbox id="CardViewBox" style="height:170px; min-height:1px; min-width:1px"/>
</hbox>
</vbox>
</hbox>
<statusbar id="status-bar" class="chromeclass-status">
<statusbarpanel id="component-bar"/>
<statusbarpanel id="statusText" flex="1" value="&statusText.label;"/>
<statusbarpanel id="offline-status" class="statusbarpanel-iconic"/>
</statusbar>
</window>