1 2 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
| public void update(Observable obs, Object argument) {
if(obs!=null){
System.out.println(">>>> Path avant génération "+this.tree.getSelectionPath());
//---Récupération du chemin de l'élément sélectionné
TreePath tp = this.tree.getSelectionPath();
//--- Suppression de l'arbre entier
this.removeAll();
//---Regénération de l'arbre
AircraftModel aircraft = (AircraftModel)obs ;
DefaultMutableTreeNode aircraftRootNode = new DefaultMutableTreeNode(aircraft);
for(CalculatorModel calc : aircraft.getCalculatorList()){
DefaultMutableTreeNode calcNode = new DefaultMutableTreeNode(calc);
aircraftRootNode.add(calcNode);
for(StandardModel std : calc.getStdList()){
DefaultMutableTreeNode stdNode = new DefaultMutableTreeNode(std);
calcNode.add(stdNode);
for(DemandModel dmd : std.getDmdList()){
DefaultMutableTreeNode dmdNode = new DefaultMutableTreeNode(dmd);
stdNode.add(dmdNode);
}
}
}
((DefaultTreeModel)this.tree.getModel()).setRoot(aircraftRootNode);
((DefaultTreeModel) this.tree.getModel()).reload();
//TODO: Trouver comment étendre le parent du noeud sélectionné avant regénération de l'arbre
//---Si l'arbre avait une sélection avant génération
if(tp!=null){
System.out.println(" ----- Selection à étendre : "+ tp.getParentPath());
//on sélectionne le noeud parent puis on l'étend / [PAS OK]
this.tree.setSelectionPath(tp.getParentPath());
this.tree.expandPath(tp.getParentPath());
}else{
//Sinon on sélectionne la racine / [OK]
TreeNode n = (DefaultMutableTreeNode)this.tree.getModel().getRoot();
this.tree.setSelectionPath(new TreePath(n));
}
this.add(new JScrollPane(tree),BorderLayout.CENTER);
this.validate();
//Les boutons
panelbutton.add(move);
panelbutton.add(delete);
this.add(panelbutton, BorderLayout.SOUTH);
} |
Partager