X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.ui%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fui%2FTableRowResizer.java;h=52bb25c46051c8d5750ce15045c13944f8733fc1;hp=a25796bf4fb6dddacc08dc8dd1a5acd123513534;hb=refs%2Fchanges%2F38%2F238%2F2;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TableRowResizer.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TableRowResizer.java index a25796bf4..52bb25c46 100644 --- a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TableRowResizer.java +++ b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TableRowResizer.java @@ -1,94 +1,94 @@ -package org.simantics.spreadsheet.ui; - -import javax.swing.*; -import javax.swing.table.*; -import javax.swing.event.MouseInputAdapter; -import java.awt.*; -import java.awt.event.MouseEvent; - -public class TableRowResizer extends MouseInputAdapter -{ - public static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR); - - private int mouseYOffset, resizingRow; - private Cursor otherCursor = resizeCursor; - private JTable table; - - public TableRowResizer(JTable table){ - this.table = table; - table.addMouseListener(this); - table.addMouseMotionListener(this); - } - - private int getResizingRow(Point p){ - return getResizingRow(p, table.rowAtPoint(p)); - } - - private int getResizingRow(Point p, int row){ - if(row == -1){ - return -1; - } - int col = table.columnAtPoint(p); - if(col==-1) - return -1; - Rectangle r = table.getCellRect(row, col, true); - r.grow(0, -3); - if(r.contains(p)) - return -1; - - int midPoint = r.y + r.height / 2; - int rowIndex = (p.y < midPoint) ? row - 1 : row; - - return rowIndex; - } - - public void mousePressed(MouseEvent e){ - Point p = e.getPoint(); - - resizingRow = getResizingRow(p); - mouseYOffset = p.y - table.getRowHeight(resizingRow); - } - - private void swapCursor(){ - Cursor tmp = table.getCursor(); - table.setCursor(otherCursor); - otherCursor = tmp; - } - - public void mouseMoved(MouseEvent e){ - if((getResizingRow(e.getPoint())>=0) - != (table.getCursor() == resizeCursor)){ - swapCursor(); - } - } - - private boolean dragging = false; - - public void mouseDragged(MouseEvent e){ - int mouseY = e.getY(); - - if(resizingRow >= 0){ - int newHeight = mouseY - mouseYOffset; - if(newHeight > 0) { - table.setRowHeight(resizingRow, newHeight); - } - } - dragging = true; - } - - @Override - public void mouseReleased(MouseEvent e) { - if (dragging) { - int mouseY = e.getY(); - int newHeight = mouseY - mouseYOffset; - System.out.println(newHeight); - onResize(resizingRow, newHeight); - dragging = false; - } - } - - public void onResize(int row, int height) { - - } - +package org.simantics.spreadsheet.ui; + +import javax.swing.*; +import javax.swing.table.*; +import javax.swing.event.MouseInputAdapter; +import java.awt.*; +import java.awt.event.MouseEvent; + +public class TableRowResizer extends MouseInputAdapter +{ + public static Cursor resizeCursor = Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR); + + private int mouseYOffset, resizingRow; + private Cursor otherCursor = resizeCursor; + private JTable table; + + public TableRowResizer(JTable table){ + this.table = table; + table.addMouseListener(this); + table.addMouseMotionListener(this); + } + + private int getResizingRow(Point p){ + return getResizingRow(p, table.rowAtPoint(p)); + } + + private int getResizingRow(Point p, int row){ + if(row == -1){ + return -1; + } + int col = table.columnAtPoint(p); + if(col==-1) + return -1; + Rectangle r = table.getCellRect(row, col, true); + r.grow(0, -3); + if(r.contains(p)) + return -1; + + int midPoint = r.y + r.height / 2; + int rowIndex = (p.y < midPoint) ? row - 1 : row; + + return rowIndex; + } + + public void mousePressed(MouseEvent e){ + Point p = e.getPoint(); + + resizingRow = getResizingRow(p); + mouseYOffset = p.y - table.getRowHeight(resizingRow); + } + + private void swapCursor(){ + Cursor tmp = table.getCursor(); + table.setCursor(otherCursor); + otherCursor = tmp; + } + + public void mouseMoved(MouseEvent e){ + if((getResizingRow(e.getPoint())>=0) + != (table.getCursor() == resizeCursor)){ + swapCursor(); + } + } + + private boolean dragging = false; + + public void mouseDragged(MouseEvent e){ + int mouseY = e.getY(); + + if(resizingRow >= 0){ + int newHeight = mouseY - mouseYOffset; + if(newHeight > 0) { + table.setRowHeight(resizingRow, newHeight); + } + } + dragging = true; + } + + @Override + public void mouseReleased(MouseEvent e) { + if (dragging) { + int mouseY = e.getY(); + int newHeight = mouseY - mouseYOffset; + System.out.println(newHeight); + onResize(resizingRow, newHeight); + dragging = false; + } + } + + public void onResize(int row, int height) { + + } + } \ No newline at end of file