| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 
 | import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.EventObject;
import javax.swing.JCheckBox;
import javax.swing.JTree;
import javax.swing.event.CellEditorListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellEditor;
import javax.swing.tree.TreeCellRenderer;
 
 
public class MyJTree{
 
	DefaultMutableTreeNode racine;
	DefaultMutableTreeNode noeud;
	JTree Tree;
 
	Parsing Parse = new Parsing();	
	private ArrayList<PGN> pgns= null;
	private ArrayList<SPN> spns = null;
 
	public JTree BuildTree(){
		racine = new DefaultMutableTreeNode("PGN");
		Tree = new JTree(racine);
		Tree.setLayout(new BorderLayout());
		return Tree;
	}
 
	public JTree BuildPGN(String ifilename){
 
		RenduComposant rc = new RenduComposant();
		EditComposant ec = new EditComposant();
		JCheckBox jcb = new JCheckBox();
 
		pgns= Parse.CreationPGN(ifilename);			
		racine = new DefaultMutableTreeNode(new JCheckBox("PGN"));
		for(int i=0;i<pgns.size();i++){
			jcb=new JCheckBox(pgns.get(i).getName());
			noeud =new DefaultMutableTreeNode(jcb,true);
			racine.add(noeud);
			ArrayList<SPN> spns = pgns.get(i).getSpns();
			for(int j=0;j<spns.size();j++){
				jcb=new JCheckBox(spns.get(j).getName());
				DefaultMutableTreeNode noeudfils = new DefaultMutableTreeNode(jcb,true);
				noeud.add(noeudfils);
 
				jcb=new JCheckBox("Start bit :"+spns.get(j).getStart_bit());
				DefaultMutableTreeNode noeudfilsfils1 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Length :"+spns.get(j).getLength());
				DefaultMutableTreeNode noeudfilsfils2 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Encodage :"+spns.get(j).getEncodage());
				DefaultMutableTreeNode noeudfilsfils3 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Signe :"+spns.get(j).getSigned());
				DefaultMutableTreeNode noeudfilsfils4 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Scaling :"+spns.get(j).getScaling());
				DefaultMutableTreeNode noeudfilsfils5 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Offset :"+spns.get(j).getOffset());
				DefaultMutableTreeNode noeudfilsfils6 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Range min :"+spns.get(j).getRange_min());
				DefaultMutableTreeNode noeudfilsfils7 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Range max :"+spns.get(j).getRange_max());
				DefaultMutableTreeNode noeudfilsfils8 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Unit :"+spns.get(j).getUnit());
				DefaultMutableTreeNode noeudfilsfils9 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Consommateur :"+spns.get(j).getConsommateur());
				DefaultMutableTreeNode noeudfilsfils10 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Comment :"+spns.get(j).getComment());
				DefaultMutableTreeNode noeudfilsfils11 = new DefaultMutableTreeNode(jcb,true);
				jcb=new JCheckBox("Masque :"+String.format("0x%016x",Long.parseLong(spns.get(j).getMasque())).toUpperCase());
				DefaultMutableTreeNode noeudfilsfils12 = new DefaultMutableTreeNode(jcb,true);				
 
				noeudfils.add(noeudfilsfils1);
				noeudfils.add(noeudfilsfils2);
				noeudfils.add(noeudfilsfils3);
				noeudfils.add(noeudfilsfils4);
				noeudfils.add(noeudfilsfils5);
				noeudfils.add(noeudfilsfils6);
				noeudfils.add(noeudfilsfils7);
				noeudfils.add(noeudfilsfils8);
				noeudfils.add(noeudfilsfils9);
				noeudfils.add(noeudfilsfils10);
				noeudfils.add(noeudfilsfils11);
				noeudfils.add(noeudfilsfils12);
			}
 
		}
		Tree=new JTree(racine);
		Tree.setCellRenderer(rc);
		Tree.setCellEditor(ec);
		Tree.expandRow(0);
		Tree.setEditable(true);
 
		return Tree;
	}
 
//	public PGN getPGNTree(){
//		
//	}
}
 
class RenduComposant implements TreeCellRenderer{
 
	public Component getTreeCellRendererComponent(JTree tree, Object obj,
			boolean selected, boolean expanded, boolean leaf,
			int row, boolean hasFocus){
 
		DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode)obj;
		JCheckBox toto = (JCheckBox)dmtcr.getUserObject();
 
		return toto;
	}
}
 
class EditComposant implements TreeCellEditor{
 
	public void addCellEditorListener(CellEditorListener l){ }
	public void cancelCellEditing() { }
	public Object getCellEditorValue(){
		return this;
	}
	public boolean isCellEditable(EventObject evt){
		if(evt instanceof MouseEvent){
			MouseEvent mevt = (MouseEvent) evt;
			if (mevt.getClickCount() == 1){
				return true;
			}
		}
		return false;
	}
 
	public void removeCellEditorListener(CellEditorListener l){}
	public boolean shouldSelectCell(EventObject anEvent){
		return true;
	}
	public boolean stopCellEditing(){
		return false;
	}
	public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){
		DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj;
		JCheckBox tata=(JCheckBox)dmtn.getUserObject();
		tata.setEnabled(true);
		return tata;
	}
} |