private void setupDefaultHandlers() { //Prevent DOMElements scrolling into view when they receive the focus domElementContainer.addDomHandler(new ScrollHandler() { @Override public void onScroll(final ScrollEvent scrollEvent) { domElementContainer.getElement().setScrollTop(0); domElementContainer.getElement().setScrollLeft(0); } }, ScrollEvent.getType()); addAttachHandler(new AttachEvent.Handler() { @Override public void onAttachOrDetach(final AttachEvent event) { if (event.isAttached()) { onResize(); } } }); addMouseDownHandler((e) -> setFocus(true)); }
void setupPanels() { setupScrollPanel(); setupDomElementContainer(); setupRootPanel(); add(getRootPanel()); getElement().getStyle().setOutlineStyle(Style.OutlineStyle.NONE); }
void setupRootPanel() { getRootPanel().add(getDomElementContainer()); getRootPanel().add(getScrollPanel()); }
@Override public void onResize() { scheduleDeferred(() -> { updatePanelSize(); refreshScrollPosition(); }); }
void addMouseUpHandler() { addMouseUpHandler((e) -> refreshScrollPosition()); }
@Override public void onBlur(final BlurEvent event) { destroyResources(); gridLayer.batch(); gridPanel.setFocus(true); } });
@Before public void setUp() { gridLienzoPanel = spy(new GridLienzoPanel()); doReturn(rootPanel).when(gridLienzoPanel).getRootPanel(); doReturn(scrollPanel).when(gridLienzoPanel).getScrollPanel(); doReturn(internalScrollPanel).when(gridLienzoPanel).getInternalScrollPanel(); doReturn(domElementContainer).when(gridLienzoPanel).getDomElementContainer(); doReturn(lienzoPanel).when(gridLienzoPanel).getLienzoPanel(); doReturn(gridLienzoScrollHandler).when(gridLienzoPanel).getGridLienzoScrollHandler(); }
void setupGridPanel() { //Lienzo stuff - Set default scale final Transform transform = newTransform().scale(VP_SCALE); gridPanel.getViewport().setTransform(transform); //Lienzo stuff - Add mouse pan support defaultTransformMediator = new BoundaryTransformMediator(GuidedDecisionTableModellerViewImpl.this); mousePanMediator.setTransformMediator(defaultTransformMediator); gridPanel.getViewport().getMediators().push(mousePanMediator); mousePanMediator.setBatchDraw(true); gridPanel.setBounds(getBounds()); gridPanel.getScrollPanel().addDomHandler(scrollEvent -> getPresenter().updateRadar(), ScrollEvent.getType()); //Wire-up widgets gridPanel.add(gridLayer); //Set ID on GridLienzoPanel for Selenium tests. gridPanel.getElement().setId("dtable_container_" + Document.get().createUniqueId()); }
@Test public void testOnResize() { final ArgumentCaptor<Scheduler.ScheduledCommand> scheduledCommand = ArgumentCaptor.forClass(Scheduler.ScheduledCommand.class); doNothing().when(gridLienzoPanel).updatePanelSize(); doNothing().when(gridLienzoPanel).refreshScrollPosition(); doNothing().when(gridLienzoPanel).scheduleDeferred(scheduledCommand.capture()); gridLienzoPanel.onResize(); scheduledCommand.getValue().execute(); verify(gridLienzoPanel).updatePanelSize(); verify(gridLienzoPanel).refreshScrollPosition(); }
@Test public void testSetupPanels() { doNothing().when(gridLienzoPanel).setupScrollPanel(); doNothing().when(gridLienzoPanel).setupDomElementContainer(); doNothing().when(gridLienzoPanel).setupRootPanel(); gridLienzoPanel.setupPanels(); final InOrder inOrder = inOrder(gridLienzoPanel); inOrder.verify(gridLienzoPanel).setupScrollPanel(); inOrder.verify(gridLienzoPanel).setupDomElementContainer(); inOrder.verify(gridLienzoPanel).setupRootPanel(); inOrder.verify(gridLienzoPanel).add(rootPanel); }
@Override public void updatePanelSize() { final Element parentElement = getElement().getParentElement(); final Integer width = parentElement.getOffsetWidth(); final Integer height = parentElement.getOffsetHeight(); if (width > 0 && height > 0) { updatePanelSize(width, height); } }
@Test public void testSetup() throws Exception { final AbsolutePanel mainPanel = mock(AbsolutePanel.class); final Transform transform = mock(Transform.class); final Viewport viewport = mock(Viewport.class); final Mediators mediators = mock(Mediators.class); final Element element = mock(Element.class); doReturn(transform).when(transform).scale(anyDouble()); doReturn(transform).when(view).newTransform(); doReturn(mediators).when(viewport).getMediators(); doReturn(element).when(mockGridPanel).getElement(); doReturn(mainPanel).when(mockGridPanel).getScrollPanel(); doReturn(viewport).when(mockGridPanel).getViewport(); view.setup(); verify(view).setupGridPanel(); verify(mediators).push(restrictedMousePanMediator); }
@Override public void setZoom(final int zoom) { //Set zoom preserving translation final Transform transform = newTransform(); final double tx = gridPanel.getViewport().getTransform().getTranslateX(); final double ty = gridPanel.getViewport().getTransform().getTranslateY(); transform.translate(tx, ty); transform.scale(zoom / 100.0); //Ensure the change in zoom keeps the view in bounds. IGridLayer's visibleBounds depends //on the Viewport Transformation; so set it to the "proposed" transformation before checking. gridPanel.getViewport().setTransform(transform); final TransformMediator restriction = mousePanMediator.getTransformMediator(); final Transform newTransform = restriction.adjust(transform, gridLayer.getVisibleBounds()); gridPanel.getViewport().setTransform(newTransform); gridPanel.getViewport().batch(); gridPanel.refreshScrollPosition(); }
private void updateScrollPanelSize(final int width, final int height) { getScrollPanel().setPixelSize(width, height); }
@Test public void testRefreshScrollPosition() { final GridLienzoScrollHandler lienzoScrollHandler = mock(GridLienzoScrollHandler.class); doReturn(lienzoScrollHandler).when(gridLienzoPanel).getGridLienzoScrollHandler(); gridLienzoPanel.refreshScrollPosition(); verify(lienzoScrollHandler).refreshScrollPosition(); }
@Test public void testSetupScrollHandlers() { final GridLienzoScrollHandler lienzoScrollHandler = mock(GridLienzoScrollHandler.class); doReturn(lienzoScrollHandler).when(gridLienzoPanel).getGridLienzoScrollHandler(); gridLienzoPanel.setupScrollHandlers(); verify(lienzoScrollHandler).init(); verify(gridLienzoPanel).addMouseUpHandler(); }
void setupScrollPanel() { getScrollPanel().add(getInternalScrollPanel()); }
@Test public void propagateNewPanelSize() { int visibleWidth = 100; int visibleHeight = 100; GridData gridData = mock(GridData.class); GridWidget gridWidget = mock(GridWidget.class); DefaultGridLayer defaultGridLayer = new DefaultGridLayer(); defaultGridLayer.register(gridWidget); when(gridWidget.getModel()).thenReturn(gridData); gridLienzoPanel.propagateNewPanelSize(visibleWidth, visibleHeight); verify(gridData, never()).setVisibleSizeAndRefresh(anyInt(), anyInt()); gridLienzoPanel.add(defaultGridLayer); gridLienzoPanel.propagateNewPanelSize(visibleWidth, visibleHeight); verify(gridData, times(1)).setVisibleSizeAndRefresh(visibleWidth, visibleHeight); } }
@Override public void refreshScrollPosition() { gridPanel.refreshScrollPosition(); }
@Override public void onAttachOrDetach(final AttachEvent event) { if (event.isAttached()) { onResize(); } } });