Drag and Drop Interaction with 50+ Drop Targets

Hello,
I'm fairly new to Captivate 7 but very familiar with Flash. I'm tasked with a project that I would like to do with the drag and drop interaction widget from Captivate 7. Basically, we need our learners to identify the locations of our resorts on a map. Select the name of the resort, drag and drop it in the city/state or country where located. My question is can Captivate handle this task? To me, it seems as a large task for Captivate to handle, and so I was thinking of coding it in Flash.
Here is what I need:
1.- List of all the properties at bottom with the drop target being a map of the US or world and have the location for each property as the drop target.
2.- When the resort/property is selected, the name will change to the three letter code. Example: New York City, when clicked = NYC and the map itself to reflect the 3 letter code once dropped on the map if correct.
3. If incorrect, the listed item will revert to the long name and return to the list.
4. If this can be graded, it would be best.
I can break the project into different regions but if I wanted to keep all 300+ properties in one module, will it be an issue? At the very least, I would need to do a minimum of about 50 per module.
Thanks all! I've found this forum to be extremely helpful and the members seem to be eager to help.

var matchingTargetName:String =(event.target.name).substring(0, 1);
Change the name of the target to A and B and the mc A1, A2, A3, A4... and B1, B2,B3...

Similar Messages

  • Drag and Drop game with only two targets

    I created a drag and drop activity where their are five boxes that are supposed to go in to two columns in any order. I found a tutorial online that I based this activity off of.
    The problem is that the tutorial shows you how to make a target for each mc which has worked for all the activities I've made except for this one where I need only two targets. How would I change it so I can have multiple mc's drop on to one target?
    This is my AS:
    var score:Number = 0;
    var objectoriginalX:Number;
    var objectoriginalY:Number;
    growing_mc.buttonMode = true;
    growing_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
    growing_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    gorging_mc.buttonMode = true;
    gorging_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
    gorging_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    dormancy_mc.buttonMode = true;
    dormancy_mc.addEventListener(MouseEvent.MOUSE_DOWN  , pickupObject);
    dormancy_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    cystform_mc.buttonMode = true;
    cystform_mc.addEventListener(MouseEvent.MOUSE_DOWN  , pickupObject);
    cystform_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    hosttrans_mc.buttonMode = true;
    hosttrans_mc.addEventListener(MouseEvent.MOUSE_DOW  N, pickupObject);
    hosttrans_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
    function pickupObject(event:MouseEvent):void {
    event.target.startDrag(true);
    event.target.parent.addChild(event.target);
    objectoriginalX = event.target.x;
    objectoriginalY = event.target.y;
    function dropObject(event:MouseEvent):void {
    event.target.stopDrag();
    var matchingTargetName:String = "target" + event.target.name;
    var matchingTargetisplayObject = getChildByName(matchingTargetName);
    if (event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget){
    event.target.removeEventListener(MouseEvent.MOUSE_  DOWN, pickupObject);
    event.target.removeEventListener(MouseEvent.MOUSE_  UP, dropObject);
    event.target.buttonMode = false;
    event.target.x = matchingTarget.x;
    event.target.y = matchingTarget.y;
    score++;
    scoreField.text = String(score);
    } else {
    event.target.x = objectoriginalX;
    event.target.y = objectoriginalY;
    if(score == 5){
    response_mc.gotoAndStop(2);

    var matchingTargetName:String =(event.target.name).substring(0, 1);
    Change the name of the target to A and B and the mc A1, A2, A3, A4... and B1, B2,B3...

  • Laptop and Desktop interaction with Lightroom

    I'm just getting started with Lightroom and one of my big concerns thusfar has been the interaction between photos with my desktop PC (permanent storage) and travel laptop (Macbook Air).
    I've read a ton of tutorials and posts on the matter, but they seem a bit outside the scope of what I'm doing. Many had people using dropbox to sync the two together, but I think that may be outside the scope of what I'm looking for.<br>
    Basically, here's my setup.<br>
    -Desktop PC houses my entire library of image files. Every night it is backed up to a file server<br>
    -Macbook Air that I take on the road with me<br>
    What I want to be able to do is take my Macbook Air on trips, and during the trip load my images onto it and do some light editing in lightroom. When I get home, I want to move all of the images into my permanent location on my desktop PC and copy the changes I made to the catalog on the road into my catalog that I use at home.<br>
    So I guess my questions are:<br>
    1. How is Lightroom going to handle my images changing locations? Initially they'll be in the default folder on my Mac, where I'll be editing them on the Mac, but eventually I'll move them all over to the storage location on my home PC.<br>
    2. Can I import an entire catalog from my Mac onto the PC?  I think this part is pretty easy but just wanted to make sure.<br>
    3. If I were to store the images on my home PC long-term, could I use dropbox just for the catalog files? I'm envisioning a scenario where the images are on my home PC and the catalog is on Dropbox, always sync'd such that I never have to import/export it, but I'm not sure if this is possible (I'd heard there were some issues with this, but the posts are a few years old).
    4. Does Lightroom need access to the original image files at all times or just when creating the catalog?  That is, if the files are on my home PC and I'm away on my laptop and don't have access to the original files, but do have access to the catalog, will it work?

    What I've done in a similar situation is select the images on the laptop, and then Export as Catalog. That creates a folder with a catalog containing all the edits, and another folder with the files themselves (assuming you check that option in the dialog box). Then I import from that catalog on my desktop.
    There may be a better way, though....

  • Whats the difference between Data Synchronization and Data Replication with a truncated Target?

    Hi Brian: Sorry, the Data Replication task wizard does not support ODBC sources. I don't think there's an easy way to truncate the target tables using a Data Synchronization task, but you should be able to read data from an ODBC source and write it to your target. Cheers,Josh

    I would like to replicate data using an ODBC connection as the source, but the connection does not show up in Data Replication (only Data Sync).  I want to truncate and load everything from the source--can I just use Data Sync for this process? Thanks!!

  • Drag and drop interaction failure captions

    I have a drag and drop interaction with one drop target and multiple drag objects. Only one drag object is the correct answer. When a learner drags an incorrect drag object to the drag target I would like a failure caption -- that's pretty straightforward. However, I want a different failure capture for each of the wrong drag objects so that there is a different explanation of why each object is wrong. Then I need a success caption for when the correct drag object is dragged to the drop target.
    Is this  possible?

    Hi Jay,
    Yes, could create such a scenario, but the Submit button is not used in that case, because the feedback will appear immediately when a drag object has been placed on the target. Is that OK?
    Here the work flow:
    Besides the object, create all the feedback text containers that you need, correct and incorrect and label them so that they are easily recognizable. I labeled them FB_1, FB_2... because my objects were Drop1, Drop2...
    Make those feedbacks initially invisible and group them in Gr_FB
    Create the drag&drop in the normal way with one correct link
    Select the target and in the in the D&D panel, click on the Accept button, change the settings like this
    The advanced actions are pretty simple, standard, with two statements: Hide Gr_FB and Show FB_n  (with the appropriate feedback container - you cannot use Shared actions in this dialog).
    In the D&D panel, choose Infinite for the number of attempts and uncheck the Failure caption.
    Lilybiri

  • Drag and drop advancing when it shouldn't - Any ideas?

    I have created a drag and drop interaction with 4 drop targets and 8 drop sources. All targets will accept all sources but only hold 2. If the drop is "correct" it will execute an advanced action which shows a tick if it is "incorrect" it will play an incorrect sound.
    This is all working fine when you drag the correct items but if you drag 5 incorrect it advances to the next slide unexpectedly. I have everything set to pause and buttons on the screen which should stop the timeline.
    Any ideas how I can stop this from auto-advancing?
    Thanks in advance!

    The reason is in the fact that you are using simple instead of standard advanced actions:
    Why choose Standard over Simple action? - Captivate blog
    I repeated that remark in: Drag&Drop tips - Captivate blog

  • Drag and Drop Interaction Wizard

    I am having problems with the Drag and Drop Interaction Wizard.  I am using Captivate (6.1) and when I launch the wizard I am able to select the drag objects and drop targets, but when I get to Step 3 (mapping), I am unable to map the drag sources to the drop targets.  When I double click on the drag source and draw the arrow to the drop target, the arrow disappears. 
    Has anyone else had this problem?  If so, what did you do about it?

    Hi,
    You do not want to double click on the object in Step 3. All you need to do to map the source to destination, on the Green Items you would notice a '+' symbol, drag and put them on the drop item, you would able to map them easily that way, double clicking them would deselect the object.
    For more clarification, what this video tutorial --
    http://www.youtube.com/watch?v=ILtUftHxmag
    Thanks,
    Anjaneai

  • Intuitive Drag and Drop interaction

    Hi,
    i am working on a drag and drop interaction with a direct feed-back built in. there are 6 dragables and 6 drop sources, which are rectangle smart shapes. depending on the answer which is dragged, i want an x or a check to appear next to the smart shape and then disappear if the answer is changed or the reset button is clicked. sofar i have assigned an advanced action to each drop source telling it to make an x or a check appear, depending on if the answer is correct or not. the problem is, that the x or the check stays in place after the answer has been substituted with another. I also tried assigning the the check or x with a fade in/fade out time, but that didn´t seem to work. i know the easy way is to just assign one correct answer to each drop source, but i want the interaction to be a bit more intuitive. Any ideas on how to solve this problem?
    Thanks!!!
    -N

    I am sorry i am not sure what the abbreviations AFAIK and IMO mean...At the moment i am trying to solve the  problem using conditional actions. on the right are the dragables on the left the drop source. what i was trying was: if 1=1 (true) then show check, hide x else show x hide check (this is the script for inserting the correct answer) for all of the incorrect answers i wrote: if 1=1 (true) then show x, hide check else hide x show check...now i am not sure if this is completely wrong, but it seemed to work. the problem is, i would have to write this script for each drop source, making the corresponding x or check appear...is there a way to make a "global" script?

  • Must click then click and drag for JTable Drag and Drop

    Hi All,
    I've been using Java 1.4 to drag and drop data between two tables in our application. Basically I need to drag the data from individual rows of the source table and insert it into one of the cells in the new table. This works absolutely fine and has made a huge improvement to this portion of our app. I've included example source code below that does a similar thing by transferring data from one table and inserting it into another (it's quite big and also not as well done as the example in our real app but unfortunately I can't send the source for that).
    The thing I've noticed though is that in order to start dragging data I need to click to select it and then press and hold the mouse button to start dragging, whereas under W**dows and just about every other OS you can just press and hold and start dragging straight away. If you try this with a JTable though it just changes the rows you have selected so the drag and drop works but feels a bit clunky and amateurish. I'd like to do something about this such that it works like Windows Explorer (or similar) where you can just press the mouse button and start dragging.
    Any help would be greatly appreciated - and if anybody finds the code useful you're more than welcome to it. Note that the business end of this is CustomTransferHandler.java - this will show you how to insert data at a specific position in a JTable, it's a bit of a faff but not too bad once you've got it sussed.
    Thanks,
    Bart Read
    ===============================================================
    TestFrame.java
    * TestFrame.java
    * Created on October 21, 2002, 4:59 PM
    import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.dnd.*;
    import java.awt.event.*;
    import java.util.TooManyListenersException;
    import javax.swing.*;
    * @author  readb
    public class TestFrame extends javax.swing.JFrame
         private static final String [] NAMES     = {
              "John", "Geoff", "Madeleine", "Maria", "Flanders",
              "Homer", "Marge", "Bart", "Lisa", "Weird Baby" };
         private JTable source;
         private JTable dest;
         private MyTableModel     sourceModel;
         private MyTableModel     destModel;
         private Clipboard          clipboard;
         /** Creates a new instance of TestFrame */
         public TestFrame()
              clipboard = getToolkit().getSystemClipboard();
              Container c = getContentPane();
              c.setLayout( new BorderLayout( 40, 40 ) );
              source = new MyJTable();
              sourceModel = new MyTableModel();
              source.setModel( sourceModel );
              source.setDragEnabled( true );
              CustomTransferHandler handler = new CustomTransferHandler( "Source handler" );
              source.setTransferHandler( handler );
              try
                   source.getDropTarget().addDropTargetListener( handler );
              catch ( TooManyListenersException tmle )
                   tmle.printStackTrace();
              dest = new MyJTable();
              destModel = new MyTableModel();
              dest.setModel( destModel );
              dest.setDragEnabled( true );
              handler = new CustomTransferHandler( "Dest handler" );
              dest.setTransferHandler( handler );
              try
                   dest.getDropTarget().addDropTargetListener( handler );
              catch ( TooManyListenersException tmle )
                   tmle.printStackTrace();
              c.add( new JScrollPane( source ), BorderLayout.WEST );
              c.add( new JScrollPane( dest ), BorderLayout.EAST );
              populate();
         private void populate( MyTableModel model )
              for ( int index = 0; index < NAMES.length; ++index )
                   model.setRow( index, new DataRow( index + 1, NAMES[ index ] ) );
         private void populate()
              populate( sourceModel );
              populate( destModel );
         public static void main( String [] args )
              TestFrame app = new TestFrame();
              app.addWindowListener(
                   new WindowAdapter() {
                        public void windowClosing( WindowEvent we )
                             System.exit( 0 );
              app.pack();
              app.setSize( 1000, 600 );
              app.show();
         private class MyJTable extends JTable
              public boolean getScrollableTracksViewportHeight()
                   Component parent = getParent();
                   if (parent instanceof JViewport)
                        return parent.getHeight() > getPreferredSize().height;
                   return false;
    }=====================================================================
    MyTableModel.java
    * MyTableModel.java
    * Created on October 21, 2002, 4:43 PM
    import java.util.ArrayList;
    * @author  readb
    public class MyTableModel extends javax.swing.table.AbstractTableModel
         private static final int          NUMBER               = 0;
         private static final int          NAME               = 1;
         private static final String []     COLUMN_HEADINGS     = { "Number", "Name" };
         private ArrayList data;
         /** Creates a new instance of MyTableModel */
         public MyTableModel()
              super();
              data = new ArrayList();
         public int getColumnCount()
              return COLUMN_HEADINGS.length;
         public String getColumnName( int index )
              return COLUMN_HEADINGS[ index ];
         public Class getColumnClass( int index )
              switch ( index )
                   case NUMBER:
                        return Integer.class;
                   case NAME:
                        return String.class;
                   default:
                        throw new IllegalArgumentException( "Illegal column index: " + index );
         public int getRowCount()
              return ( null == data ? 0 : data.size() );
         public Object getValueAt( int row, int column )
              DataRow dataRow = ( DataRow ) data.get( row );
              switch ( column )
                   case NUMBER:
                        return new Integer( dataRow.getNumber() );
                   case NAME:
                        return dataRow.getName();
                   default:
                        throw new IllegalArgumentException( "Illegal column index: " + column );
         public void addRow( DataRow row )
              int rowIndex = data.size();
              data.add( row );
              fireTableRowsInserted( rowIndex, rowIndex );
         public void addRows( DataRow [] rows )
              int firstRow = data.size();
              for ( int index = 0; index < rows.length; ++index )
                   data.add( rows[ index ] );
              fireTableRowsInserted( firstRow, data.size() - 1 );
         public void setRow( int index, DataRow row )
              if ( index == data.size() )
                   data.add( row );
              else
                   data.set( index, row );
              fireTableRowsUpdated( index, index );
         public void insertRows( int index, DataRow [] rows )
              for ( int rowIndex = rows.length - 1; rowIndex >= 0; --rowIndex )
                   data.add( index, rows[ rowIndex ] );
              fireTableRowsInserted( index, index + rows.length - 1 );
         public DataRow getRow( int index )
              return ( DataRow ) data.get( index );
         public DataRow removeRow( int index )
              DataRow retVal = ( DataRow ) data.remove( index );
              fireTableRowsDeleted( index, index );
              return retVal;
         public boolean removeRow( DataRow row )
              int index = data.indexOf( row );
              boolean retVal = data.remove( row );
              fireTableRowsDeleted( index, index );
              return retVal;
         public void removeRows( DataRow [] rows )
              for ( int index = 0; index < rows.length; ++index )
                   data.remove( rows[ index ] );
              fireTableDataChanged();
    }=====================================================================
    DataRow.java
    * DataRow.java
    * Created on October 21, 2002, 4:41 PM
    import java.io.Serializable;
    * @author  readb
    public class DataRow implements Serializable
         private int          number;
         private String     name;
         /** Creates a new instance of DataRow */
         public DataRow( int number, String name )
              this.number = number;
              this.name = name;
         public int getNumber()
              return number;
         public String getName()
              return name;
         public String toString()
              return String.valueOf( number ) + ": " + name;
    }======================================================================
    CustomTransferHandler.java
    * CustomTransferHandler.java
    * Created on October 22, 2002, 8:36 AM
    import java.awt.*;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.ClipboardOwner;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.dnd.*;
    import java.awt.event.InputEvent;
    import java.io.IOException;
    import java.util.Arrays;
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JComponent;
    import javax.swing.JTable;
    import javax.swing.TransferHandler;
    * @author  readb
    public class CustomTransferHandler
                   extends TransferHandler
                   implements Transferable, ClipboardOwner, DropTargetListener
         public static final DataFlavor     ROW_ARRAY_FLAVOR     = new DataFlavor( DataRow[].class, "Multiple rows of data" );
         private String               name;
         private ImageIcon          myIcon;
         private     DataRow []          data;
         private boolean               clipboardOwner                    = false;
         private int                    rowIndex                         = -1;
         /** Creates a new instance of CustomTransferHandler */
         public CustomTransferHandler( String name )
              this.name = name;
         public boolean canImport( JComponent comp, DataFlavor [] transferFlavors )
              System.err.println( "CustomTransferHandler::canImport" );
              if ( comp instanceof JTable && ( ( JTable ) comp ).getModel() instanceof MyTableModel )
                   for ( int index = 0; index < transferFlavors.length; ++index )
                        if ( ! transferFlavors[ index ].equals( ROW_ARRAY_FLAVOR ) )
                             return false;
                   return true;
              else
                   return false;
         protected Transferable createTransferable( JComponent c )
              System.err.println( "CustomTransferHandler::createTransferable" );
              if ( ! ( c instanceof JTable ) || ! ( ( ( JTable ) c ).getModel() instanceof MyTableModel ) )
                   return null;
              this.data = null;
              JTable               table     = ( JTable ) c;
              MyTableModel     model     = ( MyTableModel ) table.getModel();
              Clipboard          cb          = table.getToolkit().getSystemClipboard();
              cb.setContents( this, this );
              clipboardOwner = true;
              int [] selectedRows = table.getSelectedRows();
              Arrays.sort( selectedRows );
              data = new DataRow[ selectedRows.length ];
              for ( int index = 0; index < data.length; ++index )
                   data[ index ] = model.getRow( selectedRows[ index ] );
              return this;
         public void exportAsDrag( JComponent comp, InputEvent e, int action )
              super.exportAsDrag( comp, e, action );
              Clipboard          cb          = comp.getToolkit().getSystemClipboard();
              cb.setContents( this, this );
         protected void exportDone( JComponent source, Transferable data, int action )
              System.err.println( "CustomTransferHandler::exportDone" );
              if ( TransferHandler.MOVE == action && source instanceof JTable && ( ( JTable ) source ).getModel() instanceof MyTableModel )
                   JTable table = ( JTable ) source;
                   MyTableModel model = ( MyTableModel ) table.getModel();
                   int [] selected = table.getSelectedRows();
                   for ( int index = selected.length - 1; index >= 0; --index )
                        model.removeRow( selected[ index ] );
         public void exportToClipboard( JComponent comp, Clipboard clip, int action )
              System.err.println( "CustomTransferHandler::exportToClipboard" );
         public int getSourceActions( JComponent c )
              System.err.println( "CustomTransferHandler::getSourceActions" );
              if ( ( c instanceof JTable ) && ( ( JTable ) c ).getModel() instanceof MyTableModel )
                   return MOVE;
              else
                   return NONE;
          *     I've commented this out because it doesn't appear to work in any case.
          *     The image isn't null but as far as I can tell this method is never
          *     invoked.
    //     public Icon getVisualRepresentation( Transferable t )
    //          System.err.println( "CustomTransferHandler::getVisualRepresentation" );
    //          if ( t instanceof CustomTransferHandler )
    //               if ( null == myIcon )
    //                    try
    //                         myIcon = new ImageIcon( getClass().getClassLoader().getResource( "dragimage.gif" ) );
    //                    catch ( Exception e )
    //                         System.err.println( "CustomTransferHandler::getVisualRepresentation: exception loading image" );
    //                         e.printStackTrace();
    //                    if ( null == myIcon )
    //                         System.err.println( "CustomTransferHandler::getVisualRepresentation: myIcon is still NULL" );
    //               return myIcon;
    //          else
    //               return null;
         public boolean importData( JComponent comp, Transferable t )
              System.err.println( "CustomTransferHandler::importData" );
              super.importData( comp, t );
              if ( ! ( comp instanceof JTable ) )
                   return false;
              if ( ! ( ( ( JTable ) comp ).getModel() instanceof MyTableModel ) )
                   return false;
              if ( clipboardOwner )
                   return false;
              if ( !t.isDataFlavorSupported( ROW_ARRAY_FLAVOR ) )
                   return false;
              try
                   data = ( DataRow [] ) t.getTransferData( ROW_ARRAY_FLAVOR );
                   return true;
              catch ( IOException ioe )
                   data = null;
                   return false;
              catch ( UnsupportedFlavorException ufe )
                   data = null;
                   return false;
         public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
              System.err.println( "MyTransferable::getTransferData" );
              if ( flavor.equals( ROW_ARRAY_FLAVOR ) )
                   return data;
              else
                   throw new UnsupportedFlavorException( flavor );
         public DataFlavor[] getTransferDataFlavors()
              System.err.println( "MyTransferable::getTransferDataFlavors" );
              DataFlavor [] flavors = new DataFlavor[ 1 ];
              flavors[ 0 ] = ROW_ARRAY_FLAVOR;
              return flavors;
         public boolean isDataFlavorSupported( DataFlavor flavor )
              System.err.println( "MyTransferable::isDataFlavorSupported" );
              return flavor.equals( ROW_ARRAY_FLAVOR );
         public void lostOwnership( Clipboard clipboard, Transferable transferable )
              clipboardOwner = false;
         /** Called while a drag operation is ongoing, when the mouse pointer enters
          * the operable part of the drop site for the <code>DropTarget</code>
          * registered with this listener.
          * @param dtde the <code>DropTargetDragEvent</code>
         public void dragEnter(DropTargetDragEvent dtde)
         /** Called while a drag operation is ongoing, when the mouse pointer has
          * exited the operable part of the drop site for the
          * <code>DropTarget</code> registered with this listener.
          * @param dte the <code>DropTargetEvent</code>
         public void dragExit(DropTargetEvent dte)
         /** Called when a drag operation is ongoing, while the mouse pointer is still
          * over the operable part of the drop site for the <code>DropTarget</code>
          * registered with this listener.
          * @param dtde the <code>DropTargetDragEvent</code>
         public void dragOver(DropTargetDragEvent dtde)
         /** Called when the drag operation has terminated with a drop on
          * the operable part of the drop site for the <code>DropTarget</code>
          * registered with this listener.
          * <p>
          * This method is responsible for undertaking
          * the transfer of the data associated with the
          * gesture. The <code>DropTargetDropEvent</code>
          * provides a means to obtain a <code>Transferable</code>
          * object that represents the data object(s) to
          * be transfered.<P>
          * From this method, the <code>DropTargetListener</code>
          * shall accept or reject the drop via the
          * acceptDrop(int dropAction) or rejectDrop() methods of the
          * <code>DropTargetDropEvent</code> parameter.
          * <P>
          * Subsequent to acceptDrop(), but not before,
          * <code>DropTargetDropEvent</code>'s getTransferable()
          * method may be invoked, and data transfer may be
          * performed via the returned <code>Transferable</code>'s
          * getTransferData() method.
          * <P>
          * At the completion of a drop, an implementation
          * of this method is required to signal the success/failure
          * of the drop by passing an appropriate
          * <code>boolean</code> to the <code>DropTargetDropEvent</code>'s
          * dropComplete(boolean success) method.
          * <P>
          * Note: The data transfer should be completed before the call  to the
          * <code>DropTargetDropEvent</code>'s dropComplete(boolean success) method.
          * After that, a call to the getTransferData() method of the
          * <code>Transferable</code> returned by
          * <code>DropTargetDropEvent.getTransferable()</code> is guaranteed to
          * succeed only if the data transfer is local; that is, only if
          * <code>DropTargetDropEvent.isLocalTransfer()</code> returns
          * <code>true</code>. Otherwise, the behavior of the call is
          * implementation-dependent.
          * <P>
          * @param dtde the <code>DropTargetDropEvent</code>
         public void drop(DropTargetDropEvent dtde)
              System.err.println( "CustomTransferHandler::drop" );
              Component c = dtde.getDropTargetContext().getDropTarget().getComponent();
              if ( ! ( c instanceof JComponent ) )
                   dtde.rejectDrop();
                   return;
              JComponent comp = ( JComponent ) c;
              if ( ! ( c instanceof JTable ) || ! ( ( ( JTable ) c ).getModel() instanceof MyTableModel ) )
                   dtde.rejectDrop();
                   return;
              dtde.acceptDrop( TransferHandler.MOVE );
              //     THIS is such a mess -- you can't do the following because
              //     getTransferable() throws an (undocumented) exception - what's that
              //     all about.
    //          Transferable t = dtde.getTransferable();
    //               if ( !t.isDataFlavourSupported( ROW_ARRAY_FLAVOR ) )
    //                    dtde.rejectDrop();
    //                    return false;
    //          TransferHandler handler = comp.getTransferHandler();
    //          if ( null == handler || ! handler.importData( comp, t ) )
    //               dtde.rejectDrop();
    //               return;
              Point p = dtde.getLocation();
              JTable table = ( JTable ) comp;
              rowIndex = table.rowAtPoint( p );
              //     So you have to do this instead and use the data that's been
              //     stored in the data member via import data.  Total mess.
              if ( null == data )
                   dtde.rejectDrop();
                   return;
              MyTableModel model = ( MyTableModel ) table.getModel();
              if ( rowIndex == -1 )
                   model.addRows( data );
              else
                   model.insertRows( rowIndex, data );
              dtde.acceptDrop( TransferHandler.MOVE );
         /** Called if the user has modified
          * the current drop gesture.
          * <P>
          * @param dtde the <code>DropTargetDragEvent</code>
         public void dropActionChanged(DropTargetDragEvent dtde)
    }

    Hi again,
    Well I've tried using the MouseListener / MouseMotionListener approach but it doesn't quite seem to work, although it does get the events correctly. I think the reason is that it doesn't interact correctly with the Java DnD machinery which is something that V.V hinted at. It's something that I may need to look into if / when I have more time available.
    I have to say though that I haven't had any problems with scrollbars - we're making fairly heavy use of large tables and if you drag over a table with a scroll bar and move to the top or bottom then it scrolls as you would expect and allows you to drop the data where you like. For this situation I've used pretty much the same approach as for the toy example above except that I've implemented separate source and destination TransferHandlers (the source table is read-only, and it really doesn't make sense to allow people to drag from the destination table so I've essentially split the functionality of the example handler down the middle).
    I'm not actually particularly in favour of messing too much with the mechanics of DnD, more because of lack of time than anything else. Guess I'll just have to put up with this for the moment. Doesn't help that DnD is so poorly documented by Sun.
    Thanks for all your help.
    Bart

  • Can you Cancel "acceptDragDrop()" using Manual Drag-and-Drop?

    I have an AdvancedDataGrid (ADG) with manually drag-and-drop
    functionality built in. The user can only drag-and-drop within the
    one ADG. I do this in order to validate which items can be dragged,
    and where they can be dropped. I have run into one problem,
    however. In my override of dragEnterHandler(), I call
    DragManaged.acceptDragDrop() if the user drags an item over a valid
    item. However, if they don't drop the item there, and continue to
    drag the item around the ADG, and roll over an item that is not
    valid, there's no way to cancel the drop.
    Does anyone have any suggestions?

    Thanks for the updates.
    "ericbelair" <[email protected]> wrote in
    message
    news:gealv1$dfk$[email protected]..
    > FYI, AdvancedDataGrid property "dropEnabled" must be set
    to "true" for
    > this to work.

  • CRM ABAP development and interaction with SAP R/3

    Hi Experts,
    I am an ABAPer and have close to 3 years of development experience in ABAP, now i was trying to understand how exactly a CRM system is intergrated with SAP R/3 . Below are few of the basic question i have
    1. How does R/3 interact with CRM, searching in the forum i just got to know its through RFC . Can anyone give me specific technical details like how R/3 and CRM interact in a real time scenario .
    2. Ca any one also give me an real time development example that was done in CRM to interact with SAP R/3 and explain me the basic steps involved in it, this might give me clear picture of how developments happen in CRM and also how CRM and SAP interacts with each other .
    Your quick response would be greatly appreciated .
    Regard's
    Sudheer V

    with repect to programming , it is similar to R/3 ABAP devlopment . It all depends on scenarios:
    1) For eaxmple we use BADI's to put some extra validations / additional data when you are creation order
    2) unlike R/3 where we use SAP GUI trnsactions for creating orders, in CRM we have IC web client techonolgy where we can create orders through web.This is based on BSP technology. In order to add additinal fields on the screen for we use easy enhancment workbench tool(EEWB).this is something new in CRM when compared to R/3.

  • Allow service to interact with desktop

    Hi,
    DC OS - Windows Server 2008 R2 Std
    Client OS - Windows XP, Windows 7
    I have implemented Security policy through Network Policy Server and enabled Wired AutoConfig Services Automatically. While Enabling Wired AutoConfig Services, if i check mark on ' Allow service to interact with Desktop ' It works proper in some of Window7
    Laptop.
    But on internet it is giving me Warning that "Interactive services can display a user interface and receive user input. If you allow the service to interact with the desktop, any information that the service displays on the desktop will also be displayed
    on an interactive user's desktop. A malicious user could then take control of the service or attack it from the interactive desktop."
    Can you give me some example how Malicious User can take control of the service or attack it from the interactive desktop?
    Thanks & Regards,
    Param
    www.paramgupta.blogspot.com

    Hi,
    By default, services use a noninteractive window station and cannot interact with the user. However, an interactive service can display a user interface and receive user input. Once LocalSystem account (a services running in an elevated security context)
    creates a window on the interactive desktop, any other application that is running on the interactive desktop can interact with this window. That is, this exposes the service to any application that a logged-on user executes.
    Then it will be very dangerous.
    Andy Altmann
    TechNet Community Support

  • Canon VIXIA HF S20 and FCP interaction

    Middle school, 13 year olds create a 2 hour video yearbook every year. We have won the California Student Media Festival 5 of the last 6 years in the yearbook category. We are not experts but do shoot with 4 cameras and use multiclip. It is amazing to see what 13 year olds can do when you raise the bar with FCP. My question is related directly to FCP and its interaction with cameras. We are looking at purchasing 4 new Canon VIXIA HF S20 cameras, using flash memory (we have the Canon Vixia 30 that use tapes now). I have read some on the Vixia HF S20, some on this list, some on the internet in general. We have used canons, have hundreds invested in batteries and are familiar with Canon. We are limited to about 1200 per camera. So, any terrible issues I should be aware of with the Canon Vixia HF S20?

    Hi-
    Yes, you are correct. File transfer (and the required conversion from AVCHD to an editable format) can be faster than real time, in fact much faster with a fast computer and raid storage.
    When dealing with event/news acquisition and delivery, and every second counts, then file based is the clear winner.
    The down side is the reliance and drive space and stability, and lots of both. And the discipline/organization required to run a backup program that is both effective, searchable and ready to be pulled into service at a moments notice,
    When a student comes to you and says: "Mr. Peach, the disc drive that holds all our class projects isn't mounting and is making a funny clicking noise!" are you going to be able to swap in a backup drive with the required media on it?
    That"s my point about switching to file based acquisition. There's no tape to fall back on. Because we have switched to XDCamEx and Red production, we had to add another crew member we call the "Data Wrangler" whose job it is to make sure all files or organized, accessible and backed up (in our case to several backup locations).
    You demonstrate that you are both technologically knowledgeable, and creatively knowledgeable (with your string of awards) and I just wanted to highlight side of the tape to file based transition that is often overlooked.
    One more comment - I wouldn't worry about using the technology of the "future". If that were the case, I would recommend you buy a bunch of Kodak Zi8 cameras, edit with iMovie '09 and deliver via You Tube.
    Hope this helps and I'm sure you'll make the right decision.
    MTD

  • 1 Success Caption for Multiple Targets in a Drag and Drop Interaction

    I see how I can add success captions to each target in a drag and drop interaction, but can you apply only 1 success caption multiple targets?

    The boundaries of smartshapes were overlapping with each other. For example, the smartshape on 1st line was overlapping with the one on 2nd line. Due to this, every time you place the text caption "Investment" on the smartshape on 2nd line, it automatically moved to the smartshape on 1st line. As a result, you could never get the answer right, and hence you never saw the Success Caption.
    Solution: Move the smartshapes away from each other (or resize them), and ensure that there are no overlaps.
    2,  The number of attempts for this interaction was set to Infinite. So, you have to play this until you get it right, but you could not get it right because of the reasons mention above. That is why you never saw the Failure Caption.
    Solution: Clear the Infinite check box in the Action accordion and specify the required number of attempts. You will get the Failure Caption if you don't get it right in those attempts.
    I just tested these solutions and they worked fine. Let me know if you still face any issues.

  • Advanced Feedback with Drag and Drop Interaction

    Hello,
    I am trying to create a drag and drop interaction that will blend in a "thumbs up" or a "smiley" after each dragable has been correctly placed. The dragables in my interaction are medical terms and the drop sources are smart shape boxes. Each drop source has been assigned one correct answer, so that when the correct answer has been dragged a "success caption" appears immediately. The opposite occurs with an incorrecty dragged term. I figured, I need a "code" that
    askes each dropable if it is the last one to be answered, and when answered correctly, will show the "smiley"
    checks if all other dragables have been placed correctly
    Since I lack the basic coding knowledge, I am having a hard time trying to figure this one out. Thanks for the help, again!
    -Nik

    Hi Jay,
    Yes, could create such a scenario, but the Submit button is not used in that case, because the feedback will appear immediately when a drag object has been placed on the target. Is that OK?
    Here the work flow:
    Besides the object, create all the feedback text containers that you need, correct and incorrect and label them so that they are easily recognizable. I labeled them FB_1, FB_2... because my objects were Drop1, Drop2...
    Make those feedbacks initially invisible and group them in Gr_FB
    Create the drag&drop in the normal way with one correct link
    Select the target and in the in the D&D panel, click on the Accept button, change the settings like this
    The advanced actions are pretty simple, standard, with two statements: Hide Gr_FB and Show FB_n  (with the appropriate feedback container - you cannot use Shared actions in this dialog).
    In the D&D panel, choose Infinite for the number of attempts and uncheck the Failure caption.
    Lilybiri

Maybe you are looking for