private void restoreScrollingPosition() {
   if (scrollingPosition != null) {
     Point size = preview.getSize();
     scroll.setOrigin(
         (int) Math.round(scrollingPosition[0] * size.x),
         (int) Math.round(scrollingPosition[1] * size.y));
   }
 }
  @Test
  public void testRenderOrigin() throws IOException {
    Composite content = new Composite(sc, SWT.NONE);
    sc.setContent(content);

    sc.setOrigin(1, 2);
    lca.renderChanges(sc);

    TestMessage message = Fixture.getProtocolMessage();
    JsonArray expected = JsonArray.readFrom("[ 1, 2 ]");
    assertEquals(expected, message.findSetProperty(sc, "origin"));
  }
 void activeKeyScrolling() {
   if (keyScrollingFilter == null) {
     Composite pageParent = getPageContainer().getParent();
     if (!(pageParent instanceof ScrolledComposite)) {
       return;
     }
     final ScrolledComposite sc = (ScrolledComposite) pageParent;
     keyScrollingFilter =
         event -> {
           if (!keyScrollingEnabled || sc.isDisposed()) {
             return;
           }
           switch (event.keyCode) {
             case SWT.ARROW_DOWN:
               sc.setOrigin(sc.getOrigin().x, sc.getOrigin().y + INCREMENT);
               break;
             case SWT.ARROW_UP:
               sc.setOrigin(sc.getOrigin().x, sc.getOrigin().y - INCREMENT);
               break;
             case SWT.ARROW_LEFT:
               sc.setOrigin(sc.getOrigin().x - INCREMENT, sc.getOrigin().y);
               break;
             case SWT.ARROW_RIGHT:
               sc.setOrigin(sc.getOrigin().x + INCREMENT, sc.getOrigin().y);
               break;
             case SWT.PAGE_DOWN:
               sc.setOrigin(sc.getOrigin().x, sc.getOrigin().y + PAGE_MULTIPLIER * INCREMENT);
               break;
             case SWT.PAGE_UP:
               sc.setOrigin(sc.getOrigin().x, sc.getOrigin().y - PAGE_MULTIPLIER * INCREMENT);
               break;
             case SWT.HOME:
               sc.setOrigin(0, 0);
               break;
             case SWT.END:
               sc.setOrigin(0, sc.getSize().y);
               break;
             default:
               keyScrollingEnabled = false;
           }
           event.type = SWT.None;
           event.doit = false;
         };
     Display display = PlatformUI.getWorkbench().getDisplay();
     display.addFilter(SWT.KeyDown, keyScrollingFilter);
     display.addFilter(SWT.Traverse, keyScrollingFilter);
     sc.addDisposeListener(e -> removeKeyScrolling());
   }
   keyScrollingEnabled = true;
 }
  @Test
  public void testRenderOriginUnchanged() throws IOException {
    Composite content = new Composite(sc, SWT.NONE);
    sc.setContent(content);
    Fixture.markInitialized(display);
    Fixture.markInitialized(sc);

    sc.setOrigin(1, 2);
    Fixture.preserveWidgets();
    lca.renderChanges(sc);

    TestMessage message = Fixture.getProtocolMessage();
    assertNull(message.findSetOperation(hScroll, "selection"));
    assertNull(message.findSetOperation(vScroll, "selection"));
  }
 public void readData(final Widget widget) {
   ScrolledComposite composite = (ScrolledComposite) widget;
   Point origin = composite.getOrigin();
   String value = WidgetLCAUtil.readPropertyValue(widget, PARAM_H_BAR_SELECTION);
   ScrollBar hScroll = composite.getHorizontalBar();
   if (value != null && hScroll != null) {
     origin.x = Integer.parseInt(value);
     processSelection(hScroll);
   }
   value = WidgetLCAUtil.readPropertyValue(widget, PARAM_V_BAR_SELECTION);
   ScrollBar vScroll = composite.getVerticalBar();
   if (value != null && vScroll != null) {
     origin.y = Integer.parseInt(value);
     processSelection(vScroll);
   }
   composite.setOrigin(origin);
   ControlLCAUtil.processMouseEvents(composite);
   ControlLCAUtil.processKeyEvents(composite);
   ControlLCAUtil.processMenuDetect(composite);
   WidgetLCAUtil.processHelp(composite);
 }