In an object-oriented user environment, users interact with objects to perform tasks. The object-action paradigm is a pattern for interaction in which the user first selects an object, and then selects an action. When the user selects an object, the system can then present a list of actions that can be applied to that object. Some actions might require the user to respond to additional choices. Interaction with an object through choices and controls is known as indirect manipulation.
At any given time an object has a set of actions that can be performed on it. Different objects have different actions that can be performed on them. Action choices for an object are displayed in pop-up menus that appear next to an object when the user presses the appropriate key or mouse button. The content of a pop-up menu is based on the object's context, which includes its current state, location, and contents.
Users also can interact with objects by way of a pointing device. This is known as direct manipulation. This interaction technique closely resembles the way the user interacts with objects in the real world. For example, the user can pick up an object and put it into a folder. This technique is also known as dragging an object from one place and dropping it at another place.
A Drag and Drop operation often involves a source object and a target object. A source object usually is the object the user is working with, and a target object usually is an object to which the user is transferring information. For example, the user drags a file object to a printer object so that the file can be printed; the file is the source object and the printer is the target object.
The result of a Drag and Drop operation can change depending on what the source object is and what the target object is. For example, if the user drags a file object from one folder object and drops it on another, the file is moved to the target folder. However, if the user drops the same file onto a printer, the operating system makes a copy of the file and puts the copy into the printer's queue to be printed. The original file is returned to its original location.