Example usage for com.vaadin.event.dd.acceptcriteria ServerSideCriterion ServerSideCriterion

List of usage examples for com.vaadin.event.dd.acceptcriteria ServerSideCriterion ServerSideCriterion

Introduction

In this page you can find the example usage for com.vaadin.event.dd.acceptcriteria ServerSideCriterion ServerSideCriterion.

Prototype

ServerSideCriterion

Source Link

Usage

From source file:info.magnolia.ui.admincentral.shellapp.favorites.EntryDragAndDropWrapper.java

License:Open Source License

@Override
protected void init() {
    setDragStartMode(DragStartMode.WRAPPER);
    setSizeUndefined();/*from   w ww .  ja va 2s  .com*/

    setDropHandler(new DropHandler() {

        @Override
        public void drop(DragAndDropEvent event) {
            String sourcePath = ((FavoritesEntry) ((EntryDragAndDropWrapper) event.getTransferable()
                    .getSourceComponent()).getWrappedComponent()).getRelPath();
            WrapperTransferable transferable = (WrapperTransferable) event.getTransferable();
            WrapperTargetDetails details = (WrapperTargetDetails) event.getTargetDetails();
            String verticalDropLocation = (String) details.getData("verticalLocation");
            boolean isDragDown = (details.getMouseEvent().getClientY()
                    - transferable.getMouseDownEvent().getClientY()) > 0;

            if (isDragDown && (verticalDropLocation.equals(VerticalDropLocation.BOTTOM.name())
                    || verticalDropLocation.equals(VerticalDropLocation.MIDDLE.name()))) {
                getListener().orderFavoriteAfter(sourcePath,
                        ((FavoritesEntry) getWrappedComponent()).getNodename());
            } else if (!isDragDown && (verticalDropLocation.equals(VerticalDropLocation.TOP.name())
                    || verticalDropLocation.equals(VerticalDropLocation.MIDDLE.name()))) {
                getListener().orderFavoriteBefore(sourcePath,
                        ((FavoritesEntry) getWrappedComponent()).getNodename());
            }
        }

        @Override
        public AcceptCriterion getAcceptCriterion() {
            return new ServerSideCriterion() {

                @Override
                public boolean accept(DragAndDropEvent dragEvent) {
                    // accept only entries, not groups
                    AbstractFavoritesDragAndDropWrapper wrapper = (AbstractFavoritesDragAndDropWrapper) dragEvent
                            .getTransferable().getSourceComponent();
                    if (!(wrapper.getWrappedComponent() instanceof FavoritesEntry)) {
                        return false;
                    }

                    // and only in the same group
                    String sourceGroup = ((FavoritesEntry) ((EntryDragAndDropWrapper) dragEvent
                            .getTransferable().getSourceComponent()).getWrappedComponent()).getGroup();
                    if (sourceGroup == null) {
                        return ((FavoritesEntry) getWrappedComponent()).getGroup() == null;
                    }
                    return sourceGroup.equals(((FavoritesEntry) getWrappedComponent()).getGroup());
                }
            };
        }
    });

}

From source file:info.magnolia.ui.admincentral.shellapp.favorites.FavoritesViewImpl.java

License:Open Source License

@Override
public void init(AbstractJcrNodeAdapter favorites, JcrNewNodeAdapter favoriteSuggestion,
        JcrNewNodeAdapter groupSuggestion, Map<String, String> availableGroups, boolean itemIconsVisible) {

    editableFavoriteItemList = new ArrayList<EditableFavoriteItem>();
    final Map<String, AbstractJcrNodeAdapter> nodeAdapters = favorites.getChildren();

    if (nodeAdapters.isEmpty()) {
        emptyPlaceHolder.setVisible(true);
        splitPanel.setVisible(false);// w  ww . ja va2  s  . com
        layout.setExpandRatio(splitPanel, 0);
        layout.setExpandRatio(emptyPlaceHolder, 1);
    } else {
        emptyPlaceHolder.setVisible(false);
        splitPanel.setVisible(true);
        layout.setExpandRatio(splitPanel, 1);
        layout.setExpandRatio(emptyPlaceHolder, 0);

        noGroup = new FavoritesGroup(i18n);
        splitPanel.getLeftContainer().removeAllComponents();
        splitPanel.getRightContainer().removeAllComponents();
        for (String key : nodeAdapters.keySet()) {
            final AbstractJcrNodeAdapter favoriteAdapter = nodeAdapters.get(key);
            if (AdmincentralNodeTypes.Favorite.NAME.equals(favoriteAdapter.getPrimaryNodeTypeName())) {
                final FavoritesEntry favEntry = new FavoritesEntry(favoriteAdapter, listener, shell, i18n);
                final EntryDragAndDropWrapper wrapper = new EntryDragAndDropWrapper(favEntry, listener);
                favEntry.addEditingListener(new EditingEvent.EditingListener() {
                    @Override
                    public void onEdit(EditingEvent event) {
                        if (event.isEditing()) {
                            wrapper.setDragStartMode(DragAndDropWrapper.DragStartMode.NONE);
                        } else {
                            wrapper.setDragStartMode(DragAndDropWrapper.DragStartMode.WRAPPER);
                        }
                    }
                });
                editableFavoriteItemList.add(favEntry);
                noGroup.addComponent(wrapper);
            } else {
                final FavoritesGroup group = new FavoritesGroup(favoriteAdapter, listener, shell, this, i18n,
                        editableFavoriteItemList);
                editableFavoriteItemList.add(group);
                group.addEditingListener(new EditingEvent.EditingListener() {
                    @Override
                    public void onEdit(EditingEvent event) {
                        if (event.isEditing()) {
                            group.getDragAndDropWrapper()
                                    .setDragStartMode(DragAndDropWrapper.DragStartMode.NONE);
                        } else {
                            group.getDragAndDropWrapper()
                                    .setDragStartMode(DragAndDropWrapper.DragStartMode.WRAPPER);
                        }
                    }
                });
                splitPanel.getRightContainer().addComponent(group);
            }
        }
        DragAndDropWrapper nogroupWrap = new DragAndDropWrapper(noGroup);
        noGroup.setSizeFull();
        nogroupWrap.setSizeFull();

        nogroupWrap.setDropHandler(new DropHandler() {

            @Override
            public void drop(DragAndDropEvent event) {
                Component wrappedComponent = ((EntryDragAndDropWrapper) event.getTransferable()
                        .getSourceComponent()).getWrappedComponent();
                String sourcePath = ((FavoritesEntry) wrappedComponent).getRelPath();
                listener.moveFavorite(sourcePath, null);
            }

            @Override
            public AcceptCriterion getAcceptCriterion() {

                return new ServerSideCriterion() {

                    @Override
                    public boolean accept(DragAndDropEvent dragEvent) {
                        // accept only entries, not groups
                        AbstractFavoritesDragAndDropWrapper wrapper = (AbstractFavoritesDragAndDropWrapper) dragEvent
                                .getTransferable().getSourceComponent();
                        if (!(wrapper.getWrappedComponent() instanceof FavoritesEntry)) {
                            return false;
                        }
                        // drop location: can drop anywhere in the target zone.
                        return true;
                    }
                };
            }

        });
        splitPanel.getLeftContainer().addComponent(nogroupWrap);
    }

    if (favoriteForm == null) {
        favoriteForm = new FavoritesForm(listener, shell, i18n);
        layout.addComponent(favoriteForm);
    }
    setFavoriteLocation(favoriteSuggestion, groupSuggestion, availableGroups);
    favoriteForm.setEditActionEnabled(listener.hasItems());

    for (EditableFavoriteItem item : getEditableFavoriteItemList()) {
        item.setIconsVisibility(itemIconsVisible);
    }

}

From source file:info.magnolia.ui.workbench.tree.drop.TreeViewDropHandler.java

License:Open Source License

/**
 * Create a serverSide {@link AcceptCriterion} based on the {@link DropConstraint} implementation.
 *//* w  ww. j  a va 2s . co  m*/
private void createAcceptCriterion() {
    serverSideCriterion = new ServerSideCriterion() {

        @Override
        public boolean accept(DragAndDropEvent dragEvent) {
            boolean res = true;
            Iterator<Object> selected = getItemIdsToMove(dragEvent).iterator();
            while (selected.hasNext()) {
                Object sourceItemId = selected.next();
                HierarchicalJcrContainer container = (HierarchicalJcrContainer) tree.getContainerDataSource();
                JcrItemAdapter sourceItem = (JcrItemAdapter) container.getItem(sourceItemId);
                res &= constraint.allowedToMove(sourceItem);
            }
            return res;
        }
    };

}