Author: jflesch
Date: 2007-08-13 18:23:03 +0000 (Mon, 13 Aug 2007)
New Revision: 14660
Modified:
trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
Log:
Allow to quickly select multiple messages
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-08-13
18:07:21 UTC (rev 14659)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-08-13
18:23:03 UTC (rev 14660)
@@ -806,7 +806,7 @@
setFont(new Font("Dialog", style, 12));
if (newComment)
- value = o.toString() + " *";
+ value = "* "+o.toString();
}
}
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-13 18:07:21 UTC (rev 14659)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-13 18:23:03 UTC (rev 14660)
@@ -194,7 +194,7 @@
"table_minifrost_message_table",
model);
table.setDefaultRenderer(table.getColumnClass(0), new
MessageTableRenderer());
-
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+
//table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
table.getColumnModel().getColumn(0).setPreferredWidth(FIRST_COLUMN_SIZE);
table.getColumnModel().getColumn(0).setResizable(false);
@@ -758,8 +758,25 @@
selection[row] = !selection[row];
else
selection[row] = false;
+
+ refresh(row);
}
+ public void switchSelection(int row, boolean val) {
+ Message msg = null;
+
+ synchronized(msgs) {
+ msg = ((MessageNode)msgs.get(row)).getMessage();
+ }
+
+ if (msg != null)
+ selection[row] = val;
+ else
+ selection[row] = false;
+
+ refresh(row);
+ }
+
public Vector getMessages(Vector msgs) {
return msgs;
}
@@ -1090,7 +1107,10 @@
}
+ public int startRow = -1;
+ public int endRow = -1;
+
public void mouseClicked(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
@@ -1101,16 +1121,60 @@
model.switchSelection(row);
refresh(row);
} else {
- Message msg = model.getMsg(row);
- if (msg != null) {
- mainPanel.getMessagePanel().setMessage(msg);
- mainPanel.displayMessage();
+ if (endRow < 0)
+ endRow = row;
+
+ if ( (startRow < 0 || endRow >= 0 || startRow ==
endRow) ) {
+ /* only one selection */
+
+ Message msg = model.getMsg(row);
+ if (msg != null) {
+
mainPanel.getMessagePanel().setMessage(msg);
+ mainPanel.displayMessage();
+ }
+
}
}
+
+ startRow = -1;
+ endRow = -1;
}
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
- public void mousePressed(MouseEvent e) { }
- public void mouseReleased(MouseEvent e) { }
+
+ public void mousePressed(MouseEvent e) {
+ int column = table.columnAtPoint(e.getPoint());
+
+ Logger.info(this, "mouse pressed");
+
+ startRow = -1;
+ endRow = -1;
+
+ if (column == 0) {
+ return;
+ }
+
+ startRow = table.rowAtPoint(e.getPoint());
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ int column = table.columnAtPoint(e.getPoint());
+
+ Logger.info(this, "mouse released");
+
+ endRow = table.rowAtPoint(e.getPoint());
+
+ if (startRow >= 0 && endRow >= 0
+ && startRow != endRow) {
+ /* many selections */
+
+ for (int i = startRow ; i <= endRow ; i++) {
+ model.switchSelection(i);
+ }
+
+ startRow = -1;
+ endRow = -1;
+ }
+ }
}