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;
+               }
+       }
 }


Reply via email to