diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java new file mode 100644 index 00000000..104885fe --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java @@ -0,0 +1,74 @@ +package org.openslx.dozmod.gui.helper; + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.table.*; + +public class ResizeColumnListener implements MouseListener { + private static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR); + + private MouseListener uiListener; + private JTableHeader header; + private TableColumnAdjuster tca; + + public ResizeColumnListener(JTable table) { + header = table.getTableHeader(); + tca = new TableColumnAdjuster(table); + + MouseListener[] listeners = header.getMouseListeners(); + + for (MouseListener ml : listeners) { + String className = ml.getClass().toString(); + + if (className.contains("BasicTableHeaderUI")) { + uiListener = ml; + header.removeMouseListener(ml); + header.addMouseListener(this); + } + } + } + + @Override + public void mouseClicked(MouseEvent e) { + if (header.getCursor() != resizeCursor) { + uiListener.mouseClicked(e); + return; + } + + // Handle the double click event to resize the column + // Note: The last 3 pixels + 3 pixels of next column are for resizing, + // so we need to adjust the mouse point to get the actual column. + + if (e.getClickCount() == 2) { + Point p = e.getPoint(); + p.x -= 3; + int column = header.columnAtPoint(p); + tca.adjustColumn(column); + + // Generate event to reset the cursor + header.dispatchEvent(new MouseEvent(header, MouseEvent.MOUSE_MOVED, e.getWhen(), e.getModifiers(), e.getX(), + e.getY(), 0, false)); + } + } + + @Override + public void mouseEntered(MouseEvent e) { + uiListener.mouseEntered(e); + } + + @Override + public void mouseExited(MouseEvent e) { + uiListener.mouseExited(e); + } + + @Override + public void mousePressed(MouseEvent e) { + uiListener.mousePressed(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + uiListener.mouseReleased(e); + } +}
\ No newline at end of file |