controlP5

## Class Bang

- java.lang.Object
- - controlP5.Controller<Bang>
  - - controlP5.Bang

- All Implemented Interfaces:
    CDrawable, ControllerInterface<Bang>, ControlP5Constants

      public class Bang
      extends Controller<Bang>

  The Bang controller triggers an event when pressed. A bang can only be assigned to a function in your program but not to a field like other controllers. Bang extends superclass Controller, for a full documentation see the `Controller` reference.

  +Example
    `

        /**
         * ControlP5 Bang
         * A bang triggers an event that can be received by a function named after the bang.
         * By default a bang is triggered when pressed, this can be changed to 'release'
         * using theBang.setTriggerEvent(Bang.RELEASE).
         *
         * find a list of public methods available for the Bang Controller
         * at the bottom of this sketch.
         *
         * by Andreas Schlegel, 2012
         * www.sojamo.de/libraries/controlp5
         *
         */

        import controlP5.*;

        ControlP5 cp5;

        int myColorBackground = color(0, 0, 0);

        color[] col = new color[] {
          color(100), color(150), color(200), color(250)
        };

        void setup() {
          size(400, 600);
          noStroke();
          cp5 = new ControlP5(this);
          for (int i=0;i

    `

- - ### Field Summary

    - ### Fields inherited from class controlP5.Controller

      `autoHeight, autoSpacing, autoWidth`

    - ### Fields inherited from interface controlP5.ControlP5Constants

      `acceptClassList, ACTION_BROADCAST, ACTION_CLICK, ACTION_DOUBLE_PRESS, ACTION_DRAG, ACTION_END_DRAG, ACTION_ENTER, ACTION_EXIT, ACTION_LEAVE, ACTION_MOVE, ACTION_PRESS, ACTION_PRESSED, ACTION_RELEASE, ACTION_RELEASE_OUTSIDE, ACTION_RELEASED, ACTION_RELEASEDOUTSIDE, ACTION_START_DRAG, ACTION_WHEEL, ACTIVE, ALL, ALT, AQUA, ARC, ARRAY, BACKSPACE, BASELINE, BITFONT, BLACK, BLUE, BOOLEAN, BOTTOM, BOTTOM_OUTSIDE, CAPTIONLABEL, CENTER, CHECKBOX, COMMANDKEY, CONTROL, controlEventClass, CUSTOM, DECREASE, DEFAULT, DELETE, delimiter, DONE, DOWN, DROPDOWN, ELLIPSE, ENTER, ESCAPE, EVENT, eventMethod, FADEIN, FADEOUT, FIELD, FLOAT, FUCHSIA, GRAY, GREEN, grixel, HALF_PI, HIDE, HIGHLIGHT, HORIZONTAL, IDLE, IMAGE, INACTIVE, INCREASE, INTEGER, INVALID, J2D, JSON, KEYCONTROL, LEFT, LEFT_OUTSIDE, LIME, LINE, LIST, LOAD, MAROON, MENU, METHOD, MOVE, MULTI, MULTIPLES, NAVY, OLIVE, ORANGE, OVER, P2D, P3D, pathdelimiter, PI, PRESS, PRESSED, PRINT, PURPLE, RED, RELEASE, RELEASED, RESET, RIGHT, RIGHT_OUTSIDE, SAVE, SERIALIZED, SHIFT, SILVER, SINGLE, SINGLE_COLUMN, SINGLE_ROW, SPRITE, standard56, standard58, STRING, SWITCH, SWITCH_BACK, SWITCH_FORE, synt24, TAB, TEAL, THEME_A, THEME_CP52014, THEME_CP5BLUE, THEME_GREY, THEME_RED, THEME_RETRO, TOP, TOP_OUTSIDE, TRANSITION_WAIT_FADEIN, TREE, TWO_PI, UP, VALUELABEL, VERBOSE, VERTICAL, WAIT, WHITE, YELLOW`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Bang(ControlP5 theControlP5, java.lang.String theName)` Convenience constructor to extend Bang.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getInfo()`
    `int` | `getTriggerEvent()`
    `Bang` | `setTriggerEvent(int theEventID)` By default a bang is triggered when the mouse is pressed.
    `Bang` | `setValue(float theValue)` Sets the value of the bang controller.
    `java.lang.String` | `toString()`
    `Bang` | `update()` updates the value of the controller without having to set the value explicitly.
    `Bang` | `updateDisplayMode(int theMode)`
    `Bang` | `updateViewMode(int theMode)`

    - ### Methods inherited from class controlP5.Controller

      `add, addCallback, addListener, addListenerFor, align, bringToFront, bringToFront, changeValue, continuousUpdateEvents, draw, getAbsolutePosition, getAddress, getArrayValue, getArrayValue, getBehavior, getCaptionLabel, getColor, getControllerPlugList, getControlWindow, getDecimalPrecision, getDefaultValue, getHeight, getId, getLabel, getMax, getMin, getName, getParent, getPickingColor, getPointer, getPosition, getProperty, getProperty, getStringValue, getTab, getValue, getValueLabel, getView, getWidth, getWindow, hide, init, isActive, isBroadcast, isInside, isLabelVisible, isListening, isLock, isMouseOver, isMousePressed, isMoveable, isUpdate, isUserInteraction, isVisible, keyEvent, linebreak, listen, listenerSize, lock, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, onChange, onClick, onDoublePress, onDrag, onDraw, onEndDrag, onEnter, onLeave, onMove, onPress, onRelease, onReleaseOutside, onStartDrag, onWheel, plugTo, plugTo, plugTo, plugTo, registerProperty, registerProperty, registerTooltip, remove, remove, removeBehavior, removeCallback, removeCallback, removeListener, removeListenerFor, removeListenersFor, removeProperty, removeProperty, set, setAbsolutePosition, setAddress, setArrayValue, setArrayValue, setBehavior, setBroadcast, setCaptionLabel, setColor, setColorActive, setColorBackground, setColorCaptionLabel, setColorForeground, setColorLabel, setColorValue, setColorValueLabel, setDecimalPrecision, setDefaultValue, setFont, setFont, setGroup, setGroup, setHeight, setId, setImage, setImage, setImages, setImages, setImages, setLabel, setLabelVisible, setLock, setMax, setMin, setMouseOver, setMousePressed, setMoveable, setParent, setPosition, setPosition, setSize, setSize, setStringValue, setTab, setTab, setUpdate, setUserInteraction, setValueLabel, setValueSelf, setView, setView, setVisible, setWidth, show, unlock, unplugFrom, unplugFrom, unregisterTooltip, updateAbsolutePosition, updateEvents, updateInternalEvents, updateSize, x, y`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Bang

          public Bang(ControlP5 theControlP5,
                      java.lang.String theName)

      Convenience constructor to extend Bang.
      Parameters:
        `theControlP5` -
        `theName` -
      +Example
        `

            /**
             * ControlP5 extending Controllers
             *
             * the following example shows how to extend the Controller class to
             * create customizable Controllers. You can either extend the Controller class itself,
             * or any class that extends Controller itself like the Slider, Button, DropdownList, etc.
             *
             * How to:
             *
             * 1) do a super call to the convenience constructor requiring
             * 2 parameter (ControlP5 instance, name)
             *
             * 2) the Controller class has a set of empty methods that allow you to capture
             * inputs from the mouse including
             * onEnter(), onLeave(), onPress(), onRelease(), onClick(), onScroll(int), onDrag()
             * These you can override and include functionality as needed.
             *
             * 3) use method getPointer() to return the local (relative)
             * xy-coordinates of the controller
             *
             * 4) after instantiation custom controllers are treated the same
             * as default controlP5 controllers.
             *
             * by Andreas Schlegel, 2012
             * www.sojamo.de/libraries/controlp5
             *
             */

            import controlP5.*;

            ControlP5 cp5;
            PApplet p;

            void setup() {
              size(400, 400);
              cp5 = new ControlP5(this);

              // create 2 groups to show nesting of custom controllers and
              //
              Group g1 = cp5.addGroup("a").setPosition(0,100).setWidth(180);
              Group g2 = cp5.addGroup("b").setPosition(0,10).setWidth(180);
              g2.moveTo(g1);

              // create 2 custom Controllers from class MyButton
              // MyButton extends Controller and inherits all methods accordingly.
              new MyButton(cp5, "b1").setPosition(0, 0).setSize(180, 200).moveTo(g2);
              new MyButton(cp5, "b2").setPosition(205, 15).setSize(180, 200);

            }

            void draw() {
              background(0);
            }

            // b1 will be called from Controller b1
            public void b1(float theValue) {
              println("yay button "+theValue);
            }

            public void controlEvent(ControlEvent theEvent) {
              println("controlEvent : "+theEvent);
            }

            // Create a custom Controller, please not that
            // MyButton extends Controller,
            // is an indicator for the super class about the type of
            // custom controller to be created.

            class MyButton extends Controller {

              int current = 0xffff0000;

              float a = 128;

              float na;

              int y;

              // use the convenience constructor of super class Controller
              // MyButton will automatically registered and move to the
              // default controlP5 tab.

              MyButton(ControlP5 cp5, String theName) {
                super(cp5, theName);

                // replace the default view with a custom view.
                setView(new ControllerView() {
                  public void display(PGraphics p, Object b) {
                    // draw button background
                    na += (a-na) * 0.1;
                    p.fill(current,na);
                    p.rect(0, 0, getWidth(), getHeight());

                    // draw horizontal line which can be moved on the x-axis
                    // using the scroll wheel.
                    p.fill(0,255,0);
                    p.rect(0,y,width,10);

                    // draw the custom label
                    p.fill(128);
                    translate(0,getHeight()+14);
                    p.text(getName(),0,0);
                    p.text(getName(),0,0);

                  }
                }
                );
              }

              // override various input methods for mouse input control
              void onEnter() {
                cursor(HAND);
                println("enter");
                a = 255;
              }

              void onScroll(int n) {
                println("scrolling");
                y -= n;
                y = constrain(y,0,getHeight()-10);
              }

              void onPress() {
                println("press");
                current = 0xffffff00;
              }

              void onClick() {
                Pointer p1 = getPointer();
                println("clicked at "+p1.x()+", "+p1.y());
                current = 0xffffff00;
                setValue(y);
              }

              void onRelease() {
                println("release");
                current = 0xffffffff;
              }

              void onMove() {
                println("moving "+this+" "+_myControlWindow.getMouseOverList());
              }

              void onDrag() {
                current = 0xff0000ff;
                Pointer p1 = getPointer();
                float dif = dist(p1.px(),p1.py(),p1.x(),p1.y());
                println("dragging at "+p1.x()+", "+p1.y()+" "+dif);
              }

              void onReleaseOutside() {
                onLeave();
              }

              void onLeave() {
                println("leave");
                cursor(ARROW);
                a = 128;
              }
            }

        `

  - ### Method Detail

    - #### getInfo

          public java.lang.String getInfo()

      Overrides:
        `getInfo` in class `Controller<Bang>`
      Returns:
        String

    - #### getTriggerEvent

          public int getTriggerEvent()

    - #### setTriggerEvent

          public Bang setTriggerEvent(int theEventID)

      By default a bang is triggered when the mouse is pressed. use setTriggerEvent(Bang.PRESSED) or setTriggerEvent(Bang.RELEASE) to define the action for triggering a bang. currently only Bang.PRESSED and Bang.RELEASE are supported.
      Parameters:
        `theEventID` -
      Returns:
        Bang

    - #### setValue

          public Bang setValue(float theValue)

      Sets the value of the bang controller. since bang can be true or false, false=0 and true=1
      Specified by:
        `setValue` in interface `ControllerInterface<Bang>`
      Overrides:
        `setValue` in class `Controller<Bang>`
      Parameters:
        `theValue` - float
      Returns:
        Bang

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `Controller<Bang>`

    - #### update

          public Bang update()

      Description copied from class: `Controller`
      updates the value of the controller without having to set the value explicitly. update does not visually update the controller. the updating status can be set with setUpdate(true/false) and checked with isUpdate().
      Specified by:
        `update` in interface `ControllerInterface<Bang>`
      Overrides:
        `update` in class `Controller<Bang>`
      Returns:
        Controller
      See Also:
        `Controller.setUpdate(boolean)`, `Controller.isUpdate()`

    - #### updateDisplayMode

          public Bang updateDisplayMode(int theMode)

    - #### updateViewMode

          public Bang updateViewMode(int theMode)

processing library controlP5 by Andreas Schlegel. (c) 2006-2016