List of usage examples for com.vaadin.event.dd.acceptcriteria ServerSideCriterion ServerSideCriterion
ServerSideCriterion
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; } }; }