summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ResizeColumnListener.java
diff options
context:
space:
mode:
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.java74
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