Search in sources :

Example 1 with Resize

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);
}
Also used : DisplayModel(org.csstudio.display.builder.model.DisplayModel) EmbeddedDisplayRepresentationUtil.loadDisplayModel(org.csstudio.display.builder.representation.EmbeddedDisplayRepresentationUtil.loadDisplayModel) Resize(org.csstudio.display.builder.model.widgets.EmbeddedDisplayWidget.Resize)

Example 2 with Resize

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);
    }
}
Also used : Resize(org.csstudio.display.builder.model.widgets.EmbeddedDisplayWidget.Resize)

Aggregations

Resize (org.csstudio.display.builder.model.widgets.EmbeddedDisplayWidget.Resize)2 DisplayModel (org.csstudio.display.builder.model.DisplayModel)1 EmbeddedDisplayRepresentationUtil.loadDisplayModel (org.csstudio.display.builder.representation.EmbeddedDisplayRepresentationUtil.loadDisplayModel)1