Search in sources :

Example 41 with DragSource

use of org.eclipse.swt.dnd.DragSource in project pentaho-kettle by pentaho.

the class EnterListDialog method open.

public String[] open() {
    Shell parent = getParent();
    shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN);
    props.setLook(shell);
    shell.setImage(GUIResource.getInstance().getImageTransGraph());
    shell.setText(BaseMessages.getString(PKG, "EnterListDialog.Title"));
    shell.setLayout(new FormLayout());
    int margin = Const.MARGIN;
    // //////////////////////////////////////////////////
    // Top & Bottom regions.
    // //////////////////////////////////////////////////
    Composite top = new Composite(shell, SWT.NONE);
    FormLayout topLayout = new FormLayout();
    topLayout.marginHeight = margin;
    topLayout.marginWidth = margin;
    top.setLayout(topLayout);
    FormData fdTop = new FormData();
    fdTop.left = new FormAttachment(0, 0);
    fdTop.top = new FormAttachment(0, 0);
    fdTop.right = new FormAttachment(100, 0);
    fdTop.bottom = new FormAttachment(100, -50);
    top.setLayoutData(fdTop);
    props.setLook(top);
    Composite bottom = new Composite(shell, SWT.NONE);
    bottom.setLayout(new FormLayout());
    FormData fdBottom = new FormData();
    fdBottom.left = new FormAttachment(0, 0);
    fdBottom.top = new FormAttachment(top, 0);
    fdBottom.right = new FormAttachment(100, 0);
    fdBottom.bottom = new FormAttachment(100, 0);
    bottom.setLayoutData(fdBottom);
    props.setLook(bottom);
    // //////////////////////////////////////////////////
    // Sashform
    // //////////////////////////////////////////////////
    SashForm sashform = new SashForm(top, SWT.HORIZONTAL);
    sashform.setLayout(new FormLayout());
    FormData fdSashform = new FormData();
    fdSashform.left = new FormAttachment(0, 0);
    fdSashform.top = new FormAttachment(0, 0);
    fdSashform.right = new FormAttachment(100, 0);
    fdSashform.bottom = new FormAttachment(100, 0);
    sashform.setLayoutData(fdSashform);
    // ////////////////////////
    // / LEFT
    // ////////////////////////
    Composite leftsplit = new Composite(sashform, SWT.NONE);
    leftsplit.setLayout(new FormLayout());
    FormData fdLeftsplit = new FormData();
    fdLeftsplit.left = new FormAttachment(0, 0);
    fdLeftsplit.top = new FormAttachment(0, 0);
    fdLeftsplit.right = new FormAttachment(100, 0);
    fdLeftsplit.bottom = new FormAttachment(100, 0);
    leftsplit.setLayoutData(fdLeftsplit);
    props.setLook(leftsplit);
    // Source list to the left...
    wlListSource = new Label(leftsplit, SWT.NONE);
    wlListSource.setText(BaseMessages.getString(PKG, "EnterListDialog.AvailableItems.Label"));
    props.setLook(wlListSource);
    FormData fdlListSource = new FormData();
    fdlListSource.left = new FormAttachment(0, 0);
    fdlListSource.top = new FormAttachment(0, 0);
    wlListSource.setLayoutData(fdlListSource);
    wListSource = new List(leftsplit, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
    props.setLook(wListSource);
    FormData fdListSource = new FormData();
    fdListSource.left = new FormAttachment(0, 0);
    fdListSource.top = new FormAttachment(wlListSource, 0);
    fdListSource.right = new FormAttachment(100, 0);
    fdListSource.bottom = new FormAttachment(100, 0);
    wListSource.setLayoutData(fdListSource);
    // /////////////////////////
    // MIDDLE
    // /////////////////////////
    Composite compmiddle = new Composite(sashform, SWT.NONE);
    compmiddle.setLayout(new FormLayout());
    FormData fdCompMiddle = new FormData();
    fdCompMiddle.left = new FormAttachment(0, 0);
    fdCompMiddle.top = new FormAttachment(0, 0);
    fdCompMiddle.right = new FormAttachment(100, 0);
    fdCompMiddle.bottom = new FormAttachment(100, 0);
    compmiddle.setLayoutData(fdCompMiddle);
    props.setLook(compmiddle);
    Composite gButtonGroup = new Composite(compmiddle, SWT.NONE);
    GridLayout gridLayout = new GridLayout(1, false);
    gButtonGroup.setLayout(gridLayout);
    wAddOne = new Button(gButtonGroup, SWT.PUSH);
    wAddOne.setText(" > ");
    wAddOne.setToolTipText(BaseMessages.getString(PKG, "EnterListDialog.AddOne.Tooltip"));
    wAddAll = new Button(gButtonGroup, SWT.PUSH);
    wAddAll.setText(" >> ");
    wAddAll.setToolTipText(BaseMessages.getString(PKG, "EnterListDialog.AddAll.Tooltip"));
    wRemoveOne = new Button(gButtonGroup, SWT.PUSH);
    wRemoveOne.setText(" < ");
    wRemoveOne.setToolTipText(BaseMessages.getString(PKG, "EnterListDialog.RemoveOne.Tooltip"));
    wRemoveAll = new Button(gButtonGroup, SWT.PUSH);
    wRemoveAll.setText(" << ");
    wRemoveAll.setToolTipText(BaseMessages.getString(PKG, "EnterListDialog.RemoveAll.Tooltip"));
    GridData gdAddOne = new GridData(GridData.FILL_BOTH);
    wAddOne.setLayoutData(gdAddOne);
    GridData gdAddAll = new GridData(GridData.FILL_BOTH);
    wAddAll.setLayoutData(gdAddAll);
    GridData gdRemoveAll = new GridData(GridData.FILL_BOTH);
    wRemoveAll.setLayoutData(gdRemoveAll);
    GridData gdRemoveOne = new GridData(GridData.FILL_BOTH);
    wRemoveOne.setLayoutData(gdRemoveOne);
    FormData fdButtonGroup = new FormData();
    // get a size
    wAddAll.pack();
    fdButtonGroup.left = new FormAttachment(50, -(wAddAll.getSize().x / 2) - 5);
    fdButtonGroup.top = new FormAttachment(30, 0);
    // the default looks ugly
    gButtonGroup.setBackground(shell.getBackground());
    gButtonGroup.setLayoutData(fdButtonGroup);
    // ///////////////////////////////
    // RIGHT
    // ///////////////////////////////
    Composite rightsplit = new Composite(sashform, SWT.NONE);
    rightsplit.setLayout(new FormLayout());
    FormData fdRightsplit = new FormData();
    fdRightsplit.left = new FormAttachment(0, 0);
    fdRightsplit.top = new FormAttachment(0, 0);
    fdRightsplit.right = new FormAttachment(100, 0);
    fdRightsplit.bottom = new FormAttachment(100, 0);
    rightsplit.setLayoutData(fdRightsplit);
    props.setLook(rightsplit);
    wlListDest = new Label(rightsplit, SWT.NONE);
    wlListDest.setText(BaseMessages.getString(PKG, "EnterListDialog.Selection.Label"));
    props.setLook(wlListDest);
    FormData fdlListDest = new FormData();
    fdlListDest.left = new FormAttachment(0, 0);
    fdlListDest.top = new FormAttachment(0, 0);
    wlListDest.setLayoutData(fdlListDest);
    wListDest = new List(rightsplit, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
    props.setLook(wListDest);
    FormData fdListDest = new FormData();
    fdListDest.left = new FormAttachment(0, 0);
    fdListDest.top = new FormAttachment(wlListDest, 0);
    fdListDest.right = new FormAttachment(100, 0);
    fdListDest.bottom = new FormAttachment(100, 0);
    wListDest.setLayoutData(fdListDest);
    sashform.setWeights(new int[] { 40, 16, 40 });
    // //////////////////////////////////////////////////////////////
    // THE BOTTOM BUTTONS...
    // //////////////////////////////////////////////////////////////
    wOK = new Button(bottom, SWT.PUSH);
    wOK.setText(BaseMessages.getString(PKG, "System.Button.OK"));
    wCancel = new Button(bottom, SWT.PUSH);
    wCancel.setText(BaseMessages.getString(PKG, "System.Button.Cancel"));
    FormData fdOK = new FormData();
    FormData fdCancel = new FormData();
    fdOK.left = new FormAttachment(35, 0);
    fdOK.bottom = new FormAttachment(100, 0);
    wOK.setLayoutData(fdOK);
    fdCancel.left = new FormAttachment(wOK, 10);
    fdCancel.bottom = new FormAttachment(100, 0);
    wCancel.setLayoutData(fdCancel);
    // Add listeners
    wCancel.addListener(SWT.Selection, new Listener() {

        public void handleEvent(Event e) {
            dispose();
        }
    });
    // Add listeners
    wOK.addListener(SWT.Selection, new Listener() {

        public void handleEvent(Event e) {
            handleOK();
        }
    });
    // Drag & Drop for steps
    Transfer[] ttypes = new Transfer[] { TextTransfer.getInstance() };
    DragSource ddSource = new DragSource(wListSource, DND.DROP_MOVE | DND.DROP_COPY);
    ddSource.setTransfer(ttypes);
    ddSource.addDragListener(new DragSourceListener() {

        public void dragStart(DragSourceEvent event) {
        }

        public void dragSetData(DragSourceEvent event) {
            String[] ti = wListSource.getSelection();
            String data = new String();
            for (int i = 0; i < ti.length; i++) {
                data += ti[i] + Const.CR;
            }
            event.data = data;
        }

        public void dragFinished(DragSourceEvent event) {
        }
    });
    DropTarget ddTarget = new DropTarget(wListDest, DND.DROP_MOVE | DND.DROP_COPY);
    ddTarget.setTransfer(ttypes);
    ddTarget.addDropListener(new DropTargetListener() {

        public void dragEnter(DropTargetEvent event) {
        }

        public void dragLeave(DropTargetEvent event) {
        }

        public void dragOperationChanged(DropTargetEvent event) {
        }

        public void dragOver(DropTargetEvent event) {
        }

        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                // no data to copy, indicate failure in event.detail
                event.detail = DND.DROP_NONE;
                return;
            }
            StringTokenizer strtok = new StringTokenizer((String) event.data, Const.CR);
            while (strtok.hasMoreTokens()) {
                String source = strtok.nextToken();
                addToDestination(source);
            }
        }

        public void dropAccept(DropTargetEvent event) {
        }
    });
    wListSource.addKeyListener(new KeyAdapter() {

        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.CR) {
                addToSelection(wListSource.getSelection());
            }
        }
    });
    wListDest.addKeyListener(new KeyAdapter() {

        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.CR) {
                delFromSelection(wListDest.getSelection());
            }
        }
    });
    // Double click adds to destination.
    wListSource.addSelectionListener(new SelectionAdapter() {

        public void widgetDefaultSelected(SelectionEvent e) {
            addToSelection(wListSource.getSelection());
        }
    });
    // Double click adds to source
    wListDest.addSelectionListener(new SelectionAdapter() {

        public void widgetDefaultSelected(SelectionEvent e) {
            delFromSelection(wListDest.getSelection());
        }
    });
    wAddOne.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent e) {
            addToSelection(wListSource.getSelection());
        }
    });
    wRemoveOne.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent e) {
            delFromSelection(wListDest.getSelection());
        }
    });
    wAddAll.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent e) {
            addToSelection(wListSource.getItems());
        }
    });
    wRemoveAll.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent e) {
            delFromSelection(wListDest.getItems());
        }
    });
    opened = true;
    getData();
    BaseStepDialog.setSize(shell);
    shell.open();
    Display display = parent.getDisplay();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    return retval;
}
Also used : DragSourceListener(org.eclipse.swt.dnd.DragSourceListener) Listener(org.eclipse.swt.widgets.Listener) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) KeyAdapter(org.eclipse.swt.events.KeyAdapter) Label(org.eclipse.swt.widgets.Label) DragSourceListener(org.eclipse.swt.dnd.DragSourceListener) DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) KeyEvent(org.eclipse.swt.events.KeyEvent) Shell(org.eclipse.swt.widgets.Shell) GridLayout(org.eclipse.swt.layout.GridLayout) DropTargetListener(org.eclipse.swt.dnd.DropTargetListener) Button(org.eclipse.swt.widgets.Button) SelectionEvent(org.eclipse.swt.events.SelectionEvent) List(org.eclipse.swt.widgets.List) FormAttachment(org.eclipse.swt.layout.FormAttachment) FormLayout(org.eclipse.swt.layout.FormLayout) FormData(org.eclipse.swt.layout.FormData) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) DropTargetEvent(org.eclipse.swt.dnd.DropTargetEvent) DragSource(org.eclipse.swt.dnd.DragSource) SashForm(org.eclipse.swt.custom.SashForm) StringTokenizer(java.util.StringTokenizer) GridData(org.eclipse.swt.layout.GridData) TextTransfer(org.eclipse.swt.dnd.TextTransfer) Transfer(org.eclipse.swt.dnd.Transfer) Event(org.eclipse.swt.widgets.Event) DropTargetEvent(org.eclipse.swt.dnd.DropTargetEvent) KeyEvent(org.eclipse.swt.events.KeyEvent) DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) SelectionEvent(org.eclipse.swt.events.SelectionEvent) DropTarget(org.eclipse.swt.dnd.DropTarget) Display(org.eclipse.swt.widgets.Display)

Example 42 with DragSource

use of org.eclipse.swt.dnd.DragSource in project mylyn.docs by eclipse.

the class DndConfigurationStrategy method configure.

public void configure(CommandManager commandManager, Control control, ISelectionProvider provider) {
    dragAdapter = new DelegatingDragAdapter();
    dragSource = new DragSource(control, DND.DROP_COPY | DND.DROP_MOVE);
    dragAdapter.addDragSourceListener(new OutlineDragSourceListener(provider));
    dragSource.addDragListener(dragAdapter);
    dragSource.setTransfer(dragAdapter.getTransfers());
    dropAdapter = new DelegatingDropAdapter();
    dropTarget = new DropTarget(control, DND.DROP_COPY | DND.DROP_MOVE);
    dropAdapter.addDropTargetListener(new OutlineDropTargetListener(commandManager));
    dropTarget.addDropListener(dropAdapter);
    dropTarget.setTransfer(dropAdapter.getTransfers());
}
Also used : DelegatingDropAdapter(org.eclipse.jface.util.DelegatingDropAdapter) DelegatingDragAdapter(org.eclipse.jface.util.DelegatingDragAdapter) DragSource(org.eclipse.swt.dnd.DragSource) DropTarget(org.eclipse.swt.dnd.DropTarget)

Aggregations

DragSource (org.eclipse.swt.dnd.DragSource)42 DragSourceEvent (org.eclipse.swt.dnd.DragSourceEvent)26 DragSourceListener (org.eclipse.swt.dnd.DragSourceListener)23 Transfer (org.eclipse.swt.dnd.Transfer)12 DropTarget (org.eclipse.swt.dnd.DropTarget)11 DragSourceAdapter (org.eclipse.swt.dnd.DragSourceAdapter)10 Button (org.eclipse.swt.widgets.Button)10 TreeItem (org.eclipse.swt.widgets.TreeItem)10 DropTargetEvent (org.eclipse.swt.dnd.DropTargetEvent)9 TextTransfer (org.eclipse.swt.dnd.TextTransfer)9 Display (org.eclipse.swt.widgets.Display)9 Shell (org.eclipse.swt.widgets.Shell)9 Point (org.eclipse.swt.graphics.Point)8 Label (org.eclipse.swt.widgets.Label)8 DropTargetListener (org.eclipse.swt.dnd.DropTargetListener)7 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)7 SelectionEvent (org.eclipse.swt.events.SelectionEvent)7 FormAttachment (org.eclipse.swt.layout.FormAttachment)7 FormData (org.eclipse.swt.layout.FormData)7 FormLayout (org.eclipse.swt.layout.FormLayout)7