From jflesch at freenetproject.org Fri Dec 1 06:57:48 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 06:57:48 +0000 (UTC) Subject: [Thaw-dev] r11169 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201065748.94BF09CA5B@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 06:57:46 +0000 (Fri, 01 Dec 2006) New Revision: 11169 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Fix the fix (bug 914) Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 02:33:27 UTC (rev 11168) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 06:57:46 UTC (rev 11169) @@ -117,6 +117,10 @@ this.setTransfer(); } + public static boolean isDumbKey(String key) { + return (key == null || key.equals("") || key.length() < 20); + } + public void setParent(IndexCategory parent) { this.parent = parent; } @@ -134,8 +138,8 @@ } public void generateKeys() { - publicKey = null; - privateKey = null; + publicKey = ""; + privateKey = ""; sskGenerator = new FCPGenerateSSK(); sskGenerator.addObserver(this); @@ -198,23 +202,27 @@ Connection c = this.db.getConnection(); PreparedStatement st; - if(privateKey == null) { + //if(privateKey == null) { st = c.prepareStatement("UPDATE indexes SET displayName = ? WHERE id = ?"); st.setString(1, name); st.setInt(2, this.id); + /* } else { st = c.prepareStatement("UPDATE indexes SET displayName = ?, originalName = ? WHERE id = ?"); st.setString(1, name); st.setString(2, name); st.setInt(3, this.id); } + */ st.execute(); this.displayName = name; + /* if(privateKey != null) this.realName = name; + */ } catch(SQLException e) { Logger.error(this, "Unable to rename the index '"+this.displayName+"' in '"+name+"', because: "+e.toString()); @@ -248,10 +256,10 @@ public void update() { - if (publicKey != null && privateKey == null) /* non modifiable */ + if (!isDumbKey(publicKey) && isDumbKey(privateKey)) /* non modifiable */ return; - if (publicKey == null && privateKey == null) { + if (isDumbKey(publicKey) && isDumbKey(privateKey)) { generateKeys(); updateWhenKeyAreAvailable = true; return; @@ -485,8 +493,8 @@ } public String getPublicKey() { - if (publicKey == null) - return publicKey; + if (publicKey == null || isDumbKey(publicKey)) + return null; if (publicKey.startsWith("SSK@")) { /* as it should when privateKey is known */ if (publicKey.endsWith("/")) @@ -498,6 +506,8 @@ } public String getPrivateKey() { + if (privateKey == null || isDumbKey(privateKey)) + return null; return privateKey; } From jflesch at freenetproject.org Fri Dec 1 18:37:26 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 18:37:26 +0000 (UTC) Subject: [Thaw-dev] r11175 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201183726.92AA420B0CD@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 18:37:24 +0000 (Fri, 01 Dec 2006) New Revision: 11175 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java Log: Fix bugs 946 & 947 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 18:23:00 UTC (rev 11174) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 18:37:24 UTC (rev 11175) @@ -580,7 +580,7 @@ else revision = FreenetURIHelper.getUSKRevision(transfer.getFileKey()); - Logger.info(this, "Most up-to-date key found: " + publicKey); + Logger.info(this, "Most up-to-date key found: " + getPublicKey()); /* Reminder: These requests are non-peristent */ Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-01 18:23:00 UTC (rev 11174) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-01 18:37:24 UTC (rev 11175) @@ -70,8 +70,8 @@ this.id = 0; } - st = c.prepareStatement("INSERT INTO indexCategories (id, name, positionInTree, parent) "+ - "VALUES (?, ?,?,?)"); + st = c.prepareStatement("INSERT INTO indexCategories (id, name, positionInTree, parent, modifiableIndexes) "+ + "VALUES (?, ?,?,?, true)"); st.setInt(1, this.id); st.setString(2, this.name); From jflesch at freenetproject.org Fri Dec 1 18:50:26 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 18:50:26 +0000 (UTC) Subject: [Thaw-dev] r11176 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201185026.68AAA9CAEB@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 18:50:24 +0000 (Fri, 01 Dec 2006) New Revision: 11176 Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Exchange 'ok' and 'cancel' in the dialog allowing to add an index Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-01 18:37:24 UTC (rev 11175) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-01 18:50:24 UTC (rev 11176) @@ -233,8 +233,9 @@ cancelButton.addActionListener(this); okButton.addActionListener(this); + subPanelC.add(okButton); subPanelC.add(cancelButton); - subPanelC.add(okButton); + frame.getContentPane().add(subPanelC, BorderLayout.SOUTH); frame.setSize(700, 100); From jflesch at freenetproject.org Fri Dec 1 19:25:23 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 19:25:23 +0000 (UTC) Subject: [Thaw-dev] r11178 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201192523.4E8249CA73@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 19:25:19 +0000 (Fri, 01 Dec 2006) New Revision: 11178 Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java Log: Put the updated indexes in bold in the tree Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -167,6 +167,9 @@ public void mouseClicked(MouseEvent e) { + if (fileList instanceof Index) + ((Index)fileList).setChanged(false); + if(e.getButton() == MouseEvent.BUTTON3 && fileList != null) { selectedRows = table.getSelectedRows(); Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -60,8 +60,8 @@ private String author = null; private boolean rewriteKey = true; - private boolean xmlParserReady = false; + private boolean changed = false; private FCPClientPut publicKeyRecalculation = null; @@ -312,8 +312,8 @@ Logger.warning(this, "Index not generated !"); } - this.setChanged(); - this.notifyObservers(); + setChanged(); + notifyObservers(); } else { this.updateFromFreenet(-1); } @@ -575,13 +575,17 @@ if (this.transfer instanceof FCPClientGet) { ((FCPClientGet)this.transfer).deleteObserver(this); + int oldRevision = revision; + if (rewriteKey) publicKey = transfer.getFileKey(); - else - revision = FreenetURIHelper.getUSKRevision(transfer.getFileKey()); + revision = FreenetURIHelper.getUSKRevision(transfer.getFileKey()); + Logger.info(this, "Most up-to-date key found: " + getPublicKey()); + if (oldRevision < revision) + changed = true; /* Reminder: These requests are non-peristent */ //if (this.transfer.stop(this.queueManager)) @@ -625,6 +629,16 @@ } + public boolean hasChanged() { + return changed; + } + + + public void setChanged(boolean val) { + changed = val; + } + + public boolean isEmpty() { if (this.fileList == null) this.loadFiles(null, true); @@ -673,8 +687,9 @@ Logger.error(this, "Unable to get the file list for index: '"+this.toString()+"' because: "+e.toString()); } - this.setChanged(); - this.notifyObservers(); + setChanged(false); /* java.util.Index */ + setChanged(); /* java.util.Observer */ + notifyObservers(); } /** @@ -868,7 +883,8 @@ Logger.error(this, "Unable to get the link list for index: '"+this.toString()+"' because: "+e.toString()); } - setChanged(); + setChanged(false); /* Index */ + setChanged(); /* java.util.Observable */ notifyObservers(); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -420,8 +420,7 @@ /** * Returns true only if all its child are modifiable */ - public boolean isModifiable() - { + public boolean isModifiable() { if(children == null) children = loadChildren(); @@ -436,6 +435,21 @@ } + public boolean hasChanged() { + if(children == null) + children = loadChildren(); + + for(Iterator it = children.iterator(); + it.hasNext();) { + IndexTreeNode node = (IndexTreeNode)((DefaultMutableTreeNode)it.next()).getUserObject(); + if (node.hasChanged()) + return true; + } + + return false; + } + + public boolean isLeaf() { return false; } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -12,6 +12,8 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.DefaultTreeCellRenderer; +import java.awt.Font; + import javax.swing.JPopupMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -394,8 +396,9 @@ boolean leaf, int row, boolean hasFocus) { - this.setBackgroundNonSelectionColor(Color.WHITE); - this.setBackgroundSelectionColor(SELECTION_COLOR); + setBackgroundNonSelectionColor(Color.WHITE); + setBackgroundSelectionColor(SELECTION_COLOR); + setFont(new Font("Dialog", Font.PLAIN, 12)); if(value instanceof DefaultMutableTreeNode) { Object o = ((DefaultMutableTreeNode)value).getUserObject(); @@ -403,11 +406,15 @@ if(o instanceof Index) { Index index = (Index)o; - if(index.isUpdating()) { - this.setBackgroundNonSelectionColor(LOADING_COLOR); - this.setBackgroundSelectionColor(LOADING_SELECTION_COLOR); + if (index.isUpdating()) { + setBackgroundNonSelectionColor(LOADING_COLOR); + setBackgroundSelectionColor(LOADING_SELECTION_COLOR); } } + + if (((IndexTreeNode)o).hasChanged()) { + setFont(new Font("Dialog", Font.BOLD, 12)); + } } return super.getTreeCellRendererComponent(tree, Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -62,4 +62,5 @@ public void addObserver(java.util.Observer o); public boolean isModifiable(); + public boolean hasChanged(); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-01 19:16:33 UTC (rev 11177) +++ trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-01 19:25:19 UTC (rev 11178) @@ -138,6 +138,9 @@ } public void mouseClicked(MouseEvent e) { + if (linkList instanceof Index) + ((Index)linkList).setChanged(false); + if(e.getButton() == MouseEvent.BUTTON3 && this.linkList != null) { selectedRows = table.getSelectedRows(); From jflesch at freenetproject.org Fri Dec 1 20:06:46 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 20:06:46 +0000 (UTC) Subject: [Thaw-dev] r11183 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201200646.950FA9BD09@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 20:06:44 +0000 (Fri, 01 Dec 2006) New Revision: 11183 Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java Log: Improve behavior of the option 'go to the corresponding index' Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2006-12-01 19:36:42 UTC (rev 11182) +++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2006-12-01 20:06:44 UTC (rev 11183) @@ -23,6 +23,8 @@ import javax.swing.JProgressBar; import javax.swing.JLabel; +import javax.swing.tree.TreePath; + import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; @@ -219,6 +221,8 @@ return; } + tree.getTree().setSelectionPath(new TreePath(parent.getTreeNode().getPath())); + tables.setList(parent); int row; Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-01 19:36:42 UTC (rev 11182) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-01 20:06:44 UTC (rev 11183) @@ -142,8 +142,8 @@ tree.setCellRenderer(treeRenderer); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + tree.setExpandsSelectedPaths(true); - // Menus : JMenuItem item; @@ -287,7 +287,7 @@ public JTree getTree() { - return this.tree; + return tree; } public IndexCategory getRoot() { Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-01 19:36:42 UTC (rev 11182) +++ trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-01 20:06:44 UTC (rev 11183) @@ -18,6 +18,8 @@ import javax.swing.JMenuItem; import javax.swing.JLabel; +import javax.swing.tree.TreePath; + import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; @@ -192,6 +194,8 @@ return; } + indexTree.getTree().setSelectionPath(new TreePath(parent.getTreeNode().getPath())); + tables.setList(parent); return; From jflesch at freenetproject.org Fri Dec 1 22:20:33 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 22:20:33 +0000 (UTC) Subject: [Thaw-dev] r11185 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061201222033.2E4B420B0CD@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 22:20:31 +0000 (Fri, 01 Dec 2006) New Revision: 11185 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Fix insertion bug Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 20:44:45 UTC (rev 11184) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 22:20:31 UTC (rev 11185) @@ -300,7 +300,7 @@ this.revision++; - clientPut = new FCPClientPut(this.targetFile, 2, this.revision, this.toString(), this.privateKey, 2, true, 0); + clientPut = new FCPClientPut(this.targetFile, 2, this.revision, realName, this.privateKey, 2, true, 0); this.transfer = clientPut; clientPut.addObserver(this); From jflesch at freenetproject.org Fri Dec 1 23:17:12 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 23:17:12 +0000 (UTC) Subject: [Thaw-dev] r11188 - in trunk/apps/Thaw/src/thaw/plugins: . index Message-ID: <20061201231712.8CD6F9CA89@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 23:17:10 +0000 (Fri, 01 Dec 2006) New Revision: 11188 Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Refix index insertion Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-01 23:14:20 UTC (rev 11187) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-01 23:17:10 UTC (rev 11188) @@ -9,7 +9,7 @@ import thaw.plugins.index.*; public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { - public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/2/Thaw.xml"; + public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/3/Thaw.xml"; private Core core; private Hsqldb hsqldb; Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 23:14:20 UTC (rev 11187) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 23:17:10 UTC (rev 11188) @@ -89,6 +89,12 @@ this.realName = realName.trim(); this.displayName = displayName.trim(); + if (realName == null) + realName = displayName; + + if (displayName == null) + displayName = realName; + if (privateKey != null) this.privateKey = privateKey.trim(); else @@ -272,7 +278,7 @@ else tmpdir = tmpdir + java.io.File.separator; - this.targetFile = new java.io.File(tmpdir + this.toString()+".xml"); + targetFile = new java.io.File(tmpdir + realName +".xml"); if (this.transfer != null) { Logger.notice(this, "A transfer is already running"); @@ -969,7 +975,7 @@ Element header = xmlDoc.createElement("header"); Element title = xmlDoc.createElement("title"); - Text titleText = xmlDoc.createTextNode(this.toString()); + Text titleText = xmlDoc.createTextNode(displayName); title.appendChild(titleText); Element owner = xmlDoc.createElement("owner"); From jflesch at freenetproject.org Fri Dec 1 23:37:14 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 1 Dec 2006 23:37:14 +0000 (UTC) Subject: [Thaw-dev] r11189 - in trunk/apps/Thaw/src/thaw/plugins: . index Message-ID: <20061201233714.999A89CA89@emu.freenetproject.org> Author: jflesch Date: 2006-12-01 23:37:12 +0000 (Fri, 01 Dec 2006) New Revision: 11189 Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Fix NPE when adding an index already in the tree Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-01 23:17:10 UTC (rev 11188) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-01 23:37:12 UTC (rev 11189) @@ -9,7 +9,7 @@ import thaw.plugins.index.*; public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { - public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/3/Thaw.xml"; + public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/4/Thaw.xml"; private Core core; private Hsqldb hsqldb; Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 23:17:10 UTC (rev 11188) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-01 23:37:12 UTC (rev 11189) @@ -475,10 +475,14 @@ st.setString(4, this.privateKey); else st.setNull(4, Types.VARCHAR); - st.setInt(5, this.treeNode.getParent().getIndex(this.treeNode)); - st.setInt(6, this.revision); + if (treeNode != null && treeNode.getParent() != null) + st.setInt(5, treeNode.getParent().getIndex(treeNode)); + else + st.setInt(5, 0); + st.setInt(6, revision); + if( ((IndexTreeNode)this.treeNode.getParent()).getId() < 0) st.setNull(7, Types.INTEGER); else @@ -611,8 +615,8 @@ save(); - this.setChanged(); - this.notifyObservers(); + setChanged(); + notifyObservers(); } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-01 23:17:10 UTC (rev 11188) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-01 23:37:12 UTC (rev 11189) @@ -175,10 +175,10 @@ Index index = new Index(db, queueManager, -2, target, name, name, publicKey, null, 0, null); - if (tree.addToIndexCategory(target, index)) + if (tree.addToIndexCategory(target, index)) { index.create(); - - index.updateFromFreenet(-1); + index.updateFromFreenet(-1); + } } From jflesch at freenetproject.org Sat Dec 2 11:17:19 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sat, 2 Dec 2006 11:17:19 +0000 (UTC) Subject: [Thaw-dev] r11191 - trunk/apps/Thaw/src/thaw/plugins Message-ID: <20061202111719.6C92E9BD1C@emu.freenetproject.org> Author: jflesch Date: 2006-12-02 11:17:17 +0000 (Sat, 02 Dec 2006) New Revision: 11191 Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java Log: Apparently, svn didn't see the key change Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-02 00:56:37 UTC (rev 11190) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-02 11:17:17 UTC (rev 11191) @@ -9,6 +9,7 @@ import thaw.plugins.index.*; public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { + public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/4/Thaw.xml"; private Core core; From jflesch at freenetproject.org Sat Dec 2 13:25:46 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sat, 2 Dec 2006 13:25:46 +0000 (UTC) Subject: [Thaw-dev] r11192 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061202132546.42C0B9CA5B@emu.freenetproject.org> Author: jflesch Date: 2006-12-02 13:25:43 +0000 (Sat, 02 Dec 2006) New Revision: 11192 Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java Log: Fix 'copy key file to clipboard' option Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java 2006-12-02 11:17:17 UTC (rev 11191) +++ trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java 2006-12-02 13:25:43 UTC (rev 11192) @@ -21,6 +21,7 @@ import thaw.fcp.*; + public class FileManagementHelper { /** * Class implementing IndexAction will automatically do an addActionListener if necessary @@ -272,6 +273,8 @@ public PublicKeyCopier(AbstractButton actionSource) { src = actionSource; + if (src != null) + src.addActionListener(this); } public void setTarget(Vector targets) { From jflesch at freenetproject.org Sat Dec 2 19:43:24 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sat, 2 Dec 2006 19:43:24 +0000 (UTC) Subject: [Thaw-dev] r11198 - in trunk/apps/Thaw/src/thaw: i18n plugins plugins/index Message-ID: <20061202194324.E47BC9BCC9@emu.freenetproject.org> Author: jflesch Date: 2006-12-02 19:43:20 +0000 (Sat, 02 Dec 2006) New Revision: 11198 Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/index/File.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: Allow to change the index key Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-02 19:43:20 UTC (rev 11198) @@ -250,3 +250,4 @@ thaw.plugin.index.gotoIndex=Go to the corresponding index thaw.plugin.index.addKeys=Add specific key(s) +thaw.plugin.index.changeIndexKeys=Change the index keys Modified: trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2006-12-02 19:43:20 UTC (rev 11198) @@ -223,5 +223,5 @@ thaw.plugin.index.insert=Ins?rer -thaw.plugin.index.addAlreadyExistingIndex=Ajouter un index d?j? existant +thaw.plugin.index.addAlreadyExistingIndex=Ajouter un index d?j? pr?sent sur Freenet Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-02 19:43:20 UTC (rev 11198) @@ -10,7 +10,7 @@ public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { - public static final String DEFAULT_INDEX = "USK at BXd4EqMSOR589aHNHOY-e2QjI9NHwPlJurKxcvo1hBg,HkrDarIUF79uc9fjGu0S3mbp7Qf8YeMHynKf2GQO3r0,AQABAAE/Thaw/4/Thaw.xml"; + public static final String DEFAULT_INDEX = "USK at G-ofLp2KlhHBNPezx~GDWDKThJ-QUxJK8c2xiF~-jwE,-55vLnqo3U1H5qmKA1LLADoYGQdk-Y3hSLxyKeUyHNc,AQABAAE/Thaw/2/Thaw.xml"; private Core core; private Hsqldb hsqldb; Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/File.java 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/plugins/index/File.java 2006-12-02 19:43:20 UTC (rev 11198) @@ -159,7 +159,7 @@ } public String getPublicKey() { - return this.publicKey; + return publicKey; } public void setPublicKey(String publicKey) { @@ -232,7 +232,10 @@ if (publicKey != null || fileName != null) { FCPTransferQuery trans; - trans = queueManager.getTransfer(publicKey); + if (getPublicKey() == null) + trans = queueManager.getTransfer(getFilename()); + else + trans = queueManager.getTransfer(getPublicKey()); if (trans == null) { trans = queueManager.getTransferByFilename(fileName); Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-02 19:43:20 UTC (rev 11198) @@ -95,29 +95,13 @@ if (displayName == null) displayName = realName; - if (privateKey != null) - this.privateKey = privateKey.trim(); - else - this.privateKey = null; + this.revision = revision; - if (publicKey != null) - this.publicKey = publicKey.trim(); - else - this.publicKey = null; + this.author = author; + setPrivateKey(privateKey); + setPublicKey(publicKey); - if (privateKey != null && publicKey != null && publicKey.startsWith("USK@")) { - String[] split = FreenetURIHelper.convertUSKtoSSK(publicKey).split("/"); - publicKey = split[0]; - } - - if (publicKey != null && publicKey.startsWith("USK@")) - this.revision = FreenetURIHelper.getUSKRevision(publicKey); - else - this.revision = revision; - - this.author = author; - this.treeNode.setUserObject(this); this.setTransfer(); @@ -144,8 +128,8 @@ } public void generateKeys() { - publicKey = ""; - privateKey = ""; + publicKey = null; + privateKey = null; sskGenerator = new FCPGenerateSSK(); sskGenerator.addObserver(this); @@ -176,8 +160,8 @@ st.setInt(1, this.id); st.setString(2, this.realName); st.setString(3, this.displayName); - st.setString(4, this.publicKey); - st.setString(5, this.privateKey); + st.setString(4, publicKey != null ? publicKey : ""); + st.setString(5, privateKey); st.setString(6, this.author); st.setInt(7, 0); @@ -208,28 +192,13 @@ Connection c = this.db.getConnection(); PreparedStatement st; - //if(privateKey == null) { - st = c.prepareStatement("UPDATE indexes SET displayName = ? WHERE id = ?"); - st.setString(1, name); - st.setInt(2, this.id); - /* - } else { - st = c.prepareStatement("UPDATE indexes SET displayName = ?, originalName = ? WHERE id = ?"); - st.setString(1, name); - st.setString(2, name); - st.setInt(3, this.id); - } - */ - + st = c.prepareStatement("UPDATE indexes SET displayName = ? WHERE id = ?"); + st.setString(1, name); + st.setInt(2, this.id); st.execute(); this.displayName = name; - /* - if(privateKey != null) - this.realName = name; - */ - } catch(SQLException e) { Logger.error(this, "Unable to rename the index '"+this.displayName+"' in '"+name+"', because: "+e.toString()); } @@ -329,6 +298,11 @@ public void updateFromFreenet(int rev) { FCPClientGet clientGet; + if (publicKey == null) { + Logger.error(this, "No public key !! Can't get the index !"); + return; + } + Logger.info(this, "Getting lastest version ..."); String key; @@ -470,9 +444,9 @@ st.setString(1, this.realName); st.setString(2, this.displayName); - st.setString(3, this.publicKey); + st.setString(3, publicKey != null ? publicKey : ""); if(this.privateKey != null) - st.setString(4, this.privateKey); + st.setString(4, privateKey); else st.setNull(4, Types.VARCHAR); @@ -515,12 +489,38 @@ return publicKey; } + /** + * Always set the privateKey first + */ + public void setPublicKey(String key) { + if (key != null && !isDumbKey(key)) + this.publicKey = key.trim(); + else + this.publicKey = null; + + + if (privateKey != null && publicKey != null && publicKey.startsWith("USK@")) { + String[] split = FreenetURIHelper.convertUSKtoSSK(publicKey).split("/"); + publicKey = split[0]; + } + + if (publicKey != null && publicKey.startsWith("USK@")) + this.revision = FreenetURIHelper.getUSKRevision(publicKey); + } + public String getPrivateKey() { if (privateKey == null || isDumbKey(privateKey)) return null; return privateKey; } + public void setPrivateKey(String key) { + if (key != null && !isDumbKey(key)) + privateKey = key.trim(); + else + privateKey = null; + } + public String toString() { String toDisp; @@ -550,10 +550,16 @@ Logger.debug(this, "Index public key: " +publicKey); Logger.debug(this, "Index private key: "+privateKey); + revision = 0; + if (updateWhenKeyAreAvailable) { updateWhenKeyAreAvailable = false; update(); } + + setChanged(); + notifyObservers(); + return; } if(o == this.transfer) { Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-02 19:43:20 UTC (rev 11198) @@ -131,9 +131,8 @@ Index index = new Index(db, queueManager, -1, target, name, name, null, null, 0, null); index.generateKeys(); + index.create(); - index.create(); /* TODO : To Check: can it be create without publicKey ? */ - tree.addToIndexCategory(target, index); } @@ -183,29 +182,41 @@ - public static class IndexReuser extends BasicIndexAction implements Runnable { + public static class KeyAsker implements ActionListener { private JButton okButton; private JButton cancelButton; private int formState; - public IndexReuser(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, tree, actionSource); + public KeyAsker() { } - public void setTarget(IndexTreeNode node) { - super.setTarget(node); - getActionSource().setEnabled(node == null || node instanceof IndexCategory); + + /** + * @return String[0] == publicKey ; String[1] == privateKey ; public or private are null if unchanged + */ + public static String[] askKeys(boolean askPrivateKey, + String defaultPublicKey, + String defaultPrivateKey) { + return ((new KeyAsker()).askKeysBis(askPrivateKey, defaultPublicKey, defaultPrivateKey)); } - protected String[] askKeys(boolean askPrivateKey) { + public String[] askKeysBis(boolean askPrivateKey, + String defaultPublicKey, + String defaultPrivateKey) { formState = 0; + if (defaultPublicKey == null) + defaultPublicKey = "USK@"; + + if (defaultPrivateKey == null) + defaultPrivateKey = "SSK@"; + JFrame frame = new JFrame(I18n.getMessage("thaw.plugin.index.indexKey")); frame.getContentPane().setLayout(new BorderLayout()); - JTextField publicKeyField = new JTextField("USK@"); - JTextField privateKeyField = new JTextField("SSK@"); + JTextField publicKeyField = new JTextField(defaultPublicKey); + JTextField privateKeyField = new JTextField(defaultPrivateKey); JPanel subPanelA = new JPanel(); /* left => labels */ JPanel subPanelB = new JPanel(); /* right => textfield */ @@ -262,21 +273,73 @@ else keys[1] = null; - if (keys[0].equals("USK@")) + if (keys[0] == null || keys[0].length() < 20) return null; - if (keys[1].equals("SSK@")) + if (keys[1] == null || keys[1].length() < 20) keys[1] = null; return keys; } + public void actionPerformed(ActionEvent e) { + if (e.getSource() == okButton) { + formState = 1; + } + + if (e.getSource() == cancelButton) { + formState = 2; + } + } + } + + public static class IndexKeyModifier extends BasicIndexAction implements Runnable { + public IndexKeyModifier(AbstractButton actionSource) { + super(null, null, null, actionSource); + } + + public void setTarget(IndexTreeNode node) { + super.setTarget(node); + getActionSource().setEnabled(node != null || node instanceof Index); + } + public void run() { + Index index = ((Index)getTarget()); + + String[] keys = KeyAsker.askKeys(true, index.getPublicKey(), index.getPrivateKey()); + + if (keys == null) + return; + + index.setPrivateKey(keys[1]); + index.setPublicKey(keys[0]); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == getActionSource()) { + Thread th = new Thread(this); + th.start(); + } + } + } + + + public static class IndexReuser extends BasicIndexAction implements Runnable { + public IndexReuser(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { + super(db, queueManager, tree, actionSource); + } + + public void setTarget(IndexTreeNode node) { + super.setTarget(node); + getActionSource().setEnabled(node == null || node instanceof IndexCategory); + } + + public void run() { String keys[]; String publicKey = null; String privateKey = null; - keys = askKeys(true); + keys = KeyAsker.askKeys(true, "USK@", "SSK@"); if (keys == null) return; @@ -292,14 +355,6 @@ Thread newThread = new Thread(this); newThread.start(); } - - if (e.getSource() == okButton) { - formState = 1; - } - - if (e.getSource() == cancelButton) { - formState = 2; - } } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-02 19:27:37 UTC (rev 11197) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-02 19:43:20 UTC (rev 11198) @@ -207,6 +207,10 @@ indexMenu.add(item); indexAndFileActions.add(new IndexManagementHelper.IndexDeleter(this, item)); + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.changeIndexKeys")); + indexMenu.add(item); + indexAndFileActions.add(new IndexManagementHelper.IndexKeyModifier(item)); + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.copyPrivateKey")); indexMenu.add(item); indexAndFileActions.add(new IndexManagementHelper.PrivateKeyCopier(item)); From jflesch at freenetproject.org Sun Dec 3 01:10:16 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 01:10:16 +0000 (UTC) Subject: [Thaw-dev] r11207 - in trunk/apps/Thaw/src/thaw: i18n plugins plugins/index Message-ID: <20061203011016.BE8219BC4F@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 01:10:09 +0000 (Sun, 03 Dec 2006) New Revision: 11207 Added: trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java trunk/apps/Thaw/src/thaw/plugins/index/Link.java trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java trunk/apps/Thaw/src/thaw/plugins/index/Tables.java Log: Add a frame where are displayed all the new unknown link Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-03 01:10:09 UTC (rev 11207) @@ -251,3 +251,5 @@ thaw.plugin.index.addKeys=Add specific key(s) thaw.plugin.index.changeIndexKeys=Change the index keys +thaw.plugin.index.unknownIndexes=Unknown indexes: + Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -70,18 +70,18 @@ button = new JButton(IconBox.indexReuse); button.setToolTipText(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex")); - action = new IndexManagementHelper.IndexReuser(hsqldb, core.getQueueManager(), browserPanel.getIndexTree(), button); + action = new IndexManagementHelper.IndexReuser(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), button); action.setTarget(browserPanel.getIndexTree().getRoot()); addButtonToTheToolbar(button); button = new JButton(IconBox.indexNew); button.setToolTipText(I18n.getMessage("thaw.plugin.index.createIndex")); - action = new IndexManagementHelper.IndexCreator(hsqldb, core.getQueueManager(), browserPanel.getIndexTree(), button); + action = new IndexManagementHelper.IndexCreator(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), button); action.setTarget(browserPanel.getIndexTree().getRoot()); addButtonToTheToolbar(button); if (newDb) { - IndexManagementHelper.addIndex(hsqldb, core.getQueueManager(), browserPanel.getIndexTree(), + IndexManagementHelper.addIndex(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), browserPanel.getIndexTree().getRoot(), DEFAULT_INDEX); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -53,6 +53,7 @@ private FCPGenerateSSK sskGenerator; private FCPQueueManager queueManager; + private UnknownIndexList uIndexList; private FCPTransferQuery transfer = null; private java.io.File targetFile = null; @@ -71,12 +72,13 @@ * The bigest constructor of the world ... * @param revision Ignored if the index is not modifiable (=> deduced from the publicKey) */ - public Index(Hsqldb db, FCPQueueManager queueManager, + public Index(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList indexList, int id, IndexCategory parent, String realName, String displayName, String publicKey, String privateKey, int revision, String author) { + this.uIndexList = indexList; this.queueManager = queueManager; this.treeNode = new DefaultMutableTreeNode(displayName, false); @@ -621,6 +623,8 @@ save(); + uIndexList.addLinks(this); + setChanged(); notifyObservers(); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -17,6 +17,8 @@ public class IndexBrowserPanel implements javax.swing.event.TreeSelectionListener, ActionListener { private IndexTree indexTree; + private JSplitPane leftSplit; + private UnknownIndexList unknownList; private JSplitPane split; @@ -28,25 +30,32 @@ private FCPQueueManager queueManager; private Config config; + + public IndexBrowserPanel(Hsqldb db, FCPQueueManager queueManager, Config config) { this.db = db; this.queueManager = queueManager; this.config = config; - this.indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.indexes"), false, queueManager, db); + unknownList = new UnknownIndexList(db, queueManager); + indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.indexes"), false, queueManager, unknownList, db); + unknownList.setIndexTree(indexTree); /* TODO: dirty => find a better way */ + leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, + indexTree.getPanel(), + unknownList.getPanel()); + this.listAndDetails = new JPanel(); this.listAndDetails.setLayout(new BorderLayout(10, 10)); - this.tables = new Tables(false, db, queueManager, this.indexTree, config); + this.tables = new Tables(false, db, queueManager, unknownList, this.indexTree, config); this.fileDetails = new FileDetailsEditor(false); this.listAndDetails.add(this.tables.getPanel(), BorderLayout.CENTER); this.listAndDetails.add(this.fileDetails.getPanel(), BorderLayout.SOUTH); this.split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, - this.indexTree.getPanel(), - this.listAndDetails); + leftSplit, listAndDetails); this.indexTree.addTreeSelectionListener(this); } @@ -55,6 +64,17 @@ if (config.getValue("indexBrowserPanelSplitPosition") != null) split.setDividerLocation(Integer.parseInt(this.config.getValue("indexBrowserPanelSplitPosition"))); + leftSplit.setSize(150, MainWindow.DEFAULT_SIZE_Y - 150); + leftSplit.setResizeWeight(0.5); + + if (config.getValue("indexTreeUnknownListSplitLocation") == null) { + leftSplit.setDividerLocation(((double)0.5)); + } else { + leftSplit.setDividerLocation(Double.parseDouble(config.getValue("indexTreeUnknownListSplitLocation"))); + } + + leftSplit.setResizeWeight(0.5); + tables.restoreState(); } @@ -66,6 +86,10 @@ return indexTree; } + public UnknownIndexList getUnknownIndexList() { + return unknownList; + } + public JSplitPane getPanel() { return this.split; } @@ -73,6 +97,13 @@ public void saveState() { this.indexTree.save(); this.config.setValue("indexBrowserPanelSplitPosition", Integer.toString(this.split.getDividerLocation())); + double splitLocation; + + splitLocation = ((double)leftSplit.getDividerLocation() - ((double)leftSplit.getMinimumDividerLocation())) / (((double)leftSplit.getMaximumDividerLocation()) - ((double)leftSplit.getMinimumDividerLocation())); + + config.setValue("indexTreeUnknownListSplitLocation", + Double.toString(splitLocation)); + this.tables.saveState(); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -24,12 +24,14 @@ private Hsqldb db; private FCPQueueManager queueManager; + private UnknownIndexList uIndexList; - public IndexCategory(Hsqldb db, FCPQueueManager queueManager, + public IndexCategory(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uil, int id, IndexCategory parent, String name) { super(name, true); + this.uIndexList = uil; this.id = id; this.name = name; this.parent = parent; @@ -302,7 +304,8 @@ String author = result.getString("author"); - Index index = new Index(db, queueManager, id, this, + Index index = new Index(db, queueManager, uIndexList, + id, this, realName, displayName, publicKey, privateKey, revision, @@ -344,7 +347,7 @@ int position = result.getInt("positionInTree"); String name = result.getString("name"); - IndexCategory cat = new IndexCategory(this.db, this.queueManager, id, this, name); + IndexCategory cat = new IndexCategory(this.db, this.queueManager, uIndexList, id, this, name); cat.loadChildren(); this.set(children, position, cat); } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -61,15 +61,17 @@ private Hsqldb db; private IndexTree tree; private FCPQueueManager queueManager; + private UnknownIndexList uIndexList; private AbstractButton actionSource; private IndexTreeNode target; - public BasicIndexAction(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { + public BasicIndexAction(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, AbstractButton actionSource) { this.db = db; this.tree = tree; this.actionSource = actionSource; this.target = null; this.queueManager = queueManager; + this.uIndexList = uIndexList; actionSource.addActionListener(this); } @@ -90,6 +92,10 @@ return queueManager; } + public UnknownIndexList getUnknownIndexList() { + return uIndexList; + } + public IndexTreeNode getTarget() { return target; } @@ -104,8 +110,8 @@ public static class IndexCreator extends BasicIndexAction { - public IndexCreator(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, tree, actionSource); + public IndexCreator(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, AbstractButton actionSource) { + super(db, queueManager, uIndexList, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -120,15 +126,15 @@ if (name == null) return; - createIndex(getDb(), getQueueManager(), getTree(), (IndexCategory)getTarget(), name); + createIndex(getDb(), getQueueManager(), getUnknownIndexList(), getTree(), (IndexCategory)getTarget(), name); } } - public static void createIndex(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, IndexCategory target, String name) { + public static void createIndex(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, IndexCategory target, String name) { if (target == null) target = tree.getRoot(); - Index index = new Index(db, queueManager, -1, target, name, name, null, null, 0, null); + Index index = new Index(db, queueManager, uIndexList, -1, target, name, name, null, null, 0, null); index.generateKeys(); index.create(); @@ -138,8 +144,8 @@ public static class IndexAdder extends BasicIndexAction { - public IndexAdder(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, tree, actionSource); + public IndexAdder(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList indexList, IndexTree tree, AbstractButton actionSource) { + super(db, queueManager, indexList, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -150,7 +156,7 @@ public void actionPerformed(ActionEvent e) { String key = askAName(I18n.getMessage("thaw.plugin.index.indexKey"), "USK@"); - addIndex(getDb(), getQueueManager(), getTree(), (IndexCategory)getTarget(), key); + addIndex(getDb(), getQueueManager(), getUnknownIndexList(), getTree(), (IndexCategory)getTarget(), key); } } @@ -158,7 +164,7 @@ /** * Can be use directly */ - public static void addIndex(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, IndexCategory target, String publicKey) { + public static void addIndex(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList indexList, IndexTree tree, IndexCategory target, String publicKey) { publicKey = FreenetURIHelper.cleanURI(publicKey); if (publicKey == null) @@ -172,12 +178,14 @@ if (target == null) target = tree.getRoot(); - Index index = new Index(db, queueManager, -2, target, name, name, publicKey, null, 0, null); + Index index = new Index(db, queueManager, indexList, -2, target, name, name, publicKey, null, 0, null); if (tree.addToIndexCategory(target, index)) { index.create(); index.updateFromFreenet(-1); } + + indexList.removeLink(index); } @@ -295,7 +303,7 @@ public static class IndexKeyModifier extends BasicIndexAction implements Runnable { public IndexKeyModifier(AbstractButton actionSource) { - super(null, null, null, actionSource); + super(null, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -325,8 +333,8 @@ public static class IndexReuser extends BasicIndexAction implements Runnable { - public IndexReuser(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, tree, actionSource); + public IndexReuser(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, AbstractButton actionSource) { + super(db, queueManager, uIndexList, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -347,7 +355,7 @@ publicKey = keys[0]; privateKey = keys[1]; - reuseIndex(getDb(), getQueueManager(), getTree(), (IndexCategory)getTarget(), publicKey, privateKey); + reuseIndex(getDb(), getQueueManager(), getUnknownIndexList(), getTree(), (IndexCategory)getTarget(), publicKey, privateKey); } public void actionPerformed(ActionEvent e) { @@ -363,7 +371,7 @@ * Can be use directly * @param privateKey Can be null */ - public static void reuseIndex(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, IndexCategory target, + public static void reuseIndex(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, IndexCategory target, String publicKey, String privateKey) { publicKey = FreenetURIHelper.cleanURI(publicKey); @@ -381,7 +389,7 @@ else parent = tree.getRoot(); - Index index = new Index(db, queueManager, -2, parent, name, name, publicKey, privateKey, 0, null); + Index index = new Index(db, queueManager, uIndexList, -2, parent, name, name, publicKey, privateKey, 0, null); index.create(); @@ -390,14 +398,16 @@ parent.insert(index.getTreeNode(), 0); tree.reloadModel(parent); + + uIndexList.removeLink(index); } public static class IndexCategoryAdder extends BasicIndexAction { - public IndexCategoryAdder(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, tree, actionSource); + public IndexCategoryAdder(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uil, IndexTree tree, AbstractButton actionSource) { + super(db, queueManager, uil, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -409,15 +419,15 @@ String name = askAName(I18n.getMessage("thaw.plugin.index.categoryName"), I18n.getMessage("thaw.plugin.index.newCategory")); - addIndexCategory(getDb(), getQueueManager(), getTree(), (IndexCategory)getTarget(), name); + addIndexCategory(getDb(), getQueueManager(), getUnknownIndexList(), getTree(), (IndexCategory)getTarget(), name); } } - public static void addIndexCategory(Hsqldb db, FCPQueueManager queueManager, IndexTree tree, IndexCategory target, String name) { + public static void addIndexCategory(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, IndexCategory target, String name) { if (target == null) target = tree.getRoot(); - IndexCategory newCat = new IndexCategory(db, queueManager, -2, target, name); + IndexCategory newCat = new IndexCategory(db, queueManager, uIndexList, -2, target, name); newCat.create(); @@ -427,7 +437,7 @@ public static class IndexDownloader extends BasicIndexAction implements Runnable { public IndexDownloader(AbstractButton actionSource) { - super(null, null, null, actionSource); + super(null, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -449,7 +459,7 @@ public static class IndexUploader extends BasicIndexAction implements Runnable { public IndexUploader(AbstractButton actionSource) { - super(null, null, null, actionSource); + super(null, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -471,7 +481,7 @@ public static class PublicKeyCopier extends BasicIndexAction { public PublicKeyCopier(AbstractButton actionSource) { - super(null, null, null, actionSource); + super(null, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -498,7 +508,7 @@ public static class PrivateKeyCopier extends BasicIndexAction { public PrivateKeyCopier(AbstractButton actionSource) { - super(null, null, null, actionSource); + super(null, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -527,7 +537,7 @@ */ public static class IndexRenamer extends BasicIndexAction { public IndexRenamer(IndexTree tree, AbstractButton actionSource) { - super(null, null, tree, actionSource); + super(null, null, null, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -570,7 +580,7 @@ */ public static class IndexDeleter extends BasicIndexAction { public IndexDeleter(IndexTree tree, AbstractButton actionSource) { - super(null, null, tree, actionSource); + super(null, null, null, tree, actionSource); } public void setTarget(IndexTreeNode node) { @@ -605,7 +615,7 @@ public static class FileInserterAndAdder extends BasicIndexAction { public FileInserterAndAdder(Hsqldb db, FCPQueueManager queueManager, AbstractButton actionSource) { - super(db, queueManager, null, actionSource); + super(db, queueManager, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -634,7 +644,7 @@ public static class FileAdder extends BasicIndexAction { public FileAdder(Hsqldb db, FCPQueueManager queueManager, AbstractButton actionSource) { - super(db, queueManager, null, actionSource); + super(db, queueManager, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -707,7 +717,7 @@ private JFrame frame = null; public KeyAdder(Hsqldb db, AbstractButton actionSource) { - super(db, null, null, actionSource); + super(db, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { @@ -804,7 +814,7 @@ private JFrame frame = null; public LinkAdder(Hsqldb db, AbstractButton actionSource) { - super(db, null, null, actionSource); + super(db, null, null, null, actionSource); } public void setTarget(IndexTreeNode node) { Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -68,7 +68,7 @@ upPanel = new JPanel(); Logger.info(this, "indexes"); - indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.yourIndexes"), true, null, db); + indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.yourIndexes"), true, null, null, db); Logger.info(this, "plus indexes"); fieldPanel = new JPanel(); Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -102,17 +102,20 @@ private DefaultTreeModel treeModel; + private UnknownIndexList uIndexList; + private Hsqldb db; private FCPQueueManager queueManager; - /** * @param queueManager Not used if selectionOnly is set to true */ public IndexTree(String rootName, boolean selectionOnly, FCPQueueManager queueManager, + UnknownIndexList uIndexList, Hsqldb db) { + this.uIndexList = uIndexList; this.queueManager = queueManager; this.db = db; @@ -122,7 +125,7 @@ panel.setLayout(new BorderLayout(10, 10)); - root = new IndexCategory(db, queueManager, -1, null, rootName); + root = new IndexCategory(db, queueManager, uIndexList, -1, null, rootName); root.loadChildren(); root.addObserver(this); @@ -167,15 +170,15 @@ item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex")); indexCategoryMenu.add(item); - indexCategoryActions.add(new IndexManagementHelper.IndexReuser(db, queueManager, this, item)); + indexCategoryActions.add(new IndexManagementHelper.IndexReuser(db, queueManager, uIndexList, this, item)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addCategory")); indexCategoryMenu.add(item); - indexCategoryActions.add(new IndexManagementHelper.IndexCategoryAdder(db, queueManager, this, item)); + indexCategoryActions.add(new IndexManagementHelper.IndexCategoryAdder(db, queueManager, uIndexList, this, item)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.createIndex")); indexCategoryMenu.add(item); - indexCategoryActions.add(new IndexManagementHelper.IndexCreator(db, queueManager, this, item)); + indexCategoryActions.add(new IndexManagementHelper.IndexCreator(db, queueManager, uIndexList, this, item)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.rename")); indexCategoryMenu.add(item); @@ -338,10 +341,14 @@ if(path == null) return; - this.selectedNode = (IndexTreeNode)((DefaultMutableTreeNode)path.getLastPathComponent()).getUserObject(); + selectedNode = (IndexTreeNode)((DefaultMutableTreeNode)path.getLastPathComponent()).getUserObject(); - this.setChanged(); - this.notifyObservers(this.selectedNode); + if (uIndexList != null && selectedNode instanceof Index) { + uIndexList.addLinks(((Index)selectedNode)); + } + + setChanged(); + notifyObservers(this.selectedNode); } public IndexTreeNode getSelectedNode() { Modified: trunk/apps/Thaw/src/thaw/plugins/index/Link.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -68,6 +68,28 @@ return key; } + public boolean compare(Link l) { + if (l == null + || getPublicKey() == null + || l.getPublicKey() == null + || getPublicKey().length() < 40 + || l.getPublicKey().length() < 40) + return false; + + return (l.getPublicKey().substring(0, 40).equals(getPublicKey().substring(0, 40))); + } + + public boolean compare(Index l) { + if (l == null + || getPublicKey() == null + || l.getPublicKey() == null + || getPublicKey().length() < 40 + || l.getPublicKey().length() < 40) + return false; + + return (l.getPublicKey().substring(0, 40).equals(getPublicKey().substring(0, 40))); + } + public void setParent(Index index) { parent = index; } @@ -84,9 +106,13 @@ } public String getIndexName() { - return this.indexName; + return indexName; } + public String toString() { + return getIndexName(); + } + public void setIndexKey(String key) { this.key = key; @@ -140,7 +166,33 @@ } + public boolean isIndexAlreadyKnown() { + if (key.length() < 40) { + Logger.error(this, "Invalid key: "+key); + return false; + } + try { + PreparedStatement st; + + st = db.getConnection().prepareStatement("SELECT publicKey from indexes WHERE publicKey LIKE ?"); + + st.setString(1, key.substring(0, 40)+"%"); + + if(st.execute()) { + ResultSet result = st.getResultSet(); + if (result != null && result.next()) { + return true; + } + } + + } catch(SQLException e) { + Logger.error(this, "Unable to check if link '"+key+"' point to a know index because: "+e.toString()); + } + + return false; + } + public boolean isInTheDatabase() { if (this.parent == null) { Logger.notice(this, "isInTheDatabase(): No parent !"); Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -85,18 +85,22 @@ private Hsqldb db; private FCPQueueManager queueManager; private IndexTree tree; + private UnknownIndexList uil; private AbstractButton src; private Vector t; public IndexAdder(AbstractButton actionSource, - Hsqldb db, FCPQueueManager queueManager, IndexTree tree) { + Hsqldb db, FCPQueueManager queueManager, + UnknownIndexList uil, + IndexTree tree) { src = actionSource; if (actionSource != null) actionSource.addActionListener(this); this.db = db; this.queueManager = queueManager; this.tree = tree; + this.uil = uil; } public void setTarget(Vector targets) { @@ -108,7 +112,7 @@ for (Iterator it = t.iterator(); it.hasNext(); ) { Link link = (Link)it.next(); - IndexManagementHelper.addIndex(db, queueManager, tree, null, + IndexManagementHelper.addIndex(db, queueManager, uil, tree, null, link.getPublicKey()); } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -54,7 +54,7 @@ private int[] selectedRows; - public LinkTable (Hsqldb db, FCPQueueManager queueManager, IndexTree tree, Tables tables) { + public LinkTable (Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uil, IndexTree tree, Tables tables) { this.queueManager = queueManager; this.db = db; @@ -80,7 +80,7 @@ item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink")); rightClickMenu.add(item); - rightClickActions.add(new LinkManagementHelper.IndexAdder(item, db, queueManager, tree)); + rightClickActions.add(new LinkManagementHelper.IndexAdder(item, db, queueManager, uil, tree)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys")); rightClickMenu.add(item); Modified: trunk/apps/Thaw/src/thaw/plugins/index/Tables.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Tables.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/Tables.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -22,14 +22,14 @@ private JSplitPane split; private Config config; - public Tables(boolean modifiables, Hsqldb db, FCPQueueManager queueManager, IndexTree tree, Config config) { + public Tables(boolean modifiables, Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uil, IndexTree tree, Config config) { this.config = config; this.panel = new JPanel(); this.panel.setLayout(new BorderLayout(10, 10)); this.fileTable = new FileTable(queueManager, tree, config, this); - this.linkTable = new LinkTable(db, queueManager, tree, this); + this.linkTable = new LinkTable(db, queueManager, uil, tree, this); this.searchBar = new SearchBar(db, tree, queueManager, this); Added: trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java 2006-12-02 22:20:34 UTC (rev 11206) +++ trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java 2006-12-03 01:10:09 UTC (rev 11207) @@ -0,0 +1,196 @@ +package thaw.plugins.index; + +import javax.swing.JPanel; +import javax.swing.JList; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import java.awt.BorderLayout; + +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; + +import javax.swing.JPopupMenu; +import javax.swing.JMenuItem; + +import java.util.Vector; +import java.util.Iterator; + +import thaw.core.*; +import thaw.plugins.Hsqldb; +import thaw.fcp.FCPQueueManager; + +public class UnknownIndexList implements MouseListener { + public final static int MAX_INDEXES = 50; + + private int offset; + + private Link[] linkList; + private boolean full; + private Vector vList; /* only when < 50 */ + + private JPanel panel; + private JList list; + + private JScrollPane scrollPane; + + private JPopupMenu rightClickMenu = null; + private Vector rightClickActions = null; + + private Hsqldb db; + private FCPQueueManager queueManager; + private IndexTree indexTree; + + public UnknownIndexList(Hsqldb db, FCPQueueManager queueManager) { + this.db = db; + this.queueManager = queueManager; + + offset = 0; + full = false; + vList = new Vector(); + linkList = new Link[MAX_INDEXES]; + + for(int i = 0 ; i < linkList.length ; i++) + linkList[i] = null; + + list = new JList(vList); + + list.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + + panel = new JPanel(new BorderLayout()); + panel.add(new JLabel(I18n.getMessage("thaw.plugin.index.unknownIndexes")), + BorderLayout.NORTH); + scrollPane = new JScrollPane(list); + panel.add(scrollPane); + + list.addMouseListener(this); + } + + public void setIndexTree(IndexTree tree) { + this.indexTree = tree; + } + + public JPanel getPanel() { + return panel; + } + + public boolean isInList(Link l) { + if (l == null) + return false; + + for (int i = 0 ; i < linkList.length ; i++) { + if (l.compare(linkList[i])) + return true; + } + + return false; + } + + public boolean removeLink(Index index) { + boolean ret = false; + + for (int i = 0 ; i < linkList.length ; i++) { + if (linkList[i] != null && linkList[i].compare(index)) { + if (!full) + vList.remove(linkList[i]); + linkList[i] = null; + ret = true; + } + } + + return ret; + } + + /** + * will check that the link link to an unknown index before adding + */ + public boolean addLink(Link link) { + if (link == null || link.isIndexAlreadyKnown() || isInList(link)) + return false; + + linkList[linkList.length - 1 - offset] = link; + + if (!full) { + vList.add(0, link); + list.setListData(vList); + } else { + list.setListData(linkList); + } + + offset++; + + if (offset >= MAX_INDEXES) { + offset = 0; + full = true; + } + + return true; + } + + /** + * will add the link from that index (if links link to unknown indexes) + */ + public boolean addLinks(Index index) { + boolean ret = false; + + Vector ll = index.getLinkList(); + + if (ll == null || ll.size() == 0) + return false; + + for (Iterator it = ll.iterator(); + it.hasNext();) { + if (addLink(((Link)it.next()))) + ret = true; + } + + return ret; + } + + + protected void updateRightClickMenu() { + if (rightClickMenu == null) { + rightClickMenu = new JPopupMenu(); + rightClickActions = new Vector(); + JMenuItem item; + + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink")); + rightClickMenu.add(item); + rightClickActions.add(new LinkManagementHelper.IndexAdder(item, db, queueManager, this, indexTree)); + + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys")); + rightClickMenu.add(item); + rightClickActions.add(new LinkManagementHelper.PublicKeyCopier(item)); + } + + Object[] sLink = list.getSelectedValues(); + Vector vLink = new Vector(); + + for (int i = 0; i < sLink.length ; i++) + vLink.add(sLink[i]); + + LinkManagementHelper.LinkAction action; + + for(Iterator it = rightClickActions.iterator(); + it.hasNext(); ) { + action = (LinkManagementHelper.LinkAction)it.next(); + action.setTarget(vLink); + } + } + + + public void mouseClicked(MouseEvent e) { + if(e.getButton() == MouseEvent.BUTTON3 + && this.linkList != null) { + updateRightClickMenu(); + rightClickMenu.show(e.getComponent(), e.getX(), e.getY()); + } + } + + public void mouseEntered(MouseEvent e) { } + + public void mouseExited(MouseEvent e) { } + + public void mousePressed(MouseEvent e) { } + + public void mouseReleased(MouseEvent e) { } +} From jflesch at freenetproject.org Sun Dec 3 01:32:42 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 01:32:42 +0000 (UTC) Subject: [Thaw-dev] r11208 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061203013242.65D4E9BCC9@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 01:32:40 +0000 (Sun, 03 Dec 2006) New Revision: 11208 Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: Fix NPE Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-03 01:10:09 UTC (rev 11207) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-03 01:32:40 UTC (rev 11208) @@ -384,9 +384,11 @@ && (param == null) ) { Index index = (Index)o; - this.treeModel.nodeChanged(index.getTreeNode()); - if(index.getTreeNode().getParent() != null) - this.treeModel.nodeChanged(index.getTreeNode().getParent()); + if (treeModel != null) { + treeModel.nodeChanged(index.getTreeNode()); + if(index.getTreeNode().getParent() != null) + treeModel.nodeChanged(index.getTreeNode().getParent()); + } } } From jflesch at freenetproject.org Sun Dec 3 14:21:42 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 14:21:42 +0000 (UTC) Subject: [Thaw-dev] r11209 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061203142142.132219BE02@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 14:21:39 +0000 (Sun, 03 Dec 2006) New Revision: 11209 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Link.java trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java Log: Fix key comparaison problem in SQL query Modified: trunk/apps/Thaw/src/thaw/plugins/index/Link.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2006-12-03 01:32:40 UTC (rev 11208) +++ trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2006-12-03 14:21:39 UTC (rev 11209) @@ -76,7 +76,7 @@ || l.getPublicKey().length() < 40) return false; - return (l.getPublicKey().substring(0, 40).equals(getPublicKey().substring(0, 40))); + return (l.getPublicKey().substring(4, 40).equals(getPublicKey().substring(4, 40))); } public boolean compare(Index l) { @@ -87,7 +87,7 @@ || l.getPublicKey().length() < 40) return false; - return (l.getPublicKey().substring(0, 40).equals(getPublicKey().substring(0, 40))); + return (l.getPublicKey().substring(4, 40).equals(getPublicKey().substring(4, 40))); } public void setParent(Index index) { @@ -177,7 +177,7 @@ st = db.getConnection().prepareStatement("SELECT publicKey from indexes WHERE publicKey LIKE ?"); - st.setString(1, key.substring(0, 40)+"%"); + st.setString(1, "%"+key.substring(3, 40)+"%"); if(st.execute()) { ResultSet result = st.getResultSet(); Modified: trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java 2006-12-03 01:32:40 UTC (rev 11208) +++ trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java 2006-12-03 14:21:39 UTC (rev 11209) @@ -78,6 +78,9 @@ return false; for (int i = 0 ; i < linkList.length ; i++) { + if (linkList[i] == null) + continue; + if (l.compare(linkList[i])) return true; } From jflesch at freenetproject.org Sun Dec 3 14:30:34 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 14:30:34 +0000 (UTC) Subject: [Thaw-dev] r11210 - trunk/apps/Thaw/src/thaw/fcp Message-ID: <20061203143034.4610F9BE02@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 14:30:32 +0000 (Sun, 03 Dec 2006) New Revision: 11210 Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java Log: Should fix bug 917 Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java 2006-12-03 14:21:39 UTC (rev 11209) +++ trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java 2006-12-03 14:30:32 UTC (rev 11210) @@ -178,7 +178,7 @@ this.lastId = id; } } catch(Exception e) { - Logger.notice(this, "Exception while parsing previous Id. Not really a problem"); + Logger.notice(this, "Exception while parsing previous Id (Not really a problem)"); } } @@ -501,8 +501,12 @@ try { if(this.queryManager.getConnection().isConnected() - && !this.queryManager.getConnection().isWritingLocked()) + && !this.queryManager.getConnection().isWritingLocked() + && queueCompleted) { + this.schedule(); + + } } catch(java.util.ConcurrentModificationException e) { Logger.notice(this, "Ordonnancor: Collision !"); } catch(Exception e) { From jflesch at freenetproject.org Sun Dec 3 14:37:18 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 14:37:18 +0000 (UTC) Subject: [Thaw-dev] r11211 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061203143718.E73F29BCDF@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 14:37:17 +0000 (Sun, 03 Dec 2006) New Revision: 11211 Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java Log: Should fix bug 883 Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/File.java 2006-12-03 14:30:32 UTC (rev 11210) +++ trunk/apps/Thaw/src/thaw/plugins/index/File.java 2006-12-03 14:37:17 UTC (rev 11211) @@ -188,6 +188,9 @@ ((FCPClientGet)this.transfer).addObserver(this); } + if (transfer != null) + update(((java.util.Observable)transfer), null); + this.setChanged(); this.notifyObservers(query); } From jflesch at freenetproject.org Sun Dec 3 14:43:47 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 14:43:47 +0000 (UTC) Subject: [Thaw-dev] r11212 - trunk/apps/Thaw/src/thaw/fcp Message-ID: <20061203144347.084449C9DB@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 14:43:45 +0000 (Sun, 03 Dec 2006) New Revision: 11212 Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java Log: Should really fix bug 883 this time Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java 2006-12-03 14:37:17 UTC (rev 11211) +++ trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java 2006-12-03 14:43:45 UTC (rev 11212) @@ -284,12 +284,18 @@ */ public FCPTransferQuery getTransfer(String key) { boolean interrupted=true; - + boolean isAKey = true; Iterator it; if (key == null) return null; + if (key.startsWith("SSK@") || key.startsWith("USK@") + || key.startsWith("KSK@") || key.startsWith("CHK@")) + isAKey = true; + else + isAKey = false; + while(interrupted) { interrupted = false; @@ -298,9 +304,15 @@ it.hasNext(); ) { FCPTransferQuery plop = (FCPTransferQuery)it.next(); - if (plop.getFileKey() == key - || key.equals(plop.getFileKey())) - return plop; + if (isAKey) { + if (plop.getFileKey() == key + || key.equals(plop.getFileKey())) + return plop; + } else { + if (plop.getFilename() == key + || key.equals(plop.getFilename())) + return plop; + } } for(int i = 0 ; i <= PRIORITY_MIN ; i++) { @@ -308,9 +320,15 @@ it.hasNext(); ) { FCPTransferQuery plop = (FCPTransferQuery)it.next(); - if (plop.getFileKey() == key - || key.equals(plop.getFileKey())) - return plop; + if (isAKey) { + if (plop.getFileKey() == key + || key.equals(plop.getFileKey())) + return plop; + } else { + if (plop.getFilename() == key + || key.equals(plop.getFilename())) + return plop; + } } } From jflesch at freenetproject.org Sun Dec 3 15:00:59 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 15:00:59 +0000 (UTC) Subject: [Thaw-dev] r11213 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061203150059.D95BB9CA9F@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 15:00:58 +0000 (Sun, 03 Dec 2006) New Revision: 11213 Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Add a security when creating an index Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-03 14:43:45 UTC (rev 11212) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-03 15:00:58 UTC (rev 11213) @@ -34,6 +34,7 @@ import thaw.plugins.Hsqldb; import thaw.fcp.*; +import thaw.core.Logger; /** * Index.java, IndexCategory.java and IndexTree.java must NEVER use this helper (to avoid loops). @@ -134,6 +135,11 @@ if (target == null) target = tree.getRoot(); + if (name == null || name.indexOf("/") >= 0) { + Logger.error(new IndexManagementHelper(), "invalid name"); + return; + } + Index index = new Index(db, queueManager, uIndexList, -1, target, name, name, null, null, 0, null); index.generateKeys(); From jflesch at freenetproject.org Sun Dec 3 18:14:20 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Sun, 3 Dec 2006 18:14:20 +0000 (UTC) Subject: [Thaw-dev] r11217 - in trunk/apps/Thaw/src/thaw: core plugins/index Message-ID: <20061203181420.60C7E9CA5B@emu.freenetproject.org> Author: jflesch Date: 2006-12-03 18:14:17 +0000 (Sun, 03 Dec 2006) New Revision: 11217 Modified: trunk/apps/Thaw/src/thaw/core/Logger.java trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Fix NPE when parsing an incomplete index Modified: trunk/apps/Thaw/src/thaw/core/Logger.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Logger.java 2006-12-03 16:01:35 UTC (rev 11216) +++ trunk/apps/Thaw/src/thaw/core/Logger.java 2006-12-03 18:14:17 UTC (rev 11217) @@ -20,7 +20,7 @@ * * 2 or more is recommanded. */ - public final static int LOG_LEVEL = 3; + public final static int LOG_LEVEL = 2; private static Vector logListeners = null; Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-03 16:01:35 UTC (rev 11216) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-03 18:14:17 UTC (rev 11217) @@ -1097,6 +1097,9 @@ public void loadHeader(Element rootEl) { Element header = (Element)rootEl.getElementsByTagName("header").item(0); + if (header == null) + return; + this.realName = this.getHeaderElement(header, "title"); this.author = this.getHeaderElement(header, "owner"); @@ -1135,6 +1138,10 @@ this.purgeLinkList(); Element links = (Element)rootEl.getElementsByTagName("indexes").item(0); + + if (links == null) + return; + NodeList list = links.getChildNodes(); for(int i = 0; i < list.getLength() ; i++) { @@ -1154,6 +1161,10 @@ this.purgeFileList(); Element filesEl = (Element)rootEl.getElementsByTagName("files").item(0); + + if (filesEl == null) + return; + NodeList list = filesEl.getChildNodes(); for(int i = 0; i < list.getLength() ; i++) { From jflesch at freenetproject.org Mon Dec 4 22:33:14 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Mon, 4 Dec 2006 22:33:14 +0000 (UTC) Subject: [Thaw-dev] r11229 - in trunk/apps/Thaw/src/thaw: core i18n plugins plugins/fetchPlugin plugins/index Message-ID: <20061204223314.4CA999CA82@emu.freenetproject.org> Author: jflesch Date: 2006-12-04 22:33:12 +0000 (Mon, 04 Dec 2006) New Revision: 11229 Added: trunk/apps/Thaw/src/thaw/core/GUIHelper.java Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java trunk/apps/Thaw/src/thaw/plugins/fetchPlugin/FetchPanel.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Add option 'right click -> paste' to some dialogs Added: trunk/apps/Thaw/src/thaw/core/GUIHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/GUIHelper.java 2006-12-04 16:49:10 UTC (rev 11228) +++ trunk/apps/Thaw/src/thaw/core/GUIHelper.java 2006-12-04 22:33:12 UTC (rev 11229) @@ -0,0 +1,58 @@ +package thaw.core; + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +import javax.swing.AbstractButton; +import javax.swing.text.JTextComponent; + +public class GUIHelper { + + public GUIHelper() { + + } + + public static class PasteHelper implements ActionListener { + JTextComponent txtComp; + + public PasteHelper(AbstractButton src, JTextComponent txtComp) { + if (src != null) + src.addActionListener(this); + this.txtComp = txtComp; + } + + public void actionPerformed(ActionEvent evt) { + pasteToComponent(txtComp); + } + } + + public static void pasteToComponent(JTextComponent txtComp) { + Toolkit tk = Toolkit.getDefaultToolkit(); + Clipboard cp = tk.getSystemClipboard(); + + String result; + Transferable contents = cp.getContents(null); + + boolean hasTransferableText = ((contents != null) && + contents.isDataFlavorSupported(DataFlavor.stringFlavor)); + + try { + if ( hasTransferableText ) { + result = (String)contents.getTransferData(DataFlavor.stringFlavor); + txtComp.setText(txtComp.getText() + result); + } else { + Logger.notice(new GUIHelper(), "Nothing to get from clipboard"); + } + } catch(java.awt.datatransfer.UnsupportedFlavorException e) { + Logger.error(new GUIHelper(), "Error while pasting: UnsupportedFlavorException: "+e.toString()); + } catch(java.io.IOException e) { + Logger.error(new GUIHelper(), "Error while pasting: IOException: "+e.toString()); + } + } + +} Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-04 16:49:10 UTC (rev 11228) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-04 22:33:12 UTC (rev 11229) @@ -69,6 +69,8 @@ thaw.common.search=Search +thaw.common.paste=Paste + ## Errors thaw.error.idAlreadyUsed=Unable to connect. Our Id is already used by another client connected to the node. Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-12-04 16:49:10 UTC (rev 11228) +++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-12-04 22:33:12 UTC (rev 11229) @@ -85,7 +85,7 @@ panelAdded = split; } - split.setSize(MainWindow.DEFAULT_SIZE_X - 150, MainWindow.DEFAULT_SIZE_Y - 150); /* needed to avoid size = 0at the begining */ + split.setSize(MainWindow.DEFAULT_SIZE_X - 150, MainWindow.DEFAULT_SIZE_Y - 175); /* needed to avoid size = 0at the begining */ split.setResizeWeight(0.5); setMainWindow(core.getMainWindow()); Modified: trunk/apps/Thaw/src/thaw/plugins/fetchPlugin/FetchPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/fetchPlugin/FetchPanel.java 2006-12-04 16:49:10 UTC (rev 11228) +++ trunk/apps/Thaw/src/thaw/plugins/fetchPlugin/FetchPanel.java 2006-12-04 22:33:12 UTC (rev 11229) @@ -17,6 +17,12 @@ import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; +import javax.swing.JPopupMenu; +import javax.swing.JMenuItem; + +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; + import java.io.File; import java.util.Vector; import java.util.Iterator; @@ -24,7 +30,7 @@ import thaw.core.*; import thaw.plugins.FetchPlugin; -public class FetchPanel implements java.awt.event.ActionListener { +public class FetchPanel implements java.awt.event.ActionListener, MouseListener { private JPanel mainPanel = null; private JPanel centeredPart = null; /* (below is the validation button) */ @@ -53,6 +59,8 @@ private String[] queues = null; private JComboBox queueSelecter = null; + private JPopupMenu rightClickMenu; + private Core core; private FetchPlugin fetchPlugin; @@ -88,8 +96,10 @@ this.loadListButton.addActionListener(this); this.pasteButton = new JButton(I18n.getMessage("thaw.plugin.fetch.pasteFromClipboard")); - this.pasteButton.addActionListener(this); + new GUIHelper.PasteHelper(pasteButton, fileList); + fileList.addMouseListener(this); + JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(1,2)); buttonPanel.add(this.pasteButton); @@ -159,6 +169,12 @@ this.destinationButton = new JButton(I18n.getMessage("thaw.plugin.fetch.chooseDestination")); this.destinationButton.addActionListener(this); + rightClickMenu = new JPopupMenu(); + JMenuItem item = new JMenuItem(I18n.getMessage("thaw.common.paste")); + new GUIHelper.PasteHelper(item, fileList); + rightClickMenu.add(item); + + /*** Putting things together ***/ this.dstChoosePanel.add(this.destinationLabel); this.dstChoosePanel.add(this.destinationField); this.dstChoosePanel.add(this.destinationButton); @@ -243,28 +259,6 @@ } - if(e.getSource() == this.pasteButton) { - Toolkit tk = Toolkit.getDefaultToolkit(); - Clipboard cp = tk.getSystemClipboard(); - - try { - String result; - Transferable contents = cp.getContents(null); - - boolean hasTransferableText = ((contents != null) && - contents.isDataFlavorSupported(DataFlavor.stringFlavor)); - - if ( hasTransferableText ) { - result = (String)contents.getTransferData(DataFlavor.stringFlavor); - this.fileList.setText(this.fileList.getText() + "\n" + result); - } else { - Logger.info(this, "Nothing to get from clipboard"); - } - } catch(Exception exception) { - Logger.notice(this, "Exception while pasting: "+exception.toString()); - } - } - if(e.getSource() == this.loadListButton) { FileChooser fileChooser = new FileChooser(); File toParse = null; @@ -299,5 +293,25 @@ this.fileList.setText(result); } } + + + + public void mouseClicked(MouseEvent e) { } + public void mouseEntered(MouseEvent e) { } + public void mouseExited(MouseEvent e) { } + public void mousePressed(MouseEvent e) { + this.showPopupMenu(e); + } + + public void mouseReleased(MouseEvent e) { + this.showPopupMenu(e); + } + + protected void showPopupMenu(MouseEvent e) { + if(e.isPopupTrigger()) { + rightClickMenu.show(e.getComponent(), e.getX(), e.getY()); + } + } + } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-04 16:49:10 UTC (rev 11228) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-04 22:33:12 UTC (rev 11229) @@ -19,6 +19,8 @@ import javax.swing.JTextField; import javax.swing.JTextArea; import javax.swing.JLabel; +import javax.swing.JPopupMenu; +import javax.swing.JMenuItem; import java.util.Vector; import java.util.Iterator; @@ -27,6 +29,9 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; + import thaw.core.FileChooser; import thaw.core.Config; import thaw.core.I18n; @@ -149,58 +154,18 @@ } - public static class IndexAdder extends BasicIndexAction { - public IndexAdder(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList indexList, IndexTree tree, AbstractButton actionSource) { - super(db, queueManager, indexList, tree, actionSource); - } - public void setTarget(IndexTreeNode node) { - super.setTarget(node); - getActionSource().setEnabled(node == null || node instanceof IndexCategory); - } - - public void actionPerformed(ActionEvent e) { - String key = askAName(I18n.getMessage("thaw.plugin.index.indexKey"), "USK@"); - - addIndex(getDb(), getQueueManager(), getUnknownIndexList(), getTree(), (IndexCategory)getTarget(), key); - } - } - - - /** - * Can be use directly - */ - public static void addIndex(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList indexList, IndexTree tree, IndexCategory target, String publicKey) { - publicKey = FreenetURIHelper.cleanURI(publicKey); - - if (publicKey == null) - return; - - String name = Index.getNameFromKey(publicKey); - - if (name == null) - return; - - if (target == null) - target = tree.getRoot(); - - Index index = new Index(db, queueManager, indexList, -2, target, name, name, publicKey, null, 0, null); - - if (tree.addToIndexCategory(target, index)) { - index.create(); - index.updateFromFreenet(-1); - } - - indexList.removeLink(index); - } - - - - public static class KeyAsker implements ActionListener { + public static class KeyAsker implements ActionListener, MouseListener { private JButton okButton; private JButton cancelButton; private int formState; + private JTextField publicKeyField = null; + private JTextField privateKeyField = null; + + private JPopupMenu popupMenuA; + private JPopupMenu popupMenuB; + public KeyAsker() { } @@ -215,8 +180,8 @@ } public String[] askKeysBis(boolean askPrivateKey, - String defaultPublicKey, - String defaultPrivateKey) { + String defaultPublicKey, + String defaultPrivateKey) { formState = 0; if (defaultPublicKey == null) @@ -229,8 +194,8 @@ frame.getContentPane().setLayout(new BorderLayout()); - JTextField publicKeyField = new JTextField(defaultPublicKey); - JTextField privateKeyField = new JTextField(defaultPrivateKey); + publicKeyField = new JTextField(defaultPublicKey); + privateKeyField = new JTextField(defaultPrivateKey); JPanel subPanelA = new JPanel(); /* left => labels */ JPanel subPanelB = new JPanel(); /* right => textfield */ @@ -241,9 +206,20 @@ subPanelA.add(new JLabel(I18n.getMessage("thaw.plugin.index.indexKey")+ " "), BorderLayout.WEST); subPanelB.add(publicKeyField, BorderLayout.CENTER); + popupMenuA = new JPopupMenu(); + JMenuItem item = new JMenuItem(I18n.getMessage("thaw.common.paste")); + popupMenuA.add(item); + new thaw.core.GUIHelper.PasteHelper(item, publicKeyField); + publicKeyField.addMouseListener(this); + if (askPrivateKey) { subPanelA.add(new JLabel(I18n.getMessage("thaw.plugin.index.indexPrivateKey")+" "), BorderLayout.WEST); subPanelB.add(privateKeyField, BorderLayout.CENTER); + popupMenuB = new JPopupMenu(); + item = new JMenuItem(I18n.getMessage("thaw.common.paste")); + popupMenuB.add(item); + new thaw.core.GUIHelper.PasteHelper(item, privateKeyField); + privateKeyField.addMouseListener(this); } frame.getContentPane().add(subPanelA, BorderLayout.WEST); @@ -266,6 +242,9 @@ frame.setSize(700, 100); frame.setVisible(true); + /* TODO: DO IT BETTER YOU ?^{"(*? */ + /* VVVVVVVVVVV */ + while(formState == 0) { try { Thread.sleep(500); @@ -305,6 +284,28 @@ formState = 2; } } + + public void mouseClicked(MouseEvent e) { } + public void mouseEntered(MouseEvent e) { } + public void mouseExited(MouseEvent e) { } + + public void mousePressed(MouseEvent e) { + this.showPopupMenu(e); + } + + public void mouseReleased(MouseEvent e) { + this.showPopupMenu(e); + } + + protected void showPopupMenu(MouseEvent e) { + if(e.isPopupTrigger()) { + if (e.getComponent() == publicKeyField) + popupMenuA.show(e.getComponent(), e.getX(), e.getY()); + if (e.getComponent() == privateKeyField) + popupMenuB.show(e.getComponent(), e.getX(), e.getY()); + } + } + } public static class IndexKeyModifier extends BasicIndexAction implements Runnable { @@ -373,6 +374,11 @@ } + public static void addIndex(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, IndexCategory target, String publicKey) { + reuseIndex(db, queueManager, uIndexList, tree, target, publicKey, null); + } + + /** * Can be use directly * @param privateKey Can be null @@ -716,12 +722,14 @@ - public static class KeyAdder extends BasicIndexAction implements Runnable { + public static class KeyAdder extends BasicIndexAction implements Runnable, MouseListener { private JButton cancelButton = null; private JButton okButton = null; private JTextArea textArea = null; private JFrame frame = null; + private JPopupMenu popupMenu = null; + public KeyAdder(Hsqldb db, AbstractButton actionSource) { super(db, null, null, null, actionSource); } @@ -744,6 +752,12 @@ cancelButton = new JButton(I18n.getMessage("thaw.common.cancel")); okButton = new JButton(I18n.getMessage("thaw.common.ok")); + popupMenu = new JPopupMenu(); + JMenuItem item = new JMenuItem(I18n.getMessage("thaw.common.paste")); + popupMenu.add(item); + textArea.addMouseListener(this); + new thaw.core.GUIHelper.PasteHelper(item, textArea); + cancelButton.addActionListener(this); okButton.addActionListener(this); @@ -792,6 +806,25 @@ frame.setVisible(false); } } + + public void mouseClicked(MouseEvent e) { } + public void mouseEntered(MouseEvent e) { } + public void mouseExited(MouseEvent e) { } + + public void mousePressed(MouseEvent e) { + this.showPopupMenu(e); + } + + public void mouseReleased(MouseEvent e) { + this.showPopupMenu(e); + } + + protected void showPopupMenu(MouseEvent e) { + if(e.isPopupTrigger()) { + popupMenu.show(e.getComponent(), e.getX(), e.getY()); + } + } + } /** From jflesch at freenetproject.org Mon Dec 4 22:59:50 2006 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Mon, 4 Dec 2006 22:59:50 +0000 (UTC) Subject: [Thaw-dev] r11230 - in trunk/apps/Thaw/src/thaw: core plugins plugins/index Message-ID: <20061204225950.DD6BF9BF1F@emu.freenetproject.org> Author: jflesch Date: 2006-12-04 22:59:48 +0000 (Mon, 04 Dec 2006) New Revision: 11230 Modified: trunk/apps/Thaw/src/thaw/core/ConfigWindow.java trunk/apps/Thaw/src/thaw/core/Core.java trunk/apps/Thaw/src/thaw/core/SplashScreen.java trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: Should fix popup behavior Modified: trunk/apps/Thaw/src/thaw/core/ConfigWindow.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/ConfigWindow.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/core/ConfigWindow.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -1,6 +1,7 @@ package thaw.core; import javax.swing.JFrame; +import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JTabbedPane; import java.awt.BorderLayout; @@ -22,7 +23,7 @@ * window is set visible (arg == null). */ public class ConfigWindow extends Observable implements ActionListener, java.awt.event.WindowListener { - private JFrame configWin; + private JDialog configWin; private JTabbedPane tabs; private JPanel buttons; @@ -45,7 +46,7 @@ this.advancedMode = Boolean.valueOf(core.getConfig().getValue("advancedMode")).booleanValue(); - this.configWin = new JFrame(I18n.getMessage("thaw.config.windowName")); + this.configWin = new JDialog(core.getMainWindow().getMainFrame(), I18n.getMessage("thaw.config.windowName")); this.tabs = new JTabbedPane(); @@ -126,7 +127,7 @@ /** * Get a ref to the JFrame. */ - public JFrame getFrame() { + public JDialog getFrame() { return this.configWin; } Modified: trunk/apps/Thaw/src/thaw/core/Core.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Core.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/core/Core.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -407,14 +407,12 @@ int nmbReconnect = 0; - JDialog warningDialog = new JDialog(); - warningDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); + JDialog warningDialog = new JDialog(getMainWindow().getMainFrame()); warningDialog.setTitle("Thaw - reconnection"); warningDialog.setModal(false); warningDialog.setSize(500, 40); + warningDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - warningDialog.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); - JPanel warningPanel = new JPanel(); JLabel warningLabel = new JLabel(I18n.getMessage("thaw.warning.autoreconnecting"), Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -92,9 +92,10 @@ public void hide() { - this.splashScreen.setVisible(false); - this.splashScreen = null; - this.progressBar = null; + splashScreen.setVisible(false); + splashScreen.dispose(); + splashScreen = null; + progressBar = null; } } Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -48,7 +48,7 @@ core.getConfig().setValue("indexDatabaseVersion", "1"); } - browserPanel = new IndexBrowserPanel(hsqldb, core.getQueueManager(), core.getConfig()); + browserPanel = new IndexBrowserPanel(hsqldb, core.getQueueManager(), core.getConfig(), core.getMainWindow()); setMainWindow(core.getMainWindow()); core.getMainWindow().getTabbedPane().addChangeListener(this); @@ -70,7 +70,7 @@ button = new JButton(IconBox.indexReuse); button.setToolTipText(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex")); - action = new IndexManagementHelper.IndexReuser(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), button); + action = new IndexManagementHelper.IndexReuser(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), core.getMainWindow(), button); action.setTarget(browserPanel.getIndexTree().getRoot()); addButtonToTheToolbar(button); Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -32,13 +32,13 @@ - public IndexBrowserPanel(Hsqldb db, FCPQueueManager queueManager, Config config) { + public IndexBrowserPanel(Hsqldb db, FCPQueueManager queueManager, Config config, MainWindow mainWindow) { this.db = db; this.queueManager = queueManager; this.config = config; unknownList = new UnknownIndexList(db, queueManager); - indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.indexes"), false, queueManager, unknownList, db); + indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.indexes"), false, queueManager, unknownList, mainWindow, db); unknownList.setIndexTree(indexTree); /* TODO: dirty => find a better way */ leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -11,9 +11,9 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.JFrame; +import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JOptionPane; -import javax.swing.JDialog; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextField; @@ -40,6 +40,7 @@ import thaw.fcp.*; import thaw.core.Logger; +import thaw.core.MainWindow; /** * Index.java, IndexCategory.java and IndexTree.java must NEVER use this helper (to avoid loops). @@ -175,13 +176,15 @@ */ public static String[] askKeys(boolean askPrivateKey, String defaultPublicKey, - String defaultPrivateKey) { - return ((new KeyAsker()).askKeysBis(askPrivateKey, defaultPublicKey, defaultPrivateKey)); + String defaultPrivateKey, + MainWindow mainWindow) { + return ((new KeyAsker()).askKeysBis(askPrivateKey, defaultPublicKey, defaultPrivateKey, mainWindow)); } public String[] askKeysBis(boolean askPrivateKey, String defaultPublicKey, - String defaultPrivateKey) { + String defaultPrivateKey, + MainWindow mainWindow) { formState = 0; if (defaultPublicKey == null) @@ -190,7 +193,7 @@ if (defaultPrivateKey == null) defaultPrivateKey = "SSK@"; - JFrame frame = new JFrame(I18n.getMessage("thaw.plugin.index.indexKey")); + JDialog frame = new JDialog(mainWindow.getMainFrame(), I18n.getMessage("thaw.plugin.index.indexKey")); frame.getContentPane().setLayout(new BorderLayout()); @@ -309,8 +312,11 @@ } public static class IndexKeyModifier extends BasicIndexAction implements Runnable { - public IndexKeyModifier(AbstractButton actionSource) { + private MainWindow mainWindow; + + public IndexKeyModifier(MainWindow mainWindow, AbstractButton actionSource) { super(null, null, null, null, actionSource); + this.mainWindow = mainWindow; } public void setTarget(IndexTreeNode node) { @@ -321,7 +327,7 @@ public void run() { Index index = ((Index)getTarget()); - String[] keys = KeyAsker.askKeys(true, index.getPublicKey(), index.getPrivateKey()); + String[] keys = KeyAsker.askKeys(true, index.getPublicKey(), index.getPrivateKey(), mainWindow); if (keys == null) return; @@ -340,8 +346,11 @@ public static class IndexReuser extends BasicIndexAction implements Runnable { - public IndexReuser(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, AbstractButton actionSource) { + private MainWindow mainWindow; + + public IndexReuser(Hsqldb db, FCPQueueManager queueManager, UnknownIndexList uIndexList, IndexTree tree, MainWindow mainWindow, AbstractButton actionSource) { super(db, queueManager, uIndexList, tree, actionSource); + this.mainWindow = mainWindow; } public void setTarget(IndexTreeNode node) { @@ -354,7 +363,7 @@ String publicKey = null; String privateKey = null; - keys = KeyAsker.askKeys(true, "USK@", "SSK@"); + keys = KeyAsker.askKeys(true, "USK@", "SSK@", mainWindow); if (keys == null) return; @@ -726,12 +735,14 @@ private JButton cancelButton = null; private JButton okButton = null; private JTextArea textArea = null; - private JFrame frame = null; + private JDialog frame = null; private JPopupMenu popupMenu = null; + private MainWindow mainWindow; - public KeyAdder(Hsqldb db, AbstractButton actionSource) { + public KeyAdder(Hsqldb db, MainWindow win, AbstractButton actionSource) { super(db, null, null, null, actionSource); + this.mainWindow = win; } public void setTarget(IndexTreeNode node) { @@ -743,7 +754,7 @@ JLabel header = null; JPanel buttonPanel = null; - frame = new JFrame(I18n.getMessage("thaw.plugins.index.addKeys")); + frame = new JDialog(mainWindow.getMainFrame(), I18n.getMessage("thaw.plugins.index.addKeys")); frame.setVisible(false); header = new JLabel(I18n.getMessage("thaw.plugin.fetch.keyList")); Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexSelecter.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -68,7 +68,7 @@ upPanel = new JPanel(); Logger.info(this, "indexes"); - indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.yourIndexes"), true, null, null, db); + indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.yourIndexes"), true, null, null, null, db); Logger.info(this, "plus indexes"); fieldPanel = new JPanel(); Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-04 22:33:12 UTC (rev 11229) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-04 22:59:48 UTC (rev 11230) @@ -114,6 +114,7 @@ boolean selectionOnly, FCPQueueManager queueManager, UnknownIndexList uIndexList, + MainWindow mainWindow, Hsqldb db) { this.uIndexList = uIndexList; this.queueManager = queueManager; @@ -170,7 +171,7 @@ item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex")); indexCategoryMenu.add(item); - indexCategoryActions.add(new IndexManagementHelper.IndexReuser(db, queueManager, uIndexList, this, item)); + indexCategoryActions.add(new IndexManagementHelper.IndexReuser(db, queueManager, uIndexList, this, mainWindow, item)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addCategory")); indexCategoryMenu.add(item); @@ -212,7 +213,7 @@ item = new JMenuItem(I18n.getMessage("thaw.plugin.index.changeIndexKeys")); indexMenu.add(item); - indexAndFileActions.add(new IndexManagementHelper.IndexKeyModifier(item)); + indexAndFileActions.add(new IndexManagementHelper.IndexKeyModifier(mainWindow, item)); item = new JMenuItem(I18n.getMessage("thaw.plugin.index.copyPrivateKey")); indexMenu.add(item); @@ -235,7 +236,7 @@ item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addKeys")); fileMenu.add(item); - indexAndFileActions.add(new IndexManagementHelper.KeyAdder(db, item)); + indexAndFileActions.add(new IndexManagementHelper.KeyAdder(db, mainWindow, item)); // Link menu item = new JMenuItem(I18n.getMessage("thaw.plugin.index.addLink")); From cvs at freenetproject.org Tue Dec 5 19:50:45 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 19:50:45 +0000 (UTC) Subject: [Thaw-dev] r11245 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20061205195045.EFDD99BC41@emu.freenetproject.org> Author: jflesch Date: 2006-12-05 19:50:43 +0000 (Tue, 05 Dec 2006) New Revision: 11245 Modified: trunk/apps/Thaw/src/thaw/plugins/index/SearchBar.java Log: Change search bar layout Modified: trunk/apps/Thaw/src/thaw/plugins/index/SearchBar.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/SearchBar.java 2006-12-05 19:09:38 UTC (rev 11244) +++ trunk/apps/Thaw/src/thaw/plugins/index/SearchBar.java 2006-12-05 19:50:43 UTC (rev 11245) @@ -36,15 +36,17 @@ this.queueManager = queueManager; this.panel = new JPanel(); - this.panel.setLayout(new BorderLayout(10, 10)); + this.panel.setLayout(new BorderLayout(0, 0)); this.userText = new JTextField(""); this.validationButton = new JButton(" "+I18n.getMessage("thaw.common.search")+" "); - this.panel.add(new JLabel(I18n.getMessage("thaw.plugin.index.search.label")), BorderLayout.WEST); - this.panel.add(this.userText, BorderLayout.CENTER); - this.panel.add(this.validationButton, BorderLayout.EAST); + JLabel label = new JLabel(I18n.getMessage("thaw.plugin.index.search.label")); + panel.add(label, BorderLayout.NORTH); + panel.add(userText, BorderLayout.CENTER); + panel.add(validationButton, BorderLayout.EAST); + this.userText.addActionListener(this); this.validationButton.addActionListener(this); } From cvs at freenetproject.org Tue Dec 5 19:56:21 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 19:56:21 +0000 (UTC) Subject: [Thaw-dev] r11246 - in trunk/apps/Thaw/src/thaw/plugins: . index Message-ID: <20061205195621.82AB49BC41@emu.freenetproject.org> Author: jflesch Date: 2006-12-05 19:56:19 +0000 (Tue, 05 Dec 2006) New Revision: 11246 Modified: trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Remove lock on database writing to avoid deadlock Modified: trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java 2006-12-05 19:50:43 UTC (rev 11245) +++ trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java 2006-12-05 19:56:19 UTC (rev 11246) @@ -36,18 +36,20 @@ public synchronized void lockWriting() { + /* while(writeLock > 0) { try { Thread.sleep(100); } catch(java.lang.InterruptedException e) { - /* \_o< */ + } } writeLock++; + */ } public synchronized void unlockWriting() { - writeLock = 0; + //writeLock = 0; } public void realStart() { Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-05 19:50:43 UTC (rev 11245) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-05 19:56:19 UTC (rev 11246) @@ -411,6 +411,7 @@ parent = tree.getRoot(); Index index = new Index(db, queueManager, uIndexList, -2, parent, name, name, publicKey, privateKey, 0, null); + uIndexList.removeLink(index); index.create(); @@ -419,8 +420,6 @@ parent.insert(index.getTreeNode(), 0); tree.reloadModel(parent); - - uIndexList.removeLink(index); } From cvs at freenetproject.org Tue Dec 5 20:24:18 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 20:24:18 +0000 (UTC) Subject: [Thaw-dev] r11247 - in trunk/apps/Thaw/src/thaw: core i18n plugins/index Message-ID: <20061205202418.A45379BC41@emu.freenetproject.org> Author: jflesch Date: 2006-12-05 20:24:15 +0000 (Tue, 05 Dec 2006) New Revision: 11247 Modified: trunk/apps/Thaw/src/thaw/core/FileChooser.java trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: add index import/export function Modified: trunk/apps/Thaw/src/thaw/core/FileChooser.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/FileChooser.java 2006-12-05 19:56:19 UTC (rev 11246) +++ trunk/apps/Thaw/src/thaw/core/FileChooser.java 2006-12-05 20:24:15 UTC (rev 11247) @@ -24,6 +24,7 @@ this.fileChooser.setDialogTitle(title); } + public void setDirectoryOnly(boolean v) { if(v) this.fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-05 19:56:19 UTC (rev 11246) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-05 20:24:15 UTC (rev 11247) @@ -255,3 +255,5 @@ thaw.plugin.index.changeIndexKeys=Change the index keys thaw.plugin.index.unknownIndexes=Unknown indexes: +thaw.plugin.index.importIndex=Import index content from a file +thaw.plugin.index.exportIndex=Export index content to a file Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-05 19:56:19 UTC (rev 11246) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-05 20:24:15 UTC (rev 11247) @@ -21,7 +21,10 @@ import javax.swing.JLabel; import javax.swing.JPopupMenu; import javax.swing.JMenuItem; +import javax.swing.JFileChooser; +import java.io.FileOutputStream; + import java.util.Vector; import java.util.Iterator; @@ -32,7 +35,6 @@ import java.awt.event.MouseListener; import java.awt.event.MouseEvent; -import thaw.core.FileChooser; import thaw.core.Config; import thaw.core.I18n; import thaw.core.FreenetURIHelper; @@ -41,6 +43,7 @@ import thaw.fcp.*; import thaw.core.Logger; import thaw.core.MainWindow; +import thaw.core.FileChooser; /** * Index.java, IndexCategory.java and IndexTree.java must NEVER use this helper (to avoid loops). @@ -595,6 +598,70 @@ + public static class IndexExporter extends BasicIndexAction { + public IndexExporter(AbstractButton actionSource) { + super(null, null, null, null, actionSource); + } + + public void setTarget(IndexTreeNode node) { + super.setTarget(node); + getActionSource().setEnabled(node != null && node instanceof Index); + } + + public void actionPerformed(ActionEvent e) { + java.io.File newFile; + + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle(I18n.getMessage("thaw.plugin.index.exportIndex")); + fileChooser.setDirectoryOnly(false); + fileChooser.setDialogType(JFileChooser.SAVE_DIALOG); + newFile = fileChooser.askOneFile(); + + if (newFile == null) + return; + + FileOutputStream out; + + try { + out = new FileOutputStream(newFile); + } catch(java.io.FileNotFoundException excep) { + Logger.warning(this, "Unable to create file '"+newFile.toString()+"' ! not generated because : "+excep.toString()); + return; + } + + ((Index)getTarget()).generateXML(out); + } + } + + + public static class IndexImporter extends BasicIndexAction { + public IndexImporter(AbstractButton actionSource) { + super(null, null, null, null, actionSource); + } + + public void setTarget(IndexTreeNode node) { + super.setTarget(node); + getActionSource().setEnabled(node != null && node instanceof Index); + } + + public void actionPerformed(ActionEvent e) { + java.io.File newFile; + + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle(I18n.getMessage("thaw.plugin.index.importIndex")); + fileChooser.setDirectoryOnly(false); + fileChooser.setDialogType(JFileChooser.OPEN_DIALOG); + newFile = fileChooser.askOneFile(); + + if (newFile == null) + return; + + ((Index)getTarget()).loadXML(newFile.getPath()); + } + } + + + /** * Can be used on indexes or index categories. */ Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-05 19:56:19 UTC (rev 11246) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-05 20:24:15 UTC (rev 11247) @@ -207,6 +207,14 @@ indexMenu.add(item); indexAndFileActions.add(new IndexManagementHelper.IndexRenamer(this, item)); + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.exportIndex")); + indexMenu.add(item); + indexAndFileActions.add(new IndexManagementHelper.IndexExporter(item)); + + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.importIndex")); + indexMenu.add(item); + indexAndFileActions.add(new IndexManagementHelper.IndexImporter(item)); + item = new JMenuItem(I18n.getMessage("thaw.plugin.index.delete")); indexMenu.add(item); indexAndFileActions.add(new IndexManagementHelper.IndexDeleter(this, item)); From cvs at freenetproject.org Tue Dec 5 20:47:10 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 20:47:10 +0000 (UTC) Subject: [Thaw-dev] r11248 - in trunk/apps/Thaw: images src/thaw/fcp src/thaw/plugins src/thaw/plugins/queueWatcher Message-ID: <20061205204710.8C13F9BC3D@emu.freenetproject.org> Author: jflesch Date: 2006-12-05 20:47:06 +0000 (Tue, 05 Dec 2006) New Revision: 11248 Modified: trunk/apps/Thaw/images/index-existing.png trunk/apps/Thaw/images/index-new.png trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java Log: Update the icons Modified: trunk/apps/Thaw/images/index-existing.png =================================================================== (Binary files differ) Modified: trunk/apps/Thaw/images/index-new.png =================================================================== (Binary files differ) Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java =================================================================== --- trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2006-12-05 20:24:15 UTC (rev 11247) +++ trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2006-12-05 20:47:06 UTC (rev 11248) @@ -23,7 +23,7 @@ /** If == true, then will print on stdout * all fcp input / output. */ - private final static boolean DEBUG_MODE = true; + private final static boolean DEBUG_MODE = false; private final static int MAX_RECV = 1024; private byte[] recvBytes = new byte[MAX_RECV]; /* global to avoid each time free() / malloc() */ Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-12-05 20:24:15 UTC (rev 11247) +++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2006-12-05 20:47:06 UTC (rev 11248) @@ -85,7 +85,7 @@ panelAdded = split; } - split.setSize(MainWindow.DEFAULT_SIZE_X - 150, MainWindow.DEFAULT_SIZE_Y - 175); /* needed to avoid size = 0at the begining */ + split.setSize(MainWindow.DEFAULT_SIZE_X - 150, MainWindow.DEFAULT_SIZE_Y - 150); /* needed to avoid size = 0at the begining */ split.setResizeWeight(0.5); setMainWindow(core.getMainWindow()); Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java 2006-12-05 20:24:15 UTC (rev 11247) +++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java 2006-12-05 20:47:06 UTC (rev 11248) @@ -202,7 +202,7 @@ public synchronized void addQuery(FCPTransferQuery query) { if(this.queries.contains(query)) { - Logger.notice(this, "addQuery() : Already known"); + Logger.debug(this, "addQuery() : Already known"); return; } From cvs at freenetproject.org Tue Dec 5 21:12:53 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 21:12:53 +0000 (UTC) Subject: [Thaw-dev] r11249 - trunk/apps/Thaw/src/thaw/core Message-ID: <20061205211253.6C9DF9BCC7@emu.freenetproject.org> Author: nextgens Date: 2006-12-05 21:12:52 +0000 (Tue, 05 Dec 2006) New Revision: 11249 Modified: trunk/apps/Thaw/src/thaw/core/Main.java Log: Tweak Thaw's versionning system so that emu's autobuild script can parse it more easily Modified: trunk/apps/Thaw/src/thaw/core/Main.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 20:47:06 UTC (rev 11248) +++ trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 21:12:52 UTC (rev 11249) @@ -12,11 +12,17 @@ */ public class Main { - public final static String VERSION="0.6 WIP r at custom@"; - //public final static String VERSION="0.5.9b Beta"; + public final static String VERSION; + static{ + char _major = 0, + _minor = 6; + String _svnBuildNumber = "@custom@"; + VERSION = _major + '.' + _minor + " WIP r"+_svnBuildNumber; + } + /** - * Look & feel use by GUI front end + * Look & feel use by GUI front end */ private static String lookAndFeel = null; From cvs at freenetproject.org Tue Dec 5 21:18:30 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 21:18:30 +0000 (UTC) Subject: [Thaw-dev] r11250 - trunk/apps/Thaw/src/thaw/core Message-ID: <20061205211830.DE6429BCC7@emu.freenetproject.org> Author: nextgens Date: 2006-12-05 21:18:29 +0000 (Tue, 05 Dec 2006) New Revision: 11250 Modified: trunk/apps/Thaw/src/thaw/core/Main.java Log: in fact we might need to access them somewhere else Modified: trunk/apps/Thaw/src/thaw/core/Main.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 21:12:52 UTC (rev 11249) +++ trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 21:18:29 UTC (rev 11250) @@ -13,11 +13,13 @@ public class Main { public final static String VERSION; + final char + _major = 0, + _minor = 6; + final String + _svnBuildNumber = "@custom@"; static{ - char _major = 0, - _minor = 6; - String _svnBuildNumber = "@custom@"; VERSION = _major + '.' + _minor + " WIP r"+_svnBuildNumber; } From cvs at freenetproject.org Tue Dec 5 21:29:28 2006 From: cvs at freenetproject.org (cvs at freenetproject.org) Date: Tue, 5 Dec 2006 21:29:28 +0000 (UTC) Subject: [Thaw-dev] r11251 - in trunk/apps/Thaw/src/thaw: core plugins plugins/insertPlugin Message-ID: <20061205212928.34B719BCC7@emu.freenetproject.org> Author: jflesch Date: 2006-12-05 21:29:25 +0000 (Tue, 05 Dec 2006) New Revision: 11251 Modified: trunk/apps/Thaw/src/thaw/core/Main.java trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/insertPlugin/InsertPanel.java Log: Change toolbar buttons state according to the selected item in the index tree Modified: trunk/apps/Thaw/src/thaw/core/Main.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 21:18:29 UTC (rev 11250) +++ trunk/apps/Thaw/src/thaw/core/Main.java 2006-12-05 21:29:25 UTC (rev 11251) @@ -12,17 +12,16 @@ */ public class Main { - public final static String VERSION; - final char + public final static char _major = 0, _minor = 6; - final String + public final static String _svnBuildNumber = "@custom@"; - static{ + public final static String VERSION = _major + '.' + _minor + " WIP r"+_svnBuildNumber; - } + /** * Look & feel use by GUI front end */ Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-05 21:18:29 UTC (rev 11250) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-05 21:29:25 UTC (rev 11251) @@ -4,11 +4,14 @@ import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; +import java.util.Vector; +import java.util.Iterator; + import thaw.core.*; import thaw.plugins.index.*; -public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { +public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener, java.util.Observer { public static final String DEFAULT_INDEX = "USK at G-ofLp2KlhHBNPezx~GDWDKThJ-QUxJK8c2xiF~-jwE,-55vLnqo3U1H5qmKA1LLADoYGQdk-Y3hSLxyKeUyHNc,AQABAAE/Thaw/2/Thaw.xml"; @@ -16,6 +19,7 @@ private Hsqldb hsqldb; private IndexBrowserPanel browserPanel; + private Vector toolbarActions; public IndexBrowser() { @@ -49,6 +53,7 @@ } browserPanel = new IndexBrowserPanel(hsqldb, core.getQueueManager(), core.getConfig(), core.getMainWindow()); + browserPanel.getIndexTree().addObserver(this); setMainWindow(core.getMainWindow()); core.getMainWindow().getTabbedPane().addChangeListener(this); @@ -60,6 +65,7 @@ browserPanel.restoreState(); JButton button; + toolbarActions = new Vector(); IndexManagementHelper.IndexAction action; button = new JButton(IconBox.refreshAction); @@ -67,18 +73,21 @@ action = new IndexManagementHelper.IndexDownloader(button); action.setTarget(browserPanel.getIndexTree().getRoot()); /* TODO : Listen to tree to only refresh the selected node */ addButtonToTheToolbar(button); + toolbarActions.add(action); button = new JButton(IconBox.indexReuse); button.setToolTipText(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex")); action = new IndexManagementHelper.IndexReuser(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), core.getMainWindow(), button); action.setTarget(browserPanel.getIndexTree().getRoot()); addButtonToTheToolbar(button); + toolbarActions.add(action); button = new JButton(IconBox.indexNew); button.setToolTipText(I18n.getMessage("thaw.plugin.index.createIndex")); action = new IndexManagementHelper.IndexCreator(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), button); action.setTarget(browserPanel.getIndexTree().getRoot()); addButtonToTheToolbar(button); + toolbarActions.add(action); if (newDb) { IndexManagementHelper.addIndex(hsqldb, core.getQueueManager(), browserPanel.getUnknownIndexList(), browserPanel.getIndexTree(), @@ -127,4 +136,16 @@ } } + public void update (java.util.Observable o, Object arg) { + if (o == browserPanel.getIndexTree() + && arg instanceof IndexTreeNode) { + + for (Iterator it = toolbarActions.iterator(); + it.hasNext(); ) { + IndexManagementHelper.IndexAction action = (IndexManagementHelper.IndexAction)it.next(); + action.setTarget((IndexTreeNode)arg); + } + + } + } } Modified: trunk/apps/Thaw/src/thaw/plugins/insertPlugin/InsertPanel.java =====================