Example usage for org.eclipse.jface.viewers ViewerDropAdapter setScrollExpandEnabled

List of usage examples for org.eclipse.jface.viewers ViewerDropAdapter setScrollExpandEnabled

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ViewerDropAdapter setScrollExpandEnabled.

Prototype

public void setScrollExpandEnabled(boolean value) 

Source Link

Document

Sets whether auto scrolling and expanding should be provided during dragging.

Usage

From source file:com.google.gdt.eclipse.designer.mobile.preferences.device.DevicesPreferencePage.java

License:Open Source License

/**
 * Configures DND in {@link #m_viewer}./*from  w ww  .  j  a  v  a  2 s  . c  o  m*/
 */
private void configureDND() {
    Transfer[] transfers = new Transfer[] { EmptyTransfer.INSTANCE };
    m_viewer.addDragSupport(DND.DROP_MOVE, transfers, new DragSourceListener() {
        public void dragStart(DragSourceEvent event) {
            m_dragElements = getSelectedElements();
            m_dragCategory = m_dragElements.get(0) instanceof CategoryInfo;
            // check that we drag only categories or only entries
            for (Object element : m_dragElements) {
                if (m_dragCategory != element instanceof CategoryInfo) {
                    event.doit = false;
                }
            }
        }

        public void dragSetData(DragSourceEvent event) {
        }

        public void dragFinished(DragSourceEvent event) {
        }
    });
    ViewerDropAdapter dropAdapter = new ViewerDropAdapter(m_viewer) {
        @Override
        protected int determineLocation(DropTargetEvent event) {
            if (event.item instanceof Item) {
                Item item = (Item) event.item;
                Point coordinates = m_viewer.getControl().toControl(event.x, event.y);
                Rectangle bounds = getBounds(item);
                // when drag device, relation with category can be only ON
                if (!m_dragCategory && determineTarget(event) instanceof CategoryInfo) {
                    return LOCATION_ON;
                }
                // in all other cases, drop before/after
                return coordinates.y < bounds.y + bounds.height / 2 ? LOCATION_BEFORE : LOCATION_AFTER;
            }
            return LOCATION_NONE;
        }

        @Override
        public boolean validateDrop(Object target, int operation, TransferData transferType) {
            // category can be dragged only relative other category
            if (m_dragCategory) {
                return target instanceof CategoryInfo;
            }
            // all other cases are valid
            return true;
        }

        @Override
        public boolean performDrop(Object data) {
            Object target = getCurrentTarget();
            int location = getCurrentLocation();
            if (m_dragCategory) {
                Assert.instanceOf(CategoryInfo.class, target);
                Assert.isTrue(location == LOCATION_BEFORE || location == LOCATION_AFTER);
                // prepare next category
                CategoryInfo nextCategory;
                {
                    List<CategoryInfo> categories = DeviceManager.getCategories();
                    int index = categories.indexOf(target);
                    if (location == LOCATION_BEFORE) {
                        nextCategory = categories.get(index);
                    } else {
                        nextCategory = GenericsUtils.getNextOrNull(categories, index);
                    }
                }
                // add commands
                for (Object element : m_dragElements) {
                    CategoryInfo category = (CategoryInfo) element;
                    commands_add(new CategoryMoveCommand(category, nextCategory));
                }
            } else if (target instanceof CategoryInfo) {
                Assert.isTrue(location == LOCATION_ON);
                CategoryInfo targetCategory = (CategoryInfo) target;
                for (Object element : m_dragElements) {
                    DeviceInfo device = (DeviceInfo) element;
                    commands_add(new DeviceMoveCommand(device, targetCategory, null));
                }
            } else {
                DeviceInfo targetDevice = (DeviceInfo) target;
                CategoryInfo targetCategory = targetDevice.getCategory();
                // prepare next device
                DeviceInfo nextDevice;
                {
                    List<DeviceInfo> entries = targetCategory.getDevices();
                    int index = entries.indexOf(targetDevice);
                    if (location == LOCATION_BEFORE) {
                        nextDevice = entries.get(index);
                    } else {
                        nextDevice = GenericsUtils.getNextOrNull(entries, index);
                    }
                }
                // add commands
                for (Object element : m_dragElements) {
                    DeviceInfo device = (DeviceInfo) element;
                    commands_add(new DeviceMoveCommand(device, targetCategory, nextDevice));
                }
            }
            // refresh viewer to show result of applying commands
            refreshViewer();
            return true;
        }
    };
    dropAdapter.setScrollExpandEnabled(false);
    m_viewer.addDropSupport(DND.DROP_MOVE, transfers, dropAdapter);
}

From source file:com.microsoft.tfs.client.common.ui.controls.CommonStructureControl.java

License:Open Source License

private void addDragDropSupport() {
    viewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() },
            new DragSourceAdapter() {

                @Override/*w ww.j  a  v a2  s  .  co m*/
                public void dragFinished(final DragSourceEvent event) {
                    setInDragDrop(false);
                }

                @Override
                public void dragSetData(final DragSourceEvent event) {
                    final CSSNode node = (CSSNode) ((IStructuredSelection) viewer.getSelection())
                            .getFirstElement();
                    event.data = node.getPath();
                }

                @Override
                public void dragStart(final DragSourceEvent event) {
                    final CSSNode node = (CSSNode) ((IStructuredSelection) viewer.getSelection())
                            .getFirstElement();
                    event.doit = node.getParentURI() != null && node.getParentURI().length() > 0;
                    setInDragDrop(true);
                }

            });
    final ViewerDropAdapter dropAdapter = new ViewerDropAdapter(viewer) {
        @Override
        public boolean performDrop(final Object data) {
            final CSSNode newParent = (CSSNode) getCurrentTarget();
            final CSSNode node = CSSNode.resolveNode(rootNode, data.toString());
            if (node == null || !node.getPath().equals(data.toString())) {
                // This is not the node that you are looking for.
                return false;
            }
            if (newParent != null && !node.equals(newParent) && !node.getParentNode().equals(newParent)) {
                moveNode(node, newParent);
                return true;
            }
            return false;
        }

        @Override
        public boolean validateDrop(final Object target, final int operation, final TransferData transferType) {
            return TextTransfer.getInstance().isSupportedType(transferType);
        }
    };
    dropAdapter.setFeedbackEnabled(false);
    dropAdapter.setScrollExpandEnabled(true);

    viewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() }, dropAdapter);
}

From source file:org.eclipse.wb.internal.core.editor.palette.dialogs.PaletteManagerDialog.java

License:Open Source License

/**
 * Configures DND in {@link #m_viewer}.//from  ww  w.  j ava2 s.  c  om
 */
private void configureDND() {
    Transfer[] transfers = new Transfer[] { EmptyTransfer.INSTANCE };
    m_viewer.addDragSupport(DND.DROP_MOVE, transfers, new DragSourceListener() {
        public void dragStart(DragSourceEvent event) {
            m_dragElements = getSelectedElements();
            m_dragCategory = m_dragElements.get(0) instanceof CategoryInfo;
            // check that we drag only categories or only entries
            for (Object element : m_dragElements) {
                if (m_dragCategory != element instanceof CategoryInfo) {
                    event.doit = false;
                }
            }
        }

        public void dragSetData(DragSourceEvent event) {
        }

        public void dragFinished(DragSourceEvent event) {
        }
    });
    ViewerDropAdapter dropAdapter = new ViewerDropAdapter(m_viewer) {
        @Override
        protected int determineLocation(DropTargetEvent event) {
            if (event.item instanceof Item) {
                Item item = (Item) event.item;
                Point coordinates = m_viewer.getControl().toControl(event.x, event.y);
                Rectangle bounds = getBounds(item);
                // when drag entry, relation with category can be only ON
                if (!m_dragCategory && determineTarget(event) instanceof CategoryInfo) {
                    return LOCATION_ON;
                }
                // in all other cases, drop before/after
                return coordinates.y < bounds.y + bounds.height / 2 ? LOCATION_BEFORE : LOCATION_AFTER;
            }
            return LOCATION_NONE;
        }

        @Override
        public boolean validateDrop(Object target, int operation, TransferData transferType) {
            // category can be dragged only relative other category
            if (m_dragCategory) {
                return target instanceof CategoryInfo;
            }
            // all other cases are valid
            return true;
        }

        @Override
        public boolean performDrop(Object data) {
            Object target = getCurrentTarget();
            int location = getCurrentLocation();
            if (m_dragCategory) {
                Assert.instanceOf(CategoryInfo.class, target);
                Assert.isTrue(location == LOCATION_BEFORE || location == LOCATION_AFTER);
                // prepare next category
                CategoryInfo nextCategory;
                {
                    List<CategoryInfo> categories = m_palette.getCategories();
                    int index = categories.indexOf(target);
                    if (location == LOCATION_BEFORE) {
                        nextCategory = categories.get(index);
                    } else {
                        nextCategory = GenericsUtils.getNextOrNull(categories, index);
                    }
                }
                // add commands
                for (Object element : m_dragElements) {
                    CategoryInfo category = (CategoryInfo) element;
                    commands_add(new CategoryMoveCommand(category, nextCategory));
                }
            } else if (target instanceof CategoryInfo) {
                Assert.isTrue(location == LOCATION_ON);
                CategoryInfo targetCategory = (CategoryInfo) target;
                for (Object element : m_dragElements) {
                    EntryInfo entry = (EntryInfo) element;
                    commands_add(new EntryMoveCommand(entry, targetCategory, null));
                }
            } else {
                EntryInfo targetEntry = (EntryInfo) target;
                CategoryInfo targetCategory = targetEntry.getCategory();
                // prepare next entry
                EntryInfo nextEntry;
                {
                    List<EntryInfo> entries = targetCategory.getEntries();
                    int index = entries.indexOf(targetEntry);
                    if (location == LOCATION_BEFORE) {
                        nextEntry = entries.get(index);
                    } else {
                        nextEntry = GenericsUtils.getNextOrNull(entries, index);
                    }
                }
                // add commands
                for (Object element : m_dragElements) {
                    EntryInfo entry = (EntryInfo) element;
                    commands_add(new EntryMoveCommand(entry, targetCategory, nextEntry));
                }
            }
            // refresh viewer to show result of applying commands
            refreshViewer();
            return true;
        }
    };
    dropAdapter.setScrollExpandEnabled(false);
    m_viewer.addDropSupport(DND.DROP_MOVE, transfers, dropAdapter);
}

From source file:org.eclipse.wb.internal.swing.preferences.laf.LafPreferencePage.java

License:Open Source License

/**
 * Configures DND for LAF list viewer.//from www. j  a  va  2  s .c  o m
 */
private void configureDND() {
    Transfer[] transfers = new Transfer[] { LookAndFeelTransfer.INSTANCE };
    m_lafTree.addDragSupport(DND.DROP_MOVE, transfers, new DragSourceListener() {
        public void dragStart(DragSourceEvent event) {
            m_dragEntries = getSelectedEntries();
            m_dragCategory = m_dragEntries.get(0) instanceof CategoryInfo;
            // check that we drag only categories or only entries
            for (Object element : m_dragEntries) {
                if (m_dragCategory != element instanceof CategoryInfo) {
                    event.doit = false;
                }
            }
        }

        public void dragSetData(DragSourceEvent event) {
        }

        public void dragFinished(DragSourceEvent event) {
        }
    });
    ViewerDropAdapter dropAdapter = new ViewerDropAdapter(m_lafTree) {
        @Override
        protected int determineLocation(DropTargetEvent event) {
            if (event.item instanceof Item) {
                Item item = (Item) event.item;
                Point coordinates = m_lafTree.getControl().toControl(event.x, event.y);
                Rectangle bounds = getBounds(item);
                // when dragging LAF entry relation with category can be only ON
                if (!m_dragCategory && determineTarget(event) instanceof CategoryInfo) {
                    return LOCATION_ON;
                }
                // in all other cases, drop before/after
                return coordinates.y < bounds.y + bounds.height / 2 ? LOCATION_BEFORE : LOCATION_AFTER;
            }
            return LOCATION_NONE;
        }

        @Override
        public boolean validateDrop(Object target, int operation, TransferData transferType) {
            // category can be dragged only relative other category
            if (m_dragCategory) {
                return target instanceof CategoryInfo;
            }
            // all other cases are valid
            return true;
        }

        @Override
        public boolean performDrop(Object data) {
            Object target = getCurrentTarget();
            int location = getCurrentLocation();
            if (m_dragCategory) {
                Assert.instanceOf(CategoryInfo.class, target);
                Assert.isTrue(location == LOCATION_BEFORE || location == LOCATION_AFTER);
                // prepare next category
                CategoryInfo nextCategory;
                {
                    List<CategoryInfo> categories = LafSupport.getLAFCategoriesList();
                    int index = categories.indexOf(target);
                    if (location == LOCATION_BEFORE) {
                        nextCategory = categories.get(index);
                    } else {
                        nextCategory = GenericsUtils.getNextOrNull(categories, index);
                    }
                }
                // add commands
                for (Object element : m_dragEntries) {
                    CategoryInfo category = (CategoryInfo) element;
                    commands_add(new MoveCategoryCommand(category, nextCategory));
                }
            } else if (target instanceof CategoryInfo) {
                Assert.isTrue(location == LOCATION_ON);
                CategoryInfo targetCategory = (CategoryInfo) target;
                for (Object entry : m_dragEntries) {
                    commands_add(new MoveCommand((LafInfo) entry, targetCategory, null));
                }
            } else {
                LafInfo targetLAF = (LafInfo) target;
                CategoryInfo targetCategory = targetLAF.getCategory();
                // prepare next LAF
                LafInfo nextLAF;
                {
                    List<LafInfo> entries = targetCategory.getLAFList();
                    int index = entries.indexOf(targetLAF);
                    if (location == LOCATION_BEFORE) {
                        nextLAF = entries.get(index);
                    } else {
                        nextLAF = GenericsUtils.getNextOrNull(entries, index);
                    }
                }
                // add commands
                for (Object entry : m_dragEntries) {
                    commands_add(new MoveCommand((LafInfo) entry, targetCategory, nextLAF));
                }
            }
            // refresh viewer to show result of applying commands
            refreshViewer();
            return true;
        }
    };
    dropAdapter.setScrollExpandEnabled(false);
    m_lafTree.addDropSupport(DND.DROP_MOVE, transfers, dropAdapter);
}