From: <had...@us...> - 2008-08-13 16:13:11
|
Revision: 3794 http://fudaa.svn.sourceforge.net/fudaa/?rev=3794&view=rev Author: hadouxad Date: 2008-08-13 16:13:16 +0000 (Wed, 13 Aug 2008) Log Message: ----------- - creation du jxtreetablemodel avec 3 colonnes (icon, nom, checkbox) - optimisation d utilisation des objets graphiques avec les renderer (EbliJXTreeTableCellRenderer pour l icone) - gestion des maj en cas d'ajouts suppression d objets - edition du titre des eblinode directement sur le tree - si on clique sur le repertoire courant: ca masque tout les noeuds fils et inversement - integration du tree a droite dans l implementation - surcharge de la methode addFille de trpostProjet, je verrais avec toi comment executer les graphes. Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetFleche.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetRectangle.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxNodeEditor.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeModel.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliJXTreeTableCellRenderer.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeTableModel.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxTreeRenderer.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetFleche.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetFleche.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetFleche.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -52,7 +52,7 @@ public static int ORIENTATION_EAST=2; public static int ORIENTATION_WEST=3; - public Color couleurFleche=Color.black; + public Color couleur=Color.black; /** * @param _scene @@ -91,7 +91,7 @@ l.setEpaisseur(largeurBorder); - l.setCouleur(couleurFleche); + l.setCouleur(couleur); //FIXME prob fleche pas tres jolie l.dessineFleche(g,(int)( l.getEpaisseur() / 2),(int)( rec.height/2), (int)(rec.width-l.getEpaisseur()/2), (int)(rec.height/2)); @@ -110,14 +110,14 @@ public Color getCouleurFleche() { - return couleurFleche; + return couleur; } public void setCouleurFleche(Color couleurFleche) { - this.couleurFleche = couleurFleche; + this.couleur = couleurFleche; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetRectangle.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetRectangle.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetRectangle.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -1,8 +1,10 @@ package org.fudaa.ebli.visuallibrary; +import java.awt.Color; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Rectangle; +import java.awt.Shape; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.visuallibrary.layout.OverlayLayoutGap; @@ -29,6 +31,7 @@ int largeurBorder = 15; int espaceInterieur = 5; + public Color couleur=Color.black; /** * @param _scene */ @@ -88,12 +91,14 @@ // la ligne TraceLigne l = new TraceLigne(); - + l.setCouleur(couleur); l.setEpaisseur(largeurBorder); // l.dessineTrait(g, 0, 0, rec.width, rec.height / 2); l.dessineRectangle(g, l.getEpaisseur() / 2, l.getEpaisseur() / 2, rec.width - l.getEpaisseur(), rec.height - l.getEpaisseur()); g.translate(-rec.x, -rec.y); + + } public String getText(Widget widget) { Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EditCreator.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -46,7 +46,7 @@ JFrame frame = new JFrame("Flexdock Test App"); frame.getContentPane().setLayout(new BorderLayout()); - JMenu[] specificMenus = pn.getSpecificMenus("test"); + JMenu[] specificMenus = pn.getSpecificMenus("Vue 2D"); JMenuBar mb = new JMenuBar(); frame.setJMenuBar(mb); for (int i = 0; i < specificMenus.length; i++) { Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxNodeEditor.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxNodeEditor.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxNodeEditor.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -29,7 +29,7 @@ private static final long serialVersionUID = 4576652808917382435L; -EbliCheckBoxTreeRenderer renderer = new EbliCheckBoxTreeRenderer(); +EbliJXTreeTableCellRenderer renderer = new EbliJXTreeTableCellRenderer(); ChangeEvent changeEvent = null; @@ -40,7 +40,7 @@ } public Object getCellEditorValue() { - BuCheckBox checkbox = renderer.getLeafRenderer().checkBox; + BuCheckBox checkbox = new BuCheckBox();//renderer.getLeafRenderer().checkBox; // EbliNodeDefault checkBoxNode = new CheckBoxNode(checkbox.getText(), // checkbox.isSelected()); Deleted: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxTreeRenderer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxTreeRenderer.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxTreeRenderer.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -1,136 +0,0 @@ -package org.fudaa.ebli.visuallibrary.tree; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Font; - -import javax.swing.Icon; -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTree; -import javax.swing.UIManager; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.tree.TreeCellRenderer; - -import org.fudaa.ctulu.CtuluResource; -import org.fudaa.ebli.visuallibrary.EbliNode; -import org.fudaa.ebli.visuallibrary.EbliNodeDefault; - -import com.memoire.bu.BuCheckBox; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuPanel; -import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultNode; - -public class EbliCheckBoxTreeRenderer implements TreeCellRenderer { - - //-- panel renderer --// - private EbliCheckBoxPanel leafRenderer = new EbliCheckBoxPanel(); - - private DefaultTreeCellRenderer nonLeafRenderer = new DefaultTreeCellRenderer(); - - Color selectionBorderColor, selectionForeground, selectionBackground, textForeground, textBackground; - - public Icon iconLeafEnabled=CtuluResource.CTULU.getIcon("crystal22_previsualiser"); - public Icon iconLeafDisabled=CtuluResource.CTULU.getIcon("crystal22_cacher"); - - public Icon iconSubDirectorie=CtuluResource.CTULU.getIcon("reouvrir_26"); - - - public Icon iconRoot=CtuluResource.CTULU.getIcon("maison_32"); - - - protected EbliCheckBoxPanel getLeafRenderer() { - return leafRenderer; - } - - public EbliCheckBoxTreeRenderer() { - leafRenderer.setOpaque(false); - /* - * Font fontValue; fontValue = UIManager.getFont("Tree.font"); if (fontValue - * != null) { leafRenderer.setFont(fontValue); } Boolean booleanValue = - * (Boolean) UIManager .get("Tree.drawsFocusBorderAroundIcon"); - * leafRenderer.setFocusPainted((booleanValue != null) && - * (booleanValue.booleanValue())); - * - * selectionBorderColor = UIManager.getColor("Tree.selectionBorderColor"); - * selectionForeground = UIManager.getColor("Tree.selectionForeground"); - * selectionBackground = UIManager.getColor("Tree.selectionBackground"); - * textForeground = UIManager.getColor("Tree.textForeground"); - * textBackground = UIManager.getColor("Tree.textBackground"); - */ - - - - } - - public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, - boolean leaf, int row, boolean hasFocus) { - - - BuLabel returnLabel = null; - BuCheckBox returnValue = null; - // cas particulier renderer: on met un checkbox que si on est feuille et pqs root (= cqs ou lqyer depourvu d objet graphique) - if (leaf && !((DefaultMutableTreeNode) value).isRoot()) { - - // -- recuperation du node --// - Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); - - EbliNodeDefault node = null; - if (userObject instanceof EbliNode) { - node = (EbliNodeDefault) (((DefaultMutableTreeNode) value).getUserObject()); - - //System.err.println("c est un EbliNode!!! ROW: " + row); - - // -- creation d'une nouvelle checkbox aui sera ainsi unique pour chaque - // composant - returnValue=new BuCheckBox(); - //leafRenderer.setOpaque(false); - - returnValue.setText(node.getTitle()); - returnValue.setSelected(node.getCreator().getWidget().isVisible()); - - - returnLabel=new BuLabel(this.iconLeafEnabled); - - - - returnLabel.setEnabled(node.getCreator().getWidget().isVisible()); - } - - } /*else if (!leaf && !((DefaultMutableTreeNode) value).isRoot()) { - - returnLabel=new BuLabel(this.iconSubDirectorie); - returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); - - }*/else { - returnLabel=new BuLabel(((DefaultMutableTreeNode) value).toString(),this.iconRoot); - //returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); - - } - - - //-- creation du panel avec les informations --// - leafRenderer=new EbliCheckBoxPanel(); - - if(returnLabel!=null) - leafRenderer.labelRenderer=returnLabel; - - if(returnValue!=null ) - leafRenderer.checkBox=returnValue; - - //-- construction du composant --// - leafRenderer.construct(); - - // qccessible en fonction du tree - leafRenderer.setEnabled(tree.isEnabled()); - if(selected){ - leafRenderer.setBackground(Color.BLUE); - } - else - leafRenderer.setBackground(Color.WHITE); - return leafRenderer; - } - -} Copied: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliJXTreeTableCellRenderer.java (from rev 3771, branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliCheckBoxTreeRenderer.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliJXTreeTableCellRenderer.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliJXTreeTableCellRenderer.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -0,0 +1,170 @@ +package org.fudaa.ebli.visuallibrary.tree; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; + +import javax.swing.Icon; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; + +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ebli.visuallibrary.EbliNode; +import org.fudaa.ebli.visuallibrary.EbliNodeDefault; +import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; + +import com.memoire.bu.BuCheckBox; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultNode; +/** + * Treecell renderer pour l arbre des calques de visualllibrary. + * gere uniquement l affichage des icones optimises. + * @author genesis + * + */ +public class EbliJXTreeTableCellRenderer implements TreeCellRenderer { + + //-- panel renderer --// + private BuLabel returnLabel = new BuLabel(); + + Color selectionBorderColor, selectionForeground, selectionBackground, textForeground, textBackground; + + public Icon iconLeafEnabled=CtuluResource.CTULU.getIcon("crystal_visibilite"); + public Icon iconLeafDisabled=CtuluResource.CTULU.getIcon("crystal_cacher"); + public Icon iconSubDirectorie=CtuluResource.CTULU.getIcon("reouvrir"); + public Icon iconRoot=CtuluResource.CTULU.getIcon("crystal_maison"); + + + public EbliJXTreeTableCellRenderer() { + returnLabel.setOpaque(false); + returnLabel.setHorizontalAlignment(BuLabel.LEFT); + /* + * Font fontValue; fontValue = UIManager.getFont("Tree.font"); if (fontValue + * != null) { leafRenderer.setFont(fontValue); } Boolean booleanValue = + * (Boolean) UIManager .get("Tree.drawsFocusBorderAroundIcon"); + * leafRenderer.setFocusPainted((booleanValue != null) && + * (booleanValue.booleanValue())); + * + * selectionBorderColor = UIManager.getColor("Tree.selectionBorderColor"); + * selectionForeground = UIManager.getColor("Tree.selectionForeground"); + * selectionBackground = UIManager.getColor("Tree.selectionBackground"); + * textForeground = UIManager.getColor("Tree.textForeground"); + * textBackground = UIManager.getColor("Tree.textBackground"); + */ + } + + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, + boolean leaf, int row, boolean hasFocus) { + + // cas particulier renderer: on met un checkbox que si on est feuille et pqs root (= cqs ou lqyer depourvu d objet graphique) + if (leaf && ((DefaultMutableTreeTableNode) value).getParent()!=null) { + + // -- recuperation du node --// + Object userObject = ((DefaultMutableTreeTableNode) value).getUserObject(); + + EbliNodeDefault node = null; + if (userObject instanceof EbliNode) { + node = (EbliNodeDefault) (((DefaultMutableTreeTableNode) value).getUserObject()); + + + + if(node.getCreator().getWidget().isVisible()) + returnLabel.setIcon(iconLeafEnabled);//=new BuLabel(this.iconLeafEnabled); + else + returnLabel.setIcon(iconLeafDisabled);//returnLabel=new BuLabel(this.iconLeafDisabled); + + + returnLabel.setEnabled(node.getCreator().getWidget().isVisible()); + } + + } /*else if (!leaf && !((DefaultMutableTreeTableNode) value).isRoot()) { + + returnLabel=new BuLabel(this.iconSubDirectorie); + returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); + + }*/else { + //returnLabel=new BuLabel(((DefaultMutableTreeTableNode) value).toString(),this.iconRoot); + returnLabel.setIcon(this.iconRoot); + returnLabel.setEnabled(true); + } + + return returnLabel; + } + + + + + + /* + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, + boolean leaf, int row, boolean hasFocus) { + + + BuLabel returnLabel = null; + BuCheckBox returnValue = null; + // cas particulier renderer: on met un checkbox que si on est feuille et pqs root (= cqs ou lqyer depourvu d objet graphique) + if (leaf && !((DefaultMutableTreeNode) value).isRoot()) { + + // -- recuperation du node --// + Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); + + EbliNodeDefault node = null; + if (userObject instanceof EbliNode) { + node = (EbliNodeDefault) (((DefaultMutableTreeNode) value).getUserObject()); + + //System.err.println("c est un EbliNode!!! ROW: " + row); + + // -- creation d'une nouvelle checkbox aui sera ainsi unique pour chaque + // composant + returnValue=new BuCheckBox(); + //leafRenderer.setOpaque(false); + + returnValue.setText(node.getTitle()); + returnValue.setSelected(node.getCreator().getWidget().isVisible()); + + + returnLabel=new BuLabel(this.iconLeafEnabled); + + + + returnLabel.setEnabled(node.getCreator().getWidget().isVisible()); + } + + } else { + returnLabel=new BuLabel(((DefaultMutableTreeNode) value).toString(),this.iconRoot); + //returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); + + } + + + //-- creation du panel avec les informations --// + leafRenderer=new EbliCheckBoxPanel(); + + if(returnLabel!=null) + leafRenderer.labelRenderer=returnLabel; + + if(returnValue!=null ) + leafRenderer.checkBox=returnValue; + + //-- construction du composant --// + leafRenderer.construct(); + + // qccessible en fonction du tree + leafRenderer.setEnabled(tree.isEnabled()); + if(selected){ + leafRenderer.setBackground(Color.BLUE); + } + else + leafRenderer.setBackground(Color.WHITE); + return leafRenderer; + } +*/ + +} Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeModel.java 2008-08-13 15:03:32 UTC (rev 3793) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeModel.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -4,6 +4,7 @@ import java.util.Iterator; import java.util.List; +import javax.swing.Icon; import javax.swing.event.TreeModelListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; @@ -11,6 +12,7 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; +import org.fudaa.ctulu.CtuluResource; import org.fudaa.ebli.visuallibrary.EbliNode; import org.fudaa.ebli.visuallibrary.EbliNodeListener; import org.fudaa.ebli.visuallibrary.EbliScene; @@ -28,11 +30,16 @@ public static String NAMELAYER="Layer"; //-- noeud aui se trouve au sommet --// -DefaultMutableTreeNode nodeRoot_; +public DefaultMutableTreeNode nodeRoot_; //-- modele du tree --// DefaultTreeModel modeleTree; + + + + + //-- scene principale pour recuperer la liste des noeuds --// //EbliScene scene; Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeTableModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeTableModel.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetJXTreeTableModel.java 2008-08-13 16:13:16 UTC (rev 3794) @@ -0,0 +1,442 @@ +package org.fudaa.ebli.visuallibrary.tree; + +import java.awt.Checkbox; +import java.awt.Image; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; + +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.event.TreeModelListener; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ebli.visuallibrary.EbliNode; +import org.fudaa.ebli.visuallibrary.EbliNodeListener; +import org.fudaa.ebli.visuallibrary.EbliScene; +import org.jdesktop.swingx.JXTreeTable; +import org.jdesktop.swingx.treetable.AbstractTreeTableModel; +import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; +import org.jdesktop.swingx.treetable.DefaultTreeTableModel; +import org.jdesktop.swingx.treetable.MutableTreeTableNode; +import org.jdesktop.swingx.treetable.TreeTableModel; + +import com.memoire.bu.BuCheckBox; +import com.memoire.bu.BuLabel; + + +/** + * Model du treetable. + * contient 3 colonnes: + * colonne 1:icone + * colonne 2:nom + * colonne 3:checkbox associee + * + * @author Adrien Hadoux + * + */ +public class EbliWidgetJXTreeTableModel extends DefaultTreeTableModel implements EbliNodeListener{ + + //-- le nombre de colonnes est statique --// + final static int NBCOLUMN=3; + + /** + * titres des colonnes. + */ + public String[] title={"Icon","Nom","V" }; + + /** + * Icones associees au treemodeltable. + */ + public Icon iconLeafEnabled=CtuluResource.CTULU.getIcon("crystal22_previsualiser"); + public Icon iconLeafDisabled=CtuluResource.CTULU.getIcon("crystal22_cacher"); + public Icon iconSubDirectorie=CtuluResource.CTULU.getIcon("reouvrir_26"); + public Icon iconRoot=CtuluResource.CTULU.getIcon("maison_32"); + + /** + * composant graphique utiliser ppuor afficher l etat masquer/visible du widget . + */ + public BuCheckBox chexBox_=new BuCheckBox(); + + public BuLabel labelIcon=new BuLabel(); + + public BuLabel labelTexte=new BuLabel(); + + /** + * scene dont le model est associe + */ + public EbliScene scene_; + + /** + * numero du layer + */ + int numLayer; + + JXTreeTable tree_; + + + public JXTreeTable getTree_() { + return tree_; + } + + public void setTree_(JXTreeTable tree_) { + this.tree_ = tree_; + } + + + //-- noeud aui se trouve au sommet --// + DefaultMutableTreeTableNode nodeRoot_; + + /** + * constructeur. + * @param numLayer + * @param scene_ + */ + public EbliWidgetJXTreeTableModel(DefaultMutableTreeTableNode nodeRoot,int numLayer, EbliScene scene_) { + super(nodeRoot); + this.numLayer = numLayer; + this.scene_ = scene_; + + //--initialisation du node root --// + nodeRoot_=nodeRoot;//new DefaultMutableTreeTableNode("Layer "+numLayer); + + + } + + public Class<?> getColumnClass(int arg0) { + // TODO Auto-generated method stub + switch(arg0){ + case 0: return Icon.class; + case 1: return String.class; + case 2: return Boolean.class; + default: return null; + } + + } + + public int getColumnCount() { + // TODO Auto-generated method stub + return NBCOLUMN; + } + + public String getColumnName(int arg0) { + // TODO Auto-generated method stub + if(arg0<NBCOLUMN) + return title[arg0]; + else return ""; + } + + public int getHierarchicalColumn() { + // TODO Auto-generated method stub + return 0; + } + + /** + * recupere l objet correspondant: il s agit d un defaultMutableTreeNoce. + */ + public Object getValueAt(Object arg0, int column) { + + + //-- recuperation du mutableTreenode qui contient le node de la scene --// + DefaultMutableTreeTableNode nodeTree = (DefaultMutableTreeTableNode)arg0; + + //-- test si il s agit du node root --// + if(nodeTree == nodeRoot_) + { + if(column==0){ + labelIcon.setIcon(iconRoot); + return iconRoot;//labelIcon; + } + else + if(column==1){ + + return "Layer "+numLayer; + } + else{ + // recherche si au moins un sous fils est affiche sinon retourne false + boolean auMoinsUnSousElementAffiche=false; + + Enumeration<MutableTreeTableNode> liste= (Enumeration<MutableTreeTableNode>) nodeRoot_.children(); + while(liste.hasMoreElements() && !auMoinsUnSousElementAffiche){ + + //System.err.println("je suis setValueAt(Object arg0, int column et value) )"+box); + DefaultMutableTreeTableNode modif= (DefaultMutableTreeTableNode) liste.nextElement(); + + + //-- si il existe au moins un sous fils qi est affiche alors on est ok --// + if(((Boolean)getValueAt(modif, 2)).booleanValue()){ + auMoinsUnSousElementAffiche=true; + } + + } + + return auMoinsUnSousElementAffiche; + } + } + //--recuperation du node de la scene --// + EbliNode node= (EbliNode) nodeTree.getUserObject(); + + + + //-- cas 1 recuperation de l icone --// + if(column==0){ + if(node.hasWidget() && node.getCreator().getWidget().isVisible()) + labelIcon.setIcon(iconLeafEnabled); + else + labelIcon.setIcon(iconLeafDisabled); + + return iconLeafEnabled;//labelIcon; + + }else + //-- recuperation du title --// + if(column==1){ + //labelTexte.setText(node.getTitle()); + return node.getTitle();//labelTexte; + + }else + //-- recuperation de la checkbox --// + if(column==2){ + boolean coche; + System.err.println("je suis la checbox: wodget selectionee:"+node.getCreator().getWidget().isVisible()); + if(node.hasWidget() && node.getCreator().getWidget().isVisible()) + //coche la checkbox + coche=true;//chexBox_.setSelected(true); + else + coche=false;//chexBox_.setSelected(false); + + return coche;//chexBox_; + } + + + + + return null; + } + + /** + * seul le texte et la checkbox sont editables + */ + public boolean isCellEditable(Object arg0, int column) { + // TODO Auto-generated method stub + + if(column==0 || column>=NBCOLUMN) + return false; + else + return true; + } + + /** + * placer une valeur + */ + + public void setValueAt(Object value, Object nodeT, int column) { + // TODO Auto-generated method stub + + //-- recuperation du mutableTreenode qui contient le node de la scene --// + DefaultMutableTreeTableNode nodeTree = (DefaultMutableTreeTableNode)nodeT; + + + //-- on essaie de masquer tous les sous repertoires --// + if(nodeTree==nodeRoot_ && column==2){ + + // si on coche sur la check, on fait tout disparaitre + //--recupeation de la checkBox --// + boolean box= ((Boolean) value).booleanValue(); + Enumeration<MutableTreeTableNode> liste= (Enumeration<MutableTreeTableNode>) nodeRoot_.children(); + while(liste.hasMoreElements()){ + + System.err.println("je suis setValueAt(Object arg0, int column et value) )"+box); + DefaultMutableTreeTableNode modif= (DefaultMutableTreeTableNode) liste.nextElement(); + + + //((EbliNode)modif.getUserObject()).getCreator().getWidget().setVisible(box); + + //-- envoi du signal a tous les noeuds fils: reccurence sur le checkbox --// + setValueAt(value, modif, 2); + + } + + + + + + } + //-- si node tree = ROOT on arrete les frais --// + if(!nodeTree.isLeaf()) + return; + + //--recuperation du node de la scene --// + EbliNode node= (EbliNode) nodeTree.getUserObject(); + + + //-- recuperation de la value en fonction de la colonne --// + if(column==1){ + //--recuperation du nouveau nom --// + String newTitle=((/*BuLabel*/String) value);//.getText(); + node.setTitle(newTitle); + }else{ + //--recupeation de la checkBox --// + boolean box= ((Boolean) value).booleanValue(); + + + //-- affichage de la widget --// + node.getCreator().getWidget().setVisible(box); + + //-- rafraichissement de la scene --// + scene_.refresh(); + } + + //rafraichissement de l arbre + reload(); + + setResizeColumn(); + + } + + + + /** + * Raffraichissement maison du jxtreetable + */ + public void reload(){ + + this.modelSupport.fireTreeStructureChanged(new TreePath(getPathToRoot(nodeRoot_))); + } + + /** + * methode qui redimensionne les colonens du table. + */ + public void setResizeColumn(){ + if(tree_==null) + return; + tree_.getColumn(0).setPreferredWidth(60); + tree_.getColumn(1).setPreferredWidth(50); + tree_.getColumn(2).setPreferredWidth(5); + + tree_.getColumn(0).setResizable(false); + tree_.getColumn(1).setResizable(false); + tree_.getColumn(2).setResizable(false); + tree_.validate(); + } + + + /*public void addTreeModelListener(TreeModelListener l) { + // TODO Auto-generated method stub + + } + +*/ + /* + public Object getChild(Object parent, int index) { + // TODO Auto-generated method stub + DefaultMutableTreeTableNode nodeParent= (DefaultMutableTreeTableNode) parent; + + return nodeParent.getChildAt(index); + + } + + public int getChildCount(Object parent) { + // TODO Auto-generated method stub + DefaultMutableTreeTableNode nodeParent= (DefaultMutableTreeTableNode) parent; + return nodeParent.getChildCount(); + } + + public int getIndexOfChild(Object parent, Object child) { + // TODO Auto-generated method stub + DefaultMutableTreeTableNode nodeParent= (DefaultMutableTreeTableNode) parent; + + return nodeParent.getIndex((TreeNode) child); + } +/* + public Object getRoot() { + // TODO Auto-generated method stub + return nodeRoot_; + } + + public boolean isLeaf(Object _node) { + // TODO Auto-generated method stub + DefaultMutableTreeTableNode node= (DefaultMutableTreeTableNode) _node; + + return node.isLeaf(); + } + + public void removeTreeModelListener(TreeModelListener l) { + // TODO Auto-generated method stub + + } + + public void valueForPathChanged(TreePath path, Object newValue) { + // TODO Auto-generated method stub + System.err.println("je suis valueForPathChanged(TreePath path, Object newValue)"); + } +*/ + //-- utilisation de l interface node added + + public void nodeAdded(EbliNode node) { + // TODO Auto-generated method stub + + System.err.println("je suis nodeAdded(EbliNode node)"); + //-- ajout du nouveau node --// + + DefaultMutableTreeTableNode newNode=new DefaultMutableTreeTableNode(node); + //nodeRoot_.add(newNode); + + //-- rafraichissement du modele --// + + //-- ajout du node dans le tree en fin de liste--// + //insertNodeInto(newNode,nodeRoot_, nodeRoot_.getChildCount()); + + //-- ajout du node dans le tree en debut de liste--// + insertNodeInto(newNode,nodeRoot_, 0); + + + //setResizeColumn(); + //scene_.refresh(); + + } + + + /** + * Methode appelee lorsau elel recoit un signal de suppression de node de la scene. + * a pour effet de chercher le treetableNode associee et de le supprimer du tree ainsi que mettre a jour l arbre. + */ + public void noderemoved(EbliNode node) { + + + DefaultMutableTreeTableNode Asuppr=null; + //-- recuperation des nodes --// + Enumeration<MutableTreeTableNode> liste= (Enumeration<MutableTreeTableNode>) nodeRoot_.children(); + + + while(liste.hasMoreElements() && Asuppr==null){ + + + DefaultMutableTreeTableNode suspect= (DefaultMutableTreeTableNode) liste.nextElement(); + + //recuperation du node + EbliNode nodeSuspect=(EbliNode) suspect.getUserObject(); + + if(nodeSuspect!=null && nodeSuspect == node) + Asuppr=suspect; + + + } + + //-- suppression du node de ses parents + if(Asuppr!=null) + removeNodeFromParent(Asuppr); + + + + //-- rafraichissement du modele --// + //modeleTree.reload(); + reload(); + + setResizeColumn(); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |