Example usage for com.google.gwt.view.client SetSelectionModel getSelectedSet

List of usage examples for com.google.gwt.view.client SetSelectionModel getSelectedSet

Introduction

In this page you can find the example usage for com.google.gwt.view.client SetSelectionModel getSelectedSet.

Prototype

Set<T> getSelectedSet();

Source Link

Document

Get the set of selected items.

Usage

From source file:stroom.widget.htree.client.TreeRenderer.java

License:Apache License

private void bind() {
    if (selectionModel != null) {
        final SetSelectionModel<T> setSelectionModel = (SetSelectionModel<T>) selectionModel;
        selectedSet = new HashSet<T>(setSelectionModel.getSelectedSet());

        final Canvas topCanvas = canvas.getLayer(TreeRenderer.ARROW_LAYER);
        registerHandler(topCanvas.addClickHandler(new ClickHandler() {
            @Override/*from   www  . j ava2s .c  om*/
            public void onClick(final ClickEvent event) {
                final double x = event.getX() - PADDING;
                final double y = event.getY() - PADDING;
                final TreeForTreeLayout<T> tree = treeLayout.getTree();
                if (tree != null) {
                    final T root = tree.getRoot();
                    if (root != null) {
                        final T item = getItemAtPos(x, y, root);
                        if (item != null) {
                            selectionModel.setSelected(item, true);

                        } else if (selectionModel instanceof MySingleSelectionModel<?>) {
                            final MySingleSelectionModel<T> singleSelectionModel = (MySingleSelectionModel<T>) setSelectionModel;
                            final T lastSelection = singleSelectionModel.getSelectedObject();
                            if (lastSelection != null) {
                                selectionModel.setSelected(lastSelection, false);
                            }
                        }
                    }
                }
            }
        }));
        registerHandler(topCanvas.addMouseMoveHandler(new MouseMoveHandler() {
            @Override
            public void onMouseMove(final MouseMoveEvent event) {
                final double x = event.getX() - PADDING;
                final double y = event.getY() - PADDING;
                final TreeForTreeLayout<T> tree = treeLayout.getTree();
                if (tree != null) {
                    final T root = tree.getRoot();
                    if (root != null) {
                        final T item = getItemAtPos(x, y, root);
                        // Remove highlight from previous item.
                        if (lastItemUnderCursor != null && !lastItemUnderCursor.equals(item)) {
                            final boolean selected = setSelectionModel.getSelectedSet()
                                    .contains(lastItemUnderCursor);
                            final boolean mouseOver = false;
                            Bounds bounds = treeLayout.getNodeBounds().get(lastItemUnderCursor);
                            // The last item might have been removed from
                            // the
                            // tree.
                            if (bounds != null) {
                                bounds = pad(bounds);
                                cellRenderer.render(bounds, lastItemUnderCursor, mouseOver, selected);
                            }
                        }

                        // Highlight new item.
                        if (item != null && !item.equals(lastItemUnderCursor)) {
                            final boolean selected = setSelectionModel.getSelectedSet().contains(item);
                            final boolean mouseOver = true;
                            Bounds bounds = treeLayout.getNodeBounds().get(item);
                            bounds = pad(bounds);
                            cellRenderer.render(bounds, item, mouseOver, selected);
                        }

                        // Set new item.
                        lastItemUnderCursor = item;

                        // Set the cursor.
                        if (item != null) {
                            topCanvas.getElement().getStyle().setCursor(Cursor.POINTER);
                        } else {
                            topCanvas.getElement().getStyle().setCursor(Cursor.DEFAULT);
                        }
                    }
                }
            }
        }));
        registerHandler(selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
            @Override
            public void onSelectionChange(final SelectionChangeEvent event) {
                // Select items.
                for (final T selected : setSelectionModel.getSelectedSet()) {
                    final boolean alreadySelected = selectedSet.remove(selected);
                    if (!alreadySelected) {
                        Bounds bounds = treeLayout.getNodeBounds().get(selected);
                        bounds = pad(bounds);
                        cellRenderer.render(bounds, selected, selected.equals(lastItemUnderCursor), true);
                    }
                }

                // Deselect everything else from previous selection.
                for (final T selected : selectedSet) {
                    final Bounds bounds = treeLayout.getNodeBounds().get(selected);
                    if (bounds != null) {
                        final Bounds paddedBounds = pad(bounds);
                        cellRenderer.render(paddedBounds, selected, selected.equals(lastItemUnderCursor),
                                false);
                    }
                }

                // Save current selection.
                selectedSet = new HashSet<T>(setSelectionModel.getSelectedSet());
            }
        }));
    }
}