private double getFirstSliderSample() { return getSliderSample(0); }
private double getMinSliderSample(int sliderIndex) { if (sliderIndex == 0) { return getMinSample(); } else { return getSliderSample(sliderIndex - 1); } }
private double getMaxSliderSample(int sliderIndex) { if (sliderIndex == getSliderCount() - 1) { return getMaxSample(); } else { return getSliderSample(sliderIndex + 1); } }
private void setSliderSample(int index, double newValue, boolean adjusting) { if (adjusting) { double minValue = Double.NEGATIVE_INFINITY; if (index > 0 && index < getSliderCount() - 1) { minValue = getSliderSample(index - 1); } if (newValue < minValue) { newValue = minValue; } } setSliderSample(index, newValue); }
private double getLastSliderSample() { return getSliderSample(getModel().getSliderCount() - 1); }
private void drawSliders(Graphics2D g2d) { g2d.translate(sliderBaseLineRect.x, sliderBaseLineRect.y); g2d.setStroke(STROKE_1); for (int i = 0; i < getSliderCount(); i++) { if (isSliderVisible(i)) { double sliderPos = getRelativeSliderPos(getSliderSample(i)); g2d.translate(sliderPos, 0.0); final Color sliderColor = getSliderColor(i); g2d.setPaint(sliderColor); g2d.fill(sliderShape); int gray = (sliderColor.getRed() + sliderColor.getGreen() + sliderColor.getBlue()) / 3; g2d.setColor(gray < 128 ? Color.white : Color.black); g2d.draw(sliderShape); String text = getFormattedValue(getSliderSample(i)); g2d.setColor(Color.black); // save the old transformation final AffineTransform oldTransform = g2d.getTransform(); g2d.transform(AffineTransform.getRotateInstance(Math.PI / 2)); g2d.drawString(text, 3 + 0.5f * SLIDER_HEIGHT, 0.35f * FONT_SIZE); // restore the old transformation g2d.setTransform(oldTransform); g2d.translate(-sliderPos, 0.0); } } g2d.translate(-sliderBaseLineRect.x, -sliderBaseLineRect.y); }
x1 = (int) getAbsoluteSliderPos(getSliderSample(i)); y1 = histoRect.y + histoRect.height - 1; x2 = x1;
private void computeFactors() { factors = new double[getSliderCount()]; final double firstPS = scaleInverse(getFirstSliderSample()); final double lastPS = scaleInverse(getLastSliderSample()); double dsn = lastPS - firstPS; if (dsn == 0 || Double.isNaN(dsn)) { dsn = Double.MIN_VALUE; } for (int i = 0; i < getSliderCount(); i++) { final double sample = scaleInverse(getSliderSample(i)); final double dsi = sample - firstPS; factors[i] = dsi / dsn; } }
private void editSliderSample(MouseEvent evt, final int sliderIndex) { final PropertyContainer vc = new PropertyContainer(); vc.addProperty(Property.create("sample", getSliderSample(sliderIndex))); vc.getDescriptor("sample").setDisplayName("sample"); vc.getDescriptor("sample").setUnit(getModel().getParameterUnit()); final ValueRange valueRange; if (sliderIndex == 0) { valueRange = new ValueRange(Double.NEGATIVE_INFINITY, round(getMaxSliderSample(sliderIndex))); } else if (sliderIndex == getSliderCount() - 1) { valueRange = new ValueRange(round(getMinSliderSample(sliderIndex)), Double.POSITIVE_INFINITY); } else { valueRange = new ValueRange(round(getMinSliderSample(sliderIndex)), round(getMaxSliderSample(sliderIndex))); } vc.getDescriptor("sample").setValueRange(valueRange); final BindingContext ctx = new BindingContext(vc); final NumberFormatter formatter = new NumberFormatter(new DecimalFormat("#0.0#")); formatter.setValueClass(Double.class); // to ensure that double values are returned final JFormattedTextField field = new JFormattedTextField(formatter); field.setColumns(11); field.setHorizontalAlignment(JFormattedTextField.RIGHT); ctx.bind("sample", field); showPopup(evt, field); ctx.addPropertyChangeListener("sample", pce -> { hidePopup(); setSliderSample(sliderIndex, (Double) ctx.getBinding("sample").getPropertyValue()); computeZoomInToSliderLimits(); applyChanges(); }); }