private JMenuItem createMenuItemCenterSampleValue(final int sliderIndex) { JMenuItem menuItem = new JMenuItem(); menuItem.setText("Center Slider Position"); /* I18N */ menuItem.setMnemonic('s'); menuItem.addActionListener(actionEvent -> { final double center = scale(0.5 * (scaleInverse(getSliderSample(sliderIndex - 1)) + scaleInverse( getSliderSample(sliderIndex + 1)))); setSliderSample(sliderIndex, center, false); hidePopup(); applyChanges(); }); return menuItem; }
private JMenuItem createMenuItemCenterColorValue(final int sliderIndex) { JMenuItem menuItem = new JMenuItem(); menuItem.setText("Center Slider Colour"); /* I18N */ menuItem.setMnemonic('c'); menuItem.addActionListener(actionEvent -> { final Color newColor = ColorPaletteDef.getCenterColor(getSliderColor(sliderIndex - 1), getSliderColor(sliderIndex + 1)); setSliderColor(sliderIndex, newColor); hidePopup(); applyChanges(); }); return menuItem; }
private JMenuItem createMenuItemDeleteSlider(final int removeIndex) { JMenuItem menuItem = new JMenuItem("Remove Slider"); menuItem.setMnemonic('D'); menuItem.addActionListener(e -> { getModel().removeSlider(removeIndex); hidePopup(); applyChanges(); }); return menuItem; }
private void setSliderColor(int index, Color c) { getModel().setSliderColor(index, c); applyChanges(); }
private JMenuItem createMenuItemAddNewSlider(int insertIndex, final MouseEvent evt) { if (insertIndex == getModel().getSliderCount() - 1) { return null; } if (insertIndex == INVALID_INDEX && isClickOutsideExistingSliders(evt.getX())) { return null; } if (insertIndex == INVALID_INDEX && !isVerticalInColorBarArea(evt.getY())) { return null; } if (insertIndex == INVALID_INDEX) { insertIndex = getNearestLeftSliderIndex(evt.getX()); } if (insertIndex == INVALID_INDEX) { return null; } final int index = insertIndex; JMenuItem menuItem = new JMenuItem("Add new Slider"); menuItem.setMnemonic('A'); menuItem.addActionListener(e -> { assert getModel() != null : "getModel() != null"; if (index < getModel().getSliderCount() - 1) { getModel().createSliderAfter(index); } hidePopup(); applyChanges(); }); return menuItem; }
@Override public void mouseReleased(MouseEvent evt) { if (isDragging()) { doDragSlider(evt, false); setDragging(false); setDraggedSliderIndex(INVALID_INDEX); applyChanges(); } else if (!maybeShowSliderActions(evt) && SwingUtilities.isLeftMouseButton(evt)) { int mode = 0; int sliderIndex = getSelectedSliderIndex(evt); if (sliderIndex != INVALID_INDEX && getModel().isColorEditable()) { mode = 1; } if (mode == 0) { if (sliderIndex == INVALID_INDEX) { sliderIndex = getSelectedSliderTextIndex(evt); } if (sliderIndex != INVALID_INDEX) { mode = 2; } } if (mode == 1) { editSliderColor(evt, sliderIndex); } else if (mode == 2) { editSliderSample(evt, sliderIndex); } } }
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(); }); }