OSDN Git Service

クラスメンバ定義順統一
[jindolf/Jindolf.git] / src / main / java / jp / sourceforge / jindolf / UriExporter.java
1 /*\r
2  * URI expoter\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2009 olyutorskii\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf;\r
9 \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
17 \r
18 /**\r
19  * URIのエクスポートを行う。\r
20  * エクスポートに使うMIMEは「text/uri-list」と「text/plain」。\r
21  */\r
22 public class UriExporter implements Transferable{\r
23 \r
24     private static final String[] MIMES = {\r
25         "text/uri-list",\r
26         "text/plain",\r
27     };\r
28     private static final List<DataFlavor> URI_FLAVORS =\r
29             new ArrayList<DataFlavor>(MIMES.length);\r
30 \r
31     static{\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
36             try{\r
37                 dataFlavor = new DataFlavor(newMime);\r
38             }catch(ClassNotFoundException e){\r
39                 assert false;\r
40                 throw new ExceptionInInitializerError(e);\r
41             }\r
42             URI_FLAVORS.add(dataFlavor);\r
43         }\r
44     }\r
45 \r
46     private final URI uri;\r
47 \r
48     /**\r
49      * コンストラクタ。\r
50      * @param uri URI\r
51      */\r
52     public UriExporter(URI uri){\r
53         super();\r
54         this.uri = uri;\r
55         return;\r
56     }\r
57 \r
58     /**\r
59      * {@inheritDoc}\r
60      * @return {@inheritDoc}\r
61      */\r
62     @Override\r
63     public DataFlavor[] getTransferDataFlavors(){\r
64         DataFlavor[] result = new DataFlavor[URI_FLAVORS.size()];\r
65         int index = 0;\r
66         for(DataFlavor dataFlavor : URI_FLAVORS){\r
67             try{\r
68                 result[index++] = (DataFlavor)( dataFlavor.clone() );\r
69             }catch(CloneNotSupportedException e){\r
70                 assert false;\r
71                 throw new AssertionError(e);\r
72             }\r
73         }\r
74         return result;\r
75     }\r
76 \r
77     /**\r
78      * {@inheritDoc}\r
79      * @param flavor {@inheritDoc}\r
80      * @return {@inheritDoc}\r
81      */\r
82     @Override\r
83     public boolean isDataFlavorSupported(DataFlavor flavor){\r
84         for(DataFlavor dataFlavor : URI_FLAVORS){\r
85             if(dataFlavor.equals(flavor)) return true;\r
86         }\r
87         return false;\r
88     }\r
89 \r
90     /**\r
91      * {@inheritDoc}\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
97      */\r
98     @Override\r
99     public Object getTransferData(DataFlavor flavor)\r
100             throws UnsupportedFlavorException,\r
101                    IOException {\r
102         if( ! isDataFlavorSupported(flavor) ){\r
103             throw new UnsupportedFlavorException(flavor);\r
104         }\r
105 \r
106         String result = this.uri.toASCIIString();\r
107 \r
108         return result;\r
109     }\r
110 \r
111 }\r