4 * License : The MIT License
\r
5 * Copyright(c) 2009 olyutorskii
\r
8 package jp.sourceforge.jindolf;
\r
10 import java.awt.datatransfer.DataFlavor;
\r
11 import java.awt.datatransfer.Transferable;
\r
12 import java.awt.datatransfer.UnsupportedFlavorException;
\r
13 import java.io.IOException;
\r
14 import java.net.URI;
\r
15 import java.util.ArrayList;
\r
16 import java.util.List;
\r
20 * エクスポートに使うMIMEは「text/uri-list」と「text/plain」。
\r
22 public class UriExporter implements Transferable{
\r
24 private static final String[] MIMES = {
\r
28 private static final List<DataFlavor> URI_FLAVORS =
\r
29 new ArrayList<DataFlavor>(MIMES.length);
\r
32 String stringClassName = "class=" + String.class.getName();
\r
33 for(String mime : MIMES){
\r
34 String newMime = mime + "; " + stringClassName;
\r
35 DataFlavor dataFlavor;
\r
37 dataFlavor = new DataFlavor(newMime);
\r
38 }catch(ClassNotFoundException e){
\r
40 throw new ExceptionInInitializerError(e);
\r
42 URI_FLAVORS.add(dataFlavor);
\r
46 private final URI uri;
\r
52 public UriExporter(URI uri){
\r
60 * @return {@inheritDoc}
\r
63 public DataFlavor[] getTransferDataFlavors(){
\r
64 DataFlavor[] result = new DataFlavor[URI_FLAVORS.size()];
\r
66 for(DataFlavor dataFlavor : URI_FLAVORS){
\r
68 result[index++] = (DataFlavor)( dataFlavor.clone() );
\r
69 }catch(CloneNotSupportedException e){
\r
71 throw new AssertionError(e);
\r
79 * @param flavor {@inheritDoc}
\r
80 * @return {@inheritDoc}
\r
83 public boolean isDataFlavorSupported(DataFlavor flavor){
\r
84 for(DataFlavor dataFlavor : URI_FLAVORS){
\r
85 if(dataFlavor.equals(flavor)) return true;
\r
92 * エクスポートするURI文字列を返す。
\r
93 * @param flavor {@inheritDoc}
\r
94 * @return {@inheritDoc}
\r
95 * @throws java.awt.datatransfer.UnsupportedFlavorException {@inheritDoc}
\r
96 * @throws java.io.IOException {@inheritDoc}
\r
99 public Object getTransferData(DataFlavor flavor)
\r
100 throws UnsupportedFlavorException,
\r
102 if( ! isDataFlavorSupported(flavor) ){
\r
103 throw new UnsupportedFlavorException(flavor);
\r
106 String result = this.uri.toASCIIString();
\r