Author: echatellier Date: 2010-03-11 16:13:06 +0100 (Thu, 11 Mar 2010) New Revision: 399 Log: Update persistent toolip display (need to be fixed for trees and tables) Added: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tooltip/BalloonPopupFactory.java testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeRenderer.java Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/MainPanel.java testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/resources/MyApplication.properties testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableModel.java testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableRenderer.java testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeModel.java testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/FilterTreeModel.java Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/MainPanel.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/MainPanel.java 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/MainPanel.java 2010-03-11 15:13:06 UTC (rev 399) @@ -18,12 +18,9 @@ package org.nuiton.test; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; @@ -33,19 +30,16 @@ import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.JTextField; -import javax.swing.JToolTip; -import javax.swing.JTree; +import javax.swing.PopupFactory; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import net.java.balloontip.BalloonTip; -import net.java.balloontip.styles.RoundedBalloonStyle; -import net.java.balloontip.utils.ToolTipUtils; - +import org.jdesktop.swingx.JXTree; import org.nuiton.test.table.BasicTableModel; import org.nuiton.test.table.BasicTableRenderer; -import org.nuiton.test.tooltip.ViewTooltips; +import org.nuiton.test.tooltip.BalloonPopupFactory; import org.nuiton.test.tree.BasicTreeModel; +import org.nuiton.test.tree.BasicTreeRenderer; import org.nuiton.test.tree.FilterTreeModel; import org.nuiton.test.tree.MyFilter; import org.slf4j.Logger; @@ -75,6 +69,8 @@ super(new BorderLayout()); + PopupFactory.setSharedInstance(new BalloonPopupFactory()); + // label filter JPanel leftPanel = new JPanel(new GridBagLayout()); JLabel filterLabel = new JLabel("Filtre : "); @@ -95,7 +91,8 @@ .getCanonicalFile()); filterModel = new FilterTreeModel(treeModel, new MyFilter("")); - JTree tree = new JTree(filterModel); + JXTree tree = new JXTree(filterModel); + tree.setCellRenderer(new BasicTreeRenderer()); tree.setName("tree"); leftPanel.add(new JScrollPane(tree), new GridBagConstraints(0, 1, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, @@ -108,57 +105,17 @@ JPanel rigthPanel = new JPanel(new GridBagLayout()); // label tootip - JLabel testToottip = new JLabel("Over me !!!!!") { - @Override - public JToolTip createToolTip() { - JToolTip tt = new JToolTip(); - /*BalloonTip bt = new BalloonTip(this, this.getToolTipText(), new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), false); - bt.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - - BalloonTip source = (BalloonTip)e.getSource(); - source.closeBalloon(); - - BalloonTip bt = new BalloonTip(source, source.getToolTipText(), new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), true); - bt.setVisible(true); - } - - }); - //ToolTipUtils.balloonToToolTip(bt, 500, 3000); - tt.setComponent(this);*/ - return tt; - } - }; - testToottip.setToolTipText("Alors ?"); + JLabel testToottip = new JLabel("Over me !!!!!"); + testToottip.setToolTipText("Then click on Me !!!"); - BalloonTip bt = new BalloonTip(testToottip, testToottip - .getToolTipText(), new RoundedBalloonStyle(5, 5, Color.WHITE, - Color.BLACK), false); - bt.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - logger.debug("Called"); - BalloonTip source = (BalloonTip) e.getSource(); - source.setVisible(false); - source.setEnabled(false); - BalloonTip bt = new BalloonTip( - source.getAttachedComponent(), - source.getAttachedComponent().getToolTipText(), - new RoundedBalloonStyle(5, 5, Color.WHITE, Color.BLACK), - true); - bt.setVisible(true); - } - }); - ToolTipUtils.balloonToToolTip(bt, 500, 3000); rigthPanel.add(testToottip, new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 2, 2, 2, 2), 0, 0)); // table try { - BasicTableModel tableModel = new BasicTableModel(new File(".") - .getCanonicalFile()); + BasicTableModel tableModel = new BasicTableModel(new File("."). + getCanonicalFile().getParentFile()); JTable table = new JTable(tableModel); table.setDefaultRenderer(String.class, new BasicTableRenderer()); @@ -169,6 +126,8 @@ DataTipManager.get().register(table); //ViewTooltips.register(table); + + //table.addMouseMotionListener(new TableTooltipListener()); } catch (IOException e1) { e1.printStackTrace(); } @@ -178,6 +137,16 @@ JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rigthPanel); pane.setName("mainViewPane"); + // OR + + /*Split modelRoot = new ColSplit(new RowSplit(new Leaf("left"), new Divider(), new Leaf("right")), new Divider(), new Leaf("bottom")); + MultiSplitLayout mpLayout = new MultiSplitLayout(modelRoot); + mpLayout.setDividerSize(2); + JXMultiSplitPane pane = new JXMultiSplitPane(mpLayout); + pane.add(leftPanel, "left"); + pane.add(rigthPanel, "right"); + pane.add(new JLabel("Test bottom"), "bottom");*/ + add(pane, BorderLayout.CENTER); } Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/resources/MyApplication.properties =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/resources/MyApplication.properties 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/resources/MyApplication.properties 2010-03-11 15:13:06 UTC (rev 399) @@ -2,3 +2,4 @@ Application.title = My frame title Application.vendor = CodeLutin Application.vendorId = codelutin +Application.lookAndFeel = com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableModel.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableModel.java 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableModel.java 2010-03-11 15:13:06 UTC (rev 399) @@ -19,14 +19,10 @@ import java.io.File; -import javax.swing.event.TreeModelListener; import javax.swing.table.AbstractTableModel; -import javax.swing.tree.TreeModel; -import javax.swing.tree.TreePath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.w3c.dom.views.AbstractView; /** * BasicTableModel Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableRenderer.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableRenderer.java 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/table/BasicTableRenderer.java 2010-03-11 15:13:06 UTC (rev 399) @@ -19,8 +19,6 @@ package org.nuiton.test.table; import java.awt.Component; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; import javax.swing.JComponent; import javax.swing.JTable; @@ -35,8 +33,11 @@ * Last update : $Date$ * By : $Author$ */ -public class BasicTableRenderer extends DefaultTableCellRenderer implements MouseListener { +public class BasicTableRenderer extends DefaultTableCellRenderer { + /** serialVersionUID. */ + private static final long serialVersionUID = 6448391469600567754L; + /* * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ @@ -46,77 +47,8 @@ JComponent c = (JComponent)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - /*JLabel b = new JLabel(value.toString()) { - @Override - public JToolTip createToolTip() { - JToolTip tt = super.createToolTip(); - - //TablecellBalloonTip tip = new TablecellBalloonTip(table, "etst", row, column, new RoundedBalloonStyle(5,5 - // , Color.WHITE, Color.BLACK), Orientation.RIGHT_ABOVE, AttachLocation.ALIGNED, 5, 5, true); - BalloonTip bt = new BalloonTip(this, this.getToolTipText(), new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), false); - /*bt.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - - BalloonTip source = (BalloonTip)e.getSource(); - source.closeBalloon(); - - BalloonTip bt = new BalloonTip(source, source.getToolTipText(), new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), true); - bt.setVisible(true); - } - - }); - ToolTipUtils.balloonToToolTip(bt, 500, 3000); - tt.setComponent(bt); - - return tt; - } - }; - b.setToolTipText("Tooltip = " + value.toString());*/ + c.setToolTipText("<html><body>Un test de texte Enorme, avec du <b>gras</b>, des saut<br />de lignes, etc...<p>un nouveau paragraphe...</p><p>et le contenu réel : " + value + "</p></body></html>"); - this.addMouseListener(new BasicTableRenderer()); - return this; } - - /* - * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) - */ - @Override - public void mouseClicked(MouseEvent e) { - System.out.println("mouseClicked"); - } - - /* - * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) - */ - @Override - public void mousePressed(MouseEvent e) { - System.out.println("mousePressed"); - } - - /* - * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) - */ - @Override - public void mouseReleased(MouseEvent e) { - System.out.println("mouseReleased"); - } - - /* - * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) - */ - @Override - public void mouseEntered(MouseEvent e) { - System.out.println("mouseEntered"); - } - - /* - * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) - */ - @Override - public void mouseExited(MouseEvent e) { - System.out.println("mouseExited"); - } - } Added: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tooltip/BalloonPopupFactory.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tooltip/BalloonPopupFactory.java (rev 0) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tooltip/BalloonPopupFactory.java 2010-03-11 15:13:06 UTC (rev 399) @@ -0,0 +1,273 @@ +/* *##% + * Copyright (C) 2010 Code Lutin, Chatellier Eric + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.test.tooltip; + +import java.awt.Color; +import java.awt.Component; +import java.awt.MouseInfo; +import java.awt.Point; +import java.awt.PointerInfo; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +import javax.swing.JComponent; +import javax.swing.JLayeredPane; +import javax.swing.JTable; +import javax.swing.JToolTip; +import javax.swing.JWindow; +import javax.swing.Popup; +import javax.swing.PopupFactory; +import javax.swing.Timer; + +import net.java.balloontip.BalloonTip; +import net.java.balloontip.TablecellBalloonTip; +import net.java.balloontip.BalloonTip.AttachLocation; +import net.java.balloontip.BalloonTip.Orientation; +import net.java.balloontip.positioners.BalloonTipPositioner; +import net.java.balloontip.styles.RoundedBalloonStyle; + +public class BalloonPopupFactory extends PopupFactory { + + protected static BalloonTip bt; + + @Override + public Popup getPopup(Component owner, Component contents, int x, int y) + throws IllegalArgumentException { + // A more complete implementation would cache and reuse + // popups + return new BalloonPopup(owner, contents, x, y); + } + + private class BalloonPopup extends Popup implements MouseListener, MouseMotionListener { + protected JLayeredPane topLevelContainer = null; // The balloon is drawn on this pane + private JWindow popupWindow; + private boolean toFade = true; + private int currOpacity; + private Timer fadeInTimer; + private Timer fadeOutTimer; + private Component contents; + private Component owner; + private int ownerX, ownerY; + + + //Will need to keep track of the component... I only want JToolTips to behave in this strange way and combo-box drop-down lists and menus will be affected. + + public BalloonPopup(Component owner, Component contents, int ownerX, int ownerY) { + + /*Container parent = owner.getParent(); + // Follow the path of parents of the attached component until you find the top level container + while (true) { + // If you're a top level container (JFrame, JDialog, JInternalFrame, JApplet or JWindow) + if (parent instanceof RootPaneContainer) { + topLevelContainer = ((RootPaneContainer)parent).getLayeredPane(); + // Exit the infinite loop + break; + // If you're a tab + } else if (parent instanceof JTabbedPane) { + + ((JTabbedPane)parent).addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + //checkVisibility(); + } + }); + } + parent = parent.getParent(); + }*/ + + /*// We use the popup layer of the top level container (frame or dialog) to show the balloon tip + topLevelContainer.add(contents, JLayeredPane.POPUP_LAYER); + // If the attached component is moved/hidden/shown, the balloon tip should act accordingly + owner.addComponentListener(this); + // If the window is resized, we should check if the balloon still fits + topLevelContainer.addComponentListener(this); + // Don't allow to click 'through' the component; will also enable to close the balloon when it's clicked + topLevelContainer.addMouseListener(this);*/ + + // create a new heavyweight window + //this.popupWindow = new JWindow(); + this.contents = contents; + this.owner = owner; + this.ownerX = ownerX; + this.ownerY = ownerY; + // determine the popup location + //popupWindow.setLocation(ownerX, ownerY); + // add the contents to the popup + //popupWindow.getContentPane().add(contents, BorderLayout.CENTER); + //contents.invalidate(); + //JComponent parent = (JComponent) contents.getParent(); + + //popupWindow.setAlwaysOnTop(true); //Since the main frame is set to always be on top, I need to set this on the popupWindow... or it will stay behind the frame. + } + + @Override + public void show() { + + /*// We use the popup layer of the top level container (frame or dialog) to show the balloon tip + topLevelContainer.add(new JLabel("Hoho"), JLayeredPane.POPUP_LAYER); + // If the attached component is moved/hidden/shown, the balloon tip should act accordingly + topLevelContainer.addComponentListener(this); + // If the window is resized, we should check if the balloon still fits + topLevelContainer.addComponentListener(this); + // Don't allow to click 'through' the component; will also enable to close the balloon when it's clicked + topLevelContainer.addMouseListener(this); + + topLevelContainer.setVisible(true);*/ + + if (bt != null && bt.isVisible()) { + bt.closeBalloon(); + } + + JToolTip contentTooltip = (JToolTip)contents; + //JComponent cc = contentTooltip.getComponent(); + + if (contentTooltip.getComponent() instanceof JTable) { + JTable srcTable = (JTable)contentTooltip.getComponent(); + + //Point p = new Point(ownerX - (int)srcTable.getLocation().getX(), ownerY - (int)srcTable.getLocation().getY()); + + Point mouseLocation = MouseInfo.getPointerInfo().getLocation(); + Point p = new Point((int)(mouseLocation.getX() - srcTable.getLocationOnScreen().getX()), + (int)(mouseLocation.getY() - srcTable.getLocationOnScreen().getY())); + int row = srcTable.rowAtPoint(p); + int column = srcTable.columnAtPoint(p); + if (row >= 0 && column >= 0 ) { + bt = new TablecellBalloonTip(srcTable, contentTooltip.getTipText(), + row, column, new RoundedBalloonStyle(5,5, Color.WHITE, Color.BLACK), + Orientation.LEFT_ABOVE, AttachLocation.CENTER, 0, 0, false); + //bt.setLocation(new Point((int)(ownerX - owner.getLocationOnScreen().getX()), (int)(ownerY - owner.getLocationOnScreen().getY()))); + bt.addMouseListener(this); + } + + } + else { + bt = new BalloonTip((JComponent)owner, contentTooltip.getTipText(), + new RoundedBalloonStyle(5,5, Color.WHITE, Color.BLACK), Orientation.LEFT_ABOVE, AttachLocation.ALIGNED, 5, 5, false); + //bt.setLocation(new Point((int)(ownerX - owner.getLocationOnScreen().getX()), (int)(ownerY - owner.getLocationOnScreen().getY()))); + + bt.addMouseListener(this); + } + } + + @Override + public void hide() { + + if (bt != null) { + fadeOutTimer = new Timer(500, new CloseBalloonTimer(bt)); + fadeOutTimer.start(); + } + } + + class CloseBalloonTimer implements ActionListener { + public BalloonTip bt; + + public CloseBalloonTimer(BalloonTip bt) { + this.bt = bt; + } + + @Override + public void actionPerformed(ActionEvent e) { + if (bt.isVisible()) { + bt.closeBalloon(); + } + } + } + + /* + * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) + */ + @Override + public void mouseClicked(MouseEvent e) { + + /*BalloonTip btSource = (BalloonTip)e.getSource(); + btSource.closeBalloon(); + BalloonTip newBt = new BalloonTip((JComponent)owner, btSource.getText(), + new RoundedBalloonStyle(5,5, Color.WHITE, Color.BLACK), Orientation.LEFT_ABOVE, AttachLocation.ALIGNED, 0, 0, true); + newBt.addMouseMotionListener(this);*/ + + BalloonTip btSource = (BalloonTip)e.getSource(); + + BalloonTip newBt; + if (btSource.getAttachedComponent() instanceof JTable) { + JTable srcTable = (JTable)btSource.getAttachedComponent(); + + Point mouseLocation = MouseInfo.getPointerInfo().getLocation(); + Point p = new Point((int)(mouseLocation.getX() - srcTable.getLocationOnScreen().getX()), + (int)(mouseLocation.getY() - srcTable.getLocationOnScreen().getY())); + int row = srcTable.rowAtPoint(p); + int column = srcTable.columnAtPoint(p); + if (row >= 0 && column >= 0 ) { + newBt = new TablecellBalloonTip(srcTable, btSource.getText(), + row, column, new RoundedBalloonStyle(5,5, Color.WHITE, Color.BLACK), + Orientation.LEFT_ABOVE, AttachLocation.ALIGNED, 0, + 0, true); + newBt.addMouseMotionListener(this); + newBt.setLocation(new Point(ownerX, ownerY)); + } + } + else { + newBt = new BalloonTip((JComponent)owner, btSource.getText(), + new RoundedBalloonStyle(5,5, Color.WHITE, Color.BLACK), Orientation.LEFT_ABOVE, AttachLocation.ALIGNED, 5, 5, true); + newBt.addMouseMotionListener(this); + } + } + + @Override + public void mousePressed(MouseEvent e) {} + + @Override + public void mouseReleased(MouseEvent e) {} + + @Override + public void mouseEntered(MouseEvent e) {} + + @Override + public void mouseExited(MouseEvent e) {} + + /* + * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) + */ + @Override + public void mouseDragged(MouseEvent e) { + + BalloonTip btSource = (BalloonTip)e.getSource(); + BalloonTipPositioner positioner = btSource.getPositioner(); + //positioner.determineAndSetLocation( + // new Rectangle((int)e.getPoint().getX(), (int)e.getPoint().getY(), + // btSource.getAttachedComponent().getWidth(), btSource.getAttachedComponent().getHeight())); + + //Component attachedComponent = btSource.getAttachedComponent(); + positioner.determineAndSetLocation( + new Rectangle((int)btSource.getLocation().getX() + (int)e.getPoint().getX(), + (int)btSource.getLocation().getY() + (int)e.getPoint().getY(), + btSource.getAttachedComponent().getWidth(), btSource.getAttachedComponent().getHeight())); + } + + /* + * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) + */ + @Override + public void mouseMoved(MouseEvent e) { + + } + } +} Property changes on: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tooltip/BalloonPopupFactory.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeModel.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeModel.java 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeModel.java 2010-03-11 15:13:06 UTC (rev 399) @@ -114,6 +114,4 @@ // TODO Auto-generated method stub } - - } Added: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeRenderer.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeRenderer.java (rev 0) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeRenderer.java 2010-03-11 15:13:06 UTC (rev 399) @@ -0,0 +1,57 @@ +/* *##% + * Copyright (C) 2010 Code Lutin, Chatellier Eric + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.test.tree; + +import java.awt.Component; + +import javax.swing.JComponent; +import javax.swing.JTree; +import javax.swing.tree.DefaultTreeCellRenderer; + +/** + * TODO add comment here. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class BasicTreeRenderer extends DefaultTreeCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = 6448391469600567754L; + + /* + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, + boolean isSelected, + boolean expanded, + boolean leaf, int row, + boolean hasFocus) { + + JComponent c = (JComponent)super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus); + + c.setToolTipText("<html><body>Un test de texte Enorme, avec du <b>gras</b>, des saut<br />de lignes, etc...<p>un nouveau paragraphe...</p><p>et le contenu réel : " + value + "</p> (" + row + ")</body></html>"); + + return this; + } +} \ No newline at end of file Property changes on: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/BasicTreeRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/FilterTreeModel.java =================================================================== --- testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/FilterTreeModel.java 2010-03-08 19:03:09 UTC (rev 398) +++ testTreeTooltipSession/trunk/src/main/java/org/nuiton/test/tree/FilterTreeModel.java 2010-03-11 15:13:06 UTC (rev 399) @@ -18,9 +18,6 @@ package org.nuiton.test.tree; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath;