Skip to content

Commit c101e59

Browse files
authored
Merge pull request #2339 from ControlSystemStudio/CSSTUDIO-1724
feature: text alignment in Spinner widget
2 parents ed884d2 + b408997 commit c101e59

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SpinnerWidget.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,6 @@
77
*******************************************************************************/
88
package org.csstudio.display.builder.model.widgets;
99

10-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propBackgroundColor;
11-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propEnabled;
12-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propFont;
13-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propForegroundColor;
14-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propFormat;
15-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propIncrement;
16-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propLimitsFromPV;
17-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propMaximum;
18-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propMinimum;
19-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propPrecision;
20-
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propShowUnits;
21-
2210
import java.util.Arrays;
2311
import java.util.List;
2412

@@ -35,11 +23,11 @@
3523
import org.csstudio.display.builder.model.persist.NamedWidgetFonts;
3624
import org.csstudio.display.builder.model.persist.WidgetColorService;
3725
import org.csstudio.display.builder.model.persist.WidgetFontService;
38-
import org.csstudio.display.builder.model.properties.CommonWidgetProperties;
39-
import org.csstudio.display.builder.model.properties.WidgetColor;
40-
import org.csstudio.display.builder.model.properties.WidgetFont;
26+
import org.csstudio.display.builder.model.properties.*;
4127
import org.phoebus.ui.vtype.FormatOption;
4228

29+
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.*;
30+
4331
/** Widget that represents a spinner
4432
* @author Amanda Carpenter
4533
*/
@@ -79,6 +67,8 @@ public Widget createWidget()
7967
private volatile WidgetProperty<Boolean> buttons_on_left;
8068
private volatile WidgetProperty<Boolean> enabled;
8169
private volatile WidgetProperty<WidgetFont> font;
70+
private volatile WidgetProperty<HorizontalAlignment> horizontal_alignment;
71+
private volatile WidgetProperty<VerticalAlignment> vertical_alignment;
8272

8373
/** Constructor */
8474
public SpinnerWidget()
@@ -102,6 +92,8 @@ protected void defineProperties(final List<WidgetProperty<?>> properties)
10292
properties.add(increment = propIncrement.createProperty(this, 1.0));
10393
properties.add(buttons_on_left = propButtonsOnLeft.createProperty(this, false));
10494
properties.add(enabled = propEnabled.createProperty(this, true));
95+
properties.add(horizontal_alignment = propHorizontalAlignment.createProperty(this, HorizontalAlignment.LEFT));
96+
properties.add(vertical_alignment = propVerticalAlignment.createProperty(this, VerticalAlignment.TOP));
10597
}
10698

10799
@Override
@@ -181,4 +173,17 @@ public WidgetProperty<WidgetFont> propFont()
181173
{
182174
return font;
183175
}
176+
177+
/** @return 'horizontal_alignment' property */
178+
public WidgetProperty<HorizontalAlignment> propHorizontalAlignment()
179+
{
180+
return horizontal_alignment;
181+
}
182+
183+
/** @return 'vertical_alignment' property */
184+
public WidgetProperty<VerticalAlignment> propVerticalAlignment()
185+
{
186+
return vertical_alignment;
187+
}
188+
184189
}

app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.logging.Level;
1313

1414
import javafx.application.Platform;
15+
import javafx.geometry.Pos;
1516
import javafx.scene.Cursor;
1617
import org.csstudio.display.builder.model.DirtyFlag;
1718
import org.csstudio.display.builder.model.UntypedWidgetPropertyListener;
@@ -60,6 +61,7 @@ public class SpinnerRepresentation extends RegionBaseRepresentation<Spinner<Stri
6061
protected volatile VType value = null;
6162
private volatile double value_max = 100.0;
6263
private volatile double value_min = 0.0;
64+
private volatile Pos pos;
6365

6466
private static WidgetColor active_color = WidgetColorService.getColor(NamedWidgetColors.ACTIVE_TEXT);
6567

@@ -377,13 +379,17 @@ private String computeText(final VType value)
377379
protected void registerListeners()
378380
{
379381
super.registerListeners();
382+
pos = JFXUtil.computePos(model_widget.propHorizontalAlignment().getValue(),
383+
model_widget.propVerticalAlignment().getValue());
380384
model_widget.propWidth().addUntypedPropertyListener(styleListener);
381385
model_widget.propHeight().addUntypedPropertyListener(styleListener);
382386
model_widget.propButtonsOnLeft().addUntypedPropertyListener(styleListener);
383387

384388
model_widget.propForegroundColor().addUntypedPropertyListener(styleListener);
385389
model_widget.propBackgroundColor().addUntypedPropertyListener(styleListener);
386390
model_widget.propFont().addUntypedPropertyListener(styleListener);
391+
model_widget.propHorizontalAlignment().addUntypedPropertyListener(styleListener);
392+
model_widget.propVerticalAlignment().addUntypedPropertyListener(styleListener);
387393
model_widget.propEnabled().addUntypedPropertyListener(styleListener);
388394
model_widget.runtimePropPVWritable().addUntypedPropertyListener(styleListener);
389395

@@ -434,6 +440,8 @@ protected boolean isFilteringEditModeClicks()
434440

435441
private void styleChanged(final WidgetProperty<?> property, final Object old_value, final Object new_value)
436442
{
443+
pos = JFXUtil.computePos(model_widget.propHorizontalAlignment().getValue(),
444+
model_widget.propVerticalAlignment().getValue());
437445
dirty_style.mark();
438446
toolkit.scheduleUpdate(this);
439447
}
@@ -491,6 +499,7 @@ public void updateChanges()
491499
JFXUtil.appendWebRGB(style, back_color).append(";");
492500

493501
jfx_node.editorProperty().getValue().setStyle(style.toString());
502+
jfx_node.editorProperty().getValue().setAlignment(pos);
494503
jfx_node.resize(model_widget.propWidth().getValue(), model_widget.propHeight().getValue());
495504

496505
// Enable if enabled by user and there's write access

0 commit comments

Comments
 (0)