/** * Stores the values of the spinners in the {@link BookView model}. * In order to do it * <ul> * <li>commits the edited values to all spinners,</li> * <li>sets the {@link BookPlot#setZoom(double, double, double, double) * zoom} in the {@link BookPlot book plot},</li> * <li>sets the {@link ZoomBookTool#setPreserveRatio(boolean) preserve * ratio} in the {@link ZoomBookTool}.</li></ul> * @param view the model */ public void fillModelFromPanel(BookView view) { BookPlot plot = view.getPlot(); StandardBookSegment segment = plot.getSegment(); if (segment == null) { return; } // XXX update broken spinners... try { getMinPositionSpinner().commitEdit(); } catch (ParseException ex) { JComponent editor = getMinPositionSpinner().getEditor(); if (editor instanceof DefaultEditor) { ((DefaultEditor) editor).getTextField().setValue(getMinPositionSpinner().getValue()); } } try { getMaxPositionSpinner().commitEdit(); } catch (ParseException ex) { JComponent editor = getMaxPositionSpinner().getEditor(); if (editor instanceof DefaultEditor) { ((DefaultEditor) editor).getTextField().setValue(getMaxPositionSpinner().getValue()); } } try { getMinFrequencySpinner().commitEdit(); } catch (ParseException ex) { JComponent editor = getMinFrequencySpinner().getEditor(); if (editor instanceof DefaultEditor) { ((DefaultEditor) editor).getTextField().setValue(getMinFrequencySpinner().getValue()); } } try { getMaxFrequencySpinner().commitEdit(); } catch (ParseException ex) { JComponent editor = getMaxFrequencySpinner().getEditor(); if (editor instanceof DefaultEditor) { ((DefaultEditor) editor).getTextField().setValue(getMaxFrequencySpinner().getValue()); } } double minPosition = ((Number) getMinPositionSpinner().getValue()).doubleValue(); double maxPosition = ((Number) getMaxPositionSpinner().getValue()).doubleValue(); double minFrequency = ((Number) getMinFrequencySpinner().getValue()).doubleValue(); double maxFrequency = ((Number) getMaxFrequencySpinner().getValue()).doubleValue(); plot.setZoom(minPosition, maxPosition, minFrequency, maxFrequency); view.getZoomBookTool().setPreserveRatio(getPreserveRatioCheckBox().isSelected()); }
/** @param model */ public DoubleWidget(PropertyModel model, AbstractController controller) { super(model, controller); double min, max, inc; if (model.hasValueForParameter(MIN_VALUE_PARAM)) { min = model.getDoubleValueForParameter(MIN_VALUE_PARAM); } else { min = DEFAULT_MIN_VALUE; } if (model.hasValueForParameter(MAX_VALUE_PARAM)) { max = model.getDoubleValueForParameter(MAX_VALUE_PARAM); } else { max = DEFAULT_MAX_VALUE; } if (model.hasValueForParameter(INCREMENT_VALUE_PARAM)) { inc = model.getDoubleValueForParameter(INCREMENT_VALUE_PARAM); } else { inc = DEFAULT_INC_VALUE; } SpinnerNumberModel valueModel = new SpinnerNumberModel(min, min, max, inc); valueChooser = new JSpinner(valueModel); valueChooser.setEditor(new JSpinner.NumberEditor(valueChooser /*, "#.##"*/)); valueChooser.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (e.getSource() == valueChooser) { updateModelFromWidget(); } } }); valueChooser.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); JComponent editor = valueChooser.getEditor(); if (editor instanceof DefaultEditor) { ((DefaultEditor) editor).getTextField().setHorizontalAlignment(SwingConstants.LEFT); if (ToolBox.getPLATFORM() != ToolBox.MACOS) { ((DefaultEditor) editor) .getTextField() .setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 0)); } } if (model.hasValueForParameter(READONLY_TEXTFIELD) && model.getBooleanValueForParameter(READONLY_TEXTFIELD)) { valueChooser.setEnabled(false); } getDynamicComponent().addFocusListener(new WidgetFocusListener(this)); }