title: Overloading JavaFX Bindings
body: <p>I am binding two labels, calculating the value of the second label via a series of nested calls to Bindings.when().  Since I'm doing the exact same thing 3 times in a row to 3 similar labels, is there a way to simplify this code by overloading one of the Bindings methods or IntegerBinding methods?</p>
  
  <pre><code>private IntegerProperty ipStrength, ipAgility, ipIntelligence;
  private IntegerProperty ipStBonus, ipAgBonus, ipInBonus;
  
  
  public RolePlayingCharacter() {
  
      ...
  
      ipStBonus.bind(Bindings.when(ipStrength.lessThan(5))
              .then(-1)
              .otherwise(Bindings.when(ipStrength.lessThan(9))
                      .then(0)
                      .otherwise(Bindings.when(ipStrength.lessThan(11))
                              .then(1)
                              .otherwise(2))));
  
      ipAgBonus.bind(Bindings.when(ipAgility.lessThan(5))
              .then(-1)
              .otherwise(Bindings.when(ipAgility.lessThan(9))
                      .then(0)
                      .otherwise(Bindings.when(ipAgility.lessThan(11))
                              .then(1)
                              .otherwise(2))));
  
      ipInBonus.bind(Bindings.when(ipIntelligence.lessThan(5))
              .then(-1)
              .otherwise(Bindings.when(ipIntelligence.lessThan(9))
                      .then(0)
                      .otherwise(Bindings.when(ipIntelligence.lessThan(11))
                              .then(1)
                              .otherwise(2))));
  
      ...
  </code></pre>
  
  <p>I have found I can Override Class IntegerBinding's computeValue method, but this doesn't seem to help any, since I would have to do the some thing 3 times anyway, once for each label:</p>
  
  <pre><code>    IntegerBinding ibStatBonus = new IntegerBinding() {
          {
              super.bind(ipStrength);
          }
  
          @Override
          protected int computeValue() {
              int iStatValue = ipStrength.get();
              if (iStatValue &lt; 5) {
                  return -1;
              } else if (iStatValue &lt; 9) {
                  return 0;
              } else if (iStatValue &lt; 11) {
                  return 1;
              } else {
                  return 2;
              }
          }
      };
  </code></pre>
  
  <p>I want to be able to do something simple like:</p>
  
  <pre><code>    ipStBonus.bind(ipStrength.calculateStatBonus());
      ipAgBonus.bind(ipAgility.calculateStatBonus());
      ipInBonus.bind(ipIntelligence.calculateStatBonus());
  </code></pre>
  
  <p>How do I implement such a thing?  How do I make a caclulateStatBonus method part of the list of methods available to an IntegerProperty?</p>