Example usage for javax.swing JScrollBar setVisibleAmount

List of usage examples for javax.swing JScrollBar setVisibleAmount

Introduction

In this page you can find the example usage for javax.swing JScrollBar setVisibleAmount.

Prototype

@BeanProperty(bound = false, preferred = true, description = "The amount of the view that is currently visible.")
public void setVisibleAmount(int extent) 

Source Link

Document

Set the model's extent property.

Usage

From source file:com.att.aro.ui.view.waterfalltab.WaterfallPanel.java

/**
 * Refreshes the waterfall display with the specified analysis data
 * @param Analyzed data from aro core./*from   w  w w . j  ava 2s  .com*/
 */
public void refresh(AROTraceData aModel) {

    this.popup.refresh(null, 0);
    this.popup.setVisible(false);

    double range = DEFAULT_TIMELINE;

    // Create sorted list of request/response pairs
    List<WaterfallCategory> categoryList = new ArrayList<WaterfallCategory>();

    if (aModel != null && aModel.getAnalyzerResult() != null) {
        this.traceDuration = aModel.getAnalyzerResult().getTraceresult().getTraceDuration();

        // add 20% to make sure labels close to the right edge of the screen are visible
        this.traceDuration *= 1.2;
        range = Math.min(this.traceDuration, DEFAULT_TIMELINE);

        for (Session tcpSession : aModel.getAnalyzerResult().getSessionlist()) {
            Session thisSession = tcpSession;
            if (!tcpSession.isUDP()) {
                for (HttpRequestResponseInfo reqResInfo : tcpSession.getRequestResponseInfo()) {
                    if (reqResInfo.getDirection() == HttpDirection.REQUEST
                            && reqResInfo.getWaterfallInfos() != null) {
                        categoryList.add(new WaterfallCategory(reqResInfo, thisSession));
                    }
                }

            }

        }

        // Sort and set index
        Collections.sort(categoryList);
        int index = 0;
        for (WaterfallCategory wCategory : categoryList) {
            wCategory.setIndex(++index);
        }

    }

    // Horizontal scroll bar used to scroll through trace duration
    JScrollBar hScrollBar = getHorizontalScroll();
    hScrollBar.setMaximum((int) Math.ceil(this.traceDuration));

    // Set the visible time range
    setTimeRange(0, range);

    CategoryAxis cAxis = getCategoryAxis();
    cAxis.clearCategoryLabelToolTips();

    // Build the dataset
    DefaultCategoryDataset underlying = new DefaultCategoryDataset();
    for (WaterfallCategory wfc : categoryList) {
        RequestResponseTimeline rrTimeLine = wfc.getReqResp().getWaterfallInfos();

        underlying.addValue(rrTimeLine.getStartTime(), Waterfall.BEFORE, wfc);
        underlying.addValue(rrTimeLine.getDnsLookupDuration(), Waterfall.DNS_LOOKUP, wfc);
        underlying.addValue(rrTimeLine.getInitialConnDuration(), Waterfall.INITIAL_CONNECTION, wfc);
        underlying.addValue(rrTimeLine.getSslNegotiationDuration(), Waterfall.SSL_NEGOTIATION, wfc);
        underlying.addValue(rrTimeLine.getRequestDuration(), Waterfall.REQUEST_TIME, wfc);
        underlying.addValue(rrTimeLine.getTimeToFirstByte(), Waterfall.TIME_TO_FIRST_BYTE, wfc);
        underlying.addValue(rrTimeLine.getContentDownloadDuration(), Waterfall.CONTENT_DOWNLOAD, wfc);
        underlying.addValue(null, Waterfall.HTTP_3XX_REDIRECTION, wfc);
        underlying.addValue(null, Waterfall.HTTP_4XX_CLIENTERROR, wfc);

        int code = wfc.getReqResp().getAssocReqResp().getStatusCode();
        double endTime = this.traceDuration - rrTimeLine.getStartTime() - rrTimeLine.getTotalTime();
        if (code >= 300 && code < 400) {
            underlying.addValue(endTime, Waterfall.AFTER_3XX, wfc);
        } else if (code >= 400) {
            underlying.addValue(endTime, Waterfall.AFTER_4XX, wfc);
        } else {
            underlying.addValue(endTime, Waterfall.AFTER, wfc);
        }

        cAxis.addCategoryLabelToolTip(wfc, wfc.getTooltip());
    }

    // Vertical scroll bar is used to scroll through data
    JScrollBar vScrollBar = getVerticalScroll();
    int count = underlying.getColumnCount();
    vScrollBar.setValue(0);
    vScrollBar.setMaximum(count);
    vScrollBar.setVisibleAmount(count > 0 ? this.dataset.getMaximumCategoryCount() - 1 / count : 1);

    // Add the dataset to the plot
    CategoryPlot plot = getChartPanel().getChart().getCategoryPlot();
    this.dataset = new SlidingCategoryDataset(underlying, 0, CATEGORY_MAX_COUNT);
    plot.setDataset(this.dataset);

    // Place proper colors on renderer for waterfall states
    final CategoryItemRenderer renderer = plot.getRenderer();
    for (Object obj : underlying.getRowKeys()) {
        Waterfall wFall = (Waterfall) obj;
        int index = underlying.getRowIndex(wFall);

        Color paint;
        switch (wFall) {
        case DNS_LOOKUP:
            paint = dnsLoolupColor;
            break;
        case INITIAL_CONNECTION:
            paint = initiaConnColor;
            break;
        case SSL_NEGOTIATION:
            paint = sslNegColor;
            break;
        case REQUEST_TIME:
            paint = requestTimeColor;
            break;
        case TIME_TO_FIRST_BYTE:
            paint = firstByteTimeColor;
            break;
        case CONTENT_DOWNLOAD:
            paint = contentDownloadColor;
            break;
        case AFTER_3XX:
            paint = noneColor;
            renderer.setSeriesItemLabelPaint(index, threexColor);
            renderer.setSeriesVisibleInLegend(index, false);
            break;
        case AFTER_4XX:
            paint = noneColor;
            renderer.setSeriesItemLabelPaint(index, fourxColor);
            renderer.setSeriesVisibleInLegend(index, false);
            break;
        case HTTP_3XX_REDIRECTION:
            paint = threexColor;
            break;
        case HTTP_4XX_CLIENTERROR:
            paint = fourxColor;
            break;
        default:
            renderer.setSeriesItemLabelPaint(index, Color.black);
            renderer.setSeriesVisibleInLegend(index, false);
            paint = noneColor;
        }
        renderer.setSeriesPaint(index, paint);
    }

    // Adding the label at the end of bars
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator() {
        private static final long serialVersionUID = 1L;

        @Override
        public String generateLabel(CategoryDataset dataset, int row, int column) {
            if (Waterfall.AFTER == dataset.getRowKey(row) || Waterfall.AFTER_3XX == dataset.getRowKey(row)
                    || Waterfall.AFTER_4XX == dataset.getRowKey(row)) {
                WaterfallCategory waterfallItem = (WaterfallCategory) dataset.getColumnKey(column);

                RequestResponseTimeline waterfallInfos = waterfallItem.getReqResp().getWaterfallInfos();
                DecimalFormat formatter = new DecimalFormat("#.##");
                int code = waterfallItem.getReqResp().getAssocReqResp().getStatusCode();
                return MessageFormat.format(ResourceBundleHelper.getMessageString("waterfall.totalTime"),
                        formatter.format(waterfallInfos.getTotalTime()),
                        code > 0 ? waterfallItem.getReqResp().getScheme() + " " + code
                                : ResourceBundleHelper.getMessageString("waterfall.unknownCode"));
            }

            return null;
        }
    });

}

From source file:com.att.aro.ui.view.waterfalltab.WaterfallPanel.java

/**
 * Setting the time range for the graph.
 * @param low//from ww  w  .j  ava 2 s.c  o  m
 * @param high
 */
private void setTimeRange(double low, double high) {

    double lTime = low;
    double hTime = high;
    boolean zoomInEnabled = true;
    boolean zoomOutEnabled = true;
    JScrollBar scrollBarr = getHorizontalScroll();
    if (hTime > traceDuration) {
        double delta = hTime - traceDuration;
        lTime = lTime - delta;
        hTime = hTime - delta;
        if (lTime < 0) {
            lTime = 0.0;
        }
    }

    if (hTime - lTime <= 1.0) {
        hTime = lTime + 1.0;
        zoomInEnabled = false;
    }

    if ((hTime - lTime) < traceDuration) {
        zoomOutEnabled = true;
    } else {
        zoomOutEnabled = false;
    }

    //      logger.log(Level.FINE, "Range set to {0} - {1}", new Object[] {low, high});
    scrollBarr.setValue((int) lTime);
    scrollBarr.setVisibleAmount((int) Math.ceil(hTime - lTime));
    scrollBarr.setBlockIncrement(scrollBarr.getVisibleAmount());

    // Enable zoom buttons appropriately
    zoomOutButton.setEnabled(zoomOutEnabled);
    zoomInButton.setEnabled(zoomInEnabled);
}

From source file:savant.view.variation.swing.VariationModule.java

public void visibleRangeChanged(String ref, Range r) {
    if (r.getLength() > ResolutionSettings.getVariantLowToHighThreshold()) {
        showMessage(ZOOM_MESSAGE);/*from   ww w.ja  v a2  s . c o m*/
    } else {
        try {
            // Detach the adjustment listeners so that setting the maximum doesn't fire an event.
            for (JScrollBar sb : scrollers) {
                sb.removeAdjustmentListener(scrollerListener);
            }

            for (JScrollBar sb : scrollers) {
                sb.setMaximum(LocationController.getInstance().getMaxRangeEnd());
                sb.setValue(r.getFrom());
                sb.setVisibleAmount(r.getLength());
                sb.setBlockIncrement(r.getLength());
                sb.repaint();
            }
        } finally {
            // Reattach the adjustment listeners.
            for (JScrollBar sb : scrollers) {
                sb.addAdjustmentListener(scrollerListener);
            }
        }
    }
    rangeField.setText(String.format("%s:%d-%d", ref, r.getFrom(), r.getTo()));
}