Drag and Drop between Web Dynpro Tables on Cell Basis

Hi Experts,
I need to develop a Drag and Drop Functionality as follows:
I have two tables. I want to drag a row of the first table and drop it in a particular cell of the second table.
Is it possible to implement this using the Web Dynpro Drap and Drop Functionality?
If not, does anybody have an idea of how to implement this using other concepts (Flash Integration, Building up a Grid of Images and defining those as drop tragets, etc..)??
Valuable Advice is highly appreciated!
THANKS, Johannes

Thanks for the Video.. It gives some information about Drag and Drop, but still, it does not say what I need to know.
Again:
I need to know if there is a way to drag particular cells in a Web Dynpro Table to other locations in that same table. Plus: I need to know if there is a way to drag and drop rows of one table into particular cell of another table.
Similar to what we do in our Outlook Calendars: We have a week in view and we see our appointments as blocks within that week view. Now, we can drag and drop these blocks to other locations. That is what I need to implement!
Does anybody have an idea?
THANKS, Johannes

Similar Messages

  • Drag and Drop in Web dynpro ALV

    I have a requirement in wda where I am supposed to select few records from source table and drop it in target table. The dropped records should be inserted at the right index /destination, dropped at.  I see SAP examples but they are all associated with tables and none of them are ALV grids.
    Could anyone of you please share steps or code to achieve drap and drop in SALV_WD_TABLE.

    Hi Kiran,
    I am in 703 so drag and drop should work good .
    I am required to drag and drop records from ALV1(bottom) to ALV2(top) (and not table UI). I could create drag source but somehow the whole piece is not working .
    Drop target field is dynamic. Wherever the user drops, the data in ALV2 should be inserted/updated exactly at that spot/cell . Here, I am not sure how to fill target row/field details runtime.
    Just to simplify, I am doing 1 column move. Hard coded the target field ‘AUFNR3’ but still than My “On drop event” is not triggering. I always see a prohibitory sign when trying to move the ghost image across areas as if the column is not defined as DropTarget.
    My code looks something like this:
    Drop from AUFNR of ALV2 to AUFNR3 of ALV1 :
    In WDDOINIT:*...get alv models
      lr_dd_alv1 ?= wd_this->r_model_calen.
      lr_dd_alv2 ?= wd_this->r_model_operlist.
    l_tags_alv2 = 'AUFNR'.* create or enable/disable alvs as drag source
      IF NOT lr_dd_alv2->r_drag_source_info IS BOUND.
        lr_dd_alv2->create_drag_source_info(
          EXPORTING
            data = 'ALV2'
            tags = l_tags_alv2 "'alv2'
            enabled = abap_true ).
      ELSE.
        lr_dd_alv2->r_drag_source_info->set_enabled( abap_true ).
      ENDIF.
    l_tags_alv1 = 'AUFNR3'.
      lr_dd_alv1->set_drop_row_name_fieldname( 'AUFNR3' ).
      lr_dd_alv1->set_drop_row_name( ' ' ).
      lr_dd_alv1->create_drop_row_target_info(
        EXPORTING
          id   = 'ALV1'
          name = 'alv1'
          tags = l_tags_alv1
          enabled = abap_true ).
    In drop event: I am trying to fetch the selected row and update the ALV2 accordingly
    lr_element = lr_node->get_lead_selection( ).
      IF lr_element IS BOUND.
        lr_element->get_attribute(
            EXPORTING
              name = 'AUFNR'
            IMPORTING
              value = l_value ).
      ENDIF.
        lo_nd_nd_calendar = wd_context->get_child_node( name = wd_this->wdctx_nd_calendar ).
      lo_nd_nd_calendar->bind_table( new_items = lt_nd_calendar set_initial_elements = abap_true ).
    ENDMETHOD.
    Any help is greatly appreciated..

  • Drag and Drop between two JTables

    I tried to implement drag and drop between two JTables using data transfer, but i did not get it to work, that dnd works in both directions. i have my own transferhandler, but if is use setTransferHandler(handler), i'm no longer able to start a drag from that table. i also tried to use a mouse listener to call exportAsDrag, but i only works in one direction. any ideas or examples?

    That is a rather large request, and indicates that you have likely not spent much time researching the subject before posting. Read up on Swing drag & drop here (http://java.sun.com/docs/books/tutorial/dnd/), then ask specific questions about something you don't understand, problems with your implementation, etc.
    Mike

  • MULTIPLE-ROW drag and drop between 2 ALV grids

    Hi,
    Can anybody help me with acheiving MULTIPLE-ROW drag and drop functionality between 2 ALV grids.

    hi Prakash,
    Actually I'm trying to develop multiple drag and drop between 2 ALV's. To understand the events properly, I started working on this sample program where it uses 1 ALV and splits it into 2 and uses single row drag and drop between them. Now I'm making it to work for multiple drag and drop, so that I can use it on my application. This is the code which I'm working on..
    *& Report  Z_ALV_GRID_CONTROLS_DRAG_DROP                               *
    REPORT  z_alv_grid_controls_drag_drop.
    DATA   : i_ztransactions  TYPE TABLE OF ztransactions
                                   WITH HEADER LINE.
    DATA   : i_ztransactions2 TYPE TABLE OF ztransactions
                                   WITH HEADER LINE.
    DATA   : ok_code LIKE sy-ucomm .
    DATA : mcontainer TYPE REF TO cl_gui_custom_container .
    DATA : mcontleft  TYPE REF TO cl_gui_container .
    DATA : mcontright TYPE REF TO cl_gui_container .
    DATA : msplitcont TYPE REF TO
                            cl_gui_easy_splitter_container .
    DATA : malv_left  TYPE REF TO cl_gui_alv_grid .
    DATA : malv_right TYPE REF TO cl_gui_alv_grid .
    DATA : mrow TYPE lvc_s_row .
    DATA : gt_outtab_source TYPE ztransactions.
    DATA : gt_outtab_target TYPE ztransactions.
    DATA : g_repid LIKE sy-repid.
    DATA:   gs_layout TYPE lvc_s_layo ,
            g_behaviour_alv TYPE REF TO cl_dragdrop .
    DATA : mlines TYPE i .
          CLASS lcl_dragdropobj DEFINITION
    This is the Class of Drag Drop Object .
    This Object is used as a temporary storage means
    of the information extracted with drag
    CLASS lcl_dragdropobj DEFINITION.
      PUBLIC SECTION.
        DATA: i_ztransactions  TYPE ztransactions ,
              index TYPE i ,
              original_table(5) TYPE c ,
              proceed_trans(1) TYPE c .
    ENDCLASS.                    "lcl_dragdropobj DEFINITION
    DATA : mdata TYPE REF TO lcl_dragdropobj .
          CLASS DND_TOOLS DEFINITION
    This class contains the methods responding to the
    events ONDRAG , ONDROP , ONDROPCOMPLETE
    of the ALV Grid Controls
    CLASS dnd_tools DEFINITION .
      PUBLIC SECTION .
       METHODS:handle_user_command
                               FOR EVENT user_command OF
                               cl_gui_alv_grid
                               IMPORTING
                               e_ucomm.
        METHODS : handle_drag_from_left
                             FOR EVENT ondrag OF
                              cl_gui_alv_grid
                              IMPORTING
                              e_row
                              e_dragdropobj .
        METHODS : handle_dropcomplete_from_left
                              FOR EVENT ondropcomplete  OF
                              cl_gui_alv_grid
                              IMPORTING
                              e_row
                              e_dragdropobj .
        METHODS : handle_drag_from_right
                              FOR EVENT ondrag OF
                              cl_gui_alv_grid
                              IMPORTING
                              e_row
                              e_dragdropobj .
        METHODS : handle_dropcomplete_from_right
                              FOR EVENT ondropcomplete  OF
                              cl_gui_alv_grid
                              IMPORTING
                              e_row
                              e_dragdropobj .
        METHODS : handle_drop_to_left
                              FOR EVENT ondrop OF
                              cl_gui_alv_grid
                              IMPORTING
                               e_dragdropobj .
        METHODS : handle_drop_to_right
                              FOR EVENT ondrop OF
                              cl_gui_alv_grid
                              IMPORTING
                              e_dragdropobj .
    ENDCLASS .                    "DND_TOOLS DEFINITION
          CLASS DND_TOOLS IMPLEMENTATION
    CLASS dnd_tools IMPLEMENTATION .
      METHOD handle_drag_from_left .
    METHOD handle_user_command.
       DATA: lt_rows TYPE lvc_t_row.
        DATA: lt_rows TYPE lvc_t_roid.
        DATA: lt_row TYPE lvc_s_roid.
        DATA: mdata TYPE REF TO lcl_dragdropobj .
        DATA: dragdropobj TYPE REF TO lcl_dragdropobj .
    get selected row
        CALL METHOD malv_left->get_selected_rows
          IMPORTING
            et_row_no = lt_rows.
        CALL METHOD cl_gui_cfw=>flush.
        IF sy-subrc NE 0.
    add your handling, for example
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'Error in Flush'(500).
        ENDIF.
        CREATE OBJECT mdata.
        LOOP AT lt_rows INTO lt_row.
         mrow = lt_row .
          READ TABLE i_ztransactions INDEX lt_row-row_id INTO
                     i_ztransactions.
          MOVE i_ztransactions TO mdata->i_ztransactions .
          MOVE lt_row-row_id TO mdata->index.
          MOVE 'LEFT' TO mdata->original_table .
          e_dragdropobj->object = mdata .
        ENDLOOP.
      ENDMETHOD.                           "handle_user_command
      METHOD handle_dropcomplete_from_left .
      NB : the following data object MDATA is local to
      the method and contains the information from the
      import parameter of the method E_DRAGDROPOBJ
        DATA : mdata TYPE REF TO lcl_dragdropobj .
        DATA: lt_rows TYPE lvc_t_roid.
        DATA: lt_row TYPE lvc_s_roid.
        CALL METHOD malv_left->get_selected_rows
          IMPORTING
            et_row_no = lt_rows.
        CALL METHOD cl_gui_cfw=>flush.
        IF sy-subrc NE 0.
    add your handling, for example
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'Error in Flush'(500).
        ENDIF.
        LOOP AT lt_rows INTO lt_row.
          mdata  ?= e_dragdropobj->object .
          CHECK mdata->proceed_trans = 'X' .
          mrow = mdata->index.
          DELETE i_ztransactions INDEX mrow .
          APPEND mdata->i_ztransactions TO i_ztransactions2 .
          SORT i_ztransactions2 BY kunnr belnr .
          DELETE i_ztransactions2 WHERE kunnr IS INITIAL .
          DESCRIBE TABLE i_ztransactions LINES mlines .
          IF mlines EQ 0 .
            CLEAR  i_ztransactions .
            APPEND i_ztransactions TO i_ztransactions .
          ENDIF .
        ENDLOOP.
        CALL METHOD malv_left->refresh_table_display.
        CALL METHOD malv_right->refresh_table_display.
      ENDMETHOD .                    "HANDLE_DROPCOMPLETE_FROM_LEFT
      METHOD handle_drag_from_right.
        mrow = e_row-index .
        READ TABLE i_ztransactions2 INDEX mrow INTO
                   i_ztransactions2 .
        CREATE OBJECT mdata .
        MOVE i_ztransactions2 TO mdata->i_ztransactions .
        MOVE mrow TO mdata->index .
        MOVE 'RIGHT' TO mdata->original_table .
        e_dragdropobj->object = mdata .
      ENDMETHOD .                    "HANDLE_DRAG_FROM_RIGHT
      METHOD handle_dropcomplete_from_right .
        DATA : mdata TYPE REF TO lcl_dragdropobj .
        mdata  ?= e_dragdropobj->object .
        CHECK mdata->proceed_trans = 'X' .
        mrow = mdata->index .
        DELETE i_ztransactions2 INDEX mrow .
        APPEND mdata->i_ztransactions TO i_ztransactions .
        SORT i_ztransactions BY kunnr belnr .
        DELETE i_ztransactions WHERE kunnr IS INITIAL .
        DESCRIBE TABLE i_ztransactions2 LINES mlines .
        IF mlines EQ 0 .
          CLEAR  i_ztransactions2 .
          APPEND i_ztransactions2 TO i_ztransactions2 .
        ENDIF .
        CALL METHOD malv_left->refresh_table_display.
        CALL METHOD malv_right->refresh_table_display.
      ENDMETHOD .                    "HANDLE_DROPCOMPLETE_FROM_RIGHT
      METHOD handle_drop_to_left .
        DATA : mdata TYPE REF TO lcl_dragdropobj .
        mdata  ?= e_dragdropobj->object .
        IF mdata->original_table = 'RIGHT' .
          mdata->proceed_trans = 'X' .
        ELSE .
          mdata->proceed_trans = ' ' .
        ENDIF .
        e_dragdropobj->object = mdata .
      ENDMETHOD .                    "HANDLE_DROP_TO_LEFT
      METHOD handle_drop_to_right .
        DATA : mdata TYPE REF TO lcl_dragdropobj .
        DATA: lt_rows TYPE lvc_t_roid.
        DATA: lt_row TYPE lvc_s_roid.
        CALL METHOD malv_left->get_selected_rows
          IMPORTING
            et_row_no = lt_rows.
        CALL METHOD cl_gui_cfw=>flush.
        IF sy-subrc NE 0.
    add your handling, for example
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'Error in Flush'(500).
        ENDIF.
        LOOP AT lt_rows INTO lt_row.
          mdata  ?= e_dragdropobj->object .
          IF mdata->original_table = 'LEFT' .
            mdata->proceed_trans = 'X' .
          ELSE .
            mdata->proceed_trans = ' ' .
          ENDIF .
          e_dragdropobj->object = mdata .
        ENDLOOP.
      ENDMETHOD .                    "HANDLE_DROP_TO_RIGHT
    ENDCLASS .                    "DND_TOOLS IMPLEMENTATION
    DATA : mlistener TYPE REF TO dnd_tools .
    ======================================================
    START OF SELECTION
    ======================================================
    START-OF-SELECTION .
      PERFORM get_data .
      CALL SCREEN 100 .
    The screen 100 has the custom control MCONTAINER and
    on the flow logic has the following modules :
    PROCESS BEFORE OUTPUT.
      MODULE STATUS_0100.
      MODULE PREPARE_SCREEN .
    PROCESS AFTER INPUT.
      MODULE USER_COMMAND_0100.
    (Off course not commented out in the real flow logic)
          FORM GET_DATA                                 *
    FOR THIS EXAMPLE THE DATA SELECTION IS HARD CODED
    FORM get_data .
      CLEAR : i_ztransactions , i_ztransactions[] .
      i_ztransactions-mandt = sy-mandt .
      i_ztransactions-waers = 'EUR  ' .
      i_ztransactions-kunnr = '0000000001' .
      i_ztransactions-belnr = '0000000001' .
      i_ztransactions-bldat = '20030101' .
    i_ztransactions-dmbtr = '1000' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000002' .
      i_ztransactions-bldat = '20030202' .
    i_ztransactions-dmbtr = '1010' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000003' .
      i_ztransactions-bldat = '20030323' .
    i_ztransactions-dmbtr = '1020' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000004' .
      i_ztransactions-bldat = '20030404' .
    i_ztransactions-dmbtr = '1030' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000005' .
      i_ztransactions-bldat = '20030505' .
    i_ztransactions-dmbtr = '1040' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000006' .
      i_ztransactions-bldat = '20030606' .
    i_ztransactions-dmbtr = '1050' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000007' .
      i_ztransactions-bldat = '20030707' .
    i_ztransactions-dmbtr = '1060' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000008' .
      i_ztransactions-bldat = '20030808' .
    i_ztransactions-dmbtr = '1070' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000009' .
      i_ztransactions-bldat = '20030909' .
    i_ztransactions-dmbtr = '1080' .
      APPEND i_ztransactions .
      i_ztransactions-belnr = '0000000010' .
      i_ztransactions-bldat = '20031010' .
    i_ztransactions-dmbtr = '1090' .
      APPEND i_ztransactions .
      CLEAR : i_ztransactions2 , i_ztransactions2[] .
      APPEND i_ztransactions2 .
    ENDFORM .                    "GET_DATA
    *&      Module  STATUS_0100  OUTPUT
    The PF STATUS STATUS100 called from the module below,
    has on the Standard toolbar the buttons
    BACK , EXIT and CANCEL .
    These buttons are provided with function code = 'EXIT'
    MODULE status_0100 OUTPUT.
      SET TITLEBAR 'TITLEDRAGDROP' .
      SET PF-STATUS 'STATUS100'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
         Module  USER_COMMAND_0100  INPUT
    The following module checks the User Command and ends
    the program
    MODULE user_command_0100 INPUT.
      IF ok_code = 'EXIT' .
        CLEAR : mcontainer ,
               mcontleft  ,
               mcontright ,
               msplitcont ,
               malv_left  ,
               malv_right .
        LEAVE TO SCREEN 0  .
      ENDIF .
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  PREPARE_SCREEN  OUTPUT
    MODULE prepare_screen OUTPUT.
      IF mcontainer IS INITIAL .
        CREATE OBJECT mcontainer
                      EXPORTING
                      container_name = 'MCONTAINER' .
        CREATE OBJECT msplitcont
                      EXPORTING
                      parent = mcontainer
                      orientation = 1 .
        mcontleft = msplitcont->top_left_container .
        mcontright = msplitcont->bottom_right_container .
        CREATE OBJECT malv_left
                      EXPORTING i_parent = mcontleft .
        gs_layout-sel_mode = 'D'.
        CREATE OBJECT malv_right
                      EXPORTING i_parent = mcontright .
        gs_layout-sel_mode = 'D'.
        PERFORM set_layout_capable_of_drag_dro
                      USING 'X' 'X' .
        CALL METHOD malv_left->set_table_for_first_display
          EXPORTING
            i_structure_name = 'ZTRANSACTIONS'
            is_layout        = gs_layout
          CHANGING
            it_outtab        = i_ztransactions[].
        CALL METHOD malv_right->set_table_for_first_display
          EXPORTING
            i_structure_name = 'ZTRANSACTIONS'
            is_layout        = gs_layout
          CHANGING
            it_outtab        = i_ztransactions2[].
        CREATE OBJECT mlistener .
        CALL METHOD malv_left->set_toolbar_interactive.
        SET HANDLER mlistener->handle_drag_from_left
                    FOR malv_left .
        SET HANDLER mlistener->handle_dropcomplete_from_left
                    FOR malv_left .
        SET HANDLER mlistener->handle_drag_from_right
                    FOR malv_right.
        SET HANDLER mlistener->handle_dropcomplete_from_right
                      FOR malv_right .
        SET HANDLER mlistener->handle_drop_to_right
                     FOR malv_right .
        SET HANDLER mlistener->handle_drop_to_left
                     FOR malv_left  .
      ENDIF .
    ENDMODULE.                 " PREPARE_SCREEN  OUTPUT
          Form  SET_LAYOUT_CAPABLE_OF_DRAG_DRO
    Definition of a Drag & Drop behaviour for the ALV
    grid
    FORM set_layout_capable_of_drag_dro  USING drag drop.
      DATA : effect TYPE i ,
             handle_alv TYPE i .
      CREATE OBJECT g_behaviour_alv.
      effect = cl_dragdrop=>move + cl_dragdrop=>copy .
      CALL METHOD g_behaviour_alv->add
        EXPORTING
          flavor     = 'Line'
          dragsrc    = drag
          droptarget = drop
          effect     = effect.
      CALL METHOD g_behaviour_alv->get_handle
        IMPORTING
          handle = handle_alv.
      gs_layout-s_dragdrop-row_ddid = handle_alv.
    ENDFORM.              " SET_LAYOUT_CAPABLE_OF_DRAG_DRO

  • How do I drag-and-drop my Web Bookmarks Folder to a external flash drive? I need to move them from one Mac to another Mac.

    '''Moving Firefox URL Bookmarks from one Mac to another'''
    How do I drag-and-drop my web 'Bookmarks Toolbar' folder from one Mac to an external USB zip drive. Unable to network both Macs and use the migration feature. Must do this manually. Thanks!

    Hi RMcMullen,
    You should look at the [[Backing up your information]] Knowledge Base article. It will give you all the information you need to back up everything so you won't lose a thing.
    Hopefully this helps!

  • I use to drag and drop an web address into a link toolbar, can't seem to figure out how to do this...?

    I just upgraded to Windows 7 and with it I got the latest Firefox. There is nothing like learning 2 things at one time. On my old XP and 3.? all I have to do was drag and drop a web address into a link toolbar. Saving all my frequent visited or just sights I want quick access to, to a toolbar quick button. I have been playing with this for days and decided to try this Forum. I did find the Bookmark toolbar, but cant seem to figure out what is if for or if you can drop into it. When I right click it and Customize, it shows me add on buttons, but nothing to do with web addresses or alike...
    Bottom line; I want to be able to drag and drop a web address into a toolbar for recall latter and be able to edit the address with a right click at a latter date in necessary...
    Thanks, Mike

    You can drag and drop the favicon also known as the [https://support.mozilla.com/en-US/kb/Site+Identity+Button site identity button], at the left hand edge of the location bar onto a toolbar to bookmark the site.

  • Drag and Drop between two windows

    I would like to implement Drag and Drop between two windows for example in Windows I can take URL Address form browser and drag it and drop it in to any control that excepts String like TextField.
    I would like to have the same behavior with my Java Text Controls.
    What can I do to achieve this?

    There is no configuration for it. It should work.
    Can you try it in a different user account. If it works in a different account, then it is likely something in your current user account that is messed up. If it doesn't work in another user account, then it is likely something with Mail, itself. 
    You could try downloading and installing the 10.6.7 combo update. That may repair what is wrong.

  • Drag and drop between two different browser

    Hi All,
    Is drag and drop in flex possible behind boundaries of
    browser context?.
    Currently i have a vdividebox which contains two datagrid
    with drag and drop functionality.
    Now I want to display this datagrid in two different browsers
    and provide the drag and drop functionality between them.
    Is their any way to achieve this?
    Thanks.

    Hey
    due to Security restrictions (Sandbox) I don't believe that
    you can Drag and Drop between two Browsers with Flex, maybe this
    can be done with AIR.
    Cheers
    Dietmar

  • Drag and Drop Between two Panels

    Hi,
    I am working with Swings,i created two Panels A and B. I kept some GIF or Image in Panel A,i would like to drag the gif object in to Panel B.
    when i try like this,my mouse could not communicate with two panels A and B.mouse events working Individualey,i mean mouse events working in same panel.
    Plz let me know how to communicate with two different panels with mouse. Drag and Drop between Panel A and Panel B.
    Thanking you
    MyProblems

    You might check out the Drag and Drop tutorial, especially the section Data Transfer with a Custom Component.
    Here's another approach using an overlayed non–opaque JPanel as a transfer device. The image label is transfered to the (fake) glass pane and dragged. On mouse release it is added to the JPanel below. Although I didn't build in any boundry–checking it would be a useful thing. Mostly to ensure a suitable drop target and component location in it.
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    import javax.imageio.ImageIO;
    import javax.swing.*;
    import javax.swing.event.*;
    public class DraggingTest
        public static void main(String[] args)
            LeftPanel left = new LeftPanel();
            JPanel right = new JPanel();
            right.setBackground(new Color(200,240,220));
            right.setLayout(null);
            JPanel panel = new JPanel(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.weightx = 1.0;
            gbc.weighty = 1.0;
            gbc.fill = gbc.BOTH;
            panel.add(left, gbc);
            panel.add(right, gbc);
            JPanel glassPanel = new JPanel();
            glassPanel.setOpaque(false);
            JPanel overlay = new JPanel();
            OverlayLayout layout = new OverlayLayout(overlay);
            overlay.setLayout(layout);
            overlay.add(glassPanel);
            overlay.add(panel);
            ImageMover mover = new ImageMover(left, right, glassPanel);
            glassPanel.addMouseListener(mover);
            glassPanel.addMouseMotionListener(mover);
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(overlay);
            f.setSize(400,400);
            f.setLocation(600,325);
            f.setVisible(true);
    class LeftPanel extends JPanel
        Image image;
        JLabel label;
        public LeftPanel()
            loadImage();
            setBackground(Color.white);
            setLayout(null);
            label = new JLabel(new ImageIcon(image));
            label.setName("imageLabel");
            Dimension d = label.getPreferredSize();
            label.setBounds(40, 40, d.width, d.height);
            add(label);
        private void loadImage()
            String fileName = "images/dukeWaveRed.gif";
            try
                URL url = getClass().getResource(fileName);
                image = ImageIO.read(url);
            catch(MalformedURLException mue)
                System.out.println(mue.getMessage());
            catch(IOException ioe)
                System.out.println(ioe.getMessage());
    class ImageMover extends MouseInputAdapter
        LeftPanel left;
        JPanel right, glassPanel;
        JPanel activePanel;
        Component selectedComponent;  // imageLabel
        Point offset;
        boolean dragging, selected;
        public ImageMover(LeftPanel lp, JPanel p, JPanel gp)
            left = lp;
            right = p;
            glassPanel = gp;
            offset = new Point();
            dragging = false;
            selected = false;
        public void mousePressed(MouseEvent e)
            Point p = e.getPoint();
            // which panel is the mouse over
            if(!setActivePanel(p));
                return;
            // get reference to imageLabel or return
            selectedComponent = getImageLabel();
            if(selectedComponent == null)
                return;
            Rectangle labelR = selectedComponent.getBounds();
            Rectangle panelR = activePanel.getBounds();
            if(labelR.contains(p.x - panelR.x, p.y))
                activePanel.remove(selectedComponent);
                selected = true;
                glassPanel.add(selectedComponent);
                offset.x = p.x - labelR.x - panelR.x;
                offset.y = p.y - labelR.y - panelR.y;
                dragging = true;
        public void mouseReleased(MouseEvent e)
            Point p = e.getPoint();
            if(!contains(glassPanel, selectedComponent))
                return;
            glassPanel.remove(selectedComponent);
            setActivePanel(p);
            activePanel.add(selectedComponent);
            Rectangle r = activePanel.getBounds();
            int x = p.x - offset.x - r.x;
            int y = p.y - offset.y;
            Dimension d = selectedComponent.getSize();
            selectedComponent.setBounds(x, y, d.width, d.height);
            glassPanel.repaint();
            activePanel.repaint();
            dragging = false;
        public void mouseDragged(MouseEvent e)
            if(dragging)
                Point p = e.getPoint();
                int x = p.x - offset.x;
                int y = p.y - offset.y;
                Dimension d = selectedComponent.getSize();
                selectedComponent.setBounds(x, y, d.width, d.height);
                if(!selected)
                    activePanel.repaint();
                    selected = false;
                glassPanel.repaint();
        private boolean contains(JPanel p, Component comp)
            Component[] c = p.getComponents();
            for(int j = 0; j < c.length; j++)
                if(c[j] == comp)
                    return true;
            return false;
        private boolean setActivePanel(Point p)
            activePanel = null;
            Rectangle r = left.getBounds();
            if(r.contains(p))
                activePanel = left;
            r = right.getBounds();
            if(r.contains(p))
               activePanel = right;
            if(activePanel != null)
                return true;
            return false;
        private Component getImageLabel()
            Component[] c = activePanel.getComponents();
            for(int j = 0; j < c.length; j++)
                if(c[j].getName().equals("imageLabel"))
                    return c[j];
            return null;
    }

  • Drag and Drop between two list boxes

    Hi all
    I am working over Drag and Drop .. i have to implement Drag and Drop between two list boxes .. both list box exist in same page ..each list box have number of rows.. please give me some idea ... as i am new for JSP and Servlet...
    Thanks in advance
    Regards
    Vaibhav

    Hi all
    I am working over Drag and Drop .. i have to
    implement Drag and Drop between two list boxes ..
    both list box exist in same page ..each list box have
    number of rows.. please give me some idea ... as i am
    new for JSP and Servlet...
    Something close to what you are looking for is Select Mover in Coldtags suite:
    http://www.servletsuite.com/jsp.htm

  • Drag and Drop between two java applications

    Hi,
    I am trying to implement drag and drop between two instances of our java application. When i drop the content on the target, the data flavors are transmitted properly, but i get the exception :
    java.awt.dnd.InvalidDnDOperationException: No drop current
         at sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:201)
         at sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:45)
         at java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:359)
         at com.ditechcom.consulbeans.TDNDTree.drop(TDNDTree.java:163)
         at java.awt.dnd.DropTarget.drop(DropTarget.java:404)
         at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:547)
    How can i fix this ?
    Thanks a lot,
    Karthik

    Play with this;-import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.dnd.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    // Credit to bbritna who I stole it from in the 'New To ..' Forum
    public class DragComps implements DragGestureListener, DragSourceListener,
                                         DropTargetListener, Transferable{
        static final DataFlavor[] supportedFlavors = { null };
        static{
              try {
                  supportedFlavors[0] = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType);
              catch (Exception ex) { ex.printStackTrace(); }
        Object object;
        // Transferable methods.
        public Object getTransferData(DataFlavor flavor) {
               if (flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType))
             return object;
               else return null;
        public DataFlavor[] getTransferDataFlavors() {
               return supportedFlavors;
        public boolean isDataFlavorSupported(DataFlavor flavor) {
               return flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType);
        // DragGestureListener method.
        public void dragGestureRecognized(DragGestureEvent ev)    {
               ev.startDrag(null, this, this);
        // DragSourceListener methods.
        public void dragDropEnd(DragSourceDropEvent ev) { }
        public void dragEnter(DragSourceDragEvent ev)   { }
        public void dragExit(DragSourceEvent ev)        { }
        public void dragOver(DragSourceDragEvent ev) {
               object = ev.getSource(); }
        public void dropActionChanged(DragSourceDragEvent ev) { }
        // DropTargetListener methods.
        public void dragEnter(DropTargetDragEvent ev) { }
        public void dragExit(DropTargetEvent ev)      { }
        public void dragOver(DropTargetDragEvent ev)  {
               dropTargetDrag(ev); }
        public void dropActionChanged(DropTargetDragEvent ev) {
           dropTargetDrag(ev); }
        void dropTargetDrag(DropTargetDragEvent ev) {
               ev.acceptDrag(ev.getDropAction()); }
        public void drop(DropTargetDropEvent ev)    {
               ev.acceptDrop(ev.getDropAction());
                   try {
                       Object target = ev.getSource();
                      Object source = ev.getTransferable().getTransferData(supportedFlavors[0]);
                       Component component = ((DragSourceContext) source).getComponent();
                       Container oldContainer = component.getParent();
                       Container container = (Container) ((DropTarget) target).getComponent();
                       container.add(component);
                       oldContainer.validate();
                       oldContainer.repaint();
                       container.validate();
                       container.repaint();
                   catch (Exception ex) { ex.printStackTrace(); }
                   ev.dropComplete(true);
        public static void main(String[] arg)    {
              JButton button = new JButton("Drag this button");
              JLabel label = new JLabel("Drag this label");
              JCheckBox checkbox = new JCheckBox("Drag this check box");
              JFrame source = new JFrame("Source Frame");
              Container source_content = source.getContentPane();
              source.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              source_content.setLayout(new FlowLayout());
              source_content.add(button);
              source_content.add(label);
              JFrame target = new JFrame("Target Frame");
              Container target_content = target.getContentPane();
              target.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              target_content.setLayout(new FlowLayout());
              target_content.add(checkbox);
              DragComps dndListener = new DragComps();
              DragSource dragSource = new DragSource();
              DropTarget dropTarget1 = new DropTarget(source_content,
              DnDConstants.ACTION_MOVE, dndListener);
              DropTarget dropTarget2 = new DropTarget(target_content,
              DnDConstants.ACTION_MOVE, dndListener);
              DragGestureRecognizer dragRecognizer1 =
              dragSource.createDefaultDragGestureRecognizer(button,
              DnDConstants.ACTION_MOVE, dndListener);
              DragGestureRecognizer dragRecognizer2 =
              dragSource.createDefaultDragGestureRecognizer(label,
              DnDConstants.ACTION_MOVE, dndListener);
              DragGestureRecognizer dragRecognizer3 =
              dragSource.createDefaultDragGestureRecognizer(checkbox,
              DnDConstants.ACTION_MOVE, dndListener);
              source.setBounds(0, 200, 200, 200);
              target.setBounds(220, 200, 200, 200);
              source.show();
              target.show();
    }[/code                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Drag and drop between computers

    Can you drag and drop between computers on the same network? I am using leopard and can move files via the finder; when using screen sharing it would be good to drag and drop between screens.
    GH

    GH wrote:
    Can you drag and drop between computers on the same network? I am using leopard and can move files via the finder; when using screen sharing it would be good to drag and drop between screens.
    Well, the obvious question is... did you try just dragging them between screens, and what happened? My guess is that it works - but if it doesn't, there's the nifty Get Clipboard Contents/Paste Clipboard contents commands that work between screens, and they work to copy and paste files cross-computer (which is actually much more convenient than drag-n-drop, since you don't have to worry about positioning two windows juuusst right...)
    s.

  • Drag and drop row within same table.

    Version 12.1.2
    I am trying to implement drag and drop row within same table, and I am trying to follow this sample from Frank:
    http://www.oracle.com/technetwork/developer-tools/adf/learnmore/106-reorder-table-rows-1921121.pdf
    But, I am getting this cast exception. The code I have in my dropEvent bean is identical to whats on the sample.
    oracle.jbo.server.ViewRowImpl cannot be cast to oracle.jbo.uicli.binding.JUCtrlHierNodeBinding
    ADF_FACES-60097:For more information, please see the server's error log for an entry beginning with: ADF_FACES-60096:Server Exception during PPR, #1
    Not sure if anything has changed on 12c release, or if I am missing anything.
    Here is my complete code:
    public DnDAction doDnD(DropEvent dropEvent) {
    RichTable table = (RichTable) dropEvent.getDragComponent();
    List dropRowKey = (List) dropEvent.getDropSite();
    if (dropRowKey == null) {
    return DnDAction.NONE;
    Transferable t = dropEvent.getTransferable();
    DataFlavor<RowKeySet> df = DataFlavor.getDataFlavor(RowKeySet.class, "rowmove");
    RowKeySet rks = t.getData(df);
    Iterator iter = rks.iterator();
    List draggedRowKey = (List) iter.next();
    JUCtrlHierNodeBinding draggeRowNode = (JUCtrlHierNodeBinding) table.getRowData(draggedRowKey);
    Row dragRow = draggeRowNode.getRow();
    JUCtrlHierNodeBinding dropRowObject = (JUCtrlHierNodeBinding) table.getRowData(dropRowKey);
    Row dropRow = dropRowObject.getRow();
    //get the table's ADF JUCtrlHierBinding
    CollectionModel collectionModel = (CollectionModel) table.getValue();
    JUCtrlHierBinding treeBinding = (JUCtrlHierBinding) collectionModel.getWrappedData();
    DCIteratorBinding objectsIterator = treeBinding.getDCIteratorBinding();
    RowSetIterator rsi = objectsIterator.getRowSetIterator();
    int indexOfDropRow = rsi.getRangeIndexOf(dropRow);
    dragRow.removeAndRetain();
    rsi.insertRowAtRangeIndex(indexOfDropRow, dragRow);
    objectsIterator.setCurrentRowIndexInRange(indexOfDropRow);
    AdfFacesContext adfctx = AdfFacesContext.getCurrentInstance();
    adfctx.addPartialTarget(table.getParent());
    return DnDAction.MOVE;
    It does not seem to like this line of code:
    JUCtrlHierNodeBinding draggeRowNode = (JUCtrlHierNodeBinding) table.getRowData(draggedRowKey);
    I would greatly appreciate any help.
    Thanks.

    Well there has bee a changes somehow. using 12c
    table.getRowData(draggedRowKey);
    returns a ViewRowImpl and no longer anything which can be convertet to JUCtrlHierNodeBinding. Anyway, the fix is easy:
        public DnDAction onDepartmentsRowDrop(DropEvent dropEvent) {
            //get the table instance. This information is later used
            //to determine the tree binding and the iterator binding
            RichTable table = (RichTable) dropEvent.getDragComponent();
            List dropRowKey = (List) dropEvent.getDropSite();
            //if no dropsite then drop area was not a data area
            if (dropRowKey == null) {
                return DnDAction.NONE;
            //The transferable is the payload that contains the dragged row's
            //row key that we use to access the dragged row handle in the ADF
            //iterator binding
            Transferable t = dropEvent.getTransferable();
            //get the row key set of the dragged row. The "rowmove" string is the
            //discriminant defined on the drag source and the collectionDrop target.
            DataFlavor<RowKeySet> df = DataFlavor.getDataFlavor(RowKeySet.class, "rowmove");
            RowKeySet rks = t.getData(df);
            Iterator iter = rks.iterator();
            //for this use case the re-order of rows is one-by-one, which means that the rowKeySet
            //should only contain a single entry. If it contains more then still we only look at a
            //singe (first) row key entry
            List draggedRowKey = (List) iter.next();
            //get access to the oracle.jbo.Row instance represneting this table row
            Object objdragg = table.getRowData(draggedRowKey);
            Row dragRow = (Row) objdragg;
            Object objdrop = table.getRowData(dropRowKey);
            Row dropRow = (Row) objdrop;
            //get the table's ADF JUCtrlHierBinding
            CollectionModel collectionModel = (CollectionModel) table.getValue();
            JUCtrlHierBinding treeBinding = (JUCtrlHierBinding) collectionModel.getWrappedData();
            //get access to the ADF iterator binding used by the table and the underlying RowSetIterator.
            //The RowSetIterator allows us to remove and re-instert the dragged row
            DCIteratorBinding departmentsIterator = treeBinding.getDCIteratorBinding();
            RowSetIterator rsi = departmentsIterator.getRowSetIterator();
            int indexOfDropRow = rsi.getRangeIndexOf(dropRow);
            //remove dragged row from collection so it can be added back
            dragRow.removeAndRetain();
            rsi.insertRowAtRangeIndex(indexOfDropRow, dragRow);
            //make row current in ADF iterator.
            departmentsIterator.setCurrentRowIndexInRange(indexOfDropRow);
            //ppr the table
            AdfFacesContext adfctx = AdfFacesContext.getCurrentInstance();
            //note that the refresh of the table didn't work when refreshing the table
            //so I needed to refresh the container component (af:panelStretchLayout).
            adfctx.addPartialTarget(table.getParent());
            return DnDAction.MOVE;
    does the trick. I changed the line to
    //get access to the oracle.jbo.Row instance represneting this table row
            Object objdragg = table.getRowData(draggedRowKey);
            Row dragRow = (Row) objdragg;
    so you don't need the detour through the JUCtrlHierNodeBinding any longer.
    Timo

  • Drag And drop between 2 UITableViewCells

    Hi i am new to this objective -c and cocoa touch's world.
    Can anyone tell me or share some code/link how to drag and drop between 2 UITable View cells.
    I googled found some code snippets but that doesn't worked effectively.
    http://tuts9.com/questions/65890/tutorial-on-how-to-drag-and-drop-item-from-uita bleview-to-uitableview.
    Cheers

    check this link, it has a very similar example: (with list
    component and removes the item from the old list)
    http://livedocs.adobe.com/flex/3/html/help.html?content=dragdrop_7.html
    check the dragOver event of the destination component. You
    can reject the drag and add a copy to your list or accept the drag
    and add a copy to the source's list.

  • Still no drag and drop between tabbed documents

    Working with multiple documents opened at the same time is my everyday workflow and I'm sure I am not alone.
    When Adobe introduced tabbed view it was finally a solution to messy multiple opened documents but they omited the biggest advantage in this workflow which is drag and drop of object from one to doc to the other.
    In order to do so you have to go to Arrange button (CS5) or Window>Arrange (CS6) and choose to tile or float all documents. That is stupid and inefficient.
    What we need is to grab a layer and drag it onto a another doc tab and Photoshop should switch to that tab immediately. You can drag and drop between separate Illustrator and PS files but you can't drag and drop within PS which doesn't make any sense.
    Copy and paste is just as not as quick solution as drag and drop.
    And while you at it why not make empty space after tabs double clickable to get open document window, kind of like when you have no file opened you can double click the gray area.

    I keep tagging my agreement to this everytime I see it requested - from multiple users, including myself.
    Dragging from the layers panel seems a much more logical method to me. What's really frustrating was that we had this in CS4, and it was removed in CS5 and is still absent in CS6.

Maybe you are looking for

  • Problem whith Adobe Application Manager

    I can't get the application manager to start downloading the products, it say's istallation failed, the download appears to be corrupted. And it's happening with all the products. What can i do???

  • IPad and Camera Kit

    I plan on getting the Apple "camera kit" for the iPad, so that I can upload photos and video from a camera while traveling. Apple says that you will be able to transfer photos AND video. But I had a question. I will have a Canon DSLR T2i(rebel) that

  • IPhone 4 will not charge - it connects, but then disconnects

    iPhone 4 8gb/White. Purchased November 2011, AT&T.  Just started happening Saturday (2 days ago). Plug in the 30-pin connector, and USB to PC: it will chirp, but then stop.  This same PC/USB connector supports 2 other iPods (4th gen) and a iPhone 4S

  • MacBook shuts down instead of sleeping when battery low

    Like many people, I had the infamous MacBook sudden shutdown problem where my MacBook (original model) would suddenly shut down wihtout warning regardless of if it was running off battery or AC adapter. I took the MacBook into the Apple store, they d

  • Sending document back through sentry

    Hello - (Adobe Central 5.5 on iSeries) I have found that in order to resend a spooled file back through a sentry and have it print again, I have to first clear the log files.   Is there some trigger that keeps track of printed documents in the log fi