2010-07-12 24 views
5

Tôi hiện đang làm việc trên mã Java có thể sao chép tệp vào khay nhớ tạm của hệ thống.DataFlavor yêu cầu để sao chép tệp trong Mac OSX

Đối với Windows và Linux Tôi đã nhận nó làm việc. Đối với OSX tôi đã thử một số hương vị nhưng hành động "Dán" trong Finder không bao giờ kích hoạt hoạt động.

Bất cứ ý tưởng mà các thiết lập DataFlavor được yêu cầu cho Finder?

hương vị sử dụng:

DataFlavor.javaFileListFlavor 
URILIST_FLAVOR = new DataFlavor("text/uri-list"); 
XFILELIST_FLAVOR = new DataFlavor("application/x-java-file-list"); 
GNOMEFILELIST_FLAVOR = new DataFlavor("x-special/gnome-copied-files"); 

Phương pháp này để trả lại dữ liệu cho các hương vị:

public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { 
    if(FILELIST_FLAVOR.equals(flavor)) { 
     if(List.class == flavor.getRepresentationClass()) { 
      return Arrays.asList(files); 
     } else if(InputStream.class == flavor.getRepresentationClass()) { 
      return getStreamData(files, null); 
     } 
    } else if(DataFlavor.javaFileListFlavor.equals(flavor)) { 
     if(List.class == flavor.getRepresentationClass()) { 
      return locallist; 
     } else if(InputStream.class == flavor.getRepresentationClass()) { 
      return getStreamData(files, null); 
     } 
    } else if(URILIST_FLAVOR.equals(flavor)) { 
     if(List.class == flavor.getRepresentationClass()) { 
      return Arrays.asList(files); 
     } else if(InputStream.class == flavor.getRepresentationClass()) { 
      return getStreamData(files, null); 
     } 
    } else if(GNOMEFILELIST_FLAVOR.equals(flavor)) { 
     if(List.class == flavor.getRepresentationClass()) { 
      return Arrays.asList(files); 
     } else if(InputStream.class == flavor.getRepresentationClass()) { 
      // FIXME support cut and copy 
      return getStreamData(files, "copy"); 
     } 
    } else if(XFILELIST_FLAVOR.equals(flavor)) { 
     if(List.class == flavor.getRepresentationClass()) { 
      return locallist; 
     } else if(InputStream.class == flavor.getRepresentationClass()) { 
      return getStreamData(files, null); 
     } 
    } 
    throw new UnsupportedFlavorException(flavor); 
} 

Cảm ơn, André

+0

Không ai một ý tưởng? –

Trả lời

0

Có lẽ bạn nên thử DataFlavor#javaFileListFlavor.

Trích từ tài liệu API:

DataFlavor # javaFileListFlavor (Link)

Để chuyển một danh sách các tập tin đến/từ Java (và các nền tảng cơ bản) một DataFlavor thuộc loại này/kiểu phụ và lớp biểu diễn của java.util.List được sử dụng. Mỗi phần tử của danh sách được yêu cầu/đảm bảo là loại java.io.File.
+0

nhân tiện ... kết quả của 'System.out.println (DataFlavor.javaFileListFlavor.getMimeType());' là 'application/x-java-file-list; class = java.util.List' – headcr4sh

+0

Vui lòng xem câu hỏi của tôi: javaFileListFlavor đã được xử lý. Trình tìm kiếm không sử dụng hương vị này. –

+0

Ồ ... điều đó có vẻ hơi kỳ lạ. – headcr4sh

Các vấn đề liên quan