protected Value getValueByPoint(Point p) {
    if (valueCircles != null && p != null) {
      for (int i = 0; i < valueCircles.length; i++) {
        Point vc = valueCircles[i];
        if (vc != null) {
          if ( (p.getX() > vc.getX() - POINT_SIZE.width) && (p.getX() < vc.getX() + POINT_SIZE.width) ) {
            if ((p.getY() > vc.getY() - POINT_SIZE.height) && (p.getY() < vc.getY() + POINT_SIZE.height)) {
              return getValues()[i];
            }
          }
        }
      }
    }
    return null;
  }