Author: jflesch
Date: 2007-01-27 20:24:50 +0000 (Sat, 27 Jan 2007)
New Revision: 11631

Modified:
   trunk/apps/Thaw/src/thaw/i18n/thaw.properties
   trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
   trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
   trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
Log:
Add an option to sort an index folder by alphabetic order + change all the 
'index categories' into 'index folders' in the IndexTree class

Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties       2007-01-27 19:34:21 UTC 
(rev 11630)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties       2007-01-27 20:24:50 UTC 
(rev 11631)
@@ -296,3 +296,4 @@

 thaw.plugin.index.indexWithNoLink=The index '?' has no link.\nAre you sure 
that you want to insert it as it ?

+thaw.plugin.index.sortAlphabetically=Sort by alphabetic order
\ No newline at end of file

Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java     2007-01-27 
19:34:21 UTC (rev 11630)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java     2007-01-27 
20:24:50 UTC (rev 11631)
@@ -903,6 +903,87 @@
                return keys;
        }

+
+
+       public void reorder() {
+               int position;
+
+               synchronized(db.dbLock) {
+                       try {
+                               PreparedStatement selectSt;
+                               PreparedStatement updateSt;
+
+                               position = 0;
+
+
+                               /* We first sort the index folders */
+
+                               if (id >= 0) {
+                                       selectSt =
+                                               
db.getConnection().prepareStatement("SELECT id FROM indexFolders WHERE parent = 
? ORDER BY name");
+                               } else {
+                                       selectSt =
+                                               
db.getConnection().prepareStatement("SELECT id FROM indexFolders WHERE parent 
IS NULL ORDER BY name");
+                               }
+
+                               updateSt =
+                                       
db.getConnection().prepareStatement("UPDATE indexFolders SET positionInTree = ? 
WHERE id = ?");
+
+
+                               if (id >= 0)
+                                       selectSt.setInt(1, id);
+
+
+                               ResultSet set = selectSt.executeQuery();
+
+
+                               while(set.next()) {
+                                       updateSt.setInt(1, position);
+                                       updateSt.setInt(2, set.getInt("id"));
+                                       updateSt.execute();
+                                       position++;
+                               }
+
+
+
+                               /* next we sort the indexes */
+
+
+
+                               if (id >= 0) {
+                                       selectSt =
+                                               
db.getConnection().prepareStatement("SELECT id FROM indexes WHERE parent = ? 
ORDER BY displayName");
+                               } else {
+                                       selectSt =
+                                               
db.getConnection().prepareStatement("SELECT id FROM indexes WHERE parent IS 
NULL ORDER BY displayName");
+                               }
+
+                               updateSt =
+                                       
db.getConnection().prepareStatement("UPDATE indexes SET positionInTree = ? 
WHERE id = ?");
+
+
+                               if (id >= 0)
+                                       selectSt.setInt(1, id);
+
+
+                               set = selectSt.executeQuery();
+
+
+                               while(set.next()) {
+                                       updateSt.setInt(1, position);
+                                       updateSt.setInt(2, set.getInt("id"));
+                                       updateSt.execute();
+                                       position++;
+                               }
+
+
+                       } catch(SQLException e) {
+                               Logger.error(this, "Error while reordering: 
"+e.toString());
+                       }
+               }
+       }
+
+
        public String toString() {
                if (id < 0)
                        return 
thaw.core.I18n.getMessage("thaw.plugin.index.yourIndexes");

Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-01-27 19:34:21 UTC (rev 11630)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-01-27 20:24:50 UTC (rev 11631)
@@ -1430,4 +1430,26 @@
        }


+
+       public static class IndexFolderReorderer extends BasicIndexAction 
implements Runnable {
+               public IndexFolderReorderer(IndexBrowserPanel indexBrowser, 
final AbstractButton actionSource) {
+                       super(null, indexBrowser, actionSource);
+               }
+
+               public void setTarget(final IndexTreeNode node) {
+                       super.setTarget(node);
+                       getActionSource().setEnabled(node != null && node 
instanceof IndexFolder);
+               }
+
+               public void apply() {
+                       if (getTarget() != null && getTarget() instanceof 
IndexFolder) {
+                               ((IndexFolder)getTarget()).reorder();
+                               ((IndexFolder)getTarget()).forceReload();
+                               
getIndexBrowserPanel().getIndexTree().refresh(getTarget());
+                       }
+                       else
+                               Logger.notice(this, "No target ?!");
+               }
+       }
+
 }

Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java       2007-01-27 
19:34:21 UTC (rev 11630)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java       2007-01-27 
20:24:50 UTC (rev 11631)
@@ -53,8 +53,8 @@
        private JTree tree;
        private IndexRoot root;

-       private JPopupMenu indexCategoryMenu;
-       private Vector indexCategoryActions; /* 
IndexManagementHelper.MenuAction */
+       private JPopupMenu indexFolderMenu;
+       private Vector indexFolderActions; /* IndexManagementHelper.MenuAction 
*/
        // downloadIndexes
        // createIndex
        // addIndex
@@ -139,8 +139,8 @@
                JMenuItem item;


-               indexCategoryMenu = new 
JPopupMenu(I18n.getMessage("thaw.plugin.index.category"));
-               indexCategoryActions = new Vector();
+               indexFolderMenu = new 
JPopupMenu(I18n.getMessage("thaw.plugin.index.category"));
+               indexFolderActions = new Vector();

                indexAndFileMenu = new JPopupMenu();
                indexAndFileActions = new Vector();
@@ -149,39 +149,43 @@
                linkMenu = new 
JMenu(I18n.getMessage("thaw.plugin.index.links"));


-               // Category menu
+               // Folder menu

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.downloadIndexes"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexDownloader(queueManager, indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexDownloader(queueManager, indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.markAllAsSeen"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexHasChangedFlagReseter(indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexHasChangedFlagReseter(indexBrowser, item));

+               item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.sortAlphabetically"));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexFolderReorderer(indexBrowser, item));
+
                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexReuser(queueManager, indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexReuser(queueManager, indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.addCategory"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexFolderAdder(indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexFolderAdder(indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.createIndex"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexCreator(queueManager, indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexCreator(queueManager, indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.rename"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexRenamer(indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexRenamer(indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.delete"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.IndexDeleter(indexBrowser, item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.IndexDeleter(indexBrowser, item));

                item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"));
-               indexCategoryMenu.add(item);
-               indexCategoryActions.add(new 
IndexManagementHelper.PublicKeyCopier(item));
+               indexFolderMenu.add(item);
+               indexFolderActions.add(new 
IndexManagementHelper.PublicKeyCopier(item));


                // Index menu
@@ -367,7 +371,7 @@
        public void updateMenuState(final IndexTreeNode node) {
                IndexManagementHelper.IndexAction action;

-               for(final Iterator it = indexCategoryActions.iterator();
+               for(final Iterator it = indexFolderActions.iterator();
                    it.hasNext();) {
                        action = (IndexManagementHelper.IndexAction)it.next();
                        action.setTarget(node);
@@ -413,7 +417,7 @@

                        if(selectedNode instanceof IndexFolder) {
                                updateMenuState(selectedNode);
-                               indexCategoryMenu.show(e.getComponent(), 
e.getX(), e.getY());
+                               indexFolderMenu.show(e.getComponent(), 
e.getX(), e.getY());
                        }

                        if(selectedNode instanceof Index) {
@@ -485,12 +489,14 @@

        public void refresh(IndexTreeNode node) {
                forceHasChangedFlagReload = true;
+
                if (treeModel != null) {
                        if (node != null && node.isInTree())
                                treeModel.reload(node.getTreeNode());
                        else
                                treeModel.reload(getRoot().getTreeNode());
                }
+
                forceHasChangedFlagReload = false;
        }



Reply via email to