Пример #1
0
 public static void main(String[] args) {
   Comparator<DataFlavor> comparator = DataFlavorUtil.getDataFlavorComparator();
   DataFlavor flavor1 = DataFlavor.imageFlavor;
   DataFlavor flavor2 = DataFlavor.selectionHtmlFlavor;
   if (comparator.compare(flavor1, flavor2) == 0) {
     throw new RuntimeException(
         flavor1.getMimeType() + " and " + flavor2.getMimeType() + " should not be equal");
   }
 }
Пример #2
0
 private boolean testFlavor(DataFlavor inFlavor, Transferable t) {
   if (inFlavor != null) {
     if (t.isDataFlavorSupported(inFlavor)) {
       JConfig.log().logVerboseDebug("Accepting(2): " + inFlavor.getMimeType());
       return true;
     }
   }
   return false;
 }
Пример #3
0
 private boolean testFlavor(DataFlavor inFlavor, DropTargetDragEvent t) {
   if (inFlavor != null) {
     if (t.isDataFlavorSupported(inFlavor)) {
       /*
        * I think this has been debugged enough.  This gets annoying.
        */
       JConfig.log().logVerboseDebug("Accepting(1): " + inFlavor.getMimeType());
       return true;
     }
   }
   return false;
 }
 @Override
 public boolean isDataFlavorSupported(DataFlavor flavor) {
   return flavor.getMimeType().equalsIgnoreCase(mimeType);
 }
Пример #5
0
 @Override
 protected Transferable createTransferable(JComponent c) {
   assert c == table;
   return new DataHandler(new Integer(table.getSelectedRow()), localObjectFlavor.getMimeType());
 }
Пример #6
0
 /**
  * Encodes a <code>DataFlavor</code> for use as a <code>String</code> native. The format of an
  * encoded <code>DataFlavor</code> is implementation-dependent. The only restrictions are:
  *
  * <ul>
  *   <li>The encoded representation is <code>null</code> if and only if the specified <code>
  *       DataFlavor</code> is <code>null</code> or its MIME type <code>String</code> is <code>null
  *       </code>.
  *   <li>The encoded representations for two non-<code>null</code> <code>DataFlavor</code>s with
  *       non-<code>null</code> MIME type <code>String</code>s are equal if and only if the MIME
  *       type <code>String</code>s of these <code>DataFlavor</code>s are equal according to <code>
  *       String.equals(Object)</code>.
  * </ul>
  *
  * <p>Sun's reference implementation of this method returns the MIME type <code>String</code> of
  * the specified <code>DataFlavor</code> prefixed with <code>JAVA_DATAFLAVOR:</code>.
  *
  * @param flav the <code>DataFlavor</code> to encode
  * @return the encoded <code>String</code>, or <code>null</code> if flav is <code>null</code> or
  *     has a <code>null</code> MIME type
  */
 public static String encodeDataFlavor(DataFlavor flav) {
   return (flav != null) ? SystemFlavorMap.encodeJavaMIMEType(flav.getMimeType()) : null;
 }
Пример #7
0
  @SuppressWarnings("unchecked")
  public void drop(DropTargetDropEvent dtde) {
    Logger.debug("Drop detected...");
    Transferable t = dtde.getTransferable();
    boolean isAccepted = false;
    if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
      while (true) {
        Object o = null;
        try {
          dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
          o = t.getTransferData(DataFlavor.javaFileListFlavor);
          isAccepted = true;
        } catch (Exception e) {
          Logger.error("transfer failed");
        }
        // if o is still null we had an exception
        if (o instanceof List) {
          List<File> fileList = (List<File>) o;
          final int length = fileList.size();
          if (length == 1) {
            String fileName = fileList.get(0).getAbsolutePath().trim();
            if (fileName.endsWith(".bmp")) break; // try another flavor -- Mozilla bug
            dtde.getDropTargetContext().dropComplete(true);
            loadFile(fileName);
            return;
          }
          dtde.getDropTargetContext().dropComplete(true);
          loadFiles(fileList);
          return;
        }
        break;
      }
    }

    Logger.debug("browsing supported flavours to find something useful...");
    DataFlavor[] df = t.getTransferDataFlavors();

    if (df == null || df.length == 0) return;
    for (int i = 0; i < df.length; ++i) {
      DataFlavor flavor = df[i];
      Object o = null;
      if (true) {
        Logger.info("df " + i + " flavor " + flavor);
        Logger.info("  class: " + flavor.getRepresentationClass().getName());
        Logger.info("  mime : " + flavor.getMimeType());
      }

      if (flavor.getMimeType().startsWith("text/uri-list")
          && flavor.getRepresentationClass().getName().equals("java.lang.String")) {

        /*
         * This is one of the (many) flavors that KDE provides: df 2 flavour
         * java.awt.datatransfer.DataFlavor[mimetype=text/uri-list;
         * representationclass=java.lang.String] java.lang.String String: file
         * :/home/egonw/data/Projects/SourceForge/Jmol/Jmol-HEAD/samples/
         * cml/methanol2.cml
         *
         * A later KDE version gave me the following. Note the mime!! hence the
         * startsWith above
         *
         * df 3 flavor java.awt.datatransfer.DataFlavor[mimetype=text/uri-list
         * ;representationclass=java.lang.String] class: java.lang.String mime :
         * text/uri-list; class=java.lang.String; charset=Unicode
         */

        try {
          o = null;
          if (!isAccepted) dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
          isAccepted = true;
          o = t.getTransferData(flavor);
        } catch (Exception e) {
          Logger.error(null, e);
        }

        if (o instanceof String) {
          if (Logger.debugging) {
            Logger.debug("  String: " + o.toString());
          }
          loadFile(o.toString());
          dtde.getDropTargetContext().dropComplete(true);
          return;
        }
      } else if (flavor
          .getMimeType()
          .equals("application/x-java-serialized-object; class=java.lang.String")) {

        /*
         * This is one of the flavors that jEdit provides:
         *
         * df 0 flavor java.awt.datatransfer.DataFlavor[mimetype=application/
         * x-java-serialized-object;representationclass=java.lang.String] class:
         * java.lang.String mime : application/x-java-serialized-object;
         * class=java.lang.String String: <molecule title="benzene.mol"
         * xmlns="http://www.xml-cml.org/schema/cml2/core"
         *
         * But KDE also provides:
         *
         * df 24 flavor java.awt.datatransfer.DataFlavor[mimetype=application
         * /x-java-serialized-object;representationclass=java.lang.String]
         * class: java.lang.String mime : application/x-java-serialized-object;
         * class=java.lang.String String: file:/home/egonw/Desktop/1PN8.pdb
         */

        try {
          o = null;
          if (!isAccepted) dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
          isAccepted = true;
          o = t.getTransferData(df[i]);
        } catch (Exception e) {
          Logger.error(null, e);
        }

        if (o instanceof String) {
          String content = (String) o;
          if (Logger.debugging) {
            Logger.debug("  String: " + content);
          }
          if (content.startsWith("file:/")) {
            loadFile(content);
          } else {
            PropertyChangeEvent pce =
                new PropertyChangeEvent(this, FD_PROPERTY_INLINE, fd_oldFileName, content);
            fd_propSupport.firePropertyChange(pce);
          }
          dtde.getDropTargetContext().dropComplete(true);
          return;
        }
      }
    }
    if (!isAccepted) dtde.rejectDrop();
  }
Пример #8
0
 @Override
 public boolean isDataFlavorSupported(DataFlavor flavor) {
   return "text/html".equals(flavor.getMimeType());
 }