Thanks.
On Mac OSX Snow Leopard, works ok with JDK5 / JDK6.

Regards
Philippe

On Sun, Jan 15, 2012 at 11:03 PM, Milamber <[email protected]> wrote:

> Hello,
>
> My system is GNU/Linux (Debian 6 + Gnome 2.30)
>
> * Works fine with jdk 1.6
> * Compile ok with 1.5, but don't works (drag n drop)
> It is not a big issue for me (I prefer use 6 or 7 with JMeter).
>
> Milamber
>
> Le 15/01/2012 21:06, [email protected] a ecrit :
> > Author: pmouawad
> > Date: Sun Jan 15 21:06:49 2012
> > New Revision: 1231754
> >
> > URL: http://svn.apache.org/viewvc?rev=1231754&view=rev
> > Log:
> > Bug 52281 - Support for file Drag and Drop
> > Had to find an alternate implementation as
> TransferHandler.TransferSupport  is not supported in JDK5
> >
> > Removed:
> >
> jmeter/trunk/src/core/org/apache/jmeter/gui/TopLevelTransferHandler.java
> > Modified:
> >     jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
> >
> > Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java?rev=1231754&r1=1231753&r2=1231754&view=diff
> >
> ==============================================================================
> > --- jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java (original)
> > +++ jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java Sun Jan
> 15 21:06:49 2012
> > @@ -23,12 +23,24 @@ import java.awt.Component;
> >  import java.awt.Dimension;
> >  import java.awt.Font;
> >  import java.awt.Insets;
> > +import java.awt.datatransfer.DataFlavor;
> > +import java.awt.datatransfer.Transferable;
> > +import java.awt.datatransfer.UnsupportedFlavorException;
> > +import java.awt.dnd.DnDConstants;
> > +import java.awt.dnd.DropTarget;
> > +import java.awt.dnd.DropTargetDragEvent;
> > +import java.awt.dnd.DropTargetDropEvent;
> > +import java.awt.dnd.DropTargetEvent;
> > +import java.awt.dnd.DropTargetListener;
> >  import java.awt.event.ActionEvent;
> >  import java.awt.event.ActionListener;
> >  import java.awt.event.MouseEvent;
> >  import java.awt.event.WindowAdapter;
> >  import java.awt.event.WindowEvent;
> > +import java.io.File;
> > +import java.io.IOException;
> >  import java.util.HashSet;
> > +import java.util.List;
> >  import java.util.Set;
> >
> >  import javax.swing.BorderFactory;
> > @@ -57,6 +69,7 @@ import javax.swing.tree.TreePath;
> >  import org.apache.jmeter.engine.event.LoopIterationEvent;
> >  import org.apache.jmeter.gui.action.ActionNames;
> >  import org.apache.jmeter.gui.action.ActionRouter;
> > +import org.apache.jmeter.gui.action.LoadDraggedFile;
> >  import org.apache.jmeter.gui.tree.JMeterCellRenderer;
> >  import org.apache.jmeter.gui.tree.JMeterTreeListener;
> >  import org.apache.jmeter.gui.util.JMeterMenuBar;
> > @@ -67,13 +80,15 @@ import org.apache.jmeter.testelement.Tes
> >  import org.apache.jmeter.threads.JMeterContextService;
> >  import org.apache.jmeter.util.JMeterUtils;
> >  import org.apache.jorphan.gui.ComponentUtil;
> > +import org.apache.jorphan.logging.LoggingManager;
> > +import org.apache.log.Logger;
> >
> >  /**
> >   * The main JMeter frame, containing the menu bar, test tree, and an
> area for
> >   * JMeter component GUIs.
> >   *
> >   */
> > -public class MainFrame extends JFrame implements TestListener,
> Remoteable {
> > +public class MainFrame extends JFrame implements TestListener,
> Remoteable, DropTargetListener {
> >
> >      private static final long serialVersionUID = 240L;
> >
> > @@ -89,6 +104,8 @@ public class MainFrame extends JFrame im
> >      private static final boolean DISPLAY_TOOLBAR =
> >              JMeterUtils.getPropDefault("jmeter.toolbar.display", true);
> // $NON-NLS-1$
> >
> > +    private static final Logger log =
> LoggingManager.getLoggerForClass();
> > +
> >      /** The menu bar. */
> >      private JMeterMenuBar menuBar;
> >
> > @@ -153,7 +170,7 @@ public class MainFrame extends JFrame im
> >
> >          GuiPackage.getInstance().setMainFrame(this);
> >          init();
> > -        initTransferHandler();
> > +        initTopLevelDndHandler();
> >          setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
> >      }
> >
> > @@ -408,9 +425,10 @@ public class MainFrame extends JFrame im
> >
> >      /**
> >       * Support for Test Plan Dnd
> > +     * see BUG 52281 (when JDK6 will be minimum JDK target)
> >       */
> > -     public void initTransferHandler() {
> > -     this.setTransferHandler(new TopLevelTransferHandler());
> > +     public void initTopLevelDndHandler() {
> > +         new DropTarget(this, this);
> >      }
> >
> >      public void setExtendedFrameTitle(String fname) {
> > @@ -565,4 +583,60 @@ public class MainFrame extends JFrame im
> >              ActionRouter.getInstance().actionPerformed(new
> ActionEvent(this, event.getID(), ActionNames.EXIT));
> >          }
> >      }
> > +
> > +    public void dragEnter(DropTargetDragEvent dtde) {
> > +        // NOOP
> > +    }
> > +
> > +    public void dragExit(DropTargetEvent dte) {
> > +        // NOOP
> > +    }
> > +
> > +    public void dragOver(DropTargetDragEvent dtde) {
> > +        // NOOP
> > +    }
> > +
> > +    /**
> > +     * Handler of Top level Dnd
> > +     */
> > +    public void drop(DropTargetDropEvent dtde) {
> > +        try {
> > +            Transferable tr = dtde.getTransferable();
> > +            DataFlavor[] flavors = tr.getTransferDataFlavors();
> > +            for (int i = 0; i < flavors.length; i++) {
> > +                // Check for file lists specifically
> > +                if (flavors[i].isFlavorJavaFileListType()) {
> > +                    dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
> > +                    try {
> > +                        @SuppressWarnings("unchecked")
> > +                        List<File> files = (List<File>)
> > +
>  tr.getTransferData(DataFlavor.javaFileListFlavor);
> > +                        if(files.isEmpty()) {
> > +                            return;
> > +                        }
> > +                        File file = files.get(0);
> > +                        if(!file.getName().endsWith(".jmx")) {
> > +                            log.warn("Importing file:" +
> file.getName()+ "from DnD failed because file extension does not end with
> .jmx");
> > +                            return;
> > +                        }
> > +
> > +                        ActionEvent fakeEvent = new ActionEvent(this,
> ActionEvent.ACTION_PERFORMED, ActionNames.OPEN);
> > +                        LoadDraggedFile.loadProject(fakeEvent, file);
> > +                    } finally {
> > +                        dtde.dropComplete(true);
> > +                    }
> > +                    return;
> > +                }
> > +            }
> > +        } catch (UnsupportedFlavorException e) {
> > +            log.warn("Dnd failed" , e);
> > +        } catch (IOException e) {
> > +            log.warn("Dnd failed" , e);
> > +        }
> > +
> > +    }
> > +
> > +    public void dropActionChanged(DropTargetDragEvent dtde) {
> > +        // NOOP
> > +    }
> >  }
> >
> >
> >
> >
>
>


-- 
Cordialement.
Philippe Mouawad.

Reply via email to