# Grasshopper2.UI.Flex namespace

Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

## Interfaces

- [IFlexControl](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.iflexcontrol.md): Base interface for Grasshopper UI controls. This interface defined functionality to be added to regular `Control` derived classes.
- [IResponsive](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.iresponsive.md): Interface for objects that wish to participate in UI events inside [IFlexControl](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.iflexcontrol.md) instances.

## Enums

- [ContentPosition](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.contentposition.md): Enumerates the possible positions content can have within an IControl.
- [ContentResizeBehaviour](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.contentresizebehaviour.md): Enumerates the possible content navigation behaviours during control resize events.
- [CoordinateSystem](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.coordinatesystem.md): Enumerates the possible coordinate systems.
- [FloatingPosition](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingposition.md): Enumerates the possible positional states for floating buttons.
- [FloatingState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingstate.md): Enumerates the possible states in which a floating button can be.
- [Response](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.response.md): Enumerates the possible responses UI objects may have to events.

## Classes

- [ControlBorder](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.controlborder.md): Represents a border around an IControl.
- [ControlDrawEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.controldraweventargs.md): Arguments used in the IControl draw events.
- [ControlGraphics](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.controlgraphics.md): Provides several graphics states for drawing in different coordinate systems.
- [FlexControl](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.flexcontrol.md): Core implementation of the [IFlexControl](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.iflexcontrol.md) interface.
- [FloatingButton](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingbutton.md): Base class for button UI elements that float in screen-space on top of IControl.
- [FloatingButtonCollection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingbuttoncollection.md): Utility class for storing and maintaining collections of floating buttons. You don't technically need this class but it's a lot easier than doing all the maintenance/bookkeeping yourself.
- [FloatingButtonEventArgs<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingbuttoneventargs-1.md): Event arguments used in floating button events.
- [MouseDwellEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.mousedwelleventargs.md): Class used in the [FlexControl.MouseDwell](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.flexcontrol/mousedwell.md) event.
- [MouseMoveData<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.mousemovedata-1.md): Utility class for keeping track of mouse move information.
- [MouseState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.mousestate.md): Maintains relevant information associated with a single mouse event.
- [MouseStateHistory](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.mousestatehistory.md): Maintains a collection of sorted mouse states. This class is not threadsafe, only modify it from the UI thread.
- [PopulateContextMenuEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.populatecontextmenueventargs.md): Event arguments used during context menu population.
- [Projection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection.md): Immutable projection for an IControl.
- [ProjectionChangedEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projectionchangedeventargs.md): Class used in the IControl.ProjectionChanged event.
- [ResponseMouseArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responsemouseargs.md): Mouse event payload delivered to [Responses](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responses.md) handlers. Mirrors `MouseEventArgs` but carries the cursor location in both Control and Content coordinate systems, holds a reference to the host control, and exposes an [ResponseMouseArgs.Invalidate()](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responsemouseargs/invalidate.md) method that schedules a redraw without the responder having to subscribe to a separate event.
- [ResponseRotationArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responserotationargs.md): Rotation gesture payload delivered to [Responses](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responses.md) handlers. Carries the cursor location in both Control and Content coordinate systems plus the per-tick rotation delta in degrees.
- [Responses](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.responses.md): Class for handling UI responses.
- [WindowSelection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.windowselection.md): Stores all relevant information regarding UI window selection boxes.
- [WindowSelectionEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.windowselectioneventargs.md): Class used in the IControl.WindowSelection event.

## Delegates

- [FloatingButtonHandler](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.floatingbuttonhandler.md): Delegate for handling MouseDown, MouseUp and MouseClick events on floating buttons.
