Package com.eviware.soapui.support.dnd

Source Code of com.eviware.soapui.support.dnd.AbstractSoapUIDropTarget

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.support.dnd;

import java.awt.Component;
import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
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 com.eviware.soapui.SoapUI;

public abstract class AbstractSoapUIDropTarget implements DropTargetListener
{
  public AbstractSoapUIDropTarget()
  {
  }

  public void dragEnter( DropTargetDragEvent dtde )
  {
    if( !isAcceptable( dtde.getTransferable(), dtde.getLocation() ) )
      dtde.rejectDrag();
  }

  public void dragExit( DropTargetEvent dtde )
  {
  }

  public void dragOver( DropTargetDragEvent dtde )
  {
    if( !isAcceptable( dtde.getTransferable(), dtde.getLocation() ) )
    {
      dtde.rejectDrag();
    }
    else
    {
      dtde.acceptDrag( dtde.getDropAction() );
    }
  }

  public void drop( DropTargetDropEvent dtde )
  {
    if( !isAcceptable( dtde.getTransferable(), dtde.getLocation() ) )
    {
      dtde.rejectDrop();
    }
    else
    {
      try
      {
        Object testCase = getTransferData( dtde.getTransferable() );
        if( testCase != null )
        {
          dtde.acceptDrop( dtde.getDropAction() );

          handleDrop( testCase, dtde.getLocation() );

          dtde.dropComplete( true );
        }
      }
      catch( Exception e )
      {
        SoapUI.logError( e );
      }
    }
  }

  protected abstract boolean handleDrop( Object target, Point point );

  protected abstract boolean isAcceptable( Object target, Point point );

  public void dropActionChanged( DropTargetDragEvent dtde )
  {
  }

  public boolean isAcceptable( Transferable transferable, Point point )
  {
    return isAcceptable( getTransferData( transferable ), point );
  }

  @SuppressWarnings( "unchecked" )
  private Object getTransferData( Transferable transferable )
  {
    DataFlavor[] flavors = transferable.getTransferDataFlavors();
    for( int i = 0; i < flavors.length; i++ )
    {
      DataFlavor flavor = flavors[i];
      if( flavor.isMimeTypeEqual( DataFlavor.javaJVMLocalObjectMimeType ) )
      {
        try
        {
          return transferable.getTransferData( flavor );
        }
        catch( Exception ex )
        {
          SoapUI.logError( ex );
        }
      }
    }

    return null;
  }

  public static void addDropTarget( Component component, AbstractSoapUIDropTarget target )
  {
    DropTarget dropTarget = new DropTarget( component, target );
    dropTarget.setDefaultActions( DnDConstants.ACTION_COPY_OR_MOVE );
  }
}
TOP

Related Classes of com.eviware.soapui.support.dnd.AbstractSoapUIDropTarget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.