use of org.csstudio.display.builder.model.widgets.EmbeddedDisplayWidget.Resize in project org.csstudio.display.builder by kasemir.
the class EmbeddedDisplayRepresentation method sizesChanged.
private void sizesChanged(final WidgetProperty<?> property, final Object old_value, final Object new_value) {
if (resizing)
return;
final int widget_width = model_widget.propWidth().getValue();
final int widget_height = model_widget.propHeight().getValue();
// "-2" to prevent triggering scrollbars
inner.setMinWidth(widget_width - 2);
inner.setMinHeight(widget_height - 2);
final Resize resize = model_widget.propResize().getValue();
final DisplayModel content_model = active_content_model.get();
if (content_model != null) {
final int content_width = content_model.propWidth().getValue();
final int content_height = content_model.propHeight().getValue();
if (resize == Resize.ResizeContent) {
// Adjust sizes by +-1 so that content is completely visible
final double zoom_x = content_width > 0 ? (double) (widget_width - 1) / (content_width + 1) : 1.0;
final double zoom_y = content_height > 0 ? (double) (widget_height - 1) / (content_height + 1) : 1.0;
zoom_factor = Math.min(zoom_x, zoom_y);
} else if (resize == Resize.SizeToContent) {
zoom_factor = 1.0;
resizing = true;
// Adjust sizes by 2 so that content is completely visible
if (content_width > 0)
model_widget.propWidth().setValue(content_width + 2);
if (content_height > 0)
model_widget.propHeight().setValue(content_height + 2);
resizing = false;
}
}
dirty_sizes.mark();
toolkit.scheduleUpdate(this);
}
use of org.csstudio.display.builder.model.widgets.EmbeddedDisplayWidget.Resize in project org.csstudio.display.builder by kasemir.
the class EmbeddedDisplayRepresentation method updateChanges.
@Override
public void updateChanges() {
super.updateChanges();
if (dirty_sizes.checkAndClear()) {
final Integer width = model_widget.propWidth().getValue();
final Integer height = model_widget.propHeight().getValue();
scroll.setPrefSize(width, height);
final Resize resize = model_widget.propResize().getValue();
if (resize == Resize.None) {
zoom.setX(1.0);
zoom.setY(1.0);
scroll.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
scroll.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
} else if (resize == Resize.ResizeContent) {
zoom.setX(zoom_factor);
zoom.setY(zoom_factor);
scroll.setHbarPolicy(ScrollBarPolicy.NEVER);
scroll.setVbarPolicy(ScrollBarPolicy.NEVER);
} else // SizeToContent
{
zoom.setX(1.0);
zoom.setY(1.0);
scroll.setHbarPolicy(ScrollBarPolicy.NEVER);
scroll.setVbarPolicy(ScrollBarPolicy.NEVER);
}
}
if (dirty_background.checkAndClear()) {
inner.setBackground(inner_background);
inner.setBorder(inner_border);
}
}
Aggregations