Skip to content

Commit

Permalink
Merge pull request #2606 from dls-controls/2563-spinner-limits
Browse files Browse the repository at this point in the history
2563 spinner limits
  • Loading branch information
berryma4 committed Jul 17, 2019
2 parents 8fb1e4e + eb6c4a8 commit 96222aa
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,10 @@ protected void registerPropertyChangeHandlers() {
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
String text = (String)newValue;
try {
SpinnerFigure spinnerFigure = (SpinnerFigure) figure;
text = text.replace("e", "E"); //$NON-NLS-1$ //$NON-NLS-2$
double value = new DecimalFormat().parse(text).doubleValue();
//coerce value in range
value = Math.max(((SpinnerFigure)figure).getMin(),
Math.min(((SpinnerFigure)figure).getMax(), value));
((SpinnerFigure)figure).setValue(value);
spinnerFigure.manualSetValue(value);
if(getExecutionMode() == ExecutionMode.RUN_MODE)
setPVValue(AbstractPVWidgetModel.PROP_PVNAME, value);
getWidgetModel().setText(
Expand Down Expand Up @@ -369,7 +367,7 @@ public Double getValue() {
@Override
public void setValue(Object value) {
if(value instanceof Number)
((SpinnerFigure)getFigure()).setValue(((Number) value).doubleValue());
((SpinnerFigure)getFigure()).manualSetValue(((Number) value).doubleValue());
else
super.setValue(value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import org.csstudio.csdata.ProcessVariable;
import org.csstudio.opibuilder.dnd.DropPVtoPVWidgetEditPolicy;
import org.csstudio.simplepv.IPV;
import org.diirt.vtype.VType;
import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.IFigure;
import org.diirt.vtype.VType;

/**The abstract edit part for all PV armed widgets.
* Widgets inheritate this class will have the CSS context menu on it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
import org.csstudio.simplepv.VTypeHelper;
import org.csstudio.ui.util.CustomMediaFactory;
import org.csstudio.ui.util.thread.UIBundlingThread;
import org.diirt.vtype.AlarmSeverity;
import org.diirt.vtype.VType;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.draw2d.AbstractBorder;
import org.eclipse.draw2d.Border;
Expand All @@ -44,8 +46,6 @@
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.RGB;
import org.diirt.vtype.AlarmSeverity;
import org.diirt.vtype.VType;

public class PVWidgetEditpartDelegate implements IPVWidgetEditpart {
// private interface AlarmSeverity extends ISeverity{
Expand Down Expand Up @@ -98,10 +98,12 @@ public void writePermissionChanged(IPV pv) {
//when alarm turn back to no_alarm state/
private static final AbstractBorder BORDER_NO_ALARM = new AbstractBorder() {

@Override
public Insets getInsets(IFigure figure) {
return new Insets(2);
}

@Override
public void paint(IFigure figure, Graphics graphics, Insets insets) {
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public abstract class AbstractScaledWidgetFigure extends Figure implements Intro

protected String valueLabelFormat = ""; //$NON-NLS-1$

@Override
public BeanInfo getBeanInfo() throws IntrospectionException {
return new ScaleWidgetIntrospector().getBeanInfo(this.getClass());
}
Expand All @@ -73,8 +74,6 @@ public double getCoercedValue(double v){
else
return v > range.getLower()?range.getLower(): range.getUpper();
}

// return Math.max(scale.getRange().getLower(), Math.min(scale.getRange().getUpper(), value));
}
/**
* @return the majorTickMarkStepHint
Expand Down Expand Up @@ -251,7 +250,6 @@ public void setTransparent(final boolean transparent) {
*/
public void setValue(final double value) {
this.value = value;
// Math.max(scale.getRange().getLower(), Math.min(scale.getRange().getUpper(), value));
repaint();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ class ThumbDragger
protected boolean armed;
public ThumbDragger() { }

@Override
public void mouseDoubleClicked(MouseEvent me) { }

@Override
public void mouseDragged(MouseEvent me) {
if (!armed)
return;
Expand All @@ -91,6 +93,7 @@ public void mouseDragged(MouseEvent me) {
me.consume();
}

@Override
public void mousePressed(MouseEvent me) {
armed = true;
start = me.getLocation();
Expand All @@ -107,6 +110,7 @@ public void mousePressed(MouseEvent me) {
me.consume();
}

@Override
public void mouseReleased(MouseEvent me) {
if (!armed)
return;
Expand Down Expand Up @@ -265,6 +269,7 @@ protected ButtonModel createDefaultModel() {
clickable.setOpaque(true);
clickable.setBackgroundColor(COLOR_TRACK);
clickable.addChangeListener(new ChangeListener() {
@Override
public void handleStateChanged(ChangeEvent evt) {
if (clickable.getModel().isArmed())
clickable.setBackgroundColor(ColorConstants.black);
Expand All @@ -280,16 +285,24 @@ private void fireManualValueChange(double value) {
listener.manualValueChanged(value);
}

@Override
public BeanInfo getBeanInfo() throws IntrospectionException {
return new DefaultWidgetIntrospector().getBeanInfo(this.getClass());
}

public double getCoercedValue(double value){
double newValue = value;
if (maximum > minimum) {
newValue = value < minimum ? minimum : (value > maximum ? maximum : value);
}
return newValue;
}

public double getCoercedValue() {
return getCoercedValue(value);
}


public double getCoercedValue(){
return value < minimum ? minimum : (value > maximum ? maximum : value);
}
/**
* @return the extent
*/
Expand Down Expand Up @@ -351,6 +364,7 @@ protected double getValueRange() {
private void hookFocusListener(Clickable up) {
up.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent event) {
if(!hasFocus())
requestFocus();
Expand All @@ -365,6 +379,7 @@ public void actionPerformed(ActionEvent event) {
private void initializeListeners() {
addKeyListener(new KeyListener() {

@Override
public void keyPressed(KeyEvent ke) {
if((ke.keycode == SWT.ARROW_UP && !isHorizontal()) ||
(ke.keycode == SWT.ARROW_LEFT && isHorizontal()))
Expand All @@ -380,16 +395,19 @@ else if((ke.keycode == SWT.PAGE_UP && !isHorizontal())||
pageUp();
}

@Override
public void keyReleased(KeyEvent ke) {
}
});

addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent fe) {
repaint();
}

@Override
public void focusLost(FocusEvent fe) {
repaint();
}
Expand Down Expand Up @@ -424,9 +442,11 @@ private void initLabelTimer(){
labelTimer = new OPITimer();
timerTask = new Runnable() {

@Override
public void run() {
display.asyncExec(new Runnable() {

@Override
public void run() {
label.setVisible(false);
}
Expand Down Expand Up @@ -470,7 +490,7 @@ protected void layout() {
* @param value
*/
public void manualSetValue(double value){
value = Math.max(getMinimum(), Math.min(getMaximum(), value));
value = getCoercedValue(value);
if (this.value == value)
return;
if(showValueTip){
Expand Down Expand Up @@ -516,13 +536,15 @@ public void removeManualValueChangeListener(IManualValueChangeListener listener)
/**
* @see IFigure#revalidate()
*/
@Override
public void revalidate() {
// Override default revalidate to prevent going up the parent chain. Reason for this
// is that preferred size never changes unless orientation changes.
invalidate();
getUpdateManager().addInvalidFigure(this);
}

@Override
public void setDirection(int direction) {

}
Expand All @@ -546,6 +568,7 @@ public void setDownClickable(Clickable down) {
: Orientable.SOUTH);
buttonDown.setFiringMethod(Clickable.REPEAT_FIRING);
buttonDown.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stepDown();
}
Expand All @@ -558,6 +581,7 @@ public void actionPerformed(ActionEvent e) {
/**
* @see IFigure#setEnabled(boolean)
*/
@Override
public void setEnabled(boolean value) {
if (isEnabled() == value)
return;
Expand Down Expand Up @@ -622,6 +646,7 @@ public void setMinimum(double minimum) {
/**
* @see Orientable#setOrientation(int)
*/
@Override
public void setOrientation(int value) {
if ((value == HORIZONTAL) == isHorizontal())
return;
Expand All @@ -648,6 +673,7 @@ public void setPageDown(Clickable down) {
if (pageDown != null) {
pageDown.setFiringMethod(Clickable.REPEAT_FIRING);
pageDown.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
pageDown();
}
Expand Down Expand Up @@ -676,6 +702,7 @@ public void setPageUp(Clickable up) {
if (pageUp != null) {
pageUp.setFiringMethod(Clickable.REPEAT_FIRING);
pageUp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
pageUp();
}
Expand Down Expand Up @@ -749,6 +776,7 @@ public void setUpClickable(Clickable up) {
: Orientable.NORTH);
buttonUp.setFiringMethod(Clickable.REPEAT_FIRING);
buttonUp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stepUp();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,11 @@ protected void layout() {
*/
public boolean manualSetValue(double value){
double oldValue = getValue();
setValue(
value < min ? min : (value > max ? max : value));
// The range only makes sense if max > min.
if (max > min) {
value = value < min ? min : (value > max ? max : value);
}
setValue(value);
return oldValue != getValue();
}

Expand Down

0 comments on commit 96222aa

Please sign in to comment.