Skip to content

Commit 2b9ea45

Browse files
authored
Merge pull request #2362 from baham4s/#2275
#2275 : add horizontal property to widget Tank
2 parents 844fcf6 + 4e9882f commit 2b9ea45

File tree

2 files changed

+44
-3
lines changed
  • app/display
    • model/src/main/java/org/csstudio/display/builder/model/widgets
    • representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets

2 files changed

+44
-3
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propMaximum;
1818
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propMinimum;
1919
import static org.csstudio.display.builder.model.widgets.plots.PlotWidgetProperties.propLogscale;
20+
import static org.csstudio.display.builder.model.properties.CommonWidgetProperties.propHorizontal;
2021

2122
import java.util.Arrays;
2223
import java.util.List;
@@ -130,6 +131,8 @@ public WidgetConfigurator getConfigurator(final Version persisted_version)
130131
private volatile WidgetProperty<Double> minimum;
131132
private volatile WidgetProperty<Double> maximum;
132133
private volatile WidgetProperty<Boolean> log_scale;
134+
private volatile WidgetProperty<Boolean> horizontal;
135+
133136

134137
/** Constructor */
135138
public TankWidget()
@@ -151,6 +154,7 @@ protected void defineProperties(final List<WidgetProperty<?>> properties)
151154
properties.add(minimum = propMinimum.createProperty(this, 0.0));
152155
properties.add(maximum = propMaximum.createProperty(this, 100.0));
153156
properties.add(log_scale = propLogscale.createProperty(this, false));
157+
properties.add(horizontal = propHorizontal.createProperty(this, false));
154158
}
155159

156160
@Override
@@ -221,4 +225,10 @@ public WidgetProperty<Boolean> propLogScale()
221225
{
222226
return log_scale;
223227
}
228+
229+
/** @return 'horizontal' property */
230+
public WidgetProperty<Boolean> propHorizontal()
231+
{
232+
return horizontal;
233+
}
224234
}

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

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.csstudio.display.builder.model.DirtyFlag;
1313
import org.csstudio.display.builder.model.UntypedWidgetPropertyListener;
1414
import org.csstudio.display.builder.model.WidgetProperty;
15+
import org.csstudio.display.builder.model.WidgetPropertyListener;
1516
import org.csstudio.display.builder.model.util.VTypeUtil;
1617
import org.csstudio.display.builder.model.widgets.TankWidget;
1718
import org.csstudio.display.builder.representation.Preferences;
@@ -21,6 +22,8 @@
2122
import org.epics.vtype.VType;
2223

2324
import javafx.scene.layout.Pane;
25+
import javafx.scene.transform.Rotate;
26+
import javafx.scene.transform.Translate;
2427

2528
/** Creates JavaFX item for model widget
2629
* @author Kay Kasemir
@@ -30,6 +33,7 @@ public class TankRepresentation extends RegionBaseRepresentation<Pane, TankWidge
3033
private final DirtyFlag dirty_look = new DirtyFlag();
3134
private final UntypedWidgetPropertyListener lookListener = this::lookChanged;
3235
private final UntypedWidgetPropertyListener valueListener = this::valueChanged;
36+
private final WidgetPropertyListener<Boolean> orientationChangedListener = this::orientationChanged;
3337

3438
private volatile RTTank tank;
3539

@@ -59,6 +63,7 @@ protected void registerListeners()
5963
model_widget.propMaximum().addUntypedPropertyListener(valueListener);
6064
model_widget.propLogScale().addUntypedPropertyListener(valueListener);
6165
model_widget.runtimePropValue().addUntypedPropertyListener(valueListener);
66+
model_widget.propHorizontal().addPropertyListener(orientationChangedListener);
6267
valueChanged(null, null, null);
6368
}
6469

@@ -79,6 +84,7 @@ protected void unregisterListeners()
7984
model_widget.propMaximum().removePropertyListener(valueListener);
8085
model_widget.propLogScale().removePropertyListener(valueListener);
8186
model_widget.runtimePropValue().removePropertyListener(valueListener);
87+
model_widget.propHorizontal().removePropertyListener(orientationChangedListener);
8288
super.unregisterListeners();
8389
}
8490

@@ -117,6 +123,17 @@ private void valueChanged(final WidgetProperty<?> property, final Object old_val
117123
tank.setLogScale(model_widget.propLogScale().getValue());
118124
}
119125

126+
private void orientationChanged(final WidgetProperty<Boolean> prop, final Boolean old, final Boolean horizontal)
127+
{
128+
if (toolkit.isEditMode()) {
129+
final int w = model_widget.propWidth().getValue();
130+
final int h = model_widget.propHeight().getValue();
131+
model_widget.propWidth().setValue(h);
132+
model_widget.propHeight().setValue(w);
133+
}
134+
lookChanged(prop, old, horizontal);
135+
}
136+
120137
@Override
121138
public void updateChanges()
122139
{
@@ -125,9 +142,23 @@ public void updateChanges()
125142
{
126143
double width = model_widget.propWidth().getValue();
127144
double height = model_widget.propHeight().getValue();
128-
jfx_node.setPrefSize(width, height);
129-
tank.setWidth(width);
130-
tank.setHeight(height);
145+
boolean horizontal = model_widget.propHorizontal().getValue();
146+
if (horizontal)
147+
{
148+
jfx_node.getTransforms().setAll(
149+
new Translate(width, 0),
150+
new Rotate(90, 0, 0));
151+
jfx_node.setPrefSize(height, width);
152+
tank.setWidth(height);
153+
tank.setHeight(width);
154+
}
155+
else
156+
{
157+
jfx_node.getTransforms().clear();
158+
jfx_node.setPrefSize(width, height);
159+
tank.setWidth(width);
160+
tank.setHeight(height);
161+
}
131162
tank.setFont(JFXUtil.convert(model_widget.propFont().getValue()));
132163
tank.setBackground(JFXUtil.convert(model_widget.propBackground().getValue()));
133164
tank.setForeground(JFXUtil.convert(model_widget.propForeground().getValue()));

0 commit comments

Comments
 (0)