DekGenius.com
Previous Section Next Section

19.1 Customizing Menus

Dreamweaver menus are defined in an XML-like syntax and stored in the Dreamweaver4/Configuration/Menus/menus.xml file. To customize the menus, exit Dreamweaver and modify the menus.xml file in a text editor, such as WordPad (Windows) or BBEdit (Macintosh).

Do not edit the menus.xml file in an XML-savvy editor, as it is not a true XML file. It contains ampersands (&) that generate errors when the XML is parsed. Also, don't edit menus.xml in Dreamweaver. Don't change the existing id attributes within the file. If you make a mistake, restore menus.xml from the backup copy, menus.bak, provided by Macromedia in the same folder.

The menus.xml file defines menu bars, menus, and menu items. Example 19-1 shows an excerpt of the code that defines Dreamweaver's Edit menu.

Example 19-1. An excerpt of the Edit menu definition
<menu name="_Edit" id="DWMenu_MainSite_Edit">
  <menuitem name="Cu_t"     key="Cmd+X"  enabled="dw.canClipCut(  )"
            command="dw.clipCut(  )"   id="DWMenu_MainSite_Edit_Cut" />
  <menuitem name="_Copy"    key="Cmd+C"  enabled="dw.canClipCopy(  )"
            command="dw.clipCopy(  )"  id="DWMenu_MainSite_Edit_Copy" />
  <menuitem name="_Paste"  key="Cmd+V"  enabled="dw.canClipPaste(  )"
            command="dw.clipPaste(  )" id="DWMenu_MainSite_Edit_Paste" />
  <separator />
  <menuitem name="Select _All" key="Cmd+A"
            enabled="site.getCurrentSite(  ) != ''"
            command="site.selectAll(  )"
            id="DWMenu_MainSite_Edit_SelectAll" />
</menu>

Although you can edit the menus.xml file directly, the Commands menu can be modified indirectly as described in Section 7.3.2 of Chapter 7.

Let's see how to modify Dreamweaver's menus via the menus.xml file directly. After saving your changes to the menus.xml file, restart Dreamweaver to access your new menu commands.

19.1.1 Modifying Menus and Menu Items

As you can see from Example 19-1, the menus.xml file's tags are very similar to HTML tags. Note, for example, that <menu> and </menu> tags appear in pairs and <menuitem> tags are self-contained. You can move and add menus and menu items using these XML-like tags. See the section "About menus.xml tag syntax" under Help figs/U2192.gif Extending Dreamweaver for more information about the format and contents of this file.

19.1.1.1 Moving menus and menu items

To change the order of menus, select an entire menu object from its opening <menu> tag to its closing </menu> tag and all <menuitem> tags in between. Then use your text editor's cut and paste options to reorder menus as desired.

To move a menu item within a menu or to move a menu item to a new menu, select and cut the entire <menuitem> element, and then paste it into its new location.

19.1.1.2 Adding a menu item

To add a menu item to a menu, add a <menuitem> tag, which has the following attributes:

name (required)

Specifies the name of the menu as it should appear in the menu. An underscore in the name indicates that the following letter can be used to access the menu item with the Alt key under Windows (the underscore is ignored on the Macintosh). For example, if the menu item name is C_ut and the menu name is _Edit, the item can be accessed using Alt+E, U under Windows in addition to any shortcut defined by the key attribute.

id (required)

The required menu item id must identify each menu item uniquely. If you add a menu item, ensure that its id doesn't match the id of existing menu items. Do not change the ids of built-in menu items, as doing so would make those items inaccessible to other areas of the program.

key

Specifies the keyboard shortcut for this menu item, including any combination of the following modifiers and special keys. (It is usually easier to modify keyboard commands using Edit figs/U2192.gif Keyboard Shortcuts.) Use a plus (+) sign to separate modifier keys. For example, Cmd+Opt+A indicates that the menu item's command should be executed when the user presses Ctrl+Alt+A (Windows) or Cmd+Opt+A (Macintosh). Dreamweaver automatically accommodates the differences between modifier keys on the two platforms:

Cmd

Indicates the Control key (Windows) or Command key (Macintosh)

Alt or Opt

Indicates the Alt key (Windows) or Option key (Macintosh)

Shift

Indicates the Shift key on both platforms

Ctrl

Specifies the Control key or Ctrl key on both platforms

Special keys

F1 through F12, PgDn, PgUp, Home, End, Ins, Del, Tab, Esc, BkSp, and Space

enabled

Specifies a JavaScript function that returns true if the menu item should be active. As seen in Example 19-1, the dw.canClipCut( ) function determines whether the Edit figs/U2192.gif Cut menu item should be active. Presumably, this function checks whether something is selected in the Document window. If not, there is nothing to cut, and the menu choice is inactivated.

checked

Specifies a JavaScript function that returns true if the menu item should have a checkmark appearing next to it, as seen in the View figs/U2192.gif Visual Aids submenu.

dynamic

Indicates a menu item that is configured dynamically by an HTML file. If you include the dynamic attribute, you must also supply a file attribute.

command

Specifies a JavaScript command that is executed when a user selects this menu item. A menu item must include either a file or command attribute.

file

Specifies an HTML file that controls the function of the menu item. For example, selecting Insert figs/U2192.gif Table opens the document Dreamweaver4/Configuration/Commands/FormatTable.htm. That document may display a dialog box asking for additional input and run an appropriate JavaScript function. The file attribute overrides the command, enabled, and checked attributes. A menu item must include either a file or command attribute.

arguments

Provides a comma-separated list of arguments passed to the file specified by the file attribute. Enclose string arguments within single quotes (') inside the double quotes used to delimit the attribute's value, such as arguments="'right', false" (see Example 19-2).

domrequired

Indicates whether the Design view and Code view should be synchronized before executing the code associated with this menu item. If the value is false, the changes made to the document do not require synchronization before execution.

app

Specifies whether to show this menu item in dreamweaver (Dreamweaver) or ultradev (UltraDev) only. If this attribute is omitted, the menu item is shown in both applications.

platform

Specifies whether to show this menu item on either mac (Macintosh) or win (Windows) only. If this attribute is omitted, the menu item is shown on both platforms.

19.1.1.3 Adding a separator

You can add a horizontal separator to a menu by adding a <separator /> element. Separators can appear between any two <menuitem> elements, but not between <menu> elements.

The <separator /> element has one optional attribute, app, which can be set to dreamweaver or ultradev as described previously.

19.1.2 Adding a Menu

To create a new menu or submenu, add a <menu> element to the menus.xml file. The <menu> element has the following attributes:

name (required)

Specifies the name of the menu that appears in Dreamweaver's menu bar. An underscore in the name indicates that the following letter can be used to access the menu with the Alt key under Windows (the underscore is ignored on the Macintosh). For example, if the menu name is _Edit, it can be accessed using Alt+E under Windows.

id (required)

The required menu id must identify each menu uniquely. If you add a menu, ensure that its id doesn't match the id of existing menus. Do not change the ids of built-in menus, as it makes those items inaccessible to other areas of the program.

app

Specifies whether to show this menu in dreamweaver (Dreamweaver) or ultradev (UltraDev) only. If this attribute is omitted, the menu is shown in both applications.

platform

Specifies whether to show this menu on either mac (Macintosh) or win (Windows) only. If this attribute is omitted, the menu is shown on both platforms.

A <menu> element can contain one or more <menuitem> tags, as well as multiple <separator/> elements, and must be terminated with a </menu> tag. To create a submenu, nest a <menu> element within another <menu> element. The outermost <menu> element must be contained within a pair of <menubar> </menubar> tags.

19.1.3 Menu Bars

The menus.xml file defines a number of menu bars for Dreamweaver using the <menubar> tag. Many menu bars are used for contextual pop-up menus, although menus.xml also defines the main menu bar for the Macintosh and the Document window and Site window menu bars under Windows. The <menubar> attributes are explained here for developers writing third-party extensions (see Chapter 22) that define their own menu bars.

name (required)

The menus.xml file defines menu bars named "Main Window" and "Site Window," but menu bars are identified by id, not name. The menu bar name is required but can be set to "" (blank), such as for contextual menus.

id (required)

The required menu bar id must identify each menu bar uniquely. Do not change the ids of built-in menu bars, as it prevents them from being displayed in the program.

app

Specifies whether to show this menu bar in dreamweaver (Dreamweaver) or ultradev (UltraDev) only. If this attribute is omitted, the menu bar is shown in both applications.

platform

Specifies whether to show this menu bar on either mac (Macintosh) or win (Windows) only. For example, the Site window menu bar is defined for Windows only, as explained in Chapter 6. If this attribute is omitted, the menu item is shown on both platforms.

A <menubar> element must contain one or more <menu> tags and be terminated with a </menubar> tag. All <menu> elements must be contained within <menubar> elements.

    Previous Section Next Section