This is a test script for actions in the workbench.

File Actions ..
	Invoke File New .. projects, items, other.
	Invoke Toolbar button for File New .. projects, items, other.
	Verify close and save action enablement with 
		- no editors open
		- one editor
		- one dirty editor
		- after revert
		- two editors
		- two dirty editors
		- after close all
	Verify actions when switching between perspectives ( one with dirty 
		editor, other without ).
	Verify after all perspectives closed.
	Open many editors, close all, test MRU list.
	Open an editor and try to print the contents.
	
Edit Actions ..
	Verify global actions track global part.
	Verify editor contributions appear in action bars when is opened.
	Verify editors of same type reuse contributions.
	Verify editors of different type cause contribution change.
	Verify editor contributions are removed when editor is closed.
	Verify edit actions are consistent when switching between perspectives.

Perspective Actions (on the Window menu) ..
	Open = always enabled
	Verify other actions only enabled when a perspective is open.
	Verify "open new window", "open perspective"
	Verify "Save As" by modifying current persp, save as, close, reopen.
	Verify "Reset" by modifying current persp, then reset.
	Test Workbench/Perspectives preference page.

The next two have been removed from the Window menu (bug 63827), but can
still be tested by assigning a key binding.
	Hide Editors, Show Editors
	Hide Editors, Open new editor, verify implicit show editors.

Action Sets (on Window -> Customize Perspective -> Shortcuts) ..
	Confirm order is consistent.  Add all actions, record order, 
		then remove and re-add.  Select action sets to verify order.
	Test Customization of File New, Perspective Open, and Show View.
	Confirm editor actions have consistent place ..
		- start with no editors
		- show x action sets
		- open editor, verify editor actions after sets
		- hide x action sets
		- show x action sets
	Verify action set order persisted between sessions.
