# ControllerProperties (Javadocs: controlP5)
Date: 2014-04-27

controlP5

## Class ControllerProperties

- java.lang.Object
- - controlP5.ControllerProperties

    public class ControllerProperties
    extends java.lang.Object

Values of controllers can be stored inside properties files which can be saved to file or memory.

+Example
  `

      /**
       * ControlP5 Properties
       *
       *
       * saves controller values to a properties-file
       * loads controller values from a properties-file
       *
       * Properties will only save values not the Controller itself.
       *
       * Also take a look at the use/ControlP5snapshot example to
       * save controller values to memory.
       *
       * Use ControllerProperties to load and save serialized controller properties
       * to a properties file.
       * The controllers implementing save/load properties so far are
       * Slider, Knob, Numberbox, Toggle, Checkbox, RadioButton, Textlabel,
       * Matrix, Range, Textarea, ListBox, Dropdown, ColorPicker.
       * Properties are currently saved in the java serialization format.
       *
       * saveProperties(String theFilename) and loadProperties(String theFilename)
       * by default properties will be saved to your sketch folder as controlP5.ser
       * if that file already exists it will be overwritten. for custom property files
       * see the comments inside keyPressed() below.
       *
       * find a list of public methods available for the ControllerProperties class
       * at the bottom of this sketch's source code
       *
       * default properties load/save key combinations are
       * alt+shift+l to load properties
       * alt+shift+s to save properties
       *
       * by andreas schlegel, 2012
       * www.sojamo.de/libraries/controlp5
       *
       */

      import controlP5.*;

      ControlP5 cp5;
      public int myColor = color(0, 0, 0);

      public int sliderValue = 100;
      public int sliderTicks1 = 100;
      public int sliderTicks2 = 30;

      void setup() {
        size(700, 400);
        noStroke();

        cp5 = new ControlP5(this);

        cp5.addSlider("slider")
           .setBroadcast(false)
           .setRange(0, 200)
           .setPosition(20, 100)
           .setSize(10, 100)
           .setBroadcast(true)
           .setValue(100)
           ;

        cp5.addSlider("sliderTicks1")
           .setRange(0, 255)
           .setPosition(100, 100)
           .setSize(10, 100)
           .setNumberOfTickMarks(5)
           ;

        cp5.addSlider("sliderValue")
           .setRange(0, 255)
           .setValue(128)
           .setPosition(200, 180)
           .setSize(100, 10)
           ;

        cp5.addSlider("sliderTicks2")
           .setRange(0, 255)
           .setValue(128)
           .setPosition(200, 220)
           .setSize(100, 10)
           .setNumberOfTickMarks(7)
           .setSliderMode(Slider.FLEXIBLE)
           ;

      }

      void draw() {
        background(sliderTicks1);

        fill(sliderValue);
        rect(0, 0, width, 100);

        fill(myColor);
        rect(0, 300, width, 70);

        fill(sliderTicks2);
        rect(0, 370, width, 30);
      }

      public void slider(float theColor) {
        myColor = color(theColor);
        println("a slider event. setting background to "+theColor);
      }

      void keyPressed() {
        // default properties load/save key combinations are
        // alt+shift+l to load properties
        // alt+shift+s to save properties
        if (key=='1') {
          cp5.saveProperties(("hello.properties"));
        }
        else if (key=='2') {
          cp5.loadProperties(("hello.properties"));
        }
      }

      /*
      a list of all methods available for the ControllerProperties Controller
      use ControlP5.printPublicMethodsFor(ControllerProperties.class);
      to print the following list into the console.

      You can find further details about class ControllerProperties in the javadoc.

      Format:
      ClassName : returnType methodName(parameter type)

      controlP5.ControllerProperties : ArrayList getSnapshotIndices()
      controlP5.ControllerProperties : ControllerProperties addSet(String)
      controlP5.ControllerProperties : ControllerProperties delete(ControllerProperty)
      controlP5.ControllerProperties : ControllerProperties getSnapshot(String)
      controlP5.ControllerProperties : ControllerProperties move(ControllerInterface, String, String)
      controlP5.ControllerProperties : ControllerProperties move(ControllerProperty, String, String)
      controlP5.ControllerProperties : ControllerProperties only(ControllerProperty, String)
      controlP5.ControllerProperties : ControllerProperties print()
      controlP5.ControllerProperties : ControllerProperties register(ControllerInterface, String)
      controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface)
      controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String)
      controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String, String)
      controlP5.ControllerProperties : ControllerProperties removeSnapshot(String)
      controlP5.ControllerProperties : ControllerProperties saveSnapshot(String)
      controlP5.ControllerProperties : ControllerProperties saveSnapshotAs(String, String)
      controlP5.ControllerProperties : ControllerProperties setSnapshot(String)
      controlP5.ControllerProperties : ControllerProperties updateSnapshot(String)
      controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String)
      controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String, String)
      controlP5.ControllerProperties : ControllerProperty register(ControllerInterface, String, String)
      controlP5.ControllerProperties : HashSet getPropertySet(ControllerInterface)
      controlP5.ControllerProperties : List get(ControllerInterface)
      controlP5.ControllerProperties : Map get()
      controlP5.ControllerProperties : String toString()
      controlP5.ControllerProperties : boolean load()
      controlP5.ControllerProperties : boolean load(String)
      controlP5.ControllerProperties : boolean save()
      controlP5.ControllerProperties : boolean saveAs(String)
      controlP5.ControllerProperties : void setFormat(Format)
      java.lang.Object : String toString()
      java.lang.Object : boolean equals(Object)

      */

  `

### Field Summary

Fields
`static int` `CLOSE`
`static java.lang.String` `defaultName`
`static java.util.logging.Logger` `logger`
`static int` `OPEN`

### Constructor Summary

Constructors
Constructor and Description
`ControllerProperties(ControlP5 theControlP5)`

### Method Summary

Methods
`ControllerProperties` `addSet(java.lang.String theSet)`
`ControllerProperties` `copy(ControllerInterface<?> theController, java.lang.String... theSet)`
`ControllerProperties` `copy(ControllerProperty theProperty, java.lang.String... theSet)` copies a ControllerProperty from one set to other(s);
`ControllerProperties` `delete(ControllerProperty theProperty)` deletes a ControllerProperty from all Sets including the default set.
`java.util.Map<ControllerProperty,java.util.HashSet<java.lang.String>>` `get()`
`java.util.List<ControllerProperty>` `get(ControllerInterface<?> theController)`
`ControllerProperty` `getProperty(ControllerInterface<?> theController, java.lang.String theProperty)`
`ControllerProperty` `getProperty(ControllerInterface<?> theController, java.lang.String theSetter, java.lang.String theGetter)`
`java.util.HashSet<ControllerProperty>` `getPropertySet(ControllerInterface<?> theController)`
`ControllerProperties` `getSnapshot(java.lang.String theKey)` restores properties previously stored as snapshot in memory.
`java.util.ArrayList<java.lang.String>` `getSnapshotIndices()` properties stored in memory can be accessed by index, getSnapshotIndices() returns the index of the snapshot list.
`boolean` `load()` load properties from the default properties file 'controlP5.properties'
`boolean` `load(java.lang.String thePropertiesPath)`
`ControllerProperties` `move(ControllerInterface<?> theController, java.lang.String fromSet, java.lang.String toSet)`
`ControllerProperties` `move(ControllerProperty theProperty, java.lang.String fromSet, java.lang.String toSet)` Moves a ControllerProperty from one set to another.
`ControllerProperties` `only(ControllerProperty theProperty, java.lang.String theSet)` stores a ControllerProperty in one particular set only.
`ControllerProperties` `print()`
`ControllerProperties` `register(ControllerInterface<?> theController, java.lang.String theProperty)` registering a property with only one parameter assumes that there is a setter and getter function present for the Controller.
`ControllerProperty` `register(ControllerInterface<?> theController, java.lang.String thePropertySetter, java.lang.String thePropertyGetter)` adds a property based on names of setter and getter methods of a controller.
`ControllerProperties` `remove(ControllerInterface<?> theController)`
`ControllerProperties` `remove(ControllerInterface<?> theController, java.lang.String... theSet)`
`ControllerProperties` `remove(ControllerInterface<?> theController, java.lang.String theProperty)`
`ControllerProperties` `remove(ControllerInterface<?> theController, java.lang.String theSetter, java.lang.String theGetter)`
`ControllerProperties` `remove(ControllerProperty theProperty, java.lang.String... theSet)` removes a ControllerProperty from one or multiple sets.
`ControllerProperties` `removeSnapshot(java.lang.String theKey)` removes a snapshot by key.
`boolean` `save()` saves all registered properties into the default 'controlP5.properties' file into your sketch folder.
`boolean` `saveAs(java.lang.String thePropertiesPath)` saves all registered properties into a file specified by parameter thePropertiesPath.
`boolean` `saveAs(java.lang.String thePropertiesPath, java.lang.String... theSets)` saves a list of properties sets into a file specified by parameter thePropertiesPath.
`ControllerProperties` `saveSnapshot(java.lang.String theKey)` saves a snapshot into your sketch's sketch folder.
`ControllerProperties` `saveSnapshotAs(java.lang.String thePropertiesPath, java.lang.String theKey)` saves a snapshot to the file with path given by the first parameter (thePropertiesPath).
`void` `setFormat(controlP5.ControllerProperties.PropertiesStorageFormat theFormat)` use ControllerProperties.SERIALIZED, ControllerProperties.XML or ControllerProperties.JSON as parameter.
`ControllerProperties` `setSnapshot(java.lang.String theKey)` logs all registered properties in memory.
`java.lang.String` `toString()`
`ControllerProperties` `updateSnapshot(java.lang.String theKey)` convenience method, setSnapshot(String) also works here since it will override existing log with the same key.

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

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

### Field Detail

#### CLOSE

    public static final int CLOSE

See Also:
  Constant Field Values

#### defaultName

    public static java.lang.String defaultName

#### logger

    public static final java.util.logging.Logger logger

#### OPEN

    public static final int OPEN

See Also:
  Constant Field Values

### Constructor Detail

#### ControllerProperties

    public ControllerProperties(ControlP5 theControlP5)

### Method Detail

#### addSet

    public ControllerProperties addSet(java.lang.String theSet)

#### copy

    public ControllerProperties copy(ControllerInterface<?> theController,
                            java.lang.String... theSet)

#### copy

    public ControllerProperties copy(ControllerProperty theProperty,
                            java.lang.String... theSet)

copies a ControllerProperty from one set to other(s);

#### delete

    public ControllerProperties delete(ControllerProperty theProperty)

deletes a ControllerProperty from all Sets including the default set.

#### get

    public java.util.Map<ControllerProperty,java.util.HashSet<java.lang.String>> get()

#### get

    public java.util.List<ControllerProperty> get(ControllerInterface<?> theController)

#### getProperty

    public ControllerProperty getProperty(ControllerInterface<?> theController,
                                 java.lang.String theProperty)

#### getProperty

    public ControllerProperty getProperty(ControllerInterface<?> theController,
                                 java.lang.String theSetter,
                                 java.lang.String theGetter)

#### getPropertySet

    public java.util.HashSet<ControllerProperty> getPropertySet(ControllerInterface<?> theController)

#### getSnapshot

    public ControllerProperties getSnapshot(java.lang.String theKey)

restores properties previously stored as snapshot in memory.

See Also:
  `setSnapshot(String)`

#### getSnapshotIndices

    public java.util.ArrayList<java.lang.String> getSnapshotIndices()

properties stored in memory can be accessed by index, getSnapshotIndices() returns the index of the snapshot list.

#### load

    public boolean load()

load properties from the default properties file 'controlP5.properties'

#### load

    public boolean load(java.lang.String thePropertiesPath)

#### move

    public ControllerProperties move(ControllerInterface<?> theController,
                            java.lang.String fromSet,
                            java.lang.String toSet)

#### move

    public ControllerProperties move(ControllerProperty theProperty,
                            java.lang.String fromSet,
                            java.lang.String toSet)

Moves a ControllerProperty from one set to another.

#### only

    public ControllerProperties only(ControllerProperty theProperty,
                            java.lang.String theSet)

stores a ControllerProperty in one particular set only.

#### print

    public ControllerProperties print()

#### register

    public ControllerProperties register(ControllerInterface<?> theController,
                                java.lang.String theProperty)

registering a property with only one parameter assumes that there is a setter and getter function present for the Controller. register("value") for example would create a property reference to setValue and getValue. Notice that the first letter of value is being capitalized.

Parameters:
  `theProperty` -
Returns:

#### register

    public ControllerProperty register(ControllerInterface<?> theController,
                              java.lang.String thePropertySetter,
                              java.lang.String thePropertyGetter)

adds a property based on names of setter and getter methods of a controller.

Parameters:
  `thePropertySetter` -
  `thePropertyGetter` -

#### remove

    public ControllerProperties remove(ControllerInterface<?> theController)

#### remove

    public ControllerProperties remove(ControllerInterface<?> theController,
                              java.lang.String... theSet)

#### remove

    public ControllerProperties remove(ControllerInterface<?> theController,
                              java.lang.String theProperty)

#### remove

    public ControllerProperties remove(ControllerInterface<?> theController,
                              java.lang.String theSetter,
                              java.lang.String theGetter)

#### remove

    public ControllerProperties remove(ControllerProperty theProperty,
                              java.lang.String... theSet)

removes a ControllerProperty from one or multiple sets.

#### removeSnapshot

    public ControllerProperties removeSnapshot(java.lang.String theKey)

removes a snapshot by key.

#### save

    public boolean save()

saves all registered properties into the default 'controlP5.properties' file into your sketch folder.

#### saveAs

    public boolean saveAs(java.lang.String thePropertiesPath)

saves all registered properties into a file specified by parameter thePropertiesPath.

#### saveAs

    public boolean saveAs(java.lang.String thePropertiesPath,
                 java.lang.String... theSets)

saves a list of properties sets into a file specified by parameter thePropertiesPath.

#### saveSnapshot

    public ControllerProperties saveSnapshot(java.lang.String theKey)

saves a snapshot into your sketch's sketch folder.

#### saveSnapshotAs

    public ControllerProperties saveSnapshotAs(java.lang.String thePropertiesPath,
                                      java.lang.String theKey)

saves a snapshot to the file with path given by the first parameter (thePropertiesPath).

#### setFormat

    public void setFormat(controlP5.ControllerProperties.PropertiesStorageFormat theFormat)

use ControllerProperties.SERIALIZED, ControllerProperties.XML or ControllerProperties.JSON as parameter.

#### setSnapshot

    public ControllerProperties setSnapshot(java.lang.String theKey)

logs all registered properties in memory. Here, clones of properties are stored inside a map and can be accessed by key using the getLog method.

Parameters:
  `theKey` -
Returns:
  ControllerProperties
See Also:
  `getSnapshot(String)`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### updateSnapshot

    public ControllerProperties updateSnapshot(java.lang.String theKey)

convenience method, setSnapshot(String) also works here since it will override existing log with the same key.