vSphere Client Design Guidelines


You can add your plug-in's actions at the end of an existing object's context menu. If you are creating an object, the menu is yours to define.


Presenting Actions

Design your plug-in's actions to take just up one menu level. Traversing multiple levels can be tedious on the user.

Keep action names short and avoid truncation of text.

In general, order actions by usage and group by like actions.  Put the most frequently used actions at the top and destructive actions, such as "Remove from Inventory," at the bottom.  Include a bar above the destructive actions to further separate them from the other actions.


Disabling and Removing Items

Disable actions when they don't apply in the current context.  Common reasons for disabling an action are that the user doesn't have permission to perform an action or the action is not available due to the state of the object.

Don't remove a menu item unless it can never apply in the current context. For example, the action "New Virtual Machine” applies when a single host is selected, but not when multiple hosts are selected.

Never use a disabled state to advertise product features. If the user doesn't have a license for a feature, don't show it in the menu.


Minimizing Icon Usage

If considering icons for actions, remember the vSphere Client design approach of keeping the UI simple and minimal. Use icons only if they are easy to recognize or if they are needed to save room, as in an action toolbar.  Selective use of icons with text makes certain actions stand out more.


Using Correct Terminology

Ensure that actions that perform the same operation are represented in the same way. Use the following language for familiarity and consistency:

New—Creates an object. Delete is the correct opposite.

Add—Creates a relationship between two objects that already exist. “Remove” is the correct opposite.

Import—Brings information and objects into the vSphere Client. “Export” is the correct opposite.

“Delete” is for actions that permanently destroy an object. "Remove" is for actions that remove an object, but don't destroy it.


SDK Documentation