/* * Created on 26.06.2008 * */ package org.jdesktop.swingx.renderer; import java.awt.Component; import java.awt.datatransfer.DataFlavor; import java.util.logging.Logger; import javax.swing.DropMode; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.TransferHandler; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import org.jdesktop.swingx.InteractiveTestCase; import org.jdesktop.swingx.JXFrame; import org.jdesktop.swingx.JXList; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.JXTree; import org.jdesktop.swingx.JXTreeTable; import org.jdesktop.swingx.test.ComponentTreeTableModel; import org.jdesktop.test.AncientSwingTeam; /** * * * @author Jeanette Winzenburg */ public class DNDRendererVisualCheck extends InteractiveTestCase { @SuppressWarnings("unused") private static final Logger LOG = Logger .getLogger(DNDRendererVisualCheck.class.getName()); public static void main(String[] args) { DNDRendererVisualCheck test = new DNDRendererVisualCheck(); try { test.runInteractiveTests(); // test.runInteractiveTests("interactive.*DropOnVisuals.*"); } catch (Exception e) { e.printStackTrace(); } } /** * Issue #766-swingx: drop image is blinking over hierarchical column. * * Core bug: <a * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6700748">#6700748</a> * * Hacks around, use one or other: * - the usual performance optimization (override validate etc to do nothing) * - rendering component return false on isVisible */ public void interactiveDropOnHierachicalColumnBlinks() { JXTreeTable xTable = new JXTreeTable(new ComponentTreeTableModel( new JXFrame())); installTransferHandler(xTable); xTable.putClientProperty(JXTreeTable.DROP_HACK_FLAG_KEY, Boolean.TRUE); xTable.expandAll(); xTable.setVisibleColumnCount(10); JXFrame frame = wrapWithScrollingInFrame(xTable, "TreeTable hierarchical: blink on drop over?"); JTextField textField = new JTextField( "drag me over hierarchical column .."); textField.setDragEnabled(true); addStatusComponent(frame, textField); frame.setVisible(true); } /** * Issue #766-swingx: drop image is blinking over hierarchical column. * * Check WrappingIconPanel in tree: blinking. Can't override the validate * because it's needed to layout the component correctly. */ public void interactiveDropOnWrappingIconPanelTree() { JXTree xTable = new JXTree(new ComponentTreeTableModel(new JXFrame())); installTransferHandler(xTable); xTable.setCellRenderer(new DefaultTreeRenderer()); xTable.expandAll(); JXFrame frame = wrapWithScrollingInFrame(xTable, "Wrapping renderer: blink on drop over?"); JTextField textField = new JTextField("drag me over tree ...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); frame.setVisible(true); } /** * Issue #766-swingx: drop image is blinking over hierarchical column. * * Check Hyperlink in Table: okay, because it has the validate et al methods * overridden to do nothing. */ public void interactiveDropOnHyperlinkTableBlinks() { JXTable xTable = new JXTable(new AncientSwingTeam()); installTransferHandler(xTable); xTable.getColumn(0).setCellRenderer( new DefaultTableRenderer(new HyperlinkProvider())); JXFrame frame = wrapWithScrollingInFrame(xTable, "Hyperlink as renderer: blink on drop over?"); JTextField textField = new JTextField("drag me over hyperlink...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); frame.setVisible(true); } /** * Issue #766-swingx: drop image is blinking over hierarchical column. * * Test WrappingIconPanel in Table. */ public void interactiveDropOnWrappingIconPanelTableBlinks() { JXTable xTable = new JXTable(new AncientSwingTeam()); installTransferHandler(xTable); xTable.getColumn(0).setCellRenderer( new DefaultTableRenderer(new WrappingProvider())); JXFrame frame = wrapWithScrollingInFrame(xTable, "WrappingIconPanel as renderer: blink on drop over?"); JTextField textField = new JTextField("drag me over first column...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); frame.setVisible(true); } /** * Issue #766-swingx: drop image is blinking over hierarchical column. * * Check plain JLabel as renderer in Table. */ public void interactiveDropOnPlainLabelTableBlinks() { JXTable xTable = new JXTable(new AncientSwingTeam()); installTransferHandler(xTable); TableCellRenderer renderer = new TableCellRenderer() { JLabel label = new JLabel(); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { label.setText(String.valueOf(value)); return label; } }; xTable.getColumn(0).setCellRenderer(renderer); JXFrame frame = wrapWithScrollingInFrame(xTable, "Plain label as renderer: blink on drop over?"); JTextField textField = new JTextField("drag me over first column...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); frame.setVisible(true); } /** * Issue #370-swingx: drop-on not shown correctly. * * Check core default renderer as renderer in Table. */ public void interactiveDropOnVisualsTable() { JXTable xTable = new JXTable(new AncientSwingTeam()); installTransferHandler(xTable); xTable.getColumn(0).setCellRenderer(new DefaultTableCellRenderer()); JTable table = new JTable(new AncientSwingTeam()); installTransferHandler(table); // xTable.setDropMode(DropMode.USE_SELECTION); // table.setDropMode(DropMode.USE_SELECTION); xTable.setDropMode(DropMode.ON_OR_INSERT); table.setDropMode(DropMode.ON_OR_INSERT); JXFrame frame = wrapWithScrollingInFrame(xTable, table, "JXTable (first column core renderer) <-> core table: drop-on appearance"); JTextField textField = new JTextField("drag me over first column...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); show(frame); } /** * Issue #370-swingx: drop-on not shown correctly. * * Check core default renderer as renderer in Table. */ public void interactiveDropOnVisualsList() { JXList xTable = new JXList(AncientSwingTeam.createNamedColorListModel()); installTransferHandler(xTable); JList table = new JList(xTable.getModel()); installTransferHandler(table); // xTable.setDropMode(DropMode.USE_SELECTION); // table.setDropMode(DropMode.USE_SELECTION); xTable.setDropMode(DropMode.ON_OR_INSERT); table.setDropMode(DropMode.ON_OR_INSERT); JXFrame frame = wrapWithScrollingInFrame(xTable, table, "JXList <-> core list: drop-on appearance"); JTextField textField = new JTextField("drag me over first column...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); show(frame); } /** * Issue #370-swingx: drop-on not shown correctly. * * Check core default renderer as renderer in Table. */ public void interactiveDropOnVisualsTree() { JXTree xTable = new JXTree(AncientSwingTeam.createNamedColorTreeModel()); installTransferHandler(xTable); xTable.setCellRenderer(new DefaultTreeRenderer()); JTree table = new JTree(xTable.getModel()); installTransferHandler(table); // xTable.setDropMode(DropMode.USE_SELECTION); // table.setDropMode(DropMode.USE_SELECTION); xTable.setDropMode(DropMode.ON_OR_INSERT); table.setDropMode(DropMode.ON_OR_INSERT); JXFrame frame = wrapWithScrollingInFrame(xTable, table, "JXTree <-> core tree: drop-on appearance"); JTextField textField = new JTextField("drag me over first column...."); textField.setDragEnabled(true); addStatusComponent(frame, textField); show(frame); } private void installTransferHandler(JComponent xTable) { TransferHandler tableTransfer = new TransferHandler() { @Override public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { return true; } }; xTable.setTransferHandler(tableTransfer); } public void testDummy() { // do nothing - placeholder for empty issues } }