List of usage examples for org.eclipse.jface.viewers ViewerDropAdapter ViewerDropAdapter
protected ViewerDropAdapter(Viewer viewer)
From source file:bndtools.wizards.bndfile.JarListWizardPage.java
License:Open Source License
@Override public void createControl(final Composite parent) { setTitle("Select JARs"); final Composite composite = new Composite(parent, SWT.NONE); Label lblHint = new Label(composite, SWT.WRAP); lblHint.setText("Selected files (hint: drag files from an external application into this list):"); final Table table = new Table(composite, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER); viewer = new TableViewer(table); viewer.setContentProvider(new ArrayContentProvider()); viewer.setLabelProvider(new ClassPathLabelProvider()); btnAdd = new Button(composite, SWT.PUSH); btnAdd.setText("Add"); btnAddExternal = new Button(composite, SWT.PUSH); btnAddExternal.setText("Add External"); btnRemove = new Button(composite, SWT.PUSH); btnRemove.setText("Remove"); viewer.setInput(paths);//from w w w . j a va 2 s. c om update(); // Listeners ViewerDropAdapter dropAdapter = new ViewerDropAdapter(viewer) { @Override public void dragEnter(DropTargetEvent event) { super.dragEnter(event); event.detail = DND.DROP_COPY; } @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { return true; } @Override public boolean performDrop(Object data) { if (data instanceof String[]) { String[] newPaths = (String[]) data; List<IPath> added = new ArrayList<IPath>(newPaths.length); for (String path : newPaths) { added.add(new Path(path)); } if (!added.isEmpty()) { addToPaths(added); viewer.add(added.toArray()); update(); } } return true; } }; dropAdapter.setFeedbackEnabled(false); dropAdapter.setSelectionFeedbackEnabled(false); viewer.addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, new Transfer[] { FileTransfer.getInstance() }, dropAdapter); viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { update(); } }); btnAdd.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // IResource newFile = ResourcesPlugin.getWorkspace().getRoot(); // if(newFile != null) { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setValidator(new ISelectionStatusValidator() { @Override public IStatus validate(Object[] selection) { if (selection.length > 0 && selection[0] instanceof IFile) { return new Status(IStatus.OK, Plugin.PLUGIN_ID, IStatus.OK, "", null); //$NON-NLS-1$ } return new Status(IStatus.ERROR, Plugin.PLUGIN_ID, IStatus.ERROR, "", null); //$NON-NLS-1$ } }); dialog.setAllowMultiple(true); dialog.setTitle("JAR File Selection"); dialog.setMessage("Select one or more JAR files."); dialog.addFilter(new FileExtensionFilter("jar")); //$NON-NLS-1$ dialog.setInput(ResourcesPlugin.getWorkspace()); if (dialog.open() == Window.OK) { Object[] files = dialog.getResult(); List<IPath> added = new ArrayList<IPath>(files.length); for (Object file : files) { added.add(((IResource) file).getFullPath().makeRelative()); } if (!added.isEmpty()) { addToPaths(added); viewer.add(added.toArray()); } } // } update(); } }); btnAddExternal.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { FileDialog dialog = new FileDialog(getShell(), SWT.OPEN | SWT.MULTI); dialog.setFilterExtensions(new String[] { "*.jar" //$NON-NLS-1$ }); String res = dialog.open(); if (res != null) { IPath filterPath = new Path(dialog.getFilterPath()); String[] fileNames = dialog.getFileNames(); List<IPath> added = new ArrayList<IPath>(fileNames.length); for (String fileName : fileNames) { added.add(filterPath.append(fileName)); } if (!added.isEmpty()) { addToPaths(added); viewer.add(added.toArray()); } } update(); } }); btnRemove.addSelectionListener(new SelectionAdapter() { @SuppressWarnings("unchecked") @Override public void widgetSelected(SelectionEvent e) { removeFromPaths(((IStructuredSelection) viewer.getSelection()).toList()); viewer.remove(((IStructuredSelection) viewer.getSelection()).toArray()); update(); } }); // Layout composite.setLayout(new GridLayout(2, false)); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 3)); btnAdd.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); btnAddExternal.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); btnRemove.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); lblHint.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 2, 1)); setControl(composite); }
From source file:com.android.ddmuilib.explorer.DeviceExplorer.java
License:Apache License
/** * Creates a control capable of displaying some information. This is * called once, when the application is initializing, from the UI thread. *//*from w ww. j a v a2 s. com*/ @Override protected Control createControl(Composite parent) { mParent = parent; parent.setLayout(new FillLayout()); ImageLoader loader = ImageLoader.getDdmUiLibLoader(); if (mFileImage == null) { mFileImage = loader.loadImage("file.png", mParent.getDisplay()); } if (mFolderImage == null) { mFolderImage = loader.loadImage("folder.png", mParent.getDisplay()); } if (mPackageImage == null) { mPackageImage = loader.loadImage("android.png", mParent.getDisplay()); } if (mOtherImage == null) { // TODO: find a default image for other. } mTree = new Tree(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.VIRTUAL); mTree.setHeaderVisible(true); IPreferenceStore store = DdmUiPreferences.getStore(); // create columns TableHelper.createTreeColumn(mTree, "Name", SWT.LEFT, "0000drwxrwxrwx", COLUMN_NAME, store); //$NON-NLS-2$ TableHelper.createTreeColumn(mTree, "Size", SWT.RIGHT, "000000", COLUMN_SIZE, store); //$NON-NLS-2$ TableHelper.createTreeColumn(mTree, "Date", SWT.LEFT, "2007-08-14", COLUMN_DATE, store); //$NON-NLS-2$ TableHelper.createTreeColumn(mTree, "Time", SWT.LEFT, "20:54", COLUMN_TIME, store); //$NON-NLS-2$ TableHelper.createTreeColumn(mTree, "Permissions", SWT.LEFT, "drwxrwxrwx", COLUMN_PERMISSIONS, store); //$NON-NLS-2$ TableHelper.createTreeColumn(mTree, "Info", SWT.LEFT, "drwxrwxrwx", COLUMN_INFO, store); //$NON-NLS-2$ // create the jface wrapper mTreeViewer = new TreeViewer(mTree); // setup data provider mContentProvider = new DeviceContentProvider(); mTreeViewer.setContentProvider(mContentProvider); mTreeViewer.setLabelProvider(new FileLabelProvider(mFileImage, mFolderImage, mPackageImage, mOtherImage)); // setup a listener for selection mTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { ISelection sel = event.getSelection(); if (sel.isEmpty()) { mPullAction.setEnabled(false); mPushAction.setEnabled(false); mDeleteAction.setEnabled(false); mCreateNewFolderAction.setEnabled(false); return; } if (sel instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) sel; Object element = selection.getFirstElement(); if (element == null) return; if (element instanceof FileEntry) { mPullAction.setEnabled(true); mPushAction.setEnabled(selection.size() == 1); if (selection.size() == 1) { FileEntry entry = (FileEntry) element; setDeleteEnabledState(entry); mCreateNewFolderAction.setEnabled(entry.isDirectory()); } else { mDeleteAction.setEnabled(false); } } } } }); // add support for double click mTreeViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { ISelection sel = event.getSelection(); if (sel instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) sel; if (selection.size() == 1) { FileEntry entry = (FileEntry) selection.getFirstElement(); String name = entry.getName(); FileEntry parentEntry = entry.getParent(); // can't really do anything with no parent if (parentEntry == null) { return; } // check this is a file like we want. Matcher m = mKeyFilePattern.matcher(name); if (m.matches()) { // get the name w/o the extension String baseName = m.group(1); // add the data extension String dataName = baseName + TRACE_DATA_EXT; FileEntry dataEntry = parentEntry.findChild(dataName); handleTraceDoubleClick(baseName, entry, dataEntry); } else { m = mDataFilePattern.matcher(name); if (m.matches()) { // get the name w/o the extension String baseName = m.group(1); // add the key extension String keyName = baseName + TRACE_KEY_EXT; FileEntry keyEntry = parentEntry.findChild(keyName); handleTraceDoubleClick(baseName, keyEntry, entry); } } } } } }); // setup drop listener mTreeViewer.addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, new Transfer[] { FileTransfer.getInstance() }, new ViewerDropAdapter(mTreeViewer) { @Override public boolean performDrop(Object data) { // get the item on which we dropped the item(s) FileEntry target = (FileEntry) getCurrentTarget(); // in case we drop at the same level as root if (target == null) { return false; } // if the target is not a directory, we get the parent directory if (target.isDirectory() == false) { target = target.getParent(); } if (target == null) { return false; } // get the list of files to drop String[] files = (String[]) data; // do the drop pushFiles(files, target); // we need to finish with a refresh refresh(target); return true; } @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { if (target == null) { return false; } // convert to the real item FileEntry targetEntry = (FileEntry) target; // if the target is not a directory, we get the parent directory if (targetEntry.isDirectory() == false) { target = targetEntry.getParent(); } if (target == null) { return false; } return true; } }); // create and start the refresh thread new Thread("Device Ls refresher") { @Override public void run() { while (true) { try { sleep(FileListingService.REFRESH_RATE); } catch (InterruptedException e) { return; } if (mTree != null && mTree.isDisposed() == false) { Display display = mTree.getDisplay(); if (display.isDisposed() == false) { display.asyncExec(new Runnable() { @Override public void run() { if (mTree.isDisposed() == false) { mTreeViewer.refresh(true); } } }); } else { return; } } else { return; } } } }.start(); return mTree; }
From source file:com.bdaum.zoom.ui.internal.views.HierarchyView.java
License:Open Source License
@Override public void createPartControl(Composite parent) { viewer = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(new ViewContentProvider()); viewer.setLabelProvider(new ViewLabelProvider()); UiUtilities.installDoubleClickExpansion(viewer); getControl().addKeyListener(new KeyAdapter() { @Override/*from w w w.ja v a 2 s . c om*/ public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.CTRL) cntrlDwn = true; } @Override public void keyReleased(KeyEvent e) { if (e.keyCode == SWT.CTRL) cntrlDwn = false; } }); viewer.addSelectionChangedListener(this); // Create the help context id for the viewer's control PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), HelpContextIds.HIERARCHY_VIEW); // Drag & Drop viewer.addDropSupport(OPERATIONS, transferTypes, new ViewerDropAdapter(viewer) { @Override public void dragEnter(DropTargetEvent event) { super.dragEnter(event); UiActivator.getDefault().setDropTargetEffect(event, viewer.getControl()); } @Override public void dragLeave(DropTargetEvent event) { UiActivator.getDefault().hideDropTargetEffect(); super.dragLeave(event); } @Override public void dragOver(DropTargetEvent event) { super.dragOver(event); } @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { return (textTransfer.isSupportedType(transferType) && (operation & OPERATIONS) != 0); } @Override public boolean performDrop(Object data) { if (data instanceof String) { List<String> list = Core.fromStringList((String) data, "\n"); //$NON-NLS-1$ Object target = getCurrentTarget(); if (target == null && !list.isEmpty()) setInput(CoreActivator.getDefault().getDbManager().obtainAsset(list.get(0))); else if (target instanceof Node) { String[] ids = list.toArray(new String[list.size()]); String errorMsg = ((Node) target).acceptChildren(ids); if (errorMsg != null) { AcousticMessageDialog.openError(getSite().getShell(), Messages.getString("HierarchyView.drag_error"), errorMsg); //$NON-NLS-1$ return false; } } } return true; } }); // Listeners addKeyListener(); addGestureListener(viewer.getTree()); addExplanationListener(true); addPartListener(); addClipboard(viewer.getControl()); addDragSupport(); // Other actions makeActions(getViewSite().getActionBars()); installListeners(); hookContextMenu(); contributeToActionBars(); // Hover installHoveringController(); // Action state updateActions(false); }
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 . co 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 a 2 s . c om 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:com.siteview.mde.internal.ui.editor.category.CategorySection.java
License:Open Source License
public void createClient(Section section, FormToolkit toolkit) { fModel = (ISiteModel) getPage().getModel(); fModel.addModelChangedListener(this); Composite container = createClientContainer(section, 2, toolkit); createViewerPartControl(container, SWT.MULTI, 2, toolkit); fCategoryTreePart = getTreePart();// w w w. j av a2 s .co m fCategoryViewer = fCategoryTreePart.getTreeViewer(); fCategoryViewer.setContentProvider(new CategoryContentProvider()); fSiteLabelProvider = new CategoryLabelProvider(); fCategoryViewer.setLabelProvider(fSiteLabelProvider); fCategoryViewer.setInput(fModel.getSite()); int ops = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_DEFAULT; Transfer[] transfers = new Transfer[] { ModelDataTransfer.getInstance() }; if (isEditable()) { fCategoryViewer.addDropSupport(ops, transfers, new ViewerDropAdapter(fCategoryViewer) { public void dragEnter(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragEnter(event); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOperationChanged(org.eclipse.swt.dnd.DropTargetEvent) */ public void dragOperationChanged(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragOperationChanged(event); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOver(org.eclipse.swt.dnd.DropTargetEvent) */ public void dragOver(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragOver(event); } /** * Returns the position of the given event's coordinates * relative to its target. The position is determined to * be before, after, or on the item, based on some * threshold value. * * @param event * the event * @return one of the <code>LOCATION_* </code> * constants defined in this class */ protected int determineLocation(DropTargetEvent event) { if (!(event.item instanceof Item)) { return LOCATION_NONE; } Item item = (Item) event.item; Point coordinates = new Point(event.x, event.y); coordinates = getViewer().getControl().toControl(coordinates); if (item != null) { Rectangle bounds = getBounds(item); if (bounds == null) { return LOCATION_NONE; } } return LOCATION_ON; } public boolean performDrop(Object data) { if (!(data instanceof Object[])) return false; Object target = getCurrentTarget(); int op = getCurrentOperation(); Object[] objects = (Object[]) data; if (objects.length > 0 && objects[0] instanceof SiteFeatureAdapter) { if (op == DND.DROP_COPY && target != null) { copyFeature((SiteFeatureAdapter) objects[0], target); } else { moveFeature((SiteFeatureAdapter) objects[0], target); } return true; } return false; } public boolean validateDrop(Object target, int operation, TransferData transferType) { return (target instanceof ISiteCategoryDefinition || target == null); } }); } fCategoryViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, transfers, new DragSourceListener() { public void dragStart(DragSourceEvent event) { IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer.getSelection(); if (ssel == null || ssel.isEmpty() || !(ssel.getFirstElement() instanceof SiteFeatureAdapter)) { event.doit = false; } } public void dragSetData(DragSourceEvent event) { IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer.getSelection(); event.data = ssel.toArray(); } public void dragFinished(DragSourceEvent event) { } }); fCategoryTreePart.setButtonEnabled(BUTTON_ADD_CATEGORY, isEditable()); fCategoryTreePart.setButtonEnabled(BUTTON_ADD_FEATURE, isEditable()); // fCategoryViewer.expandAll(); toolkit.paintBordersFor(container); section.setClient(container); initialize(); }
From source file:com.siteview.mde.internal.ui.editor.site.CategorySection.java
License:Open Source License
public void createClient(Section section, FormToolkit toolkit) { fModel = (ISiteModel) getPage().getModel(); fModel.addModelChangedListener(this); Composite container = createClientContainer(section, 2, toolkit); createViewerPartControl(container, SWT.MULTI, 2, toolkit); fCategoryTreePart = getTreePart();//from w w w .j a v a2 s. co m fCategoryViewer = fCategoryTreePart.getTreeViewer(); fCategoryViewer.setContentProvider(new CategoryContentProvider()); fSiteLabelProvider = new SiteLabelProvider(); fCategoryViewer.setLabelProvider(fSiteLabelProvider); fCategoryViewer.setInput(fModel.getSite()); int ops = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_DEFAULT; Transfer[] transfers = new Transfer[] { ModelDataTransfer.getInstance() }; if (isEditable()) { fCategoryViewer.addDropSupport(ops, transfers, new ViewerDropAdapter(fCategoryViewer) { public void dragEnter(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragEnter(event); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOperationChanged(org.eclipse.swt.dnd.DropTargetEvent) */ public void dragOperationChanged(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragOperationChanged(event); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOver(org.eclipse.swt.dnd.DropTargetEvent) */ public void dragOver(DropTargetEvent event) { Object target = determineTarget(event); if (target == null && event.detail == DND.DROP_COPY) { event.detail = DND.DROP_MOVE; } super.dragOver(event); } /** * Returns the position of the given event's coordinates * relative to its target. The position is determined to * be before, after, or on the item, based on some * threshold value. * * @param event * the event * @return one of the <code>LOCATION_* </code> * constants defined in this class */ protected int determineLocation(DropTargetEvent event) { if (!(event.item instanceof Item)) { return LOCATION_NONE; } Item item = (Item) event.item; Point coordinates = new Point(event.x, event.y); coordinates = getViewer().getControl().toControl(coordinates); if (item != null) { Rectangle bounds = getBounds(item); if (bounds == null) { return LOCATION_NONE; } } return LOCATION_ON; } public boolean performDrop(Object data) { if (!(data instanceof Object[])) return false; Object target = getCurrentTarget(); int op = getCurrentOperation(); Object[] objects = (Object[]) data; if (objects.length > 0 && objects[0] instanceof SiteFeatureAdapter) { if (op == DND.DROP_COPY && target != null) { copyFeature((SiteFeatureAdapter) objects[0], target); } else { moveFeature((SiteFeatureAdapter) objects[0], target); } return true; } return false; } public boolean validateDrop(Object target, int operation, TransferData transferType) { return (target instanceof ISiteCategoryDefinition || target == null); } }); } fCategoryViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, transfers, new DragSourceListener() { public void dragStart(DragSourceEvent event) { IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer.getSelection(); if (ssel == null || ssel.isEmpty() || !(ssel.getFirstElement() instanceof SiteFeatureAdapter)) { event.doit = false; } } public void dragSetData(DragSourceEvent event) { IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer.getSelection(); event.data = ssel.toArray(); } public void dragFinished(DragSourceEvent event) { } }); fCategoryTreePart.setButtonEnabled(BUTTON_ADD_CATEGORY, isEditable()); fCategoryTreePart.setButtonEnabled(BUTTON_ADD_FEATURE, isEditable()); fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_FEATURE, isEditable()); fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_ALL, isEditable()); // fCategoryViewer.expandAll(); toolkit.paintBordersFor(container); section.setClient(container); initialize(); }
From source file:de.byteholder.geoclipse.mapprovider.DialogMPWms.java
License:Open Source License
private void createUILayer20Viewer(final Composite parent, final PixelConverter pixelConverter) { final TableColumnLayout tableLayout = new TableColumnLayout(); _viewerContainer = new Composite(parent, SWT.NONE); _viewerContainer.setLayout(tableLayout); GridDataFactory.fillDefaults().grab(true, true).applyTo(_viewerContainer); /*/*from www. j av a 2 s. co m*/ * create table */ final Table table = new Table(_viewerContainer, SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER); table.setLayout(new TableLayout()); table.setHeaderVisible(true); table.setLinesVisible(true); _layerViewer = new CheckboxTableViewer(table); /* * create columns */ TableViewerColumn tvc; TableColumn tvcColumn; // column: layer title tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_LayerName); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); cell.setText(mtLayer.getGeoLayer().getTitle()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(20, true)); // column: layer id tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_LayerId); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); cell.setText(mtLayer.getGeoLayer().getName()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(10, true)); // column: bbox tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_Bbox); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); final GeoPosition lowerPosition = mtLayer.getLowerGeoPosition(); final GeoPosition upperPosition = mtLayer.getUpperGeoPosition(); final StringBuilder sb = new StringBuilder(); sb.append(lowerPosition.latitude); sb.append(", "); //$NON-NLS-1$ sb.append(lowerPosition.longitude); sb.append(" / "); //$NON-NLS-1$ sb.append(upperPosition.latitude); sb.append(", "); //$NON-NLS-1$ sb.append(upperPosition.longitude); cell.setText(sb.toString()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(20, true)); _layerViewer.setContentProvider(new IStructuredContentProvider() { public void dispose() { } public Object[] getElements(final Object inputElement) { final int mtLayerSize = _allMtLayers.size(); if (mtLayerSize == 0) { return null; } else { return _allMtLayers.toArray(new MtLayer[mtLayerSize]); } } public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { } }); _layerViewer.addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(final CheckStateChangedEvent event) { // select the checked item _layerViewer.setSelection(new StructuredSelection(event.getElement())); // set focus to selected layer table.setSelection(table.getSelectionIndex()); onCheckLayer(event.getElement()); } }); _layerViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(final SelectionChangedEvent event) { onSelectLayer(); } }); /* * set drag adapter */ _layerViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _layerViewer.getSelection(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStartViewerLeft = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); /* * set drop adapter */ final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_layerViewer) { private Widget fTableItem; @Override public void dragOver(final DropTargetEvent event) { // keep table item fTableItem = event.item; super.dragOver(event); } @Override public boolean performDrop(final Object droppedData) { if (droppedData instanceof StructuredSelection) { final Object firstElement = ((StructuredSelection) droppedData).getFirstElement(); if (firstElement instanceof MtLayer) { final MtLayer mtLayer = (MtLayer) firstElement; final int location = getCurrentLocation(); final Table layerTable = _layerViewer.getTable(); /* * check if drag was startet from this filter, remove the filter item before * the new filter is inserted */ if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStartViewerLeft) { _layerViewer.remove(mtLayer); } int tableIndex; if (fTableItem == null) { _layerViewer.add(mtLayer); tableIndex = layerTable.getItemCount() - 1; } else { // get index of the target in the table tableIndex = layerTable.indexOf((TableItem) fTableItem); if (tableIndex == -1) { return false; } if (location == LOCATION_BEFORE) { _layerViewer.insert(mtLayer, tableIndex); } else if (location == LOCATION_AFTER) { _layerViewer.insert(mtLayer, ++tableIndex); } } // set check state _layerViewer.setChecked(mtLayer, mtLayer.isDisplayedInMap()); // reselect filter item _layerViewer.setSelection(new StructuredSelection(mtLayer)); // set focus to selection layerTable.setSelection(tableIndex); layerTable.setFocus(); // update new layer topology in the map updateMap(false); return true; } } return false; } @Override public boolean validateDrop(final Object target, final int operation, final TransferData transferType) { final ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); if (selection instanceof StructuredSelection) { final Object draggedItem = ((StructuredSelection) selection).getFirstElement(); if (target == draggedItem) { return false; } } if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType) == false) { return false; } // check drop location final int location = getCurrentLocation(); if (((location == LOCATION_AFTER) || (location == LOCATION_BEFORE)) == false) { return false; } return true; } }; _layerViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, viewerDropAdapter); }
From source file:fr.inrialpes.exmo.align.plugin.neontk.NavigationView.java
License:Open Source License
private void createDropSupport() { int operations = DND.DROP_MOVE; Transfer[] transferTypes = new Transfer[] { SelectionTransfer.getInstance() }; //System.out.println("drop support ... "); //drop support for adding ontology from Ontology Navigator viewer.addDropSupport(operations, transferTypes, new ViewerDropAdapter(viewer) { //new PluginDropAdapter(viewer){ //@Override public boolean performDrop(Object data) { System.out.println("check 1 ..."); if (data instanceof IStructuredSelection) { System.out.println("check 2 ..."); Object[] elems = ((IStructuredSelection) data).toArray(); for (int i = 0; i < elems.length; i++) { if (elems[i] instanceof TreeItem) { TreeItem ti = (TreeItem) elems[i]; System.out.println("reading tree ..."); if (ti.getData() instanceof ModuleTreeElement) { ModuleTreeElement modElement = (ModuleTreeElement) ti.getData(); //NavigationView target = (NavigationView)getCurrentTarget(); //if (target == null){ //target = (NavigationView) viewer; //target = (NavigationView)getViewer().getInput(); //System.out.println("current viewer null "); //} //else System.out.println("current viewer non null "); System.out.println("Set Element"); viewer.setInput(modElement); //System.out.println("Id=" + modElement.getModuleId()); //TreeObject root = new TreeObject(modElement); //viewer.setInput(createDummyModel()); //viewer.add(target, modElement); //viewer.reveal(modElement); //return true; }/* w w w . j av a 2s . c om*/ } } } return false; } //@Override public boolean validateDrop(Object target, int operation, TransferData transferType) { // check for Drop from Ontology Navigator if (SelectionTransfer.getInstance().isSupportedType(transferType)) { this.setFeedbackEnabled(false); System.out.println(" dropped ok "); return true; } System.out.println("no drop "); return false; } }); }
From source file:net.bioclipse.qsar.ui.editors.MoleculesPage.java
License:Open Source License
private void addDragAndDrop() { int ops = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; molViewer.addDropSupport(ops, transfers, new ViewerDropAdapter(molViewer) { @Override/*from w w w.j a v a 2 s. c om*/ public boolean performDrop(Object data) { if (!((data instanceof String[]) || (data instanceof IStructuredSelection))) { return false; } final Object indata = data; WorkspaceJob job = new WorkspaceJob("Adding resources to QSAR project") { @Override public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { List<IResource> resources = new ArrayList<IResource>(); //Handle selections within Bioclipse if (indata instanceof String[]) { List<IResource> newRes = handleDropOfFiles((String[]) indata, monitor); if (newRes != null && newRes.size() > 0) resources.addAll(newRes); } //Handle selections within Bioclipse else if (indata instanceof IStructuredSelection) { IStructuredSelection ssel = (IStructuredSelection) indata; for (Object obj : ssel.toList()) { if (obj instanceof IResource) { IResource res = (IResource) obj; resources.add(res); } } } //If none, return error if (resources.size() <= 0) return Status.CANCEL_STATUS; //Add resources to model and molecules folder is necessary try { addResources(resources.toArray(new IResource[0]), monitor); } catch (final UnsupportedOperationException e) { Display.getDefault().syncExec(new Runnable() { public void run() { showError("Error adding files: " + e.getMessage()); } }); } Display.getDefault().syncExec(new Runnable() { public void run() { molViewer.getTable().setFocus(); } }); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return true; } @Override public boolean validateDrop(Object target, int operation, TransferData transferType) { return true; } }); }