private int getNearestSliderIndex(int x) { int nearestIndex = INVALID_INDEX; double minDx = Float.MAX_VALUE; double dx = 0.0; for (int i = 0; i < getSliderCount(); i++) { dx = getAbsoluteSliderPos(getSliderSample(i)) - x; if (Math.abs(dx) <= minDx) { nearestIndex = i; minDx = Math.abs(dx); } } // Find correct index for two points at the same, last position if (nearestIndex == getSliderCount() - 1) { final int i = getSliderCount() - 1; if (getAbsoluteSliderPos(getSliderSample(i - 1)) == getAbsoluteSliderPos(getSliderSample(i))) { nearestIndex = dx <= 0.0 ? i : i - 1; } } return nearestIndex; }
private boolean isLastSliderDragged() { return getDraggedSliderIndex() == getSliderCount() - 1; }
private int getSliderCount() { return getModel().getSliderCount(); }
private double getLastSliderSample() { return getSliderSample(getModel().getSliderCount() - 1); }
private void showSliderActions(MouseEvent evt, final int sliderIndex) { final JPopupMenu menu = new JidePopupMenu(); boolean showPopupMenu = false; JMenuItem menuItem = createMenuItemAddNewSlider(sliderIndex, evt); if (menuItem != null) { menu.add(menuItem); showPopupMenu = true; } if (getSliderCount() > 3 && sliderIndex != INVALID_INDEX) { menuItem = createMenuItemDeleteSlider(sliderIndex); menu.add(menuItem); showPopupMenu = true; } if (getSliderCount() > 2 && sliderIndex > 0 && sliderIndex < getSliderCount() - 1) { menuItem = createMenuItemCenterSampleValue(sliderIndex); menu.add(menuItem); menuItem = createMenuItemCenterColorValue(sliderIndex); menu.add(menuItem); showPopupMenu = true; } if (showPopupMenu) { menu.show(evt.getComponent(), evt.getX(), evt.getY()); } }
private void setLastSliderSample(double v) { setSliderSample(getModel().getSliderCount() - 1, v); }
private JMenuItem createMenuItemAddNewSlider(int insertIndex, final MouseEvent evt) { if (insertIndex == getModel().getSliderCount() - 1) { return null;
@Override public void actionPerformed(ActionEvent e) { assert getModel() != null : "getModel() != null"; if (index != INVALID_INDEX && index < getModel().getSliderCount() - 1) { getModel().createSliderAfter(index); } hidePopup(); applyChanges(); } });
@Override public void updateFormModel(ProductSceneView productSceneView) { final ImageInfoEditorModel oldModel = imageInfoEditor.getModel(); final ImageInfo imageInfo = parentForm.getImageInfo(); final ImageInfoEditorModel newModel = new ImageInfoEditorModel1B(imageInfo); imageInfoEditor.setModel(newModel); final RasterDataNode raster = productSceneView.getRaster(); setLogarithmicDisplay(raster, newModel.getImageInfo().isLogScaled()); if (oldModel != null) { newModel.setHistogramViewGain(oldModel.getHistogramViewGain()); newModel.setMinHistogramViewSample(oldModel.getMinHistogramViewSample()); newModel.setMaxHistogramViewSample(oldModel.getMaxHistogramViewSample()); } if (newModel.getSliderSample(0) < newModel.getMinHistogramViewSample() || newModel.getSliderSample(newModel.getSliderCount() - 1) > newModel.getMaxHistogramViewSample()) { imageInfoEditor.computeZoomInToSliderLimits(); } discreteCheckBox.setDiscreteColorsMode(imageInfo.getColorPaletteDef().isDiscrete()); logDisplayButton.setSelected(newModel.getImageInfo().isLogScaled()); parentForm.revalidateToolViewPaneControl(); }