OSDN Git Service

キーワード検索ダイアログ等にESCキーでのキャンセル動作を追加
[tainavi/TinyBannavi.git] / TinyBannavi / src / tainavi / RowItem.java
1 package tainavi;\r
2 \r
3 import java.util.ArrayList;\r
4 \r
5 /**\r
6  * <P>- JTableの実態のデータを統一したインタフェースであつかうようにできればいーんじゃない? -\r
7  * <P>テーブルの各行のデータを保持するもの\r
8  */\r
9 public abstract class RowItem implements Cloneable {\r
10 \r
11         /*\r
12          *  抽象メソッド\r
13          */\r
14         \r
15         abstract protected void myrefresh(RowItem o);\r
16         \r
17         /*\r
18          * 共用部\r
19          */\r
20         \r
21         // JTableからの参照用にインデックスを張る\r
22         private ArrayList<Object> data = new ArrayList<Object>();\r
23         \r
24         public int getColumnCount() { return (data == null)?(-1):(data.size()); }\r
25         \r
26         public Object get(int index) { return data.get(index); }\r
27         \r
28         public int size() { return data.size(); }\r
29         \r
30         // メンバを更新したらインデックスを張り替える\r
31         public void fireChanged() {\r
32                 data = new ArrayList<Object>();\r
33                 myrefresh(this);\r
34                 //System.err.println("RowItem#refresh: "+data.size());\r
35         }\r
36         \r
37         protected void addData(Object o) { data.add(o); }\r
38         \r
39         protected void clean() { data = new ArrayList<Object>(); }\r
40         \r
41         @Override\r
42         public RowItem clone() {\r
43                 try {\r
44                         RowItem o = (RowItem) super.clone();\r
45                         o.clean();\r
46                         myrefresh(o);\r
47                         return o;\r
48                 } catch (CloneNotSupportedException e) {\r
49                         throw new InternalError(e.toString());\r
50                 }\r
51         }\r
52 }\r