OSDN Git Service

e5ffa5d432917fe717e355b891cb1eb8ec275f7e
[tainavi/TinyBannavi.git] / TinyBannavi / src / tainavi / ClipboardInfoList.java
1 package tainavi;\r
2 \r
3 import java.io.File;\r
4 import java.util.ArrayList;\r
5 \r
6 /**\r
7  * {@link ClipboardInfo} のリストを実現するクラスです. \r
8  * @since 3.15.4β\r
9  */\r
10 public class ClipboardInfoList extends ArrayList<ClipboardInfo> {\r
11 \r
12         private static final long serialVersionUID = 1L;\r
13         \r
14         private static final String cbFileOld = "env"+File.separator+"cbitems.xml";\r
15         private static final String cbFile = "env"+File.separator+"cbinfolist.xml";\r
16         \r
17         public boolean save() {\r
18                 System.out.println("クリップボード設定を保存します: "+cbFile);\r
19                 if ( ! CommonUtils.writeXML(cbFile, this) ) {\r
20                 System.err.println("クリップボード設定の保存に失敗しました: "+cbFile);\r
21                 return false;\r
22                 }\r
23                 \r
24                 return true;\r
25         }\r
26         \r
27         @SuppressWarnings("deprecation")\r
28         public boolean load() {\r
29                 \r
30                 System.out.println("クリップボード設定を読み込みます: "+cbFile);\r
31 \r
32                 boolean isoldclass = false;\r
33                 ArrayList<ClipboardInfo> cl = null;\r
34                 \r
35                 if ( ! new File(cbFile).exists() ) {\r
36                         // ファイルがなければデフォルトで\r
37                         if ( new File(cbFileOld).exists() ) {\r
38                                 // 旧clipboardItem対策\r
39                                 isoldclass = true;\r
40                                 cl = new ArrayList<ClipboardInfo>();\r
41                                 ArrayList<clipboardItem> clx = (ArrayList<clipboardItem>) CommonUtils.readXML(cbFileOld);\r
42                                 for ( clipboardItem cx : clx ) {\r
43                                         ClipboardInfo c = new ClipboardInfo();\r
44                                         CommonUtils.FieldCopy(c, cx);\r
45                                         cl.add(c);\r
46                                 }\r
47                         }\r
48                 }\r
49                 else {\r
50                         // ファイルがあるならロード\r
51                         cl = (ClipboardInfoList) CommonUtils.readXML(cbFile);\r
52                 }\r
53                 if ( cl == null || cl.size() == 0 ) {\r
54                         System.err.println("クリップボード設定が読み込めなかったのでデフォルト設定で起動します.");\r
55                         \r
56                 // 初期化してみよう\r
57                 this.clear();\r
58                 int idx = 1;\r
59                 Object[][] o = {\r
60                                 {true,  "番組名",    idx++},\r
61                                 {true,  "放送局",    idx++},\r
62                                 {true,  "開始日",    idx++},\r
63                                 {true,  "開始時刻", idx++},\r
64                                 {false, "終了時刻", idx++},\r
65                                 {false, "ジャンル", idx++},\r
66                                 {true,  "番組詳細", idx++},\r
67                 };\r
68                 for (int i=0; i<o.length; i++) {\r
69                         ClipboardInfo cb = new ClipboardInfo();\r
70                         cb.setB((Boolean) o[i][0]);\r
71                         cb.setItem((String) o[i][1]);\r
72                         cb.setId((Integer) o[i][2]);\r
73                         this.add(cb);\r
74                 }\r
75                 \r
76                         return false;\r
77                 }\r
78                 \r
79                 this.clear();\r
80                 for (ClipboardInfo c : cl) {\r
81                         this.add(c);\r
82                 }\r
83                 \r
84                 if ( isoldclass && this.save() ) {\r
85                         System.err.println("クリップボード設定ファイルを置き換えます: "+cbFileOld+"->"+cbFile);\r
86                         new File(cbFileOld).delete();\r
87                 }\r
88                 \r
89                 return true;\r
90         }\r
91 \r
92 }\r