Class RTATextTransferHandler

  • All Implemented Interfaces:
    java.io.Serializable

    public class RTATextTransferHandler
    extends javax.swing.TransferHandler
    Handles the transfer of data to/from an RTextArea via drag-and-drop. This class is pretty much ripped off from a subclass of BasicTextUI. In the future, it will include the ability to drag-and-drop files into RTextAreas (i.e., the text will be inserted into the text area).

    The main reason this class is kept around is so we can subclass it.

    Version:
    0.1
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) static class  RTATextTransferHandler.TextTransferable
      A possible implementation of the Transferable interface for RTextAreas.
      • Nested classes/interfaces inherited from class javax.swing.TransferHandler

        javax.swing.TransferHandler.DropLocation, javax.swing.TransferHandler.TransferSupport
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private javax.swing.text.JTextComponent exportComp  
      private int p0  
      private int p1  
      private boolean shouldRemove  
      private boolean withinSameComponent  
      • Fields inherited from class javax.swing.TransferHandler

        COPY, COPY_OR_MOVE, LINK, MOVE, NONE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean canImport​(javax.swing.JComponent comp, java.awt.datatransfer.DataFlavor[] flavors)
      This method indicates if a component would accept an import of the given set of data flavors prior to actually attempting to import it.
      protected java.awt.datatransfer.Transferable createTransferable​(javax.swing.JComponent comp)
      Create a Transferable to use as the source for a data transfer.
      protected void exportDone​(javax.swing.JComponent source, java.awt.datatransfer.Transferable data, int action)
      This method is called after data has been exported.
      protected java.awt.datatransfer.DataFlavor getImportFlavor​(java.awt.datatransfer.DataFlavor[] flavors, javax.swing.text.JTextComponent c)
      Try to find a flavor that can be used to import a Transferable to a specified text component.
      int getSourceActions​(javax.swing.JComponent c)
      This is the type of transfer actions supported by the source.
      protected void handleReaderImport​(java.io.Reader in, javax.swing.text.JTextComponent c)
      Import the given stream data into the text component.
      boolean importData​(javax.swing.JComponent comp, java.awt.datatransfer.Transferable t)
      This method causes a transfer to a component from a clipboard or a DND drop operation.
      • Methods inherited from class javax.swing.TransferHandler

        canImport, exportAsDrag, exportToClipboard, getCopyAction, getCutAction, getDragImage, getDragImageOffset, getPasteAction, getVisualRepresentation, importData, setDragImage, setDragImageOffset
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • exportComp

        private javax.swing.text.JTextComponent exportComp
      • shouldRemove

        private boolean shouldRemove
      • p0

        private int p0
      • p1

        private int p1
      • withinSameComponent

        private boolean withinSameComponent
    • Constructor Detail

      • RTATextTransferHandler

        public RTATextTransferHandler()
    • Method Detail

      • getImportFlavor

        protected java.awt.datatransfer.DataFlavor getImportFlavor​(java.awt.datatransfer.DataFlavor[] flavors,
                                                                   javax.swing.text.JTextComponent c)
        Try to find a flavor that can be used to import a Transferable to a specified text component. The set of usable flavors are tried in the following order:
        1. First, an attempt is made to find a flavor matching the content type of the EditorKit for the component.
        2. Second, an attempt to find a text/plain flavor is made.
        3. Third, an attempt to find a flavor representing a String reference in the same VM is made.
        4. Lastly, DataFlavor.stringFlavor is searched for.
        Parameters:
        flavors - The flavors to check if c will accept them.
        c - The text component to see whether it will accept any of the specified data flavors as input.
      • handleReaderImport

        protected void handleReaderImport​(java.io.Reader in,
                                          javax.swing.text.JTextComponent c)
                                   throws java.io.IOException
        Import the given stream data into the text component.
        Throws:
        java.io.IOException
      • getSourceActions

        public int getSourceActions​(javax.swing.JComponent c)
        This is the type of transfer actions supported by the source. Some models are not mutable, so a transfer operation of COPY only should be advertised in that case.
        Overrides:
        getSourceActions in class javax.swing.TransferHandler
        Parameters:
        c - The component holding the data to be transferred. This argument is provided to enable sharing of TransferHandlers by multiple components.
        Returns:
        If the text component is editable, COPY_OR_MOVE is returned, otherwise just COPY is allowed.
      • createTransferable

        protected java.awt.datatransfer.Transferable createTransferable​(javax.swing.JComponent comp)
        Create a Transferable to use as the source for a data transfer.
        Overrides:
        createTransferable in class javax.swing.TransferHandler
        Parameters:
        comp - The component holding the data to be transferred. This argument is provided to enable sharing of TransferHandlers by multiple components.
        Returns:
        The representation of the data to be transferred.
      • exportDone

        protected void exportDone​(javax.swing.JComponent source,
                                  java.awt.datatransfer.Transferable data,
                                  int action)
        This method is called after data has been exported. This method should remove the data that was transferred if the action was MOVE.
        Overrides:
        exportDone in class javax.swing.TransferHandler
        Parameters:
        source - The component that was the source of the data.
        data - The data that was transferred or possibly null if the action is NONE.
        action - The actual action that was performed.
      • importData

        public boolean importData​(javax.swing.JComponent comp,
                                  java.awt.datatransfer.Transferable t)
        This method causes a transfer to a component from a clipboard or a DND drop operation. The Transferable represents the data to be imported into the component.
        Overrides:
        importData in class javax.swing.TransferHandler
        Parameters:
        comp - The component to receive the transfer. This argument is provided to enable sharing of TransferHandlers by multiple components.
        t - The data to import
        Returns:
        true iff the data was inserted into the component.
      • canImport

        public boolean canImport​(javax.swing.JComponent comp,
                                 java.awt.datatransfer.DataFlavor[] flavors)
        This method indicates if a component would accept an import of the given set of data flavors prior to actually attempting to import it.
        Overrides:
        canImport in class javax.swing.TransferHandler
        Parameters:
        comp - The component to receive the transfer. This argument is provided to enable sharing of TransferHandlers by multiple components.
        flavors - The data formats available.
        Returns:
        true iff the data can be inserted.