Search in sources :

Example 26 with DragSourceEvent

use of org.eclipse.swt.dnd.DragSourceEvent in project netxms by netxms.

the class EventObjectList method enableDragSupport.

/**
 * Enable drag support in object tree
 */
public void enableDragSupport() {
    Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer() };
    viewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, transfers, new DragSourceAdapter() {

        @Override
        public void dragStart(DragSourceEvent event) {
            LocalSelectionTransfer.getTransfer().setSelection(viewer.getSelection());
            event.doit = true;
        }

        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data = LocalSelectionTransfer.getTransfer().getSelection();
        }
    });
}
Also used : DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) DragSourceAdapter(org.eclipse.swt.dnd.DragSourceAdapter) LocalSelectionTransfer(org.eclipse.jface.util.LocalSelectionTransfer) Transfer(org.eclipse.swt.dnd.Transfer)

Example 27 with DragSourceEvent

use of org.eclipse.swt.dnd.DragSourceEvent in project core by jcryptool.

the class FileExplorerView method setupDragNDrop.

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

        public void dragSetData(DragSourceEvent event) {
            TreeItem[] selection = viewer.getTree().getSelection();
            event.data = new String[] { ((IFileStore) selection[0].getData()).toString() };
        }

        public void dragStart(DragSourceEvent event) {
            TreeItem[] selection = viewer.getTree().getSelection();
            if (selection.length > 0 && selection[0].getItemCount() == 0) {
                event.doit = true;
                event.data = ((IFileStore) selection[0].getData()).toString();
            } else {
                event.doit = false;
            }
        }
    });
    viewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() }, new DropTargetAdapter() {

        public void dragOver(DropTargetEvent event) {
            if (event.item != null && event.item.getData() instanceof IFileStore) {
                String url = ((IFileStore) event.item.getData()).toString();
                File file = new File(url);
                if (file.isDirectory()) {
                    event.feedback = DND.DROP_NONE;
                    return;
                }
            }
        }

        public void drop(DropTargetEvent event) {
            String url = ((IFileStore) event.item.getData()).toString();
            String algorithm = (String) event.data;
            File file = new File(url);
            if (file.isDirectory()) {
                event.feedback = DND.DROP_NONE;
                return;
            }
            if (openFile(url))
                AlgorithmView.doAction(algorithm);
        }
    });
}
Also used : DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) DragSourceAdapter(org.eclipse.swt.dnd.DragSourceAdapter) DropTargetAdapter(org.eclipse.swt.dnd.DropTargetAdapter) IFileStore(org.eclipse.core.filesystem.IFileStore) DropTargetEvent(org.eclipse.swt.dnd.DropTargetEvent) File(java.io.File)

Example 28 with DragSourceEvent

use of org.eclipse.swt.dnd.DragSourceEvent in project tdq-studio-se by Talend.

the class ExpressionEditDialog method createTemplatesTablePart.

/**
 * create templates Table Part(only TAB0 use old paramaters, and others use new paramaters)
 *
 * @param sform
 */
public void createTemplatesTablePart(SashForm sform) {
    GridData data;
    final Table templatesTable = new Table(sform, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
    templatesTable.setLinesVisible(false);
    templatesTable.setHeaderVisible(true);
    data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.heightHint = 200;
    templatesTable.setLayoutData(data);
    DragSource ds = new DragSource(templatesTable, DND.DROP_MOVE);
    ds.setTransfer(new Transfer[] { TextTransfer.getInstance() });
    ds.addDragListener(new DragSourceAdapter() {

        @Override
        public void dragSetData(DragSourceEvent event) {
            event.data = templatesTable.getSelection()[0].getText();
        }
    });
    TableColumn column = new TableColumn(templatesTable, SWT.NONE);
    column.setText(TEMPLATES_TITLE);
    for (String template : templates) {
        TableItem item = new TableItem(templatesTable, SWT.NONE);
        item.setText(0, template);
    }
    templatesTable.getColumn(0).pack();
}
Also used : DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) DragSourceAdapter(org.eclipse.swt.dnd.DragSourceAdapter) Table(org.eclipse.swt.widgets.Table) TableItem(org.eclipse.swt.widgets.TableItem) GridData(org.eclipse.swt.layout.GridData) DragSource(org.eclipse.swt.dnd.DragSource) TableColumn(org.eclipse.swt.widgets.TableColumn)

Example 29 with DragSourceEvent

use of org.eclipse.swt.dnd.DragSourceEvent in project tdq-studio-se by Talend.

the class ComparisonTableViewerDNDDecorate method installDragListener.

private void installDragListener(final TableViewer targetViewer, int operations) {
    final Table table = targetViewer.getTable();
    final DragSource source = new DragSource(table, operations);
    source.setTransfer(transferTypes);
    final TableItem[] dragSourceItem = new TableItem[1];
    source.addDragListener(new DragSourceListener() {

        public void dragStart(DragSourceEvent event) {
            TableItem[] selection = table.getSelection();
            if (selection.length > 0) {
                event.doit = true;
                dragSourceItem[0] = selection[0];
                dragSelectedElement = ((IStructuredSelection) targetViewer.getSelection()).getFirstElement();
            } else {
                event.doit = false;
            }
        }

        public void dragSetData(DragSourceEvent event) {
            dragSelectedElement = ((IStructuredSelection) targetViewer.getSelection()).getFirstElement();
            event.data = dragSourceItem[0].getText();
        }

        public void dragFinished(DragSourceEvent event) {
        }
    });
}
Also used : DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) Table(org.eclipse.swt.widgets.Table) TableItem(org.eclipse.swt.widgets.TableItem) DragSource(org.eclipse.swt.dnd.DragSource) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) DragSourceListener(org.eclipse.swt.dnd.DragSourceListener)

Example 30 with DragSourceEvent

use of org.eclipse.swt.dnd.DragSourceEvent in project tdq-studio-se by Talend.

the class DatabaseStructureView method addSession.

/**
 * Add a new session to the database structure view. This will create a new tab for the session.
 *
 * @param session
 */
private void addSession(final MetaDataSession session) throws SQLCannotConnectException {
    if (_allSessions.contains(session)) {
        return;
    }
    try {
        session.getMetaData();
        session.setAutoCommit(true);
    } catch (SQLCannotConnectException e) {
        SQLExplorerPlugin.error(e);
        throw e;
    } catch (SQLException e) {
        SQLExplorerPlugin.error(e);
        MessageDialog.openError(getSite().getShell(), "Cannot connect", e.getMessage());
    }
    DatabaseNode rootNode = session.getRoot();
    if (rootNode == null) {
        return;
    }
    _allSessions.add(session);
    if (_filterAction != null) {
        _filterAction.setEnabled(true);
    }
    if (_tabFolder == null || _tabFolder.isDisposed()) {
        clearParent();
        // create tab folder for different sessions
        _tabFolder = new CTabFolder(_parent, SWT.TOP | SWT.CLOSE);
        // add listener to keep both views on the same active tab
        _tabFolder.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                // set the selected node in the detail view.
                DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage().findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                synchronizeDetailView(detailView);
            }
        });
        // Set up a gradient background for the selected tab
        Display display = getSite().getShell().getDisplay();
        _tabFolder.setSelectionBackground(new Color[] { display.getSystemColor(SWT.COLOR_WHITE), new Color(null, 211, 225, 250), new Color(null, 175, 201, 246), IConstants.TAB_BORDER_COLOR }, new int[] { 25, 50, 75 }, true);
        // Add a listener to handle the close button on each tab
        _tabFolder.addCTabFolder2Listener(new CTabFolder2Adapter() {

            @Override
            public void close(CTabFolderEvent event) {
                CTabItem tabItem = (CTabItem) event.item;
                TabData tabData = (TabData) tabItem.getData();
                _allSessions.remove(tabData.session);
                event.doit = true;
            }
        });
        _parent.layout();
        _parent.redraw();
    }
    // create tab
    final CTabItem tabItem = new CTabItem(_tabFolder, SWT.NULL);
    TabData tabData = new TabData();
    tabItem.setData(tabData);
    tabData.session = session;
    // set tab text
    String labelText = session.getUser().getDescription();
    tabItem.setText(labelText);
    // create composite for our outline
    Composite composite = new Composite(_tabFolder, SWT.NULL);
    composite.setLayout(new FillLayout());
    tabItem.setControl(composite);
    // create outline
    final TreeViewer treeViewer = new TreeViewer(composite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);
    tabData.treeViewer = treeViewer;
    // add drag support
    // TODO improve drag support options
    Transfer[] transfers = new Transfer[] { TableNodeTransfer.getInstance() };
    treeViewer.addDragSupport(DND.DROP_COPY, transfers, new DragSourceListener() {

        public void dragFinished(DragSourceEvent event) {
            System.out.println("$drag finished");
            TableNodeTransfer.getInstance().setSelection(null);
        }

        public void dragSetData(DragSourceEvent event) {
            Object sel = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
            event.data = sel;
        }

        public void dragStart(DragSourceEvent event) {
            event.doit = !treeViewer.getSelection().isEmpty();
            if (event.doit) {
                Object sel = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
                if (!(sel instanceof TableNode)) {
                    event.doit = false;
                } else {
                    TableNode tn = (TableNode) sel;
                    TableNodeTransfer.getInstance().setSelection(tn);
                    if (!tn.isTable()) {
                        event.doit = false;
                    }
                }
            }
        }
    });
    // use hash lookup to improve performance
    treeViewer.setUseHashlookup(true);
    // add content and label provider
    treeViewer.setContentProvider(new DBTreeContentProvider());
    treeViewer.setLabelProvider(new DBTreeLabelProvider());
    // set input session
    treeViewer.setInput(rootNode);
    // add selection change listener, so we can update detail view as
    // required.
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent ev) {
            // set the selected node in the detail view.
            DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage().findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
            synchronizeDetailView(detailView);
        }
    });
    // bring detail to front on doubleclick of node
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {

        public void doubleClick(DoubleClickEvent event) {
            try {
                // find view
                DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage().findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                if (detailView == null) {
                    getSite().getPage().showView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                }
                getSite().getPage().bringToTop(detailView);
                synchronizeDetailView(detailView);
            } catch (Exception e) {
            // fail silent
            }
        }
    });
    // add expand/collapse listener
    treeViewer.addTreeListener(new ITreeViewerListener() {

        public void treeCollapsed(TreeExpansionEvent event) {
            // refresh the node to change image
            INode node = (INode) event.getElement();
            node.setExpanded(false);
            TreeViewer viewer = (TreeViewer) event.getSource();
            viewer.update(node, null);
        }

        public void treeExpanded(TreeExpansionEvent event) {
            // refresh the node to change image
            INode node = (INode) event.getElement();
            node.setExpanded(true);
            TreeViewer viewer = (TreeViewer) event.getSource();
            viewer.update(node, null);
        }
    });
    // set new tab as the active one
    _tabFolder.setSelection(_tabFolder.getItemCount() - 1);
    // update detail view
    DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage().findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
    if (detailView != null) {
        // synchronze detail view with new session
        synchronizeDetailView(detailView);
        // bring detail to top of the view stack
        getSite().getPage().bringToTop(detailView);
    }
    // refresh view
    composite.layout();
    _tabFolder.layout();
    _tabFolder.redraw();
    // bring this view to top of the view stack, above detail if needed..
    getSite().getPage().bringToTop(this);
    // add context menu
    final DBTreeActionGroup actionGroup = new DBTreeActionGroup(treeViewer);
    MenuManager menuManager = new MenuManager("DBTreeContextMenu");
    menuManager.setRemoveAllWhenShown(true);
    Menu contextMenu = menuManager.createContextMenu(treeViewer.getTree());
    treeViewer.getTree().setMenu(contextMenu);
    menuManager.addMenuListener(new IMenuListener() {

        public void menuAboutToShow(IMenuManager manager) {
            actionGroup.fillContextMenu(manager);
        }
    });
// if (sessionSelectionMap.containsKey(tabData.session)) {
// tabData.treeViewer.setSelection(sessionSelectionMap.get(tabData.session));
// sessionSelectionMap.remove(tabData.session);
// _allSessions.remove(tabData.session);
// }
}
Also used : INode(net.sourceforge.sqlexplorer.dbstructure.nodes.INode) CTabFolder(org.eclipse.swt.custom.CTabFolder) SQLException(java.sql.SQLException) TreeViewer(org.eclipse.jface.viewers.TreeViewer) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) DragSourceListener(org.eclipse.swt.dnd.DragSourceListener) DBTreeActionGroup(net.sourceforge.sqlexplorer.dbstructure.DBTreeActionGroup) CTabItem(org.eclipse.swt.custom.CTabItem) DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) DatabaseNode(net.sourceforge.sqlexplorer.dbstructure.nodes.DatabaseNode) DBTreeLabelProvider(net.sourceforge.sqlexplorer.dbstructure.DBTreeLabelProvider) IDoubleClickListener(org.eclipse.jface.viewers.IDoubleClickListener) SelectionEvent(org.eclipse.swt.events.SelectionEvent) DBTreeContentProvider(net.sourceforge.sqlexplorer.dbstructure.DBTreeContentProvider) Menu(org.eclipse.swt.widgets.Menu) TreeExpansionEvent(org.eclipse.jface.viewers.TreeExpansionEvent) CTabFolder2Adapter(org.eclipse.swt.custom.CTabFolder2Adapter) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) Color(org.eclipse.swt.graphics.Color) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) ITreeViewerListener(org.eclipse.jface.viewers.ITreeViewerListener) CTabFolderEvent(org.eclipse.swt.custom.CTabFolderEvent) DoubleClickEvent(org.eclipse.jface.viewers.DoubleClickEvent) FillLayout(org.eclipse.swt.layout.FillLayout) SQLException(java.sql.SQLException) SQLCannotConnectException(net.sourceforge.sqlexplorer.SQLCannotConnectException) IMenuListener(org.eclipse.jface.action.IMenuListener) Transfer(org.eclipse.swt.dnd.Transfer) TableNode(net.sourceforge.sqlexplorer.dbstructure.nodes.TableNode) MenuManager(org.eclipse.jface.action.MenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) SQLCannotConnectException(net.sourceforge.sqlexplorer.SQLCannotConnectException) Display(org.eclipse.swt.widgets.Display)

Aggregations

DragSourceEvent (org.eclipse.swt.dnd.DragSourceEvent)37 DragSource (org.eclipse.swt.dnd.DragSource)24 DragSourceListener (org.eclipse.swt.dnd.DragSourceListener)18 DragSourceAdapter (org.eclipse.swt.dnd.DragSourceAdapter)16 Transfer (org.eclipse.swt.dnd.Transfer)16 DropTargetEvent (org.eclipse.swt.dnd.DropTargetEvent)11 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)10 SelectionEvent (org.eclipse.swt.events.SelectionEvent)10 Composite (org.eclipse.swt.widgets.Composite)10 TreeItem (org.eclipse.swt.widgets.TreeItem)10 TextTransfer (org.eclipse.swt.dnd.TextTransfer)9 Display (org.eclipse.swt.widgets.Display)9 Point (org.eclipse.swt.graphics.Point)8 Button (org.eclipse.swt.widgets.Button)8 Shell (org.eclipse.swt.widgets.Shell)8 LocalSelectionTransfer (org.eclipse.jface.util.LocalSelectionTransfer)7 DropTarget (org.eclipse.swt.dnd.DropTarget)7 DropTargetListener (org.eclipse.swt.dnd.DropTargetListener)6 KeyEvent (org.eclipse.swt.events.KeyEvent)6 FormAttachment (org.eclipse.swt.layout.FormAttachment)6