OSDN Git Service

881a8f1583c252ed92eb1380f9174d866dc5b198
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / BirthmarkTreeNode.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 /*
4  * $Id$
5  */
6
7 import javax.swing.tree.DefaultMutableTreeNode;
8
9 import jp.sourceforge.stigmata.Birthmark;
10 import jp.sourceforge.stigmata.BirthmarkElement;
11 import jp.sourceforge.stigmata.BirthmarkSet;
12
13 /**
14  * 
15  * @author Haruaki TAMADA
16  * @version $Revision$ 
17  */
18 public class BirthmarkTreeNode extends DefaultMutableTreeNode{
19     private static final long serialVersionUID = -12323457653245L;
20     private Birthmark birthmark;
21
22     public BirthmarkTreeNode(Birthmark birthmark){
23         super(String.format("%s (%d)", birthmark.getType(), birthmark.getElementCount()));
24         setBirthmark(birthmark);
25     }
26
27     public BirthmarkTreeNode(BirthmarkSet birthmark){
28         super(String.format("%s (%d)", birthmark.getName(), birthmark.getSumOfElementCount()));
29         setBirthmark(birthmark);
30     }
31
32     public Birthmark getBirthmark(){
33         return birthmark;
34     }
35
36     public void setBirthmark(BirthmarkSet holder){
37         addChildBirthmarks(holder, this);
38     }
39
40     public void setBirthmark(Birthmark birthmark){
41         this.birthmark = birthmark;
42         addChildren(birthmark, this);
43     }
44
45     private void addChildren(Birthmark birthmark, DefaultMutableTreeNode parent){
46         DefaultMutableTreeNode node = new DefaultMutableTreeNode(
47             birthmark.getType() + "(" +
48             birthmark.getElementCount() + ")");
49         parent.add(node);
50
51         BirthmarkElement[] elements = birthmark.getElements();
52         for(int i = 0; i < elements.length; i++){
53             node.add(new DefaultMutableTreeNode(elements[i]));
54         }
55     }
56
57     private void addChildBirthmarks(BirthmarkSet holder, DefaultMutableTreeNode parent){
58         Birthmark[] birthmarks = holder.getBirthmarks();
59         for(Birthmark birthmark: birthmarks){
60             addChildren(birthmark, parent);
61         }
62     }
63 }