Ejemplo n.º 1
0
  /**
   * Standard constructor: builds a property panel for the specified axis.
   *
   * @param axis the axis, which should be changed.
   */
  public DefaultValueAxisEditor(ValueAxis axis) {

    super(axis);

    this.autoRange = axis.isAutoRange();
    this.minimumValue = axis.getLowerBound();
    this.maximumValue = axis.getUpperBound();
    this.autoTickUnitSelection = axis.isAutoTickUnitSelection();

    this.gridPaintSample = new PaintSample(Color.blue);
    this.gridStrokeSample = new StrokeSample(new BasicStroke(1.0f));

    this.availableStrokeSamples = new StrokeSample[3];
    this.availableStrokeSamples[0] = new StrokeSample(new BasicStroke(1.0f));
    this.availableStrokeSamples[1] = new StrokeSample(new BasicStroke(2.0f));
    this.availableStrokeSamples[2] = new StrokeSample(new BasicStroke(3.0f));

    JTabbedPane other = getOtherTabs();

    JPanel range = new JPanel(new LCBLayout(3));
    range.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));

    range.add(new JPanel());
    this.autoRangeCheckBox =
        new JCheckBox(localizationResources.getString("Auto-adjust_range"), this.autoRange);
    this.autoRangeCheckBox.setActionCommand("AutoRangeOnOff");
    this.autoRangeCheckBox.addActionListener(this);
    range.add(this.autoRangeCheckBox);
    range.add(new JPanel());

    range.add(new JLabel(localizationResources.getString("Minimum_range_value")));
    this.minimumRangeValue = new JTextField(Double.toString(this.minimumValue));
    this.minimumRangeValue.setEnabled(!this.autoRange);
    this.minimumRangeValue.setActionCommand("MinimumRange");
    this.minimumRangeValue.addActionListener(this);
    this.minimumRangeValue.addFocusListener(this);
    range.add(this.minimumRangeValue);
    range.add(new JPanel());

    range.add(new JLabel(localizationResources.getString("Maximum_range_value")));
    this.maximumRangeValue = new JTextField(Double.toString(this.maximumValue));
    this.maximumRangeValue.setEnabled(!this.autoRange);
    this.maximumRangeValue.setActionCommand("MaximumRange");
    this.maximumRangeValue.addActionListener(this);
    this.maximumRangeValue.addFocusListener(this);
    range.add(this.maximumRangeValue);
    range.add(new JPanel());

    other.add(localizationResources.getString("Range"), range);

    other.add(localizationResources.getString("TickUnit"), createTickUnitPanel());
  }
  public void axisUpdate() {
    ValueAxis va = getValueAxis();
    if (va.isAutoRange()) {
      if (oldColor == null) oldColor = getBackground();
      setBackground(oldColor.brighter());
    } else if (oldColor != null) {
      setBackground(oldColor);
      oldColor = null;
    }
    if (updating) return;
    updating = true;
    displayMin = 0;
    displayMax = 0;
    viewLength = 0;
    double viewMin = 0;
    double viewMax = 0;
    ratio = 1;
    Range dataRange = getDataRange();
    if (dataRange != null) {
      displayMin = getDisplayMinimum();
      displayMax = getDisplayMaximum();
      viewMin = getViewMinimum();
      viewMax = getViewMaximum();
      // ValueAxis va = getValueAxis();
      if (va instanceof DateAxis) {
        Timeline tl = ((DateAxis) va).getTimeline();
        displayMin = tl.toTimelineValue((long) displayMin);
        displayMax = tl.toTimelineValue((long) displayMax);
        viewMin = tl.toTimelineValue((long) viewMin);
        viewMax = tl.toTimelineValue((long) viewMax);
      }
      viewLength = viewMax - viewMin;
      ratio = STEPS / (displayMax - displayMin);
    }

    int newMin = 0;
    int newMax = STEPS;
    int newExtent = (int) (viewLength * ratio);
    int newValue;
    if (orientation == VERTICAL) newValue = (int) ((displayMax - viewMax) * ratio);
    else newValue = (int) ((viewMin - displayMin) * ratio);
    // System.out.println("ChartScrollBar.axisUpdate(): newValue: " + newValue + " newExtent: " +
    // newExtent + " newMin: " + newMin + " newMax: " + newMax);
    setValues(newValue, newExtent, newMin, newMax);
    updating = false;
  }