Help needed with virtual bookshelf - drag and drop between components?
Hi there,
Im trying to create a virtual bookshelf, where book spines are individual movie clips that can be dragged and re-ordered on the shelf. At the moment i can drag the spines to one assigned target, but not any target or 'nudge' the position of the other books along.
Im sorry if this is a bit vague i'm not that experienced in as3, please feel free to ask any questions and i'll do my best to answer. Im thinking that an array is necessary which holds the positions, but im not sure how to put it all together!
Any help greatly appreciated! The code i have so far is:
import flash.events.MouseEvent;
import flash.display.MovieClip;
var dragArray:Array = [red, blue, green, purple, yellow];
var matchArray:Array = [target1, target2, target3, target4, target5];
var currentClip:MovieClip;
var startX:Number;
var startY:Number;
for(var i:int = 0; i < dragArray.length; i++) {
dragArray[i].buttonMode = true;
dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
matchArray[i].alpha = 0.2;
function item_onMouseDown(event:MouseEvent):void {
currentClip = MovieClip(event.currentTarget);
startX = currentClip.x;
startY = currentClip.y;
addChild(currentClip); //bring to the front
currentClip.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
function stage_onMouseUp(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
currentClip.stopDrag();
var index:int = dragArray.indexOf(currentClip);
var matchClip:MovieClip = MovieClip(matchArray[index]);
if(matchClip.hitTestPoint(currentClip.x, currentClip.y, true)) {
//a match was made! position the clip on the matching clip:
currentClip.x = matchClip.x;
currentClip.y = matchClip.y;
//make it not draggable anymore:
currentClip.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
currentClip.buttonMode = false;
} else {
//match was not made, so send the clip back where it started:
currentClip.x = startX;
currentClip.y = startY;
Morning kglad, thanks for your help yesterday. I tried the code again and still have the same problems - you cant drop over another book and it nudges that book along aswell as the others to the right. Also if you drop a book back in its originally place - sometimes - it creates a gap next to it. The book still only seem happy in their original starting positions!
Its very close, im continuing to try fiddle with it to get it working, have the whole of today to try and do this so the coffee is on!
Ive taken some code out that I realise this morning I didnt't need - e.g the code that stops a book being dragged once you have positioned it (they need to be able to be repositioned more than once, and the code that sends a book back to its original position if you didnt reposition it over a target. If this was foolish please tell me! I have a feeling the latter was!
so the code im trying to get working at the moment is:
import flash.events.MouseEvent;
import flash.display.MovieClip;
var dragArray:Array = [red, blue, green, purple, yellow];
var matchArray:Array = [target1, target2, target3, target4, target5];
var currentClip:MovieClip;
var startX:Number;
var startY:Number;
for(var i:int = 0; i < dragArray.length; i++) {
// REMOVED
//dragArray[i].buttonMode = true;
dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
matchArray[i].alpha = 0.2;
function item_onMouseDown(event:MouseEvent):void {
currentClip = MovieClip(event.currentTarget);
startX = currentClip.x;
startY = currentClip.y;
addChild(currentClip); //bring to the front
currentClip.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
function stage_onMouseUp(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
currentClip.stopDrag();
var index:int = dragArray.indexOf(currentClip);
var matchClip:MovieClip = MovieClip(matchArray[index]);
if(matchClip.hitTestPoint(currentClip.x, currentClip.y, true)) {
//a match was made against a target:
currentClip.x = matchClip.x;
currentClip.y = matchClip.y;
//REMOVED
//make it not draggable anymore:
//currentClip.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
//currentClip.buttonMode = false;
for(var i:int=dragArray.indexOf(currentClip)+1;i<dragArray.length;i++){
dragArray[i].x+=currentClip.width;
// REMOVED
//else {
//match was not made, so send the clip back where it started:
//currentClip.x = startX;
//currentClip.y = startY;
Similar Messages
-
How to design a drag and drop between to containment references
Hello,
Can someone help me to desgin a drag and drop between two containment references shared by the same container ?
I want two design this DND between two views : each is displaying one of the two references.
I've tried to use for the target view an EditingDomainDropAdapter with generated item providers. But it is considering the two references as children features for the dragged element and the drop can then be done in the wrong reference.
I've also tried to override generated item providers two only consider the reference viewed in the target view. But in this case the drag and drop command cannot execute because no parent is found for the dragged element.
I've considered too put the item providers adapter factory of the source view in the dragged data, and design an EditingDomainDropAdatper using this factory for building the drag part of the drag an drop command. But it seems to be a big a job...
So I prefer to ask your help to find the wright design for my need.
Best regards,
LaurentOn 05/08/2015 8:44 PM, voiry laurent wrote:
> Hello,
>
> Can someone help me to desgin a drag and drop between two containment
> references shared by the same container ?
>
> I want two design this DND between two views : each is displaying one
> of the two references.
How did you achieve that result? By modifying the item provider's
getChildrenFeatures(Object)?
>
> I've tried to use for the target view an EditingDomainDropAdapter with
> generated item providers. But it is considering the two references as
> children features for the dragged element and the drop can then be
> done in the wrong reference.
Yes,
org.eclipse.emf.edit.provider.ItemProviderAdapter.getChildFeature(Object, Object)
does that. That's why I ask how you specialized it to show only one of
the features, because if you did it by specializing what's returned by
getChildrenFeatures it should only consider the one reference, and not
both...
>
> I've also tried to override generated item providers two only consider
> the reference viewed in the target view. But in this case the drag and
> drop command cannot execute because no parent is found for the dragged
> element.
I'm not sure specifically what you did, but getChildFeature should
return your desired target feature...
>
> I've considered too put the item providers adapter factory of the
> source view in the dragged data, and design an
> EditingDomainDropAdatper using this factory for building the drag part
> of the drag an drop command. But it seems to be a big a job...
Seems not necessary. I imagine each view has its own specialized item
provider, each returning the desired feature for getChildrenFeatures,
and that all else should just work as a result.
>
> So I prefer to ask your help to find the wright design for my need.
>
> Best regards,
> Laurent -
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
MyProblemsYou 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;
} -
Help with Basics! Dragging and dropping clips
Good Morning! I've been frustrating myself for weeks just trying to get started. I've uploaded all my video clips through a firewire connection and they look fine. However, when I simply want to drag and drop a clip into the timeline it doesn't work. I have tried it on both the clip and the timeline viewer and have tried cropped and uncroppd videos clips. HELP! I thought this was the easy part. I even have a book, video and online help, but everything says simply "drag and drop clip" Any help is welcome. Thanks! Quail
Hi Matthew:
Maybe he could try deleting the iMovie preference files? Seems to fix some of the strangest of problems at times-do you agree?
Quail:
Try deleting the imovie preference file. Locate a file named com.apple.imovie.plist and get rid of it. Then empty the trash, run a permissions repair with disk utility and restart. That should do it. The files you need to delete are found in:
/Users/YourName/Library/Preferences/com.apple.imovie.plist
Sue -
Drag and Drop using Components[
Hi,
As anyone used Drag and Drop for components? I mean, allowing the user to drag and drop a component around a container? Just curious, so far from what I've seen, the only things that can be dragged/dropped are properties of a given object, such as 'text" from a JLabel.
thanksIMHO, you don't need fancy drag and drop features to do that. Implementing MouseInputListener and listening for mouseDragged is a good start. Then setting the component's bounds depending on the location of the mouse at the mouseReleased event (wrt the starting offset) could be a good idea (if you're using absolute positioning, of course).
From there, it all depends on what you want it to look like during the "transfer". You could, for instance paint the component in a BufferedImage at the start of the D&D and then paint the image with transparency as the mouse is moving.
Camickr had an interesting post that might help you :
http://forum.java.sun.com/thread.jspa?forumID=57&threadID=492100 -
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.
Cheerscheck 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. -
Drag and Drop between JTree and Labels in 2 different panes
Hi,
I am using JDK 1.4.1 and am trying to implement Drag n Drop between a JTree and JLabels with ImageIcons, both on different panes.
I got the DnD working fine on the tree. but i cant get to drag and drop the label from the other pane, on the Jtree as a node. I am getting confused with the DataFlavors, and also wonder if there is something else that i have to do for DnD between 2 panes. Can someone give me any leads on this, please? The Panes I am talking about are splitpanes.
thanks,
Sri.hey thanks Dennis!! I was hoping you would respond to my question, as I have seen a lot of your replies. yes, the example you gave would be helpful. but i am trying to implement this in 1.4.1, with the new drag and drop in swing. and i am getting confused wiht theh data flavors etc.
my problem at hand is :
I have a tree on the left pane. i can drag and drop the nodes on the tree itself. (i already did that...no problem). I have Jlabels with imageicons (actually wrapper classes with labels and imageicons) on the right pane. i have to be able to drag these labels to the tree such that they form a node.
I have one class the NodeSelection class which extends TransferHandler and implements Transferable. i was able to do DnD for the tree using this. I customized the importData method in this.I thought that i can just use the same class to create the transferhandler and transferable, and just use a different implementation for the importData method if the data being dragged is from the label.
well, my thoughts and ideas were ok...but i can implement it...so they must be wrong ;-)
Can u please suggest another way to do this. I have a deadline to meet and am stuck here :-( any suggestions or tips or hints would be very helpful and appreciated!!
Thanks,
Sri. -
Hi,
I am using JDK 1.4.1 and am trying to implement Drag n Drop between a JTree and Labels with ImageIcons, both on different panes.
I got the DnD working just on the tree. but i cant get to drag and drop the label on the Jtree as a node. I am getting confused with the DataFlavors, and also wonder if there is something else that i have to do for DnD between 2 panes. Can someone give me any leads on this, please?
thanks,
Sri.hey thanks Dennis!! I was hoping you would respond to my question, as I have seen a lot of your replies. yes, the example you gave would be helpful. but i am trying to implement this in 1.4.1, with the new drag and drop in swing. and i am getting confused wiht theh data flavors etc.
my problem at hand is :
I have a tree on the left pane. i can drag and drop the nodes on the tree itself. (i already did that...no problem). I have Jlabels with imageicons (actually wrapper classes with labels and imageicons) on the right pane. i have to be able to drag these labels to the tree such that they form a node.
I have one class the NodeSelection class which extends TransferHandler and implements Transferable. i was able to do DnD for the tree using this. I customized the importData method in this.I thought that i can just use the same class to create the transferhandler and transferable, and just use a different implementation for the importData method if the data being dragged is from the label.
well, my thoughts and ideas were ok...but i can implement it...so they must be wrong ;-)
Can u please suggest another way to do this. I have a deadline to meet and am stuck here :-( any suggestions or tips or hints would be very helpful and appreciated!!
Thanks,
Sri. -
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. -
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 -
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 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 -
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 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, JohannesThanks 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 -
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,
KarthikPlay 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
Maybe you are looking for
-
My iPhone 3GS no longer connects to home network but connects to others
I recently moved my router into another room and when I did, I messed it up big time. I fixed it and now the internet does work, BUT my iphone will not connect wirelessly to it. The network shows up on the phone, asks for a passcode and I input the
-
REG: Creation of Warehouse product using transaction /SCWM/MAT1
Hi, My requirement is to create Warehouse Products using Transaction /SCWM/MAT1 , I am using BAPI_PRDSRVAPS_SAVEMULTI2 , but I cound't able to process this because I did find Warehouse number in this BAPI, Am I using correct BAPI, if that is the case
-
hello i hv a problem .in transaction fk10n.i hv been copy its program.i hv to add one more field as a plant code .and the data should be fatch depend on plant code.because plant code may be vary. code is report RFARBALANCE message-id FDBL. ...tab
-
How to run a process PSPPYRUN or PSPPYBLD in PeopleSoft Test Framework ?
How to run a process PSPPYRUN or PSPPYBLD in PeopleSoft Test Framework ? Please advise on the below scripts , 1 True Browser Start_Login 2 True Browser Set_URL PORTAL 3
-
I Recently Unblocked My Iphone 3G and Now I Cant Connect To My Wi Fi At Home. Help!
I Recently Unblocked My Iphone 3G and Now I Cant Connect To My Wi Fi At Home. Help!