Exemplo n.º 1
0
  private ChartPanel createChartPanel(JFreeChart chart) {
    XYPlot plot = chart.getXYPlot();

    plot.setForegroundAlpha(0.85f);
    plot.setNoDataMessage(NO_DATA_MESSAGE);
    plot.setAxisOffset(new RectangleInsets(5, 5, 5, 5));

    ChartPanel chartPanel = new ChartPanel(chart);

    MaskSelectionToolSupport maskSelectionToolSupport =
        new MaskSelectionToolSupport(
            this,
            chartPanel,
            "histogram_plot_area",
            "Mask generated from selected histogram plot area",
            Color.RED,
            PlotAreaSelectionTool.AreaType.X_RANGE) {

          @Override
          protected String createMaskExpression(
              PlotAreaSelectionTool.AreaType areaType, Shape shape) {
            Rectangle2D bounds = shape.getBounds2D();
            return createMaskExpression(bounds.getMinX(), bounds.getMaxX());
          }

          protected String createMaskExpression(double x1, double x2) {
            String bandName = BandArithmetic.createExternalName(getRaster().getName());
            HistogramPanelModel.HistogramConfig currentConfig = createHistogramConfig();
            return String.format(
                "%s >= %s && %s <= %s",
                bandName,
                model.hasStx(currentConfig)
                    ? model.getStx(currentConfig).getHistogramScaling().scaleInverse(x1)
                    : x1,
                bandName,
                model.hasStx(currentConfig)
                    ? model.getStx(currentConfig).getHistogramScaling().scaleInverse(x2)
                    : x2);
          }
        };

    chartPanel.getPopupMenu().addSeparator();
    chartPanel.getPopupMenu().add(maskSelectionToolSupport.createMaskSelectionModeMenuItem());
    chartPanel.getPopupMenu().add(maskSelectionToolSupport.createDeleteMaskMenuItem());
    chartPanel.getPopupMenu().addSeparator();
    chartPanel.getPopupMenu().add(createCopyDataToClipboardMenuItem());
    return chartPanel;
  }
Exemplo n.º 2
0
  private ChartPanel createChartPanel(final JFreeChart chart) {
    scatterPlotDisplay =
        new ChartPanel(chart) {
          @Override
          public void restoreAutoBounds() {
            // here we tweak the notify flag on the plot so that only
            // one notification happens even though we update multiple
            // axes...
            final XYPlot plot = chart.getXYPlot();
            boolean savedNotify = plot.isNotify();
            plot.setNotify(false);
            xAxisRangeControl.adjustAxis(plot.getDomainAxis(), 3);
            yAxisRangeControl.adjustAxis(plot.getRangeAxis(), 3);
            plot.setNotify(savedNotify);
          }
        };

    MaskSelectionToolSupport maskSelectionToolSupport =
        new MaskSelectionToolSupport(
            this,
            scatterPlotDisplay,
            "correlative_plot_area",
            "Mask generated from selected correlative plot area",
            Color.RED,
            PlotAreaSelectionTool.AreaType.Y_RANGE) {
          @Override
          protected String createMaskExpression(
              PlotAreaSelectionTool.AreaType areaType, Shape shape) {
            Rectangle2D bounds = shape.getBounds2D();
            return createMaskExpression(bounds.getMinY(), bounds.getMaxY());
          }

          protected String createMaskExpression(double x1, double x2) {
            String bandName = BandArithmetic.createExternalName(getRaster().getName());
            return String.format("%s >= %s && %s <= %s", bandName, x1, bandName, x2);
          }
        };
    scatterPlotDisplay.getPopupMenu().addSeparator();
    scatterPlotDisplay
        .getPopupMenu()
        .add(maskSelectionToolSupport.createMaskSelectionModeMenuItem());
    scatterPlotDisplay.getPopupMenu().add(maskSelectionToolSupport.createDeleteMaskMenuItem());
    scatterPlotDisplay.getPopupMenu().addSeparator();
    scatterPlotDisplay.getPopupMenu().add(createCopyDataToClipboardMenuItem());
    return scatterPlotDisplay;
  }
Exemplo n.º 3
0
  private ChartPanel createChartPanel(JFreeChart chart) {
    profilePlotDisplay = new ChartPanel(chart);

    MaskSelectionToolSupport maskSelectionToolSupport =
        new MaskSelectionToolSupport(
            this,
            profilePlotDisplay,
            "profile_plot_area",
            "Mask generated from selected profile plot area",
            Color.RED,
            PlotAreaSelectionTool.AreaType.Y_RANGE) {

          @Override
          protected String createMaskExpression(
              PlotAreaSelectionTool.AreaType areaType, Shape shape) {
            Rectangle2D bounds = shape.getBounds2D();
            return createMaskExpression(bounds.getMinY(), bounds.getMaxY());
          }

          protected String createMaskExpression(double x1, double x2) {
            String bandName = BandArithmetic.createExternalName(getRaster().getName());
            return String.format("%s >= %s && %s <= %s", bandName, x1, bandName, x2);
          }
        };

    profilePlotDisplay.addChartMouseListener(
        new XYPlotMarker(
            profilePlotDisplay,
            new XYPlotMarker.Listener() {
              @Override
              public void pointSelected(XYDataset xyDataset, int seriesIndex, Point2D dataPoint) {
                if (profileData != null) {
                  GeoPos[] geoPositions = profileData.getGeoPositions();
                  int index = (int) dataPoint.getX();
                  if (index >= 0 && index < geoPositions.length) {
                    if (cursorSynchronizer == null) {
                      cursorSynchronizer = new CursorSynchronizer(VisatApp.getApp());
                    }
                    if (!cursorSynchronizer.isEnabled()) {
                      cursorSynchronizer.setEnabled(true);
                    }
                    cursorSynchronizer.updateCursorOverlays(geoPositions[index]);
                  }
                }
              }

              @Override
              public void pointDeselected() {
                cursorSynchronizer.setEnabled(false);
              }
            }));
    profilePlotDisplay.setInitialDelay(200);
    profilePlotDisplay.setDismissDelay(1500);
    profilePlotDisplay.setReshowDelay(200);
    profilePlotDisplay.setZoomTriggerDistance(5);
    profilePlotDisplay.getPopupMenu().addSeparator();
    profilePlotDisplay
        .getPopupMenu()
        .add(maskSelectionToolSupport.createMaskSelectionModeMenuItem());
    profilePlotDisplay.getPopupMenu().add(maskSelectionToolSupport.createDeleteMaskMenuItem());
    profilePlotDisplay.getPopupMenu().addSeparator();
    profilePlotDisplay.getPopupMenu().add(createCopyDataToClipboardMenuItem());

    return profilePlotDisplay;
  }