@Override public void attachDomElement(final GridBodyCellRenderContext context, final Consumer<E> onCreation, final Consumer<E> onDisplay) { gridLayer.batch(new GridLayerRedrawManager.PrioritizedCommand(Integer.MAX_VALUE) { @Override public void execute() { final E domElement = createDomElement(gridLayer, gridWidget, context); domElement.setContext(context); domElement.initialise(context); onCreation.accept(domElement); domElement.attach(); onDisplay.accept(domElement); } }); }
private Mediators getMediators() { final Viewport viewport = gridLayer.getViewport(); final Mediators mediators = viewport.getMediators(); return mediators; }
@Override public TransformMediator getDefaultTransformMediator() { return gridLayer.getDefaultTransformMediator(); }
@Override public void onNodeMouseUp(final NodeMouseUpEvent event) { switch (state.getOperation()) { case NONE: case COLUMN_MOVE_PENDING: case COLUMN_RESIZE_PENDING: case ROW_MOVE_PENDING: case COLUMN_RESIZE: break; case COLUMN_MOVE: case ROW_MOVE: //Clean-up the GridWidgetDnDProxy layer.remove(state.getEventColumnHighlight()); layer.batch(); break; } //Reset state state.reset(); layer.getViewport().getElement().getStyle().setCursor(state.getCursor()); } }
private int getScreenY(final GuidedDecisionTableModellerView modellerView, final GuidedDecisionTableView.Presenter dtPresenter) { final GridWidget gridWidget = dtPresenter.getView(); final double gy = gridWidget.getY(); final GridLayer layer = modellerView.getGridLayerView(); final int containerY = layer.getDomElementContainer().getAbsoluteTop(); final double vy = layer.getVisibleBounds().getY(); final Transform t = layer.getViewport().getTransform(); final Group header = gridWidget.getHeader(); final double headerHeight = gridWidget.getRenderer().getHeaderHeight(); final double headerRowHeight = gridWidget.getRenderer().getHeaderRowHeight(); final double offsetY = header == null ? 0 : header.getY(); final int screenY = containerY + (int) ((gy - vy + offsetY + headerHeight - headerRowHeight / 2) * t.getScaleX()); return screenY; } }
@Before public void setup() { this.transform = new Transform(); when(viewLayer.getVisibleBounds()).thenReturn(visibleBounds); when(viewLayer.getViewport()).thenReturn(viewport); when(viewport.getElement()).thenReturn(vpElement); when(vpElement.getStyle()).thenReturn(vpStyle); when(viewport.getTransform()).thenReturn(transform); when(viewport.getAttributes()).thenReturn(attributes); when(viewport.getScene()).thenReturn(scene); this.mediator = new RestrictedMousePanMediator(viewLayer); this.mediator.setTransformMediator(new BoundaryTransformMediator(bounds)); this.mediator.setViewport(viewport); }
setCursor(state.getCursor()); for (GridWidget gridWidget : layer.getGridWidgets()) { if (!layer.isGridPinned()) { if (gridWidget.onDragHandle(event)) { state.setActiveGridWidget(gridWidget); if (!layer.isGridPinned()) { if (state.getActiveGridWidget() == null) { state.setActiveGridWidget(gridWidget); for (IMediator mediator : layer.getViewport().getMediators()) { mediator.setEnabled(state.getActiveGridWidget() == null);
@Override public void onDragVisibleBounds(final double canvasX, final double canvasY) { final double _canvasX = -canvasX; final double _canvasY = -canvasY; final Transform oldTransform = modeller.getView().getGridLayerView().getViewport().getTransform(); final double scaleX = oldTransform.getScaleX(); final double scaleY = oldTransform.getScaleY(); final double translateX = oldTransform.getTranslateX(); final double translateY = oldTransform.getTranslateY(); final double dx = _canvasX - (translateX / scaleX); final double dy = _canvasY - (translateY / scaleY); final Transform newTransform = oldTransform.copy().translate(dx, dy); modeller.getView().getGridLayerView().getViewport().setTransform(newTransform); modeller.getView().getGridLayerView().batch(); modeller.getView().refreshScrollPosition(); } }
this.mediators.push(new RestrictedMousePanMediator(gridLayer)); when(gridLayer.getViewport()).thenReturn(viewport); when(gridLayer.getDefaultTransformMediator()).thenReturn(defaultMediator); when(gridWidget.getViewport()).thenReturn(viewport); when(gridWidget.getLayer()).thenReturn(layer);
/** * Get the visible bounds (canvas coordinate system) of the given GridWidget. * @return */ private Bounds getVisibleBounds() { final GridLayer gridLayer = ((GridLayer) view.getLayer()); final Bounds bounds = gridLayer.getVisibleBounds(); return bounds; }
private void doFindMovableGridWhenOverDragHandle(final boolean isPinned, final Runnable assertion) { state.setOperation(GridWidgetHandlersOperation.NONE); when(gridWidget.isVisible()).thenReturn(true); when(gridWidget.onDragHandle(any(INodeXYEvent.class))).thenReturn(true); when(layer.isGridPinned()).thenReturn(isPinned); when(layer.getGridWidgets()).thenReturn(new HashSet<GridWidget>() {{ add(gridWidget); }}); //This location is top-left of the GridWidget; not within a column move/resize or row move hot-spot when(event.getX()).thenReturn(100); when(event.getY()).thenReturn(100); handler.onNodeMouseMove(event); verify(handler, times(1)).findGridColumn(eq(event)); assertion.run(); }
@Before public void setup() { when(listBox.getElement()).thenReturn(listBoxElement); when(listBoxElement.getStyle()).thenReturn(mock(Style.class)); when(domElementContainer.iterator()).thenReturn(Collections.<Widget>emptyList().iterator()); when(gridLayer.getDomElementContainer()).thenReturn(domElementContainer); when(gridWidget.getModel()).thenReturn(new BaseGridData()); doAnswer((i) -> { final PrioritizedCommand command = (PrioritizedCommand) i.getArguments()[0]; command.execute(); return null; }).when(gridLayer).batch(any(PrioritizedCommand.class)); factory = spy(new ListBoxSingletonDOMElementFactoryMock(gridLienzoPanel, gridLayer, gridWidget)); }
@Test @SuppressWarnings("unchecked") public void onDecisionTableSelectedWhenInPinnedMode() { final GuidedDecisionTableView.Presenter dtPresenter1 = makeDecisionTable(); final GuidedDecisionTableView.Presenter dtPresenter2 = makeDecisionTable(); final DecisionTableSelectedEvent event = new DecisionTableSelectedEvent(dtPresenter1); when(gridLayer.isGridPinned()).thenReturn(true); when(presenter.isDecisionTableAvailable(eq(dtPresenter1))).thenReturn(true); when(presenter.getAvailableDecisionTables()).thenReturn(new HashSet<GuidedDecisionTableView.Presenter>() {{ add(dtPresenter1); add(dtPresenter2); }}); presenter.onDecisionTableSelected(event); verify(dtPresenter1, times(1)).initialiseAnalysis(); verify(view, times(1)).select(dtPresenter1.getView()); verify(gridLayer, times(1)).flipToGridWidget(eq(dtPresenter1.getView())); }
@Override public boolean isGridPinned() { return view.getGridLayerView().isGridPinned(); }
@Before public void setup() { when(gridLayer.addNodeMouseMoveHandler(any(NodeMouseMoveHandler.class))).thenReturn(mock(HandlerRegistration.class)); when(gridLayer.addNodeMouseOutHandler(any(NodeMouseOutHandler.class))).thenReturn(mock(HandlerRegistration.class)); when(view.addKeyDownHandler(any(KeyDownHandler.class))).thenReturn(mock(HandlerRegistration.class)); when(view.addContextMenuHandler(any(ContextMenuHandler.class))).thenReturn(mock(HandlerRegistration.class)); when(view.addMouseDownHandler(any(MouseDownHandler.class))).thenReturn(mock(HandlerRegistration.class)); when(view.getGridLayerView()).thenReturn(gridLayer); when(view.getBounds()).thenReturn(bounds); final GuidedDecisionTableModellerPresenter wrapped = new GuidedDecisionTableModellerPresenter(view, dtablePresenterProvider, contextMenuSupport, updateRadarEvent, pinnedEvent, columnHeaderPopOver, wizardManagedInstance); presenter = spy(wrapped); when(dtablePresenterProvider.get()).thenReturn(dtablePresenter); when(dtablePresenter.getView()).thenReturn(dtableView); when(dtableView.getModel()).thenReturn(new BaseGridData()); }
public BaseDOMElement(final W widget, final GridLayer gridLayer, final GridWidget gridWidget) { this.widget = widget; this.gridLayer = gridLayer; this.gridWidget = gridWidget; this.domElementContainer = gridLayer.getDomElementContainer(); final Style style = widgetContainer.getElement().getStyle(); style.setPosition(Style.Position.ABSOLUTE); //MouseEvents over absolutely positioned elements do not bubble through the DOM. //Consequentially Event Handlers on GridLayer do not receive notification of MouseMove //Events used during column resizing. Therefore we manually bubble events to GridLayer. setupDelegatingMouseDownHandler(); setupDelegatingMouseMoveHandler(); setupDelegatingMouseUpHandler(); setupDelegatingClickHandler(); }
@Override public void addOnEnterPinnedModeCommand(final Command command) { view.getGridLayerView().addOnEnterPinnedModeCommand(command); }
@Override public void addOnExitPinnedModeCommand(final Command command) { view.getGridLayerView().addOnExitPinnedModeCommand(command); }
private int getScreenX(final GuidedDecisionTableModellerView modellerView, final GuidedDecisionTableView.Presenter dtPresenter, final int uiColumnIndex) { final GridWidget gridWidget = dtPresenter.getView(); final GridColumn<?> uiColumn = gridWidget.getModel().getColumns().get(uiColumnIndex); final double gx = gridWidget.getX(); final GridLayer layer = modellerView.getGridLayerView(); final int containerX = layer.getDomElementContainer().getAbsoluteLeft(); final double vx = layer.getVisibleBounds().getX(); final Transform t = layer.getViewport().getTransform(); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.RenderingInformation ri = rendererHelper.getRenderingInformation(); final BaseGridRendererHelper.RenderingBlockInformation floatingBlockInformation = ri.getFloatingBlockInformation(); final double offsetX = floatingBlockInformation.getColumns().contains(uiColumn) ? floatingBlockInformation.getX() : 0; final int screenX = containerX + (int) ((gx - vx + offsetX + rendererHelper.getColumnOffset(uiColumn) + uiColumn.getWidth() / 2) * t.getScaleX()); return screenX; }