Author: jflesch
Date: 2007-08-03 01:17:29 +0000 (Fri, 03 Aug 2007)
New Revision: 14472

Modified:
   trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java
   trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
Log:
Synchronize the access to the board list and to the message list (once again to 
try to prevent a possible freeze)

Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java   2007-08-02 
22:07:29 UTC (rev 14471)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java   2007-08-03 
01:17:29 UTC (rev 14472)
@@ -204,7 +204,9 @@
                }

                public Vector getBoardList() {
-                       return boardList;
+                       synchronized(boardList) {
+                               return boardList;
+                       }
                }

                public void setBoardList(Vector l) {
@@ -216,17 +218,21 @@

                        boardList = l;

-                       if (boardList.size() < oldSize)
-                               fireIntervalRemoved(this, boardList.size(), 
oldSize);
+                       synchronized(boardList) {
+                               if (boardList.size() < oldSize)
+                                       fireIntervalRemoved(this, 
boardList.size(), oldSize);

-                       if (boardList.size() > oldSize)
-                               fireIntervalAdded(this, oldSize, 
boardList.size());
+                               if (boardList.size() > oldSize)
+                                       fireIntervalAdded(this, oldSize, 
boardList.size());

-                       fireContentsChanged(this, 0, boardList.size());
+                               fireContentsChanged(this, 0, boardList.size());
+                       }
                }

                public void refresh(Board board) {
-                       refresh(boardList.indexOf(board));
+                       synchronized(boardList) {
+                               refresh(boardList.indexOf(board));
+                       }
                }

                public void refresh(int row) {
@@ -237,14 +243,18 @@
                        if (boardList == null)
                                return null;

-                       return boardList.get(index);
+                       synchronized(boardList) {
+                               return boardList.get(index);
+                       }
                }

                public int getSize() {
                        if (boardList == null)
                                return 0;

-                       return boardList.size();
+                       synchronized(boardList) {
+                               return boardList.size();
+                       }
                }
        }


Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java    
2007-08-02 22:07:29 UTC (rev 14471)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java    
2007-08-03 01:17:29 UTC (rev 14472)
@@ -381,7 +381,9 @@
                }

                public Enumeration children() {
-                       return children.elements();
+                       synchronized(children) { /* yep, quite useless */
+                               return children.elements();
+                       }
                }

                public boolean getAllowsChildren() {
@@ -389,15 +391,21 @@
                }

                public TreeNode getChildAt(int childIndex) {
-                       return (MessageNode)children.get(childIndex);
+                       synchronized(children) {
+                               return (MessageNode)children.get(childIndex);
+                       }
                }

                public int getChildCount() {
-                       return children.size();
+                       synchronized(children) {
+                               return children.size();
+                       }
                }

                public int getIndex(TreeNode node) {
-                       return children.indexOf(node);
+                       synchronized(children) {
+                               return children.indexOf(node);
+                       }
                }

                public TreeNode getParent() {
@@ -405,7 +413,9 @@
                }

                public boolean isLeaf() {
-                       return (children.size() == 0);
+                       synchronized(children) {
+                               return (children.size() == 0);
+                       }
                }
        }

@@ -455,11 +465,15 @@
                }

                public void registerChild(MessageNode node) {
-                       children.insertElementAt(node, 0);
+                       synchronized(children) {
+                               children.insertElementAt(node, 0);
+                       }
                }

                public java.util.Enumeration children() {
-                       return children.elements();
+                       synchronized(children) {
+                               return children.elements();
+                       }
                }

                public boolean getAllowsChildren() {
@@ -467,15 +481,21 @@
                }

                public TreeNode getChildAt(int childIndex) {
-                       return (MessageNode)children.get(childIndex);
+                       synchronized(children) {
+                               return (MessageNode)children.get(childIndex);
+                       }
                }

                public int getChildCount() {
-                       return children.size();
+                       synchronized(children) {
+                               return children.size();
+                       }
                }

                public int getIndex(TreeNode node) {
-                       return children.indexOf(node);
+                       synchronized(children) {
+                               return children.indexOf(node);
+                       }
                }

                public TreeNode getParent() {
@@ -483,7 +503,9 @@
                }

                public boolean isLeaf() {
-                       return (children.size() == 0);
+                       synchronized(children) {
+                               return (children.size() == 0);
+                       }
                }

                public String toString() {
@@ -591,7 +613,9 @@

                public int getRowCount() {
                        if (msgs == null) return 0;
-                       return msgs.size();
+                       synchronized(msgs) {
+                               return msgs.size();
+                       }
                }

                public int getColumnCount() {
@@ -603,7 +627,9 @@
                }

                public Message getMsg(int row) {
-                       return ((MessageNode)msgs.get(row)).getMessage();
+                       synchronized(msgs) {
+                               return 
((MessageNode)msgs.get(row)).getMessage();
+                       }
                }

                public Object getValueAt(int row, int column) {
@@ -612,11 +638,17 @@
                        }

                        if (column == 1) {
-                               return (MessageNode)msgs.get(row);
+                               synchronized(msgs) {
+                                       return (MessageNode)msgs.get(row);
+                               }
                        }

-                       Message msg = ((MessageNode)msgs.get(row)).getMessage();
+                       Message msg;

+                       synchronized(msgs) {
+                               msg = ((MessageNode)msgs.get(row)).getMessage();
+                       }
+
                        if (msg == null)
                                return "(?)";

@@ -642,8 +674,12 @@
                public void setMessages(Vector msgs) {
                        this.msgs = msgs;

-                       int lng = msgs.size();
+                       int lng = 0;

+                       synchronized(msgs) {
+                               lng = msgs.size();
+                       }
+
                        selection = new boolean[lng];

                        for (int i = 0 ; i < lng ; i++)
@@ -652,11 +688,13 @@


                public void setSelectedAll(boolean s) {
-                       for (int i = 0 ; i < selection.length ; i++) {
-                               Message msg = 
((MessageNode)msgs.get(i)).getMessage();
+                       synchronized(msgs) {
+                               for (int i = 0 ; i < selection.length ; i++) {
+                                       Message msg = 
((MessageNode)msgs.get(i)).getMessage();

-                               if (msg != null)
-                                       selection[i] = s;
+                                       if (msg != null)
+                                               selection[i] = s;
+                               }
                        }
                }

@@ -667,8 +705,12 @@


                public void switchSelection(int row) {
-                       Message msg = ((MessageNode)msgs.get(row)).getMessage();
+                       Message msg = null;

+                       synchronized(msgs) {
+                               msg = ((MessageNode)msgs.get(row)).getMessage();
+                       }
+
                        if (msg != null)
                                selection[row] = !selection[row];
                        else


Reply via email to