From: <had...@us...> - 2008-08-07 16:50:51
|
Revision: 3732 http://fudaa.svn.sourceforge.net/fudaa/?rev=3732&view=rev Author: hadouxad Date: 2008-08-07 16:50:58 +0000 (Thu, 07 Aug 2008) Log Message: ----------- AFFECT?\195?\137 - # 40: L?\195?\169gende pour les courbe 1d http://mantis.genesis-groupe.com//view.php?id=40 - ajout du renderermodel checkbox du tree - ajout du renderer editeur du tree - fonctionnalite de masquage affichage des widget fonctionne - fonction de masquage clic droit surla widget fonctionne aussi avec le jtree FIXME: il faut trouver une astuce pour faire un revalidate/repaint de la scene car sinon il faut mettre le curseur dessus pour voir les maj Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNodeDefault.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxNodeEditor.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxTreeRenderer.java Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxNodeEditor.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxNodeEditor.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxNodeEditor.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -0,0 +1,102 @@ +package org.fudaa.ebli.visuallibrary; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseEvent; +import java.util.EventObject; + +import javax.swing.AbstractCellEditor; +import javax.swing.JCheckBox; +import javax.swing.JTree; +import javax.swing.event.ChangeEvent; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeCellEditor; +import javax.swing.tree.TreePath; + +import com.memoire.bu.BuCheckBox; +/** + * Editeur dans le tree + * @author Adrien Hadoux + * + */ +public class EbliCheckBoxNodeEditor extends AbstractCellEditor implements TreeCellEditor { + + EbliCheckBoxTreeRenderer renderer = new EbliCheckBoxTreeRenderer(); + + ChangeEvent changeEvent = null; + + EbliWidgetJXTree tree; + + public EbliCheckBoxNodeEditor(EbliWidgetJXTree tree) { + this.tree = tree; + } + + public Object getCellEditorValue() { + JCheckBox checkbox = renderer.getLeafRenderer(); + // EbliNodeDefault checkBoxNode = new CheckBoxNode(checkbox.getText(), + // checkbox.isSelected()); + + + return checkbox.getText();//checkBoxNode; + } + + public boolean isCellEditable(EventObject event) { + boolean returnValue = false; + if (event instanceof MouseEvent) { + MouseEvent mouseEvent = (MouseEvent) event; + TreePath path = tree.getPathForLocation(mouseEvent.getX(), + mouseEvent.getY()); + if (path != null) { + Object node = path.getLastPathComponent(); + if ((node != null) && (node instanceof DefaultMutableTreeNode)) { + DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node; + Object userObject = treeNode.getUserObject(); + returnValue = ((treeNode.isLeaf()) && (userObject instanceof EbliNodeDefault)); + } + } + } + return returnValue; + // return true; + } + + public Component getTreeCellEditorComponent(JTree tree, final Object value, + boolean selected, boolean expanded, boolean leaf, int row) { + + final Component editor =renderer.getTreeCellRendererComponent(tree, value,true, expanded, leaf, row, true); + + //-- recuperation de l instance defaultnode + Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); + + + + if (userObject instanceof EbliNode && editor instanceof JCheckBox) { + final EbliNodeDefault node= (EbliNodeDefault)(((DefaultMutableTreeNode)value).getUserObject()); + + //-- suppression des anciens listeners --// + // ((JCheckBox) editor).re + + + + // ajoute le listener au checkbox pour afficher la widget en fonction de son click + ((JCheckBox) editor).addActionListener( new ActionListener() { + public void actionPerformed(ActionEvent event) { + + //-- on rend visible la widget en fonction de la checkbox + node.getCreator().getWidget().setVisible(((JCheckBox) editor).isSelected()); + + + } + }); + + } + + + + + + return editor; + } + } Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxNodeEditor.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxTreeRenderer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxTreeRenderer.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxTreeRenderer.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -0,0 +1,98 @@ +package org.fudaa.ebli.visuallibrary; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; + +import javax.swing.JCheckBox; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; + +import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultNode; + +public class EbliCheckBoxTreeRenderer implements TreeCellRenderer { + private JCheckBox leafRenderer = new JCheckBox(); + + private DefaultTreeCellRenderer nonLeafRenderer = new DefaultTreeCellRenderer(); + + Color selectionBorderColor, selectionForeground, selectionBackground, + textForeground, textBackground; + + protected JCheckBox getLeafRenderer() { + return leafRenderer; + } + + public EbliCheckBoxTreeRenderer() { + /*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) { + + Component returnValue; + if (leaf) { + + + //-- recuperation du node --// + Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); + + + EbliNodeDefault node=null; + if (userObject instanceof EbliNode) { + node= (EbliNodeDefault)(((DefaultMutableTreeNode)value).getUserObject()); + + System.err.println("PS EbliNode!!! ROW: "+row); + + //-- creation d'une nouvelle checkbox aui sera ainsi unique pour chaque composant + leafRenderer=new JCheckBox(); + + leafRenderer.setText(node.getTitle()); + leafRenderer.setSelected(node.getCreator().getWidget().isVisible()); + } + else{ + System.err.println("TROP NULLLLLLLLLLLLLLLLLLL!!!"); + } + // qccessible en fonction du tree + leafRenderer.setEnabled(tree.isEnabled()); + + /* // foreground si selectionne ou non + if (leafRenderer.isSelected()) { + leafRenderer.setForeground(selectionForeground); + leafRenderer.setBackground(selectionBackground); + } else { + leafRenderer.setForeground(textForeground); + leafRenderer.setBackground(textBackground); + } +*/ + + + + returnValue = leafRenderer; + + } else { + returnValue = nonLeafRenderer.getTreeCellRendererComponent(tree, + value, selected, expanded, leaf, row, hasFocus); + } + return returnValue; + } + + + } Property changes on: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliCheckBoxTreeRenderer.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java 2008-08-07 14:48:20 UTC (rev 3731) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNode.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -16,5 +16,6 @@ Point getLocation(); public String toString(); + } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNodeDefault.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNodeDefault.java 2008-08-07 14:48:20 UTC (rev 3731) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliNodeDefault.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -11,6 +11,8 @@ Point p; Dimension d; String title; + + public String getTitle() { return title; } @@ -60,4 +62,7 @@ return title; } + + + } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java 2008-08-07 14:48:20 UTC (rev 3731) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -151,17 +151,26 @@ public void actionPerformed(ActionEvent e) { - EbliWidget.this.setVisible(false); + //EbliWidget.this.setVisible(false); EbliNode n = (EbliNode) EbliWidget.this.getScene_().findObject( EbliWidget.this); EbliWidget.this.getScene_().removeNode(n); + EbliWidget.this.getScene_().getVisu_().removeChild(EbliWidget.this); + - // NE PAS DECOCHER CES ELEMENTS - // fermeture des widgets children - // EbliWidget.this.removeChildren(); - // fermeture du widget donne - // EbliWidget.this.removeFromParent(); + } + }); + + JMenuItem menuItem3 = _popup.add("Masquer l'objet"); + menuItem3.setIcon(CtuluResource.CTULU.getIcon("crystal_non")); + menuItem3.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + + EbliWidget.this.setVisible(false); + + } }); Modified: branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java 2008-08-07 14:48:20 UTC (rev 3731) +++ branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestGraphe2.java 2008-08-07 16:50:58 UTC (rev 3732) @@ -49,6 +49,8 @@ import org.fudaa.ebli.tableau.EbliGrapheValeur; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.ebli.visuallibrary.EbliCheckBoxNodeEditor; +import org.fudaa.ebli.visuallibrary.EbliCheckBoxTreeRenderer; import org.fudaa.ebli.visuallibrary.EbliNodeDefault; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.EbliWidgetCreatorDblFleche; @@ -199,7 +201,10 @@ //etape 3 creation du jtree EbliWidgetJXTree tree=new EbliWidgetJXTree(model); - + EbliCheckBoxTreeRenderer renderer = new EbliCheckBoxTreeRenderer(); + tree.setCellRenderer(renderer); + tree.setCellEditor(new EbliCheckBoxNodeEditor(tree)); + tree.setEditable(true); p.add(tree,BuBorderLayout.WEST); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |