### IDM

  The IDM structure contains all of the common enumerations and definitions that are shared by the direct manipulation classes.

  This structure contains the definitions of the following enumerations:

  - Source
  - DropIndicator
  - RenderCompletion
  - DragImageStyle
  - DropStyle
  - DiscardIndicator
  - PrintIndicator

  This structure contains the definitions of the following typedefs:

  - Type (drag item types)
  - RM (rendering mechanisms)
  - RF (rendering formats)

  This structure defines a static debug support flag for debugging purposes.

### IDM - Member Functions and Data by Group

### Drag Item Types

These strings identify the default drag item types of the Open Class Library. Use the drag item type to identify the type of data object that the drag item represents. For example, use IDM::containerObject to identify a container object as the data object that the drag item represents.
Note: If the default types do not properly describe the type of data that your drag items represent, you can define new types.

any

      public:
      static Type const any

  Drag item represents any data object. This type combines all of the other types.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

binary

      public:
      static Type const binary

  Drag item represents a generic binary object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

binaryData

      public:
      static Type const binaryData

  Drag item represents a binary data object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

bitmap

      public:
      static Type const bitmap

  Drag item represents a bitmap object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

container

      public:
      static Type const container

  Drag item represents a container control object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

containerObject

      public:
      static Type const containerObject

  Drag item represents a container object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

file

      public:
      static Type const file

  Drag item represents a file object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

icon

      public:
      static Type const icon

  Drag item represents an icon object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

menuItem

      public:
      static Type const menuItem

  Drag item represents a menu item object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

plainText

      public:
      static Type const plainText

  Drag item represents a plain text object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

text

      public:
      static Type const text

  Drag item represents a generic text object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

toolBarButton

      public:
      static Type const toolBarButton

  Drag item represents a tool bar button object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

unknown

      public:
      static Type const unknown

  Drag item represents an unknown object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Rendering Formats

Use these strings to query or set rendering formats that are supported by the Open Class Library.
Note: If the default formats do not properly support your drag items, you can define new formats. See the Task Information for a description of how to implement support for new rendering formats.

rfAny

      public:
      static RF const rfAny

  Drag item supports any rendering format. This format combines all of the other formats. The Open Class Library does not provide default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rfObject

      public:
      static RF const rfObject

  Drag item supports the OS/2 Workplace Shell's object rendering format. The Open Class Library does not provide default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rfProcess

      public:
      static RF const rfProcess

  Drag item supports the process rendering format. The process rendering format is created by appending the equal sign and the process ID to this string. See the static member function IDMItem::rfForThisProcess for more information.

  The Open Class Library provides default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rfSharedMem

      public:
      static RF const rfSharedMem

  Drag item supports the shared memory rendering format. The Open Class Library provides default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rfText

      public:
      static RF const rfText

  Drag item supports the text rendering format. The text rendering format is used if the text length is less than or equal to 255 bytes, if the text does not contain embedded NULL characters, and if the IDM::rmFile rendering mechanism is not added in a derived class.

  The Open Class Library provides default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rfUnknown

      public:
      static RF const rfUnknown

  Drag item supports an unknown rendering format. The Open Class Library provides default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Rendering Mechanisms

Use these strings to query or set rendering mechanisms that are supported by the Open Class Library.
Note: If the default mechanisms do not properly support your drag items, you can define new mechanisms. See the Task Information for a description of how to implement support for new rendering mechanisms.

rmAny

      public:
      static RM const rmAny

  Drag item supports any rendering mechanism. This mechanism combines all of the other mechanisms. The Open Class Library does not provide default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rmDiscard

      public:
      static RM const rmDiscard

  Drag item supports the operating system's rendering mechanism for the discarding (shredding) of objects. The Open Class Library does not provide default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rmFile

      public:
      static RM const rmFile

  Drag item supports the operating system's file rendering mechanism. The Open Class Library provides default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rmLibrary

      public:
      static RM const rmLibrary

  Drag item supports the default rendering mechanism of the Open Class Library.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rmObject

      public:
      static RM const rmObject

  Drag item supports the OS/2 Workplace Shell's object rendering mechanism. The Open Class Library does not provide default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

rmPrint

      public:
      static RM const rmPrint

  Drag item supports the operating system's rendering mechanism for the printing of objects. The Open Class Library does not provide default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IDM - Enumerations

DiscardIndicator

      enum DiscardIndicator { sourceDiscards=0x0001,
                              targetDiscards=0x0002,
                              abortDiscard=0x0003 }

  Use the DiscardIndicator enumeration as an argument to the member function IDMSourceDiscardEvent::setWhoDiscards to set the discard indicator. Enumerations of the possible discard indicator values include the following:

  sourceDiscards
    The source of the direct manipulation accepts responsibility for discarding.
  targetDiscards
    The target of the direct manipulation accepts responsibility for discarding.
  abortDiscard
    DIscarding is aborted.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

DragImageStyle

      enum DragImageStyle { stack3AndFade,
                            allStacked,
                            systemImages }

  Use the DragImageStyle enumeration as an argument to the member function IDMSourceOperation::setImageStyle to set the drag image style. Enumerations of the possible drag image styles to use when displaying the drag image include the following:

  stack3AndFade
    Shows the drag images attached to the first three drag items added to the source operation. A special icon is then shown that simulates the rest of the images fading out. The direction and location of the drag images in relation to each other are determined by the return value from IDMSourceOperation::stackingPercentage. Use of IDM::stack3AndFade is optimal when the user can drag more than three drag items. If no images are specified, system images are displayed.
  allStacked
    Shows the drag images attached to all of the drag items. If no images are specified, system images are displayed.
  systemImages
    If the direct manipulation involves a single drag item, the ISystemPointerHandle::singleFile icon is displayed. If it involves multiple drag items, the ISystemPointerHandle::multipleFile icon is displayed. Any drag images attached to the drag items are ignored. This is the default drag image style.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

DropIndicator

      enum DropIndicator { notOk=0x0000,
                           ok=0x0001,
                           operationNotOk=0x0002,
                           neverOk=0x0003 }

  Use the DropIndicator enumeration as an argument to the member function IDMTargetEnterEvent::setDropIndicator to set the drop indicator values for a direct manipulation. Use the DropIndicator as an argument to the member function IDMItem::setDropStatus to set the drop status of individual drag items. Enumerations of the possible drop indicator values include the following:

  ok
    The drop is allowed.
  notOk
    The drop is not allowed at this location within the target.
  operationNotOk
    The drop is not allowed because the drag operation, for example, a copy, is not supported by the target.
  neverOk
    The drop is never allowed on the target.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

DropStyle

      enum DropStyle { notContainer=0x0000,
                       dropAtPosition=0x0001,
                       alignVertical=0x0002,
                       alignFlow=0x0004,
                       flowBeside=0x0008 }

  Use the DropStyle enumeration as an argument to the member function IDMTargetOperation::setStyle to set the drop style. Enumerations of the possible drop style values include the following:

  notContainer
    The target of the direct manipulation is not a container. This is the default drop style for noncontainer targets.
  dropAtPosition
    Drag items are displayed in the container at the position where they are dropped relative to the origins of the drag images that represent the items. This is the default drop style for non-list view containers and list view containers when the pointing device is directly over a container object.
  alignVertical
    Drag items are aligned along the vertical axis. Use this style in addition to IDM::DropStyle::alignFlow.
  alignFlow
    Drag items are aligned along the window. If IDM::DropStyle::alignVertical is not specified, the drag items are aligned along the horizontal axis. This is the default drop style for list view containers when the pointing device is between container objects.
  flowBeside
    Drag items are aligned beside the window. Use this style in addition to IDM::DropStyle::alignFlow or IDM::DropStyle::alignFlow and IDM::DropStyle::alignVertical.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

PrintIndicator

      enum PrintIndicator { sourcePrints=0x0001,
                            targetPrints=0x0002,
                            abortPrint=0x0003 }

  Use the PrintIndicator enumeration as an argument to the member function IDMSourcePrintEvent::setWhoPrints to set the print indicator. Enumerations of the possible print indicator values include the following:

  sourcePrints
    The source of the direct manipulation accepts responsibility for printing.
  targetPrints
    The target of the direct manipulation accepts responsibility for printing.
  abortPrint
    Printing is aborted.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

RenderCompletion

      enum RenderCompletion { targetSuccessful=0x0001,
                              targetFailed=0x0002,
                              retry=0x0008,
                              renderOk=0x0010,
                              fail=0x0020 }

  Use the RenderCompletion enumeration as an argument to the member function IDMSourceRenderEvent::setCompletion to set the render completion values for the source. Use the member function IDMTargetRenderer::informSourceOfCompletion to set the render completion values for the target. Enumerations of the possible render completion values include the following:

  targetSuccessful
    The target successfully completed the rendering operation.
  targetFailed
    The target failed to complete the rendering operation.
  retry
    The source completed the rendering operation, and the source allows the target to retry its part of the operation if the target fails.
  renderOk
    The source completed the rendering operation.
  fail
    The source failed to complete the rendering operation.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

Source

      enum Source { pointingDevice,
                    keyboard }

  Use the Source enumeration as an argument to the member function IDMOperation::setSource to set the type of the device that is the source of the direct manipulation. Enumerations of the possible source values include the following:

  pointingDevice
    The direct manipulation started via a pointing device, such as the mouse.
  keyboard
    The direct manipulation started via the keyboard.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IDM - Type Definitions

Type

      typedef const char * Type

  Definition of the default drag item types of the Open Class Library include the following:

  any
    Drag item represents any data object. This type combines all of the other types.
  binary
    Drag item represents a generic binary object.
  binaryData
    Drag item represents a binary data object.
  bitmap
    Drag item represents a bitmap object.
  container
    Drag item represents a container control object.
  containerObject
    Drag item represents a container object.
  file
    Drag item represents a file object.
  icon
    Drag item represents an icon object.
  menuItem
    Drag item represents a menu item object.
  plainText
    Drag item represents a plain text object.
  text
    Drag item represents a generic text object.
  toolBarButton
    Drag item represents a tool bar button object.
  unknown
    Drag item represents an unknown object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

RF

      typedef const char * RF

  Definition of the default rendering formats of the Open Class Library include the following:

  rfUnknown
    Drag item supports an unknown rendering format. The Open Class Library provides default support for this format.
  rfText
    Drag item supports the text rendering format. The text rendering format is used if the text length is less than or equal to 255 bytes, if the text does not contain embedded NULL characters, and if the IDM::rmFile rendering mechanism is not added in a derived class. The Open Class Library provides default support for this format.
  rfProcess
    Drag item supports the process rendering format. The process rendering format is created by appending the equal sign and the process ID to this string. See the static member function IDMItem::rfForThisProcess for more information. The Open Class Library provides default support for this format.
  rfSharedMem
    Drag item supports the shared memory rendering format. The Open Class Library provides default support for this format.
  rfObject
    Drag item supports the OS/2 Workplace Shell's object rendering format. The Open Class Library does not provide default support for this format.
  rfAny
    Drag item supports any rendering format. This format combines all of the other formats. The Open Class Library does not provide default support for this format.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

RM

      typedef const char * RM

  Definition of the default rendering mechanisms of the Open Class Library include the following:

  rmFile
    Drag item supports the operating system's file rendering mechanism. The Open Class Library provides default support for this mechanism.
  rmObject
    Drag item supports the OS/2 Workplace Shell's object rendering mechanism. The Open Class Library does not provide default support for this mechanism.
  rmDiscard
    Drag item supports the operating system's rendering mechanism for the discarding (shredding) of objects. The Open Class Library does not provide default support for this mechanism.
  rmPrint
    Drag item supports the operating system's rendering mechanism for the printing of objects. The Open Class Library does not provide default support for this mechanism.
  rmLibrary
    Drag item supports the default rendering mechanism of the Open Class Library.
  rmAny
    Drag item supports any rendering mechanism. This mechanism combines all of the other mechanisms. The Open Class Library does not provide default support for this mechanism.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IDM - Inherited Member Functions and Data

#### Inherited Public Functions

  - None

#### Inherited Public Data

  - None

#### Inherited Protected Functions

  - None

#### Inherited Protected Data

  - None