From jflesch at freenetproject.org Mon Jan 1 20:00:32 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Mon, 1 Jan 2007 20:00:32 +0000 (UTC) Subject: [Thaw-dev] r11539 - in trunk/apps/Thaw/src/thaw: core i18n plugins plugins/index Message-ID: <20070101200032.5018120B250@emu.freenetproject.org> Author: jflesch Date: 2007-01-01 20:00:29 +0000 (Mon, 01 Jan 2007) New Revision: 11539 Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/Console.java 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/IndexTree.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java Log: adding an auto-refresh functionnality for the indexes Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -218,5 +218,19 @@ return Integer.parseInt(split[2]); } + + public static String getComparablePart(String key) { + if (key.startsWith("KSK@")) + return key; + + int maxLength = 0; + + if (key.length() <= 70) + maxLength = key.length(); + else + maxLength = 70; + + return key.substring(0, maxLength).toLowerCase(); + } } Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-01 20:00:29 UTC (rev 11539) @@ -259,3 +259,9 @@ thaw.plugin.index.importIndex=Import index content from a file thaw.plugin.index.exportIndex=Export index content to a file + +thaw.plugin.index.autoRefresher=Auto-refresher + +thaw.plugin.index.useAutoRefresh=Use auto-refresh +thaw.plugin.index.autoRefreshInterval=Auto-refresh interval (in sec): +thaw.plugin.index.nmbIndexPerRefresh=Number of indexes refreshed for each interval: Modified: trunk/apps/Thaw/src/thaw/plugins/Console.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Console.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/Console.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -40,10 +40,6 @@ private JScrollPane logAreaScrollPane; private JButton saveToFile; - private JPanel configPanel; - private JLabel sizeLabel; - private JTextField sizeField; - private boolean threadRunning; private boolean hasChanged; @@ -76,17 +72,6 @@ core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.console.console"), consolePanel); - configPanel = new JPanel(); - configPanel.setLayout(new GridLayout(15, 1)); - - sizeLabel = new JLabel(I18n.getMessage("thaw.plugin.console.maxSize")); - sizeField = new JTextField(core.getConfig().getValue("consoleMaxLogSize")); - - configPanel.add(sizeLabel); - configPanel.add(sizeField); - - core.getConfigWindow().addTab(I18n.getMessage("thaw.plugin.console.console"), configPanel); - Logger.addLogListener(this); Thread dispThread = new Thread(this); @@ -100,11 +85,8 @@ public boolean stop() { threadRunning = false; - core.getConfig().setValue("consoleMaxLogSize", sizeField.getText() ); - Logger.removeLogListener(this); - core.getConfigWindow().removeTab(configPanel); core.getMainWindow().removeTab(consolePanel); return true; Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -19,7 +19,10 @@ import thaw.plugins.index.IndexManagementHelper; import thaw.plugins.index.IndexTreeNode; import thaw.plugins.index.DatabaseManager; +import thaw.plugins.index.IndexConfigPanel; +import thaw.plugins.index.AutoRefresh; + public class IndexBrowser extends ToolbarModifier implements Plugin, ChangeListener { public static final String DEFAULT_INDEX = "USK at G-ofLp2KlhHBNPezx~GDWDKThJ-QUxJK8c2xiF~-jwE,-55vLnqo3U1H5qmKA1LLADoYGQdk-Y3hSLxyKeUyHNc,AQABAAE/Thaw/2/Thaw.xml"; @@ -30,6 +33,10 @@ private IndexBrowserPanel browserPanel; private Vector toolbarActions; + private IndexConfigPanel configPanel; + + private AutoRefresh autoRefresh = null; + public IndexBrowser() { } @@ -37,6 +44,7 @@ public boolean run(final Core core) { this.core = core; + if(core.getPluginManager().getPlugin("thaw.plugins.Hsqldb") == null) { Logger.info(this, "Loading Hsqldb plugin"); @@ -48,7 +56,6 @@ } hsqldb = (Hsqldb)core.getPluginManager().getPlugin("thaw.plugins.Hsqldb"); - hsqldb.registerChild(this); boolean newDb; @@ -77,10 +84,32 @@ stateChanged(null); + + configPanel = new IndexConfigPanel(core.getConfigWindow(), core.getConfig()); + configPanel.addTab(); + + autoRefresh = null; + + if (core.getConfig().getValue("indexAutoRefreshActivated") != null) { + if (Boolean.valueOf(core.getConfig().getValue("indexAutoRefreshActivated")).booleanValue()) { + autoRefresh = new AutoRefresh(hsqldb, browserPanel, core.getQueueManager(), core.getConfig()); + } + } else { + if (AutoRefresh.DEFAULT_ACTIVATED) { + autoRefresh = new AutoRefresh(hsqldb, browserPanel, core.getQueueManager(), core.getConfig()); + } + } + + if (autoRefresh != null) + autoRefresh.start(); + return true; } public boolean stop() { + if (autoRefresh != null) + autoRefresh.stop(); + core.getMainWindow().getTabbedPane().removeChangeListener(this); if (browserPanel != null) { @@ -90,6 +119,8 @@ hsqldb.unregisterChild(this); + configPanel.removeTab(); + return true; } Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -120,6 +120,19 @@ this.setTransfer(); } + + /** + * Index registration allows to have a flat view of the loaded / displayed indexes + */ + public void register() { + indexBrowser.getIndexTree().registerIndex(this); + } + + public void unregister() { + indexBrowser.getIndexTree().unregisterIndex(this); + } + + public static boolean isDumbKey(final String key) { return ((key == null) || key.equals("") || (key.length() < 20)); } @@ -628,7 +641,8 @@ return; } - loadXML(transfer.getPath()); + if (changed) + loadXML(transfer.getPath()); save(); @@ -1113,10 +1127,10 @@ final Element rootEl = xmlDoc.getDocumentElement(); - loadXMLFromRoot(rootEl); + loadXML(rootEl); } - public void loadXMLFromRoot(Element rootEl) { + public void loadXML(Element rootEl) { loadHeader(rootEl); loadLinks(rootEl); loadFileList(rootEl); Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -45,6 +45,7 @@ unknownList = new UnknownIndexList(queueManager, this); indexTree = new IndexTree(I18n.getMessage("thaw.plugin.index.indexes"), false, queueManager, this, config); + indexTree.makeFlatList(); leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, indexTree.getPanel(), Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -494,6 +494,29 @@ } + public void register() { + if(children == null) + children = loadChildren(); + + for(final Iterator it = children.iterator(); + it.hasNext();) { + final IndexTreeNode node = (IndexTreeNode)((DefaultMutableTreeNode)it.next()).getUserObject(); + node.register(); + } + } + + public void unregister() { + if(children == null) + children = loadChildren(); + + for(final Iterator it = children.iterator(); + it.hasNext();) { + final IndexTreeNode node = (IndexTreeNode)((DefaultMutableTreeNode)it.next()).getUserObject(); + node.unregister(); + } + } + + public boolean isLeaf() { return false; } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -139,7 +139,7 @@ if (target == null) target = indexBrowser.getIndexTree().getRoot(); - if ((name == null) || (name.indexOf("/") >= 0)) { + if ((name == null) || (name.indexOf("/") >= 0) || name.indexOf("\\") >= 0) { Logger.error(new IndexManagementHelper(), "invalid name"); return; } @@ -386,6 +386,11 @@ final String name = Index.getNameFromKey(publicKey); + if (name == null || name.indexOf("/") >= 0 || name.indexOf("\\") >= 0) { + Logger.error(new IndexManagementHelper(), "Invalid index name !\n"); + return; + } + IndexCategory parent; if ((target != null) && (target instanceof IndexCategory)) Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -12,6 +12,7 @@ import java.sql.ResultSet; import java.util.Iterator; import java.util.Vector; +import java.util.Hashtable; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -31,6 +32,7 @@ import thaw.core.IconBox; import thaw.core.Logger; import thaw.core.MainWindow; +import thaw.core.FreenetURIHelper; import thaw.fcp.FCPQueueManager; import thaw.gui.JDragTree; import thaw.plugins.Hsqldb; @@ -92,6 +94,9 @@ private ToolbarModifier toolbarModifier; private Vector toolbarActions; + + private Hashtable registeredIndexes; /* currently, equals to all the indexes, but later, will be == to only the displayed indexes */ + /** * @param queueManager Not used if selectionOnly is set to true * @param config Not used if selectionOnly is set to true (used for lastDestinationDirectory and lastSourceDirectory) @@ -101,12 +106,12 @@ final IndexBrowserPanel indexBrowser, final Config config) { this.queueManager = queueManager; - this.selectionOnly = selectionOnly; panel = new JPanel(); panel.setLayout(new BorderLayout(10, 10)); + registeredIndexes = new Hashtable(); root = new IndexCategory(queueManager, indexBrowser, -1, null, rootName); root.loadChildren(); @@ -302,6 +307,14 @@ } /** + * called by the index browser, you shouldn't have to bother about it + */ + public void makeFlatList() { + root.register(); + } + + + /** * Used by IndexBrowserPanel when the visibility changed */ public ToolbarModifier getToolbarModifier() { @@ -455,7 +468,6 @@ if(index.getTreeNode().getParent() != null) treeModel.nodeChanged(index.getTreeNode().getParent()); } - } } @@ -548,18 +560,11 @@ public boolean alreadyExistingIndex(final String key) { - int maxLength = 0; - if ((key == null) || (key.length() <= 10)) return false; - if (key.length() <= 60) - maxLength = key.length(); - else - maxLength = 60; + String realKey = FreenetURIHelper.getComparablePart(key); - final String realKey = key.substring(0, maxLength).toLowerCase(); - try { final Connection c = indexBrowser.getDb().getConnection(); PreparedStatement st; @@ -603,4 +608,17 @@ treeModel.reload(); } + + public void registerIndex(Index index) { + registeredIndexes.put(FreenetURIHelper.getComparablePart(index.getPublicKey()), + index); + } + + public void unregisterIndex(Index index) { + registeredIndexes.remove(FreenetURIHelper.getComparablePart(index.getPublicKey())); + } + + public Index getRegisteredIndex(String key) { + return ((Index)registeredIndexes.get(FreenetURIHelper.getComparablePart(key))); + } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2006-12-31 21:13:18 UTC (rev 11538) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2007-01-01 20:00:29 UTC (rev 11539) @@ -68,4 +68,7 @@ public boolean isModifiable(); public boolean hasChanged(); + + public void register(); + public void unregister(); } From jflesch at freenetproject.org Mon Jan 1 20:01:25 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Mon, 1 Jan 2007 20:01:25 +0000 (UTC) Subject: [Thaw-dev] r11540 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070101200125.2302E20B250@emu.freenetproject.org> Author: jflesch Date: 2007-01-01 20:01:13 +0000 (Mon, 01 Jan 2007) New Revision: 11540 Added: trunk/apps/Thaw/src/thaw/plugins/index/AutoRefresh.java trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java Log: Forgot files Added: trunk/apps/Thaw/src/thaw/plugins/index/AutoRefresh.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/AutoRefresh.java (rev 0) +++ trunk/apps/Thaw/src/thaw/plugins/index/AutoRefresh.java 2007-01-01 20:01:13 UTC (rev 11540) @@ -0,0 +1,168 @@ +package thaw.plugins.index; + +import java.sql.*; + +import thaw.core.Config; +import thaw.core.Logger; +import thaw.plugins.Hsqldb; + +import thaw.fcp.FCPQueueManager; + +public class AutoRefresh implements Runnable { + + public final static boolean DEFAULT_ACTIVATED = true; + public final static int DEFAULT_INTERVAL = 300; + public final static int DEFAULT_INDEX_NUMBER = 20; + + private Hsqldb db; + private IndexBrowserPanel browserPanel; + private Config config; + + private boolean threadRunning; + + private int interval; + private int nmbIndexesPerInterval; + + private int subInterval; + private int nmbIndexesPerSubInterval; + + private FCPQueueManager queueManager; + + public AutoRefresh(Hsqldb db, IndexBrowserPanel indexBrowser, FCPQueueManager queueManager, Config config) { + this.browserPanel = indexBrowser; + this.queueManager = queueManager; + this.config = config; + threadRunning = false; + + interval = 0; + nmbIndexesPerInterval = 0; + + try { + if (config.getValue("indexRefreshInterval") != null) { + interval = Integer.parseInt(config.getValue("indexRefreshInterval")); + } + + if (config.getValue("nmbIndexesPerRefreshInterval") != null) { + nmbIndexesPerInterval = Integer.parseInt(config.getValue("nmbIndexesPerRefreshInterval")); + } + } catch(NumberFormatException e) { + Logger.error(this, "Error while parsing value in the configuration, using default ones"); + interval = 0; + nmbIndexesPerInterval = 0; + } + + if (interval == 0) + interval = DEFAULT_INTERVAL; + if (nmbIndexesPerInterval == 0) + nmbIndexesPerInterval = DEFAULT_INDEX_NUMBER; + + + this.db = db; + + + if (interval >= nmbIndexesPerInterval) { + nmbIndexesPerSubInterval = 1; + subInterval = (interval / nmbIndexesPerInterval); + } else { + subInterval = 1; + nmbIndexesPerSubInterval = (nmbIndexesPerInterval / interval); + } + + + } + + public void start() { + if (!threadRunning) { + threadRunning = true; + Thread th = new Thread(this); + th.start(); + } + } + + + public int updateNext(int lastIdx) { + try { + Connection c = db.getConnection(); + PreparedStatement st; + ResultSet results; + int ret; + + st = c.prepareStatement("SELECT id, originalName, displayName, publicKey, privateKey, author, positionInTree, revision "+ + "FROM indexes WHERE id > ? ORDER by id LIMIT 1"); + + if (lastIdx != -1) { + st.setInt(1, lastIdx); + if (st.execute()) + results = st.getResultSet(); + else + return -1; + } else { + results = db.executeQuery("SELECT id, originalName, displayName, publicKey, privateKey, author, positionInTree, revision "+ + "FROM indexes ORDER by Id LIMIT 1"); + + if (results == null) + return -1; + } + + if (!results.next()) + return -1; + + ret = results.getInt("id"); + + Index index; + + index = browserPanel.getIndexTree().getRegisteredIndex(results.getString("publicKey")); + + if (index == null) + index = new Index(queueManager, browserPanel, + results.getInt("id"), null, + results.getString("originalName"), + results.getString("displayName"), + results.getString("publicKey"), + results.getString("privateKey"), + results.getInt("revision"), + results.getString("author")); + + if (index.getPrivateKey() != null) { + Logger.debug(this, "Private key found ! index ignored"); + return ret; + } + + index.updateFromFreenet(-1); + + return ret; + + } catch(java.sql.SQLException e) { + Logger.error(this, "SQLEXCEPTION while autorefreshing: "+e.toString()); + return -2; + } + } + + + public void run() { + int lastIdx = -1; + + while(threadRunning) { + try { + Thread.sleep(1000 * subInterval); + } catch(java.lang.InterruptedException e) { + /* \_o< */ + } + + for (int i = 0 ; i < nmbIndexesPerSubInterval ; i++) { + lastIdx = updateNext(lastIdx); + + if (lastIdx == -2) { + Logger.error(this, "Disabling auto-refreshing !"); + return; + } + } + } + } + + public void stop() { + if (threadRunning) + threadRunning = false; + } + +} Added: trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java (rev 0) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java 2007-01-01 20:01:13 UTC (rev 11540) @@ -0,0 +1,123 @@ +package thaw.plugins.index; + +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.GridLayout; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.JCheckBox; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +import thaw.core.*; + +public class IndexConfigPanel implements ActionListener { + private ConfigWindow configWindow; + private Config config; + + private JPanel panel; + + private JCheckBox autorefreshActivated; + private JTextField refreshInterval; + private JTextField indexPerRefresh; + + + public IndexConfigPanel(ConfigWindow configWindow, Config config) { + this.configWindow = configWindow; + this.config = config; + + panel = new JPanel(); + panel.setLayout(new GridLayout(15, 1)); + + autorefreshActivated = new JCheckBox(I18n.getMessage("thaw.plugin.index.useAutoRefresh")); + + JLabel refreshIntervalLabel = new JLabel(I18n.getMessage("thaw.plugin.index.autoRefreshInterval")); + refreshInterval = new JTextField(""); + + JLabel indexPerRefreshLabel = new JLabel(I18n.getMessage("thaw.plugin.index.nmbIndexPerRefresh")); + indexPerRefresh = new JTextField(""); + + resetValues(); + + autorefreshActivated.addActionListener(this); + configWindow.getOkButton().addActionListener(this); + configWindow.getCancelButton().addActionListener(this); + + panel.add(autorefreshActivated); + panel.add(refreshIntervalLabel); + panel.add(refreshInterval); + panel.add(indexPerRefreshLabel); + panel.add(indexPerRefresh); + + updateTextFieldState(); + } + + + public void addTab() { + configWindow.addTab(I18n.getMessage("thaw.plugin.index.browser"), panel); + } + + + public void removeTab() { + saveValues(); + configWindow.removeTab(panel); + } + + + public void updateTextFieldState() { + refreshInterval.setEnabled(autorefreshActivated.isSelected()); + indexPerRefresh.setEnabled(autorefreshActivated.isSelected()); + } + + public void resetValues() { + boolean activated = AutoRefresh.DEFAULT_ACTIVATED; + int refreshIntervalInt = AutoRefresh.DEFAULT_INTERVAL; + int nmbIndexInt = AutoRefresh.DEFAULT_INDEX_NUMBER; + + try { + if (config.getValue("indexAutoRefreshActivated") != null) { + activated = Boolean.valueOf(config.getValue("indexAutoRefreshActivated")).booleanValue(); + } + + if (config.getValue("indexRefreshInterval") != null) { + refreshIntervalInt = Integer.parseInt(config.getValue("indexRefreshInterval")); + } + + if (config.getValue("nmbIndexesPerRefreshInterval") != null) { + nmbIndexInt = Integer.parseInt(config.getValue("nmbIndexesPerRefreshInterval")); + } + } catch(NumberFormatException e) { + Logger.error(this, "Error while parsing config !"); + } + + + autorefreshActivated.setSelected(activated); + refreshInterval.setText(Integer.toString(refreshIntervalInt)); + indexPerRefresh.setText(Integer.toString(nmbIndexInt)); + } + + + public void saveValues() { + config.setValue("indexAutoRefreshActivated", + Boolean.toString(autorefreshActivated.isSelected())); + config.setValue("indexRefreshInterval", + refreshInterval.getText()); + config.setValue("nmbIndexesPerRefreshInterval", + indexPerRefresh.getText()); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == autorefreshActivated) { + updateTextFieldState(); + } + + if (e.getSource() == configWindow.getOkButton()) { + saveValues(); + } + + if (e.getSource() == configWindow.getCancelButton()) { + resetValues(); + } + } + +} From jflesch at freenetproject.org Tue Jan 2 18:54:36 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Tue, 2 Jan 2007 18:54:36 +0000 (UTC) Subject: [Thaw-dev] r11542 - trunk/apps/Thaw/src/thaw/fcp Message-ID: <20070102185436.2EF129BB2A@emu.freenetproject.org> Author: jflesch Date: 2007-01-02 18:54:35 +0000 (Tue, 02 Jan 2007) New Revision: 11542 Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java Log: Remove useless \n in the log messages from FCPConnection Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java =================================================================== --- trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2007-01-02 15:55:59 UTC (rev 11541) +++ trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2007-01-02 18:54:35 UTC (rev 11542) @@ -136,7 +136,7 @@ */ public boolean connect() { if((nodeAddress == null) || (port == 0)) { - Logger.warning(this, "Address or port not defined ! Unable to connect\n"); + Logger.warning(this, "Address or port not defined ! Unable to connect"); return false; } @@ -161,8 +161,8 @@ } if(!socket.isConnected()) { - Logger.warning(this, "Unable to connect, but no exception ?! WTF ?\n"); - Logger.warning(this, "Will try to continue ...\n"); + Logger.warning(this, "Unable to connect, but no exception ?! WTF ?"); + Logger.warning(this, "Will try to continue ..."); } try { @@ -231,7 +231,7 @@ return false; } } else { - Logger.warning(this, "Cannot write if disconnected !\n"); + Logger.warning(this, "Cannot write if disconnected !"); return false; } @@ -294,7 +294,7 @@ bufferedOut.write(toWrite.getBytes()); } } else { - Logger.warning(this, "Cannot write if disconnected !\n"); + Logger.warning(this, "Cannot write if disconnected !"); if (checkLock) removeFromWriterQueue(); return false; From jflesch at freenetproject.org Tue Jan 2 19:08:06 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Tue, 2 Jan 2007 19:08:06 +0000 (UTC) Subject: [Thaw-dev] r11543 - in trunk/apps/Thaw/src/thaw: core plugins plugins/index Message-ID: <20070102190806.D196A9BBA9@emu.freenetproject.org> Author: jflesch Date: 2007-01-02 19:08:05 +0000 (Tue, 02 Jan 2007) New Revision: 11543 Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/ToolbarModifier.java trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: Fix various NPE Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-01-02 18:54:35 UTC (rev 11542) +++ trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-01-02 19:08:05 UTC (rev 11543) @@ -220,6 +220,9 @@ public static String getComparablePart(String key) { + if (key == null) + return null; + if (key.startsWith("KSK@")) return key; Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-02 18:54:35 UTC (rev 11542) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-02 19:08:05 UTC (rev 11543) @@ -119,7 +119,8 @@ hsqldb.unregisterChild(this); - configPanel.removeTab(); + if (configPanel != null) + configPanel.removeTab(); return true; } Modified: trunk/apps/Thaw/src/thaw/plugins/ToolbarModifier.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/ToolbarModifier.java 2007-01-02 18:54:35 UTC (rev 11542) +++ trunk/apps/Thaw/src/thaw/plugins/ToolbarModifier.java 2007-01-02 19:08:05 UTC (rev 11543) @@ -66,7 +66,7 @@ public void displayButtonsInTheToolbar() { if (mainWindow != null) { if (areDisplayed && mainWindow.getLastToolbarModifier() == this) { - Logger.warning(this, "Already displayed !"); + Logger.notice(this, "Already displayed !"); return; } Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-01-02 18:54:35 UTC (rev 11542) +++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-01-02 19:08:05 UTC (rev 11543) @@ -350,6 +350,9 @@ } public Object getValueAt(final int row, final int column) { + if (files == null) + return null; + if (row >= files.size()) return null; Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-02 18:54:35 UTC (rev 11542) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-02 19:08:05 UTC (rev 11543) @@ -610,6 +610,11 @@ public void registerIndex(Index index) { + if (index.getPublicKey() == null) { + Logger.warning(this, "Hu ?! no key for index '"+index.toString()+"' ?"); + return; + } + registeredIndexes.put(FreenetURIHelper.getComparablePart(index.getPublicKey()), index); } From jflesch at freenetproject.org Tue Jan 2 21:44:34 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Tue, 2 Jan 2007 21:44:34 +0000 (UTC) Subject: [Thaw-dev] r11544 - in trunk/apps/Thaw: images src/thaw/core src/thaw/i18n src/thaw/plugins/index Message-ID: <20070102214434.8F2E19BBF7@emu.freenetproject.org> Author: jflesch Date: 2007-01-02 21:44:33 +0000 (Tue, 02 Jan 2007) New Revision: 11544 Added: trunk/apps/Thaw/images/add.png trunk/apps/Thaw/images/blueBunny.png trunk/apps/Thaw/images/browser.png trunk/apps/Thaw/images/connect.png trunk/apps/Thaw/images/delete.png trunk/apps/Thaw/images/disconnect.png trunk/apps/Thaw/images/download.png trunk/apps/Thaw/images/emblem-symbolic-link.png trunk/apps/Thaw/images/emblem-unreadable.png trunk/apps/Thaw/images/folder-new.png trunk/apps/Thaw/images/help.png trunk/apps/Thaw/images/index-new.png trunk/apps/Thaw/images/index.png trunk/apps/Thaw/images/indexBrowser.png trunk/apps/Thaw/images/indexReadOnly.png trunk/apps/Thaw/images/insertion.png trunk/apps/Thaw/images/key.png trunk/apps/Thaw/images/makeLink.png trunk/apps/Thaw/images/min-add.png trunk/apps/Thaw/images/min-browser.png trunk/apps/Thaw/images/min-connect.png trunk/apps/Thaw/images/min-delete.png trunk/apps/Thaw/images/min-disconnect.png trunk/apps/Thaw/images/min-download.png trunk/apps/Thaw/images/min-emblem-symbolic-link.png trunk/apps/Thaw/images/min-emblem-unreadable.png trunk/apps/Thaw/images/min-folder-new.png trunk/apps/Thaw/images/min-help.png trunk/apps/Thaw/images/min-index-new.png trunk/apps/Thaw/images/min-index.png trunk/apps/Thaw/images/min-indexBrowser.png trunk/apps/Thaw/images/min-indexReadOnly.png trunk/apps/Thaw/images/min-insertion.png trunk/apps/Thaw/images/min-makeLink.png trunk/apps/Thaw/images/min-quit.png trunk/apps/Thaw/images/min-refresh.png trunk/apps/Thaw/images/min-remove.png trunk/apps/Thaw/images/min-settings.png trunk/apps/Thaw/images/quit.png trunk/apps/Thaw/images/refresh.png trunk/apps/Thaw/images/remove.png trunk/apps/Thaw/images/settings.png Removed: trunk/apps/Thaw/images/addToIndex.png trunk/apps/Thaw/images/application-internet.png trunk/apps/Thaw/images/blueBunny.png trunk/apps/Thaw/images/edit-clear.png trunk/apps/Thaw/images/edit-find-replace.png trunk/apps/Thaw/images/edit-find.png trunk/apps/Thaw/images/folder-new.png trunk/apps/Thaw/images/folder.png trunk/apps/Thaw/images/go-first.png trunk/apps/Thaw/images/go-jump.png trunk/apps/Thaw/images/go-next.png trunk/apps/Thaw/images/index-existing.png trunk/apps/Thaw/images/index-new.png trunk/apps/Thaw/images/index-refresh.png trunk/apps/Thaw/images/index.png trunk/apps/Thaw/images/key.png trunk/apps/Thaw/images/min-edit-find-replace.png trunk/apps/Thaw/images/min-edit-find.png trunk/apps/Thaw/images/min-go-first.png trunk/apps/Thaw/images/min-go-jump.png trunk/apps/Thaw/images/min-go-next.png trunk/apps/Thaw/images/min-index.png trunk/apps/Thaw/images/min-preferences-system.png trunk/apps/Thaw/images/min-system-log-out.png trunk/apps/Thaw/images/min-system-search.png trunk/apps/Thaw/images/min-v_green.png trunk/apps/Thaw/images/min-view-refresh.png trunk/apps/Thaw/images/min-x_red.png trunk/apps/Thaw/images/preferences-system.png trunk/apps/Thaw/images/process-stop.png trunk/apps/Thaw/images/system-log-out.png trunk/apps/Thaw/images/system-search.png trunk/apps/Thaw/images/v_green.png trunk/apps/Thaw/images/view-refresh.png trunk/apps/Thaw/images/x_red.png Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java trunk/apps/Thaw/src/thaw/core/MainWindow.java trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java Log: Change icons Added: trunk/apps/Thaw/images/add.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/add.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/addToIndex.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/application-internet.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/blueBunny.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/blueBunny.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/blueBunny.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/browser.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/browser.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/connect.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/connect.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/delete.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/delete.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/disconnect.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/disconnect.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/download.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/download.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/edit-clear.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/edit-find-replace.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/edit-find.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/emblem-symbolic-link.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/emblem-symbolic-link.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/emblem-unreadable.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/emblem-unreadable.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/folder-new.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/folder-new.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/folder-new.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/folder.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/go-first.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/go-jump.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/go-next.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/help.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/help.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/index-existing.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/index-new.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/index-new.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/index-new.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/index-refresh.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/index.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/index.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/index.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/indexBrowser.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/indexBrowser.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/indexReadOnly.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/indexReadOnly.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/insertion.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/insertion.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/key.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/key.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/key.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/makeLink.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/makeLink.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-add.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-add.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-browser.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-browser.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-connect.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-connect.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-delete.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-delete.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-disconnect.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-disconnect.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-download.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-download.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/min-edit-find-replace.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-edit-find.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/min-emblem-symbolic-link.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-emblem-symbolic-link.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-emblem-unreadable.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-emblem-unreadable.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-folder-new.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-folder-new.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/min-go-first.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-go-jump.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-go-next.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/min-help.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-help.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-index-new.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-index-new.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/min-index.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/min-index.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-index.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-indexBrowser.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-indexBrowser.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-indexReadOnly.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-indexReadOnly.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-insertion.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-insertion.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-makeLink.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-makeLink.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/min-preferences-system.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/min-quit.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-quit.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-refresh.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-refresh.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-remove.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-remove.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-settings.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-settings.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/min-system-log-out.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-system-search.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-v_green.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-view-refresh.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/min-x_red.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/preferences-system.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/process-stop.png =================================================================== (Binary files differ) Added: trunk/apps/Thaw/images/quit.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/quit.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/refresh.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/refresh.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/remove.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/remove.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/settings.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/settings.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/apps/Thaw/images/system-log-out.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/system-search.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/v_green.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/view-refresh.png =================================================================== (Binary files differ) Deleted: trunk/apps/Thaw/images/x_red.png =================================================================== (Binary files differ) Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-02 19:08:05 UTC (rev 11543) +++ trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-02 21:44:33 UTC (rev 11544) @@ -28,9 +28,6 @@ public static ImageIcon downloads; public static ImageIcon minDownloads; - public static ImageIcon indexEditor; - public static ImageIcon minIndexEditor; - public static ImageIcon indexBrowser; public static ImageIcon minIndexBrowser; @@ -48,13 +45,8 @@ public static ImageIcon delete; - public static ImageIcon error; - public static ImageIcon ok; - public static ImageIcon refreshAction; - public static ImageIcon clearAction; - public static ImageIcon settings; public static ImageIcon minSettings; @@ -64,11 +56,14 @@ public static ImageIcon quitAction; public static ImageIcon minQuitAction; - public static ImageIcon search; - public static ImageIcon key; + public static ImageIcon help; + public static ImageIcon minHelp; + public static ImageIcon folderNew; + + /** * Not really used */ @@ -107,39 +102,36 @@ public static void loadIcons() { IconBox.blueBunny = IconBox.loadIcon("blueBunny.png"); - IconBox.connectAction = IconBox.loadIcon("go-jump.png"); - IconBox.minConnectAction = IconBox.loadIcon("min-go-jump.png"); - IconBox.disconnectAction = IconBox.loadIcon("process-stop.png"); - IconBox.queue = IconBox.loadIcon("system-search.png"); - IconBox.minQueue = IconBox.loadIcon("min-system-search.png"); - IconBox.insertions = IconBox.loadIcon("go-next.png"); - IconBox.minInsertions = IconBox.loadIcon("min-go-next.png"); - IconBox.minIndex = IconBox.loadIcon("min-edit-find-replace.png"); - IconBox.minIndexReadOnly = IconBox.loadIcon("min-index.png"); + IconBox.connectAction = IconBox.loadIcon("connect.png"); + IconBox.minConnectAction = IconBox.loadIcon("min-connect.png"); + IconBox.disconnectAction = IconBox.loadIcon("disconnect.png"); + IconBox.queue = IconBox.loadIcon("connect.png"); + IconBox.minQueue = IconBox.loadIcon("min-connect.png"); + IconBox.insertions = IconBox.loadIcon("insertion.png"); + IconBox.minInsertions = IconBox.loadIcon("min-insertion.png"); + IconBox.minIndex = IconBox.loadIcon("min-index.png"); + IconBox.minIndexReadOnly = IconBox.loadIcon("min-indexReadOnly.png"); IconBox.indexNew = IconBox.loadIcon("index-new.png"); - IconBox.indexReuse = IconBox.loadIcon("index-existing.png"); - IconBox.downloads = IconBox.loadIcon("go-first.png"); - IconBox.minDownloads = IconBox.loadIcon("min-go-first.png"); - IconBox.clearAction = IconBox.loadIcon("edit-clear.png"); - IconBox.settings = IconBox.loadIcon("preferences-system.png"); - IconBox.minSettings = IconBox.loadIcon("min-preferences-system.png"); - IconBox.indexEditor = IconBox.loadIcon("edit-find-replace.png"); - IconBox.minIndexEditor = IconBox.loadIcon("min-edit-find-replace.png"); - IconBox.indexBrowser = IconBox.loadIcon("edit-find.png"); - IconBox.minIndexBrowser = IconBox.loadIcon("min-edit-find.png"); - IconBox.addToIndexAction = IconBox.loadIcon("addToIndex.png"); - IconBox.insertAndAddToIndexAction = IconBox.loadIcon("folder-new.png"); - IconBox.makeALinkAction = IconBox.loadIcon("application-internet.png"); - IconBox.reconnectAction = IconBox.loadIcon("view-refresh.png"); - IconBox.minReconnectAction = IconBox.loadIcon("min-view-refresh.png"); - IconBox.refreshAction = IconBox.loadIcon("view-refresh.png"); - IconBox.quitAction = IconBox.loadIcon("system-log-out.png"); - IconBox.minQuitAction = IconBox.loadIcon("min-system-log-out.png"); - IconBox.search = IconBox.loadIcon("system-search.png"); + IconBox.indexReuse = IconBox.loadIcon("indexReadOnly.png"); + IconBox.downloads = IconBox.loadIcon("download.png"); + IconBox.minDownloads = IconBox.loadIcon("min-download.png"); + IconBox.settings = IconBox.loadIcon("settings.png"); + IconBox.minSettings = IconBox.loadIcon("min-settings.png"); + IconBox.indexBrowser = IconBox.loadIcon("indexBrowser.png"); + IconBox.minIndexBrowser = IconBox.loadIcon("min-indexBrowser.png"); + IconBox.addToIndexAction = IconBox.loadIcon("add.png"); + IconBox.insertAndAddToIndexAction = IconBox.loadIcon("index.png"); + IconBox.makeALinkAction = IconBox.loadIcon("makeLink.png"); + IconBox.reconnectAction = IconBox.loadIcon("refresh.png"); + IconBox.minReconnectAction = IconBox.loadIcon("min-refresh.png"); + IconBox.refreshAction = IconBox.loadIcon("refresh.png"); + IconBox.quitAction = IconBox.loadIcon("quit.png"); + IconBox.minQuitAction = IconBox.loadIcon("min-quit.png"); IconBox.key = IconBox.loadIcon("key.png"); - IconBox.delete = IconBox.loadIcon("x_red.png"); - IconBox.error = IconBox.loadIcon("min-x_red.png"); - IconBox.ok = IconBox.loadIcon("min-v_green.png"); + IconBox.delete = IconBox.loadIcon("delete.png"); + IconBox.folderNew = IconBox.loadIcon("folder-new.png"); + IconBox.help = IconBox.loadIcon("help.png"); + IconBox.minHelp = IconBox.loadIcon("min-help.png"); } } Modified: trunk/apps/Thaw/src/thaw/core/MainWindow.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-01-02 19:08:05 UTC (rev 11543) +++ trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-01-02 21:44:33 UTC (rev 11544) @@ -119,7 +119,8 @@ helpMenu = new JMenu(I18n.getMessage("thaw.menu.help")); - aboutHelpMenuItem = new JMenuItem(I18n.getMessage("thaw.menu.item.about")); + aboutHelpMenuItem = new JMenuItem(I18n.getMessage("thaw.menu.item.about"), + IconBox.minHelp); aboutHelpMenuItem.addActionListener(this); helpMenu.add(aboutHelpMenuItem); @@ -130,14 +131,18 @@ // TOOLBAR connectButton = new JButton(IconBox.connectAction); connectButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.connect")); + connectButton.setBorderPainted(false); disconnectButton = new JButton(IconBox.disconnectAction); disconnectButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.disconnect")); + disconnectButton.setBorderPainted(false); settingsButton = new JButton(IconBox.settings); settingsButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.settings")); + settingsButton.setBorderPainted(false); quitButton = new JButton(IconBox.quitAction); quitButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.quit")); + quitButton.setBorderPainted(false); connectButton.addActionListener(this); disconnectButton.addActionListener(this); @@ -217,7 +222,7 @@ lastToolBarModifier = null; newToolBar = new JToolBar(I18n.getMessage("thaw.toolbar.title")); - + newToolBar.setBorderPainted(false); newToolBar.add(connectButton); newToolBar.add(disconnectButton); newToolBar.addSeparator(); @@ -228,9 +233,10 @@ for (final Iterator it = newButtons.iterator(); it.hasNext();) { final JButton button = (JButton)it.next(); - if (button != null) + if (button != null) { + button.setBorderPainted(false); newToolBar.add(button); - else + } else newToolBar.addSeparator(); } newToolBar.addSeparator(); Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-02 19:08:05 UTC (rev 11543) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-02 21:44:33 UTC (rev 11544) @@ -186,8 +186,8 @@ thaw.about.l2=by Jerome Flesch thaw.about.l3=2006(c) Freenet Project Incorporated thaw.about.l4=under GPLv2 -thaw.about.l6=Icon theme "Gorilla" created by Jimmac (http://jimmac.musichall.cz/icons.php) -thaw.about.l7=French translation: Sylvain Petreolle +thaw.about.l6=Icon theme "Tango" ( http://tango.freedesktop.org/ ) +thaw.about.l7=French translation: Sylvain Petreolle & Jerome Flesch thaw.about.l8=German translation: Michael Helmling ## HsqlDb Modified: trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2007-01-02 19:08:05 UTC (rev 11543) +++ trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2007-01-02 21:44:33 UTC (rev 11544) @@ -174,7 +174,9 @@ thaw.about.l2=par J?r?me Flesch thaw.about.l3=2006(c) Freenet Project Incorporated thaw.about.l4=sous GPLv2 -thaw.about.l6=Th?me d'icones "Gorilla" cr?? par Jimmac (http://jimmac.musichall.cz/icons.php) +thaw.about.l6=Theme d'icones "Tango" ( http://tango.freedesktop.org/ ) +thaw.about.l7=Traduction francaise: Sylvain Petreolle & Jerome Flesch +thaw.about.l8=Traduction allemande: Michael Helmling ## HsqlDb Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-02 19:08:05 UTC (rev 11543) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-02 21:44:33 UTC (rev 11544) @@ -263,7 +263,7 @@ toolbarModifier.addButtonToTheToolbar(button); toolbarActions.add(action); - button = new JButton(IconBox.insertAndAddToIndexAction); + button = new JButton(IconBox.folderNew); button.setToolTipText(I18n.getMessage("thaw.plugin.index.addCategory")); action = new IndexManagementHelper.IndexCategoryAdder(queueManager, indexBrowser, button); action.setTarget(getRoot()); @@ -284,6 +284,23 @@ toolbarModifier.addButtonToTheToolbar(button); toolbarActions.add(action); + button = new JButton(IconBox.key); + button.setToolTipText(I18n.getMessage("thaw.plugin.index.changeIndexKeys")); + action = new IndexManagementHelper.IndexKeyModifier(indexBrowser, button); + action.setTarget(getRoot()); + toolbarModifier.addButtonToTheToolbar(button); + toolbarActions.add(action); + + button = new JButton(IconBox.delete); + button.setToolTipText(I18n.getMessage("thaw.plugin.index.delete")); + action = new IndexManagementHelper.IndexDeleter(indexBrowser, button); + action.setTarget(getRoot()); + toolbarModifier.addButtonToTheToolbar(button); + toolbarActions.add(action); + + + toolbarModifier.addButtonToTheToolbar(null); + button = new JButton(IconBox.addToIndexAction); button.setToolTipText(I18n.getMessage("thaw.plugin.index.addFilesWithoutInserting")); action = new IndexManagementHelper.FileAdder(config, queueManager, indexBrowser, button); @@ -298,12 +315,6 @@ toolbarModifier.addButtonToTheToolbar(button); toolbarActions.add(action); - button = new JButton(IconBox.delete); - button.setToolTipText(I18n.getMessage("thaw.plugin.index.delete")); - action = new IndexManagementHelper.IndexDeleter(indexBrowser, button); - action.setTarget(getRoot()); - toolbarModifier.addButtonToTheToolbar(button); - toolbarActions.add(action); } /** From jflesch at freenetproject.org Tue Jan 2 22:24:00 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Tue, 2 Jan 2007 22:24:00 +0000 (UTC) Subject: [Thaw-dev] r11545 - in trunk/apps/Thaw: images src/thaw/core Message-ID: <20070102222400.BC0D29BBDA@emu.freenetproject.org> Author: jflesch Date: 2007-01-02 22:24:00 +0000 (Tue, 02 Jan 2007) New Revision: 11545 Added: trunk/apps/Thaw/images/mainWindow.png Modified: trunk/apps/Thaw/src/thaw/core/Core.java trunk/apps/Thaw/src/thaw/core/IconBox.java trunk/apps/Thaw/src/thaw/core/SplashScreen.java Log: Improve splashscreen Added: trunk/apps/Thaw/images/mainWindow.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/mainWindow.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/apps/Thaw/src/thaw/core/Core.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Core.java 2007-01-02 21:44:33 UTC (rev 11544) +++ trunk/apps/Thaw/src/thaw/core/Core.java 2007-01-02 22:24:00 UTC (rev 11545) @@ -98,15 +98,19 @@ * @return true is success, false if not */ public boolean initAll() { + IconBox.loadIcons(); + splashScreen = new SplashScreen(); splashScreen.display(); splashScreen.setProgressionAndStatus(0, "Loading configuration ..."); + splashScreen.addIcon(IconBox.settings); if(!initConfig()) return false; splashScreen.setProgressionAndStatus(10, "Connecting ..."); + splashScreen.addIcon(IconBox.connectAction); if(!initNodeConnection()) new WarningWindow(this, I18n.getMessage("thaw.warning.unableToConnectTo")+ " "+ config.getValue("nodeAddress")+ @@ -114,10 +118,12 @@ splashScreen.setProgressionAndStatus(30, "Preparing the main window ..."); + splashScreen.addIcon(IconBox.mainWindow); if(!initGraphics()) return false; splashScreen.setProgressionAndStatus(40, "Loading plugins ..."); + splashScreen.addIcon(IconBox.add); if(!initPluginManager()) return false; @@ -307,8 +313,6 @@ public boolean initGraphics() { initializeLookAndFeel(); - IconBox.loadIcons(); - mainWindow = new MainWindow(this); configWindow = new ConfigWindow(this); Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-02 21:44:33 UTC (rev 11544) +++ trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-02 22:24:00 UTC (rev 11545) @@ -63,7 +63,10 @@ public static ImageIcon folderNew; + public static ImageIcon mainWindow; + public static ImageIcon add; + /** * Not really used */ @@ -120,6 +123,7 @@ IconBox.indexBrowser = IconBox.loadIcon("indexBrowser.png"); IconBox.minIndexBrowser = IconBox.loadIcon("min-indexBrowser.png"); IconBox.addToIndexAction = IconBox.loadIcon("add.png"); + IconBox.add = IconBox.loadIcon("add.png"); IconBox.insertAndAddToIndexAction = IconBox.loadIcon("index.png"); IconBox.makeALinkAction = IconBox.loadIcon("makeLink.png"); IconBox.reconnectAction = IconBox.loadIcon("refresh.png"); @@ -132,6 +136,7 @@ IconBox.folderNew = IconBox.loadIcon("folder-new.png"); IconBox.help = IconBox.loadIcon("help.png"); IconBox.minHelp = IconBox.loadIcon("min-help.png"); + IconBox.mainWindow = IconBox.loadIcon("mainWindow.png"); } } Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-02 21:44:33 UTC (rev 11544) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-02 22:24:00 UTC (rev 11545) @@ -1,6 +1,7 @@ package thaw.core; import java.awt.BorderLayout; +import java.awt.GridLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; @@ -9,37 +10,59 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; +import javax.swing.ImageIcon; +import java.util.Vector; - public class SplashScreen { public final static int SIZE_X = 500; - public final static int SIZE_Y = 100; + public final static int SIZE_Y = 150; + public final static int NMB_ICONS = 4; public JDialog splashScreen; public JProgressBar progressBar; + public JPanel iconPanel; + public int nmbIcon = 0; + public Vector emptyLabels; + public SplashScreen() { } public void display() { final JPanel panel = new JPanel(); + JPanel subPanel = new JPanel(); + iconPanel = new JPanel(); + splashScreen = new JDialog(); splashScreen.setUndecorated(true); splashScreen.setResizable(false); panel.setLayout(new BorderLayout(10, 10)); + subPanel.setLayout(new GridLayout(2, 1)); + iconPanel.setLayout(new GridLayout(1, NMB_ICONS)); + emptyLabels = new Vector(); + /* it's a dirty method to keep the NMB_ICONS parts of the panel at the same size */ + for (int i = 0 ; i < NMB_ICONS ; i++) { + JLabel lb = new JLabel(); + emptyLabels.add(lb); + iconPanel.add(lb, i); + } + final JLabel thawLabel = new JLabel(" Thaw"); - thawLabel.setFont(new Font("Dialog", Font.BOLD, 30)); + thawLabel.setFont(new Font("Dialog", Font.BOLD, 42)); - panel.add(thawLabel, BorderLayout.CENTER); + subPanel.add(thawLabel); + subPanel.add(iconPanel); + panel.add(subPanel, BorderLayout.CENTER); + progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); progressBar.setString("Wake up Neo ..."); @@ -71,8 +94,28 @@ public void setProgression(final int progress) { if(progressBar != null) progressBar.setValue(progress); + + splashScreen.getContentPane().validate(); } + + public void addIcon(ImageIcon icon) { + JLabel lb = new JLabel(icon); + + lb.setHorizontalAlignment(JLabel.CENTER); + lb.setVerticalAlignment(JLabel.CENTER); + + iconPanel.remove((java.awt.Component)emptyLabels.get(0)); + + iconPanel.add(lb, nmbIcon); + + emptyLabels.removeElementAt(0); + + nmbIcon++; + + splashScreen.getContentPane().validate(); + } + public int getProgression() { if(progressBar != null) return progressBar.getValue(); @@ -84,6 +127,8 @@ public void setStatus(final String status) { if(progressBar != null) progressBar.setString(status); + + splashScreen.getContentPane().validate(); } public void setProgressionAndStatus(final int progress, final String status) { From jflesch at freenetproject.org Wed Jan 3 00:01:03 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Wed, 3 Jan 2007 00:01:03 +0000 (UTC) Subject: [Thaw-dev] r11546 - trunk/apps/Thaw/src/thaw/core Message-ID: <20070103000103.E70E39BBF8@emu.freenetproject.org> Author: jflesch Date: 2007-01-03 00:00:46 +0000 (Wed, 03 Jan 2007) New Revision: 11546 Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java Log: Fix NPEs Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-02 22:24:00 UTC (rev 11545) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-03 00:00:46 UTC (rev 11546) @@ -92,14 +92,17 @@ * @param progress In pourcent */ public void setProgression(final int progress) { - if(progressBar != null) + if(progressBar != null && splashScreen != null) { progressBar.setValue(progress); - - splashScreen.getContentPane().validate(); + splashScreen.getContentPane().validate(); + } } public void addIcon(ImageIcon icon) { + if (splashScreen == null) + return; + JLabel lb = new JLabel(icon); lb.setHorizontalAlignment(JLabel.CENTER); @@ -125,10 +128,10 @@ public void setStatus(final String status) { - if(progressBar != null) + if(progressBar != null && splashScreen != null) { progressBar.setString(status); - - splashScreen.getContentPane().validate(); + splashScreen.getContentPane().validate(); + } } public void setProgressionAndStatus(final int progress, final String status) { From jflesch at freenetproject.org Wed Jan 3 00:07:32 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Wed, 3 Jan 2007 00:07:32 +0000 (UTC) Subject: [Thaw-dev] r11547 - trunk/apps/Thaw/src/thaw/core Message-ID: <20070103000733.BA5AC9BBA8@emu.freenetproject.org> Author: jflesch Date: 2007-01-03 00:07:06 +0000 (Wed, 03 Jan 2007) New Revision: 11547 Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java Log: Moving the text 'thaw' on the splashscreen Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-03 00:00:46 UTC (rev 11546) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-03 00:07:06 UTC (rev 11547) @@ -54,9 +54,10 @@ iconPanel.add(lb, i); } - final JLabel thawLabel = new JLabel(" Thaw"); + final JLabel thawLabel = new JLabel("Thaw"); thawLabel.setFont(new Font("Dialog", Font.BOLD, 42)); + thawLabel.setHorizontalAlignment(JLabel.CENTER); subPanel.add(thawLabel); subPanel.add(iconPanel); From jflesch at freenetproject.org Wed Jan 3 07:32:40 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Wed, 3 Jan 2007 07:32:40 +0000 (UTC) Subject: [Thaw-dev] r11552 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070103073241.175EE9BB46@emu.freenetproject.org> Author: jflesch Date: 2007-01-03 07:32:39 +0000 (Wed, 03 Jan 2007) New Revision: 11552 Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java Log: Fix NPE when cancelling downloads coming from an index Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/File.java 2007-01-03 05:44:28 UTC (rev 11551) +++ trunk/apps/Thaw/src/thaw/plugins/index/File.java 2007-01-03 07:32:39 UTC (rev 11552) @@ -460,7 +460,14 @@ if(transfer.isFinished() && (transfer instanceof FCPClientGet)) { ((FCPClientGet)transfer).deleteObserver(this); - size = (new java.io.File(transfer.getPath())).length(); + + if (transfer.getPath() != null) { + java.io.File file = new java.io.File(transfer.getPath()); + + if (file.exists() && file.isFile()) + size = file.length(); + } + } if(transfer.isFinished() && transfer.isSuccessful()) { From jflesch at freenetproject.org Wed Jan 3 18:01:34 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Wed, 3 Jan 2007 18:01:34 +0000 (UTC) Subject: [Thaw-dev] r11560 - in trunk/apps/Thaw: images src/thaw/core src/thaw/plugins Message-ID: <20070103180134.E292D9BB33@emu.freenetproject.org> Author: jflesch Date: 2007-01-03 18:01:33 +0000 (Wed, 03 Jan 2007) New Revision: 11560 Added: trunk/apps/Thaw/images/queueWatcher.png trunk/apps/Thaw/images/terminal.png Modified: trunk/apps/Thaw/src/thaw/core/Core.java trunk/apps/Thaw/src/thaw/core/IconBox.java trunk/apps/Thaw/src/thaw/core/Plugin.java trunk/apps/Thaw/src/thaw/core/PluginConfigPanel.java trunk/apps/Thaw/src/thaw/core/PluginManager.java trunk/apps/Thaw/src/thaw/core/SplashScreen.java trunk/apps/Thaw/src/thaw/plugins/Console.java trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java trunk/apps/Thaw/src/thaw/plugins/Restarter.java trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java trunk/apps/Thaw/src/thaw/plugins/StatusBar.java Log: Adding icons for the plugins to the splashscreen Added: trunk/apps/Thaw/images/queueWatcher.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/queueWatcher.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/terminal.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/terminal.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/apps/Thaw/src/thaw/core/Core.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Core.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/Core.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -123,7 +123,6 @@ return false; splashScreen.setProgressionAndStatus(40, "Loading plugins ..."); - splashScreen.addIcon(IconBox.add); if(!initPluginManager()) return false; Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -66,7 +66,11 @@ public static ImageIcon mainWindow; public static ImageIcon add; + public static ImageIcon remove; + public static ImageIcon terminal; + public static ImageIcon queueWatcher; + /** * Not really used */ @@ -120,8 +124,8 @@ IconBox.minDownloads = IconBox.loadIcon("min-download.png"); IconBox.settings = IconBox.loadIcon("settings.png"); IconBox.minSettings = IconBox.loadIcon("min-settings.png"); - IconBox.indexBrowser = IconBox.loadIcon("indexBrowser.png"); - IconBox.minIndexBrowser = IconBox.loadIcon("min-indexBrowser.png"); + IconBox.indexBrowser = IconBox.loadIcon("index.png"); + IconBox.minIndexBrowser = IconBox.loadIcon("min-index.png"); IconBox.addToIndexAction = IconBox.loadIcon("add.png"); IconBox.add = IconBox.loadIcon("add.png"); IconBox.insertAndAddToIndexAction = IconBox.loadIcon("index.png"); @@ -137,6 +141,9 @@ IconBox.help = IconBox.loadIcon("help.png"); IconBox.minHelp = IconBox.loadIcon("min-help.png"); IconBox.mainWindow = IconBox.loadIcon("mainWindow.png"); + IconBox.terminal = IconBox.loadIcon("terminal.png"); + IconBox.remove = IconBox.loadIcon("remove.png"); + IconBox.queueWatcher = IconBox.loadIcon("queueWatcher.png"); } } Modified: trunk/apps/Thaw/src/thaw/core/Plugin.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Plugin.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/Plugin.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -27,4 +27,9 @@ */ public String getNameForUser(); + + /** + * Can return null + */ + public javax.swing.ImageIcon getIcon(); } Modified: trunk/apps/Thaw/src/thaw/core/PluginConfigPanel.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/PluginConfigPanel.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/PluginConfigPanel.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -127,7 +127,7 @@ public void actionPerformed(final ActionEvent e) { if((e.getSource() == addButton) || (e.getSource() == pluginToAdd)) { - if(core.getPluginManager().loadPlugin(pluginToAdd.getText()) + if(core.getPluginManager().loadPlugin(pluginToAdd.getText()) != null && core.getPluginManager().runPlugin(pluginToAdd.getText())) { core.getConfig().addPlugin(pluginToAdd.getText()); Modified: trunk/apps/Thaw/src/thaw/core/PluginManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -66,7 +66,13 @@ core.getSplashScreen().setProgressionAndStatus(core.getSplashScreen().getProgression()+progressJump, "Loading plugin '"+pluginName+"' ..."); - loadPlugin(pluginName); + Plugin plugin = loadPlugin(pluginName); + javax.swing.ImageIcon icon = null; + + if ((icon = plugin.getIcon()) != null) + core.getSplashScreen().addIcon(icon); + else + core.getSplashScreen().addIcon(IconBox.add); } return true; @@ -151,23 +157,27 @@ /** * Load a given plugin (without adding it to the config or running it). */ - public boolean loadPlugin(final String className) { + public Plugin loadPlugin(final String className) { + Plugin plugin = null; + Logger.info(this, "Loading plugin: '"+className+"'"); try { if(plugins.get(className) != null) { Logger.warning(this, "loadPlugin(): Plugin '"+className+"' already loaded"); - return false; + return null; } - plugins.put(className, Class.forName(className).newInstance()); + plugin = (Plugin)Class.forName(className).newInstance(); + plugins.put(className, plugin); + } catch(final Exception e) { Logger.warning(this, "loadPlugin('"+className+"'): Exception: "+e); - return false; + return null; } - return true; + return plugin; } Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -17,7 +17,7 @@ public final static int SIZE_X = 500; public final static int SIZE_Y = 150; - public final static int NMB_ICONS = 4; + public final static int NMB_ICONS = 8; public JDialog splashScreen; public JProgressBar progressBar; @@ -109,11 +109,13 @@ lb.setHorizontalAlignment(JLabel.CENTER); lb.setVerticalAlignment(JLabel.CENTER); - iconPanel.remove((java.awt.Component)emptyLabels.get(0)); + if (emptyLabels.size() > 0) + iconPanel.remove((java.awt.Component)emptyLabels.get(0)); iconPanel.add(lb, nmbIcon); - emptyLabels.removeElementAt(0); + if (emptyLabels.size() > 0) + emptyLabels.removeElementAt(0); nmbIcon++; Modified: trunk/apps/Thaw/src/thaw/plugins/Console.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Console.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/Console.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -205,4 +205,7 @@ } + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.terminal; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -58,7 +58,7 @@ if(core.getPluginManager().getPlugin("thaw.plugins.QueueWatcher") == null) { Logger.notice(this, "Loading QueueWatcher plugin"); - if(!core.getPluginManager().loadPlugin("thaw.plugins.QueueWatcher") + if(core.getPluginManager().loadPlugin("thaw.plugins.QueueWatcher") == null || !core.getPluginManager().runPlugin("thaw.plugins.QueueWatcher")) { Logger.error(this, "Unable to load thaw.plugins.QueueWatcher !"); return false; @@ -115,4 +115,8 @@ fetchFrame.setVisible(false); } + + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.downloads; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/Hsqldb.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -106,4 +106,7 @@ return results; } + public javax.swing.ImageIcon getIcon() { + return null; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -48,7 +48,7 @@ if(core.getPluginManager().getPlugin("thaw.plugins.Hsqldb") == null) { Logger.info(this, "Loading Hsqldb plugin"); - if(!core.getPluginManager().loadPlugin("thaw.plugins.Hsqldb") + if(core.getPluginManager().loadPlugin("thaw.plugins.Hsqldb") == null || !core.getPluginManager().runPlugin("thaw.plugins.Hsqldb")) { Logger.error(this, "Unable to load thaw.plugins.Hsqldb !"); return false; @@ -147,4 +147,7 @@ browserPanel.isVisible(core.getMainWindow().getTabbedPane().getSelectedIndex() == tabId); } + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.indexBrowser; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -69,7 +69,7 @@ if(core.getPluginManager().getPlugin("thaw.plugins.QueueWatcher") == null) { Logger.notice(this, "Loading QueueWatcher plugin"); - if(!core.getPluginManager().loadPlugin("thaw.plugins.QueueWatcher") + if(core.getPluginManager().loadPlugin("thaw.plugins.QueueWatcher") == null || !core.getPluginManager().runPlugin("thaw.plugins.QueueWatcher")) { Logger.error(this, "Unable to load thaw.plugins.QueueWatcher !"); return false; @@ -159,4 +159,7 @@ return true; } + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.insertions; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -244,4 +244,9 @@ queuePanels[DOWNLOAD_PANEL].removeSelectedTransfers(); } } + + + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.queueWatcher; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/Restarter.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Restarter.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/Restarter.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -222,4 +222,7 @@ return I18n.getMessage("thaw.plugin.restarter.restarter"); } + public javax.swing.ImageIcon getIcon() { + return null; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -50,7 +50,7 @@ if(core.getPluginManager().getPlugin("thaw.plugins.Hsqldb") == null) { Logger.info(this, "Loading Hsqldb plugin"); - if(!core.getPluginManager().loadPlugin("thaw.plugins.Hsqldb") + if(core.getPluginManager().loadPlugin("thaw.plugins.Hsqldb") == null || !core.getPluginManager().runPlugin("thaw.plugins.Hsqldb")) { Logger.error(this, "Unable to load thaw.plugins.Hsqldb !"); return false; @@ -304,4 +304,7 @@ } + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.terminal; + } } Modified: trunk/apps/Thaw/src/thaw/plugins/StatusBar.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/StatusBar.java 2007-01-03 15:37:38 UTC (rev 11559) +++ trunk/apps/Thaw/src/thaw/plugins/StatusBar.java 2007-01-03 18:01:33 UTC (rev 11560) @@ -135,5 +135,7 @@ return I18n.getMessage("thaw.plugin.statistics.statistics"); } - + public javax.swing.ImageIcon getIcon() { + return thaw.core.IconBox.remove; + } } From jflesch at freenetproject.org Thu Jan 4 20:11:08 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Thu, 4 Jan 2007 20:11:08 +0000 (UTC) Subject: [Thaw-dev] r11564 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070104201109.0169E9BBEA@emu.freenetproject.org> Author: jflesch Date: 2007-01-04 20:11:06 +0000 (Thu, 04 Jan 2007) New Revision: 11564 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Fix NPE Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-03 23:26:33 UTC (rev 11563) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-04 20:11:06 UTC (rev 11564) @@ -490,7 +490,7 @@ st.setInt(6, revision); - if( ((IndexTreeNode)treeNode.getParent()).getId() < 0) + if( treeNode.getParent() == null || ((IndexTreeNode)treeNode.getParent()).getId() < 0) st.setNull(7, Types.INTEGER); else st.setInt(7, ((IndexTreeNode)treeNode.getParent()).getId()); From jflesch at freenetproject.org Thu Jan 4 20:42:13 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Thu, 4 Jan 2007 20:42:13 +0000 (UTC) Subject: [Thaw-dev] r11566 - in trunk/apps/Thaw/src/thaw: core plugins/index Message-ID: <20070104204213.456309BB91@emu.freenetproject.org> Author: jflesch Date: 2007-01-04 20:42:12 +0000 (Thu, 04 Jan 2007) New Revision: 11566 Modified: trunk/apps/Thaw/src/thaw/core/PluginManager.java trunk/apps/Thaw/src/thaw/core/SplashScreen.java trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java Log: Fix splashscreen Modified: trunk/apps/Thaw/src/thaw/core/PluginManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-04 20:19:49 UTC (rev 11565) +++ trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-04 20:42:12 UTC (rev 11566) @@ -66,13 +66,7 @@ core.getSplashScreen().setProgressionAndStatus(core.getSplashScreen().getProgression()+progressJump, "Loading plugin '"+pluginName+"' ..."); - Plugin plugin = loadPlugin(pluginName); - javax.swing.ImageIcon icon = null; - - if ((icon = plugin.getIcon()) != null) - core.getSplashScreen().addIcon(icon); - else - core.getSplashScreen().addIcon(IconBox.add); + loadPlugin(pluginName); } return true; @@ -84,7 +78,7 @@ public boolean runPlugins() { Iterator pluginIt; - if (plugins == null) { + if (plugins == null || plugins.size() == 0) { Logger.error(this, "No plugin to run ?!"); return false; } @@ -104,8 +98,15 @@ core.getSplashScreen().setProgressionAndStatus(core.getSplashScreen().getProgression()+progressJump, "Starting plugin '"+plugin.getClass().getName()+"' ..."); + + javax.swing.ImageIcon icon = null; + + if ((icon = plugin.getIcon()) != null) + core.getSplashScreen().addIcon(icon); + else + core.getSplashScreen().addIcon(IconBox.add); + plugin.run(core); - } else Logger.notice(this, "Plugin == null ?"); Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-04 20:19:49 UTC (rev 11565) +++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-01-04 20:42:12 UTC (rev 11566) @@ -17,7 +17,7 @@ public final static int SIZE_X = 500; public final static int SIZE_Y = 150; - public final static int NMB_ICONS = 8; + public final static int NMB_ICONS = 9; public JDialog splashScreen; public JProgressBar progressBar; @@ -120,6 +120,7 @@ nmbIcon++; splashScreen.getContentPane().validate(); + lb.repaint(); } public int getProgression() { Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2007-01-04 20:19:49 UTC (rev 11565) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2007-01-04 20:42:12 UTC (rev 11566) @@ -317,7 +317,7 @@ public void setTarget(final IndexTreeNode node) { super.setTarget(node); - getActionSource().setEnabled((node != null) || (node instanceof Index)); + getActionSource().setEnabled((node != null) && (node instanceof Index)); } public void apply() { From jflesch at freenetproject.org Fri Jan 5 00:15:06 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 00:15:06 +0000 (UTC) Subject: [Thaw-dev] r11568 - in trunk/apps/Thaw: images src/thaw/core src/thaw/i18n src/thaw/plugins src/thaw/plugins/index Message-ID: <20070105001506.C89AF9BBAE@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 00:14:59 +0000 (Fri, 05 Jan 2007) New Revision: 11568 Added: trunk/apps/Thaw/images/min-export.png trunk/apps/Thaw/images/min-import.png trunk/apps/Thaw/images/min-terminal.png trunk/apps/Thaw/src/thaw/plugins/IndexExporter.java trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java trunk/apps/Thaw/src/thaw/core/MainWindow.java trunk/apps/Thaw/src/thaw/core/PluginManager.java trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/Console.java trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.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/IndexManagementHelper.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java Log: Allow index database import-export Added: trunk/apps/Thaw/images/min-export.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-export.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-import.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-import.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/apps/Thaw/images/min-terminal.png =================================================================== (Binary files differ) Property changes on: trunk/apps/Thaw/images/min-terminal.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/apps/Thaw/src/thaw/core/IconBox.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/core/IconBox.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -69,8 +69,14 @@ public static ImageIcon remove; public static ImageIcon terminal; + public static ImageIcon minTerminal; public static ImageIcon queueWatcher; + public static ImageIcon importExport; + public static ImageIcon minImportAction; + public static ImageIcon minExportAction; + + /** * Not really used */ @@ -142,8 +148,12 @@ IconBox.minHelp = IconBox.loadIcon("min-help.png"); IconBox.mainWindow = IconBox.loadIcon("mainWindow.png"); IconBox.terminal = IconBox.loadIcon("terminal.png"); + IconBox.minTerminal = IconBox.loadIcon("min-terminal.png"); IconBox.remove = IconBox.loadIcon("remove.png"); IconBox.queueWatcher = IconBox.loadIcon("queueWatcher.png"); + IconBox.importExport = IconBox.loadIcon("refresh.png"); + IconBox.minImportAction = IconBox.loadIcon("min-import.png"); + IconBox.minExportAction = IconBox.loadIcon("min-export.png"); } } Modified: trunk/apps/Thaw/src/thaw/core/MainWindow.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -56,11 +56,14 @@ private JMenuBar menuBar = null; private JMenu fileMenu = null; + private Vector fileMenuList = null; + private JMenuItem reconnectionFileMenuItem = null; private JMenuItem optionsFileMenuItem = null; private JMenuItem quitFileMenuItem = null; private JMenu helpMenu = null; + private Vector menuList = null; private JMenuItem aboutHelpMenuItem = null; private JToolBar toolBar = null; @@ -98,7 +101,11 @@ // MENUS menuBar = new JMenuBar(); + menuList = new Vector(); + + fileMenu = new JMenu(I18n.getMessage("thaw.menu.file")); + fileMenuList = new Vector(); reconnectionFileMenuItem = new JMenuItem(I18n.getMessage("thaw.menu.item.reconnect"), IconBox.minReconnectAction); @@ -107,6 +114,10 @@ quitFileMenuItem = new JMenuItem(I18n.getMessage("thaw.menu.item.quit"), IconBox.minQuitAction); + fileMenuList.add(reconnectionFileMenuItem); + fileMenuList.add(optionsFileMenuItem); + fileMenuList.add(quitFileMenuItem); + reconnectionFileMenuItem.addActionListener(this); optionsFileMenuItem.addActionListener(this); quitFileMenuItem.addActionListener(this); @@ -116,6 +127,7 @@ fileMenu.add(quitFileMenuItem); menuBar.add(fileMenu); + menuList.add(fileMenu); helpMenu = new JMenu(I18n.getMessage("thaw.menu.help")); @@ -127,6 +139,7 @@ //menuBar.add(Box.createHorizontalGlue()); menuBar.add(helpMenu); + menuList.add(helpMenu); // TOOLBAR connectButton = new JButton(IconBox.connectAction); @@ -291,16 +304,73 @@ } /** - * Used by plugins to add their own menu. Not recommanded for the moment. - * Need to find a more elegant way. - * @return Check it does not return null. + * Used by plugins to add their own menu. */ - public JMenuBar getMenuBar() { - return menuBar; + public void insertMenuAt(JMenu menu, int position) { + menuList.add(position, menu); + refreshMenuBar(); } + public void removeMenu(JMenu menu) { + menuList.remove(menu); + refreshMenuBar(); + } + protected void refreshMenuBar() { + Logger.info(this, "Display "+ + Integer.toString(menuList.size())+ + " menus in the main window"); + + /* rebuilding menubar */ + JMenuBar bar = new JMenuBar(); + + for (Iterator it = menuList.iterator(); + it.hasNext();) { + JMenu m = (JMenu)it.next(); + bar.add(m); + } + + mainWindow.setJMenuBar(bar); + menuBar = bar; + mainWindow.validate(); /* no getContentPane() ! else it won't work ! */ + } + + /** + * Used by plugins to add their own menu / menuItem to the menu 'file'. + */ + public void insertInFileMenuAt(Object newItem, int position) { + fileMenuList.add(position, newItem); + refreshFileMenu(); + } + + public void removeFromFileMenu(Object item) { + fileMenuList.remove(item); + refreshFileMenu(); + } + + protected void refreshFileMenu() { + /* rebuilding menubar */ + JMenu m = new JMenu(I18n.getMessage("thaw.menu.file")); + + for (Iterator it = fileMenuList.iterator(); + it.hasNext();) { + Object e = it.next(); + if (e instanceof JMenuItem) + m.add((JMenuItem)e); + else + m.add((JMenu)e); + } + + menuList.remove(fileMenu); + fileMenu = m; + menuList.add(0, fileMenu); + + refreshMenuBar(); + } + + + /** * Called when an element from the menu is called. */ public void actionPerformed(final ActionEvent e) { Modified: trunk/apps/Thaw/src/thaw/core/PluginManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/core/PluginManager.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -8,11 +8,14 @@ * Manages plugins :) */ public class PluginManager { - private final static String[] defaultPlugins = {"thaw.plugins.QueueWatcher", - "thaw.plugins.FetchPlugin", - "thaw.plugins.InsertPlugin", - "thaw.plugins.StatusBar", - "thaw.plugins.IndexBrowser"}; + private final static String[] defaultPlugins = { + "thaw.plugins.QueueWatcher", + "thaw.plugins.FetchPlugin", + "thaw.plugins.InsertPlugin", + "thaw.plugins.StatusBar", + "thaw.plugins.IndexBrowser", + "thaw.plugins.IndexExporter" + }; private Core core = null; Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-05 00:14:59 UTC (rev 11568) @@ -265,3 +265,12 @@ thaw.plugin.index.useAutoRefresh=Use auto-refresh thaw.plugin.index.autoRefreshInterval=Auto-refresh interval (in sec): thaw.plugin.index.nmbIndexPerRefresh=Number of indexes refreshed for each interval: + +thaw.plugin.index.importExportPlugin=Index Import / Export +thaw.plugin.index.export=Export +thaw.plugin.index.import=Import +thaw.plugin.index.export.indexKeys=Index keys (+ folders) +thaw.plugin.index.export.all=Indexes keys + file lists + link lists +thaw.plugin.index.importedFolderName=Imported indexes + + Modified: trunk/apps/Thaw/src/thaw/plugins/Console.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/Console.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/Console.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -70,7 +70,7 @@ consolePanel.add(logAreaScrollPane, BorderLayout.CENTER); consolePanel.add(saveToFile, BorderLayout.SOUTH); - core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.console.console"), consolePanel); + core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.console.console"), thaw.core.IconBox.minTerminal, consolePanel); Logger.addLogListener(this); Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -63,11 +63,12 @@ newDb = false; if (core.getConfig().getValue("indexDatabaseVersion") == null) { - DatabaseManager.createTables(hsqldb); newDb = true; core.getConfig().setValue("indexDatabaseVersion", "1"); } + DatabaseManager.createTables(hsqldb); + browserPanel = new IndexBrowserPanel(hsqldb, core.getQueueManager(), core.getConfig(), core.getMainWindow()); setMainWindow(core.getMainWindow()); core.getMainWindow().getTabbedPane().addChangeListener(this); @@ -106,6 +107,10 @@ return true; } + public IndexBrowserPanel getIndexBrowserPanel() { + return browserPanel; + } + public boolean stop() { if (autoRefresh != null) autoRefresh.stop(); Added: trunk/apps/Thaw/src/thaw/plugins/IndexExporter.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/IndexExporter.java (rev 0) +++ trunk/apps/Thaw/src/thaw/plugins/IndexExporter.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -0,0 +1,150 @@ +package thaw.plugins; + +import javax.swing.JMenu; +import javax.swing.JMenuItem; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +import javax.swing.JFileChooser; + +import thaw.core.*; +import thaw.plugins.IndexBrowser; +import thaw.plugins.index.*; + +public class IndexExporter implements Plugin, ActionListener { + + private Core core; + + private JMenu menu; + private JMenu exportMenu; + private JMenuItem importItem; + private JMenuItem exportKeys; + private JMenuItem exportAll; + + private IndexBrowser indexBrowser; + + public boolean run(Core core) { + this.core = core; + + if(core.getPluginManager().getPlugin("thaw.plugins.IndexBrowser") == null) { + Logger.info(this, "Loading IndexBrowser plugin"); + + if(core.getPluginManager().loadPlugin("thaw.plugins.IndexBrowser") == null + || !core.getPluginManager().runPlugin("thaw.plugins.IndexBrowser")) { + Logger.error(this, "Unable to load IndexBrowser !"); + return false; + } + } + + indexBrowser = (IndexBrowser)core.getPluginManager().getPlugin("thaw.plugins.IndexBrowser"); + + if (indexBrowser == null) { + Logger.error(this, "WTF?!"); + return false; + } + + menu = new JMenu(I18n.getMessage("thaw.plugin.index.indexes")); + menu.setIcon(IconBox.minIndex); + exportMenu = new JMenu(I18n.getMessage("thaw.plugin.index.export")); + exportMenu.setIcon(IconBox.minExportAction); + exportKeys = new JMenuItem(I18n.getMessage("thaw.plugin.index.export.indexKeys")); + exportAll = new JMenuItem(I18n.getMessage("thaw.plugin.index.export.all")); + importItem = new JMenuItem(I18n.getMessage("thaw.plugin.index.import"), IconBox.minImportAction); + + exportMenu.add(exportKeys); + exportMenu.add(exportAll); + + exportKeys.addActionListener(this); + exportAll.addActionListener(this); + importItem.addActionListener(this); + + menu.add(exportMenu); + menu.add(importItem); + + core.getMainWindow().insertInFileMenuAt(menu, 2); + + return true; + } + + + public boolean stop() { + core.getMainWindow().removeFromFileMenu(menu); + + return true; + } + + public String getNameForUser() { + return I18n.getMessage("thaw.plugin.index.importExportPlugin"); + } + + public javax.swing.ImageIcon getIcon() { + return IconBox.importExport; + } + + public void actionPerformed(ActionEvent e) { + FileChooser fileChooser; + boolean in = false; + boolean content = false; + + if (e.getSource() == importItem) { + in = true; + content = true; + } + + + if (e.getSource() == exportAll) { + in = false; + content = true; + } + + if (e.getSource() == exportKeys) { + in = false; + content = false; + } + + fileChooser = new FileChooser(); + fileChooser.setTitle(in ? I18n.getMessage("thaw.plugin.index.import") : I18n.getMessage("thaw.plugin.index.export")); + fileChooser.setDirectoryOnly(false); + fileChooser.setDialogType(in ? JFileChooser.OPEN_DIALOG : JFileChooser.SAVE_DIALOG); + + java.io.File file = fileChooser.askOneFile(); + + if (file == null || (in && (!file.exists() || !file.isFile()))) { + Logger.notice(this, "Cancelled"); + return; + } + + + Worker k = new Worker(in, content, file); + Thread th = new Thread(k); + th.start(); + + } + + private class Worker implements Runnable { + private boolean impor; + private boolean content; + private java.io.File file; + + public Worker(boolean impor, boolean content, java.io.File file) { + this.impor = impor; + this.content = content; + this.file = file; + } + + public void run() { + if (impor) { + DatabaseManager.importDatabase(file, + indexBrowser.getIndexBrowserPanel(), + core.getQueueManager()); + } else { + DatabaseManager.exportDatabase(file, + indexBrowser.getIndexBrowserPanel().getDb(), + indexBrowser.getIndexBrowserPanel().getIndexTree(), + content); + } + } + + } +} Modified: trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/SqlConsole.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -64,6 +64,7 @@ panel = getPanel(); core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.hsqldb.console"), + thaw.core.IconBox.minTerminal, panel); return true; Modified: trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -1,9 +1,28 @@ package thaw.plugins.index; -import java.sql.SQLException; +import java.sql.*; +import java.io.FileOutputStream; +import java.io.FileInputStream; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import org.w3c.dom.DOMImplementation; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; + + import thaw.core.Logger; import thaw.plugins.Hsqldb; +import thaw.fcp.FCPQueueManager; /** * Creates all the tables used to save the indexes, @@ -133,11 +152,143 @@ } - public static void exportDatabase(IndexTree indexTree) { + public static int getNmbIndexes(Hsqldb db) { + int nmb; + try { + final Connection c = db.getConnection(); + PreparedStatement st; + + st = c.prepareStatement("SELECT count(id) FROM indexes"); + st.execute(); + + try { + final ResultSet answer = st.getResultSet(); + answer.next(); + nmb = answer.getInt(1); + } catch(final SQLException e) { + nmb = 0; + } + + } catch(final SQLException e) { + Logger.error(new DatabaseManager(), "Unable to insert the new index category in the db, because: "+e.toString()); + + return 0; + } + + return nmb; } - public static void importDatabase(IndexTree indexTree) { + public static void exportDatabase(java.io.File dest, Hsqldb db, IndexTree indexTree, boolean withContent) { + int nmbIndexes = getNmbIndexes(db); + + + Logger.info(new DatabaseManager(), "Generating export ..."); + + FileOutputStream outputStream; + + try { + outputStream = new FileOutputStream(dest); + } catch(final java.io.FileNotFoundException e) { + Logger.warning(new DatabaseManager(), "Unable to create file '"+dest.toString()+"' ! not generated !"); + return; + } + + final StreamResult streamResult = new StreamResult(outputStream); + Document xmlDoc; + + final DocumentBuilderFactory xmlFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder xmlBuilder; + + try { + xmlBuilder = xmlFactory.newDocumentBuilder(); + } catch(final javax.xml.parsers.ParserConfigurationException e) { + Logger.error(new DatabaseManager(), "Unable to generate the index because : "+e.toString()); + return; + } + + final DOMImplementation impl = xmlBuilder.getDOMImplementation(); + + xmlDoc = impl.createDocument(null, "indexDatabase", null); + + final Element rootEl = xmlDoc.getDocumentElement(); + + + rootEl.appendChild(indexTree.getRoot().do_export(xmlDoc, withContent)); + + + /* Serialization */ + final DOMSource domSource = new DOMSource(xmlDoc); + final TransformerFactory transformFactory = TransformerFactory.newInstance(); + + Transformer serializer; + + try { + serializer = transformFactory.newTransformer(); + } catch(final javax.xml.transform.TransformerConfigurationException e) { + Logger.error(new DatabaseManager(), "Unable to save index because: "+e.toString()); + return; + } + + serializer.setOutputProperty(OutputKeys.ENCODING,"UTF-8"); + serializer.setOutputProperty(OutputKeys.INDENT,"yes"); + + /* final step */ + try { + serializer.transform(domSource, streamResult); + } catch(final javax.xml.transform.TransformerException e) { + Logger.error(new DatabaseManager(), "Unable to save index because: "+e.toString()); + return; + } + + Logger.info(new DatabaseManager(), "Export done"); } + + + public static void importDatabase(java.io.File source, IndexBrowserPanel indexBrowser, FCPQueueManager queueManager) { + java.io.InputStream input; + + Logger.info(new DatabaseManager(), "Importing ..."); + + try { + input = new FileInputStream(source); + } catch(final java.io.FileNotFoundException e) { + Logger.error(new DatabaseManager(), "Unable to load XML: FileNotFoundException ('"+source.getPath()+"') ! : "+e.toString()); + return; + } + + final DocumentBuilderFactory xmlFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder xmlBuilder; + + try { + xmlBuilder = xmlFactory.newDocumentBuilder(); + } catch(final javax.xml.parsers.ParserConfigurationException e) { + Logger.error(new DatabaseManager(), "Unable to load index because: "+e.toString()); + return; + } + + Document xmlDoc; + + try { + xmlDoc = xmlBuilder.parse(input); + } catch(final org.xml.sax.SAXException e) { + Logger.error(new DatabaseManager(), "Unable to load XML file because: "+e.toString()); + return; + } catch(final java.io.IOException e) { + Logger.error(new DatabaseManager(), "Unable to load index because: "+e.toString()); + return; + } + + final Element rootEl = xmlDoc.getDocumentElement(); + + Element e = (Element)rootEl.getElementsByTagName("indexCategory").item(0); + + IndexCategory importCategory = indexBrowser.getIndexTree().getRoot().getNewImportFolder(); + + importCategory.do_import(e); + + Logger.info(new DatabaseManager(), "Import done"); + + } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -1289,4 +1289,30 @@ return false; } + + public Element do_export(Document xmlDoc, boolean withContent) { + Element e = xmlDoc.createElement("fullIndex"); + + e.setAttribute("displayName", displayName); + e.setAttribute("publicKey", getPublicKey()); + if (getPrivateKey() != null) + e.setAttribute("privateKey", getPrivateKey()); + + if (withContent) { + e.appendChild(getXMLHeader(xmlDoc)); + e.appendChild(getXMLLinks(xmlDoc)); + e.appendChild(getXMLFileList(xmlDoc)); + } + + return e; + } + + /** + * will call create() !! + */ + public void do_import(Element e) { + String dn; + loadXML(e); + } + } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -13,6 +13,11 @@ import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreeNode; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + import thaw.core.Logger; import thaw.fcp.FCPQueueManager; import thaw.plugins.Hsqldb; @@ -111,7 +116,7 @@ child.delete(); } - children = null; + unloadChildren(); try { final Connection c = db.getConnection(); @@ -124,7 +129,6 @@ } public void rename(final String name) { - try { final Connection c = db.getConnection(); final PreparedStatement st = c.prepareStatement("UPDATE indexCategories SET name = ? WHERE id = ?"); @@ -269,7 +273,11 @@ return children; } + public void unloadChildren() { + children = null; + } + public void loadChildIndexes(final Vector children) { ResultSet result; @@ -370,6 +378,9 @@ if((node == this) || (node == null)) return; + if (children == null) + loadChildren(); + if(children.size() <= position) { children.setSize(position+1); } else { @@ -517,8 +528,82 @@ } + public Element do_export(Document xmlDoc, boolean withContent) { + Element e = xmlDoc.createElement("indexCategory"); + + if (id != -1) + e.setAttribute("name", name); + + if(children == null) + children = loadChildren(); + + for(final Iterator it = children.iterator(); + it.hasNext();) { + final IndexTreeNode node = (IndexTreeNode)((DefaultMutableTreeNode)it.next()).getUserObject(); + e.appendChild(node.do_export(xmlDoc, withContent)); + } + + unloadChildren(); + + return e; + } + + /** + * will call create() ! + * @param e must be a indexCategory tag + * @see #do_export(Document, boolean) + */ + public void do_import(Element e) { + NodeList list = e.getChildNodes(); + + for (int i = 0 ; i < list.getLength(); i++) { + Node n = list.item(i); + + if (n.getNodeType() == Node.ELEMENT_NODE) { + Element el = (Element)n; + + if (el.getTagName().equals("fullIndex")) { + Index index = IndexManagementHelper.reuseIndex(queueManager, indexBrowser, + this, el.getAttribute("publicKey"), + el.getAttribute("privateKey"), false); + if (index != null) { + index.rename(el.getAttribute("displayName")); + index.do_import(el); + } + } + + if (el.getTagName().equals("indexCategory")) { + IndexCategory newCat = IndexManagementHelper.addIndexCategory(queueManager, indexBrowser, this, + el.getAttribute("name")); + newCat.do_import(el); + } + } + } + } + + public boolean isLeaf() { return false; } + /** + * used to create import directory + */ + protected IndexTreeNode getDirectChild(String name) { + if(children == null) + children = loadChildren(); + + for(final Iterator it = children.iterator(); + it.hasNext();) { + final IndexTreeNode node = (IndexTreeNode)((DefaultMutableTreeNode)it.next()).getUserObject(); + if (name.equals(node.toString())) + return node; + } + + return null; + } + + public boolean areChildrenLoaded() { + return (children != null); + } } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -135,13 +135,13 @@ } } - public static void createIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, IndexCategory target, final String name) { + public static Index createIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, IndexCategory target, final String name) { if (target == null) target = indexBrowser.getIndexTree().getRoot(); if ((name == null) || (name.indexOf("/") >= 0) || name.indexOf("\\") >= 0) { Logger.error(new IndexManagementHelper(), "invalid name"); - return; + return null; } final Index index = new Index(queueManager, indexBrowser, -1, target, name, name, null, null, 0, null); @@ -150,6 +150,8 @@ index.create(); indexBrowser.getIndexTree().addToIndexCategory(target, index); + + return index; } @@ -362,33 +364,40 @@ } - public static void addIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final IndexCategory target, final String publicKey) { - IndexManagementHelper.reuseIndex(queueManager, indexBrowser, target, publicKey, null); + public static Index addIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final IndexCategory target, final String publicKey) { + return IndexManagementHelper.reuseIndex(queueManager, indexBrowser, target, publicKey, null); } + public static Index reuseIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final IndexCategory target, String publicKey, String privateKey) { + return reuseIndex(queueManager, indexBrowser, target, publicKey, privateKey, true); + } /** * Can be use directly * @param privateKey Can be null */ - public static void reuseIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final IndexCategory target, String publicKey, String privateKey) { + public static Index reuseIndex(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final IndexCategory target, String publicKey, String privateKey, + boolean load) { publicKey = FreenetURIHelper.cleanURI(publicKey); privateKey = FreenetURIHelper.cleanURI(privateKey); if (publicKey == null) - return; + return null; + if (privateKey != null && privateKey.equals("")) + privateKey = null; + if (Index.isAlreadyKnown(indexBrowser.getDb(), publicKey)) { Logger.notice(new IndexManagementHelper(), "Index already added !"); - return; + return null; } final String name = Index.getNameFromKey(publicKey); if (name == null || name.indexOf("/") >= 0 || name.indexOf("\\") >= 0) { Logger.error(new IndexManagementHelper(), "Invalid index name !\n"); - return; + return null; } IndexCategory parent; @@ -404,11 +413,14 @@ index.create(); - index.updateFromFreenet(-1); + if (load) + index.updateFromFreenet(-1); parent.insert(index.getTreeNode(), 0); indexBrowser.getIndexTree().reloadModel(parent); + + return index; } @@ -434,7 +446,7 @@ } - public static void addIndexCategory(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, IndexCategory target, final String name) { + public static IndexCategory addIndexCategory(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, IndexCategory target, final String name) { if (target == null) target = indexBrowser.getIndexTree().getRoot(); @@ -443,6 +455,8 @@ newCat.create(); indexBrowser.getIndexTree().addToIndexCategory(target, newCat); + + return newCat; } Added: trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java (rev 0) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -0,0 +1,46 @@ +package thaw.plugins.index; + +import thaw.core.Logger; +import thaw.core.I18n; +import thaw.fcp.FCPQueueManager; +import thaw.plugins.Hsqldb; + + +public class IndexRoot extends IndexCategory { + + private FCPQueueManager queueManager; + private IndexBrowserPanel indexBrowser; + + public IndexRoot(final FCPQueueManager queueManager, final IndexBrowserPanel indexBrowser, final String name) { + super(queueManager, indexBrowser, -1, null, name); + this.queueManager = queueManager; + this.indexBrowser = indexBrowser; + } + + + public IndexCategory getNewImportFolder() { + int idx; + String name; + IndexTreeNode node; + IndexCategory importFolder; + + if (!areChildrenLoaded()) + loadChildren(); + + idx = 0; + name = I18n.getMessage("thaw.plugin.index.importedFolderName"); + node = getDirectChild(name); + + while (node != null) { + idx++; + name = I18n.getMessage("thaw.plugin.index.importedFolderName") + " - "+Integer.toString(idx); + node = getDirectChild(name); + } + + importFolder = IndexManagementHelper.addIndexCategory(queueManager, indexBrowser, this, name); + + return importFolder; + } + +} + Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -50,7 +50,7 @@ private JPanel panel; private JTree tree; - private IndexCategory root; + private IndexRoot root; private JPopupMenu indexCategoryMenu; private Vector indexCategoryActions; /* IndexManagementHelper.MenuAction */ @@ -113,7 +113,7 @@ registeredIndexes = new Hashtable(); - root = new IndexCategory(queueManager, indexBrowser, -1, null, rootName); + root = new IndexRoot(queueManager, indexBrowser, rootName); root.loadChildren(); root.addObserver(this); @@ -387,7 +387,7 @@ return tree; } - public IndexCategory getRoot() { + public IndexRoot getRoot() { return root; } Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2007-01-04 23:06:34 UTC (rev 11567) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTreeNode.java 2007-01-05 00:14:59 UTC (rev 11568) @@ -3,6 +3,8 @@ import java.util.Vector; import javax.swing.tree.DefaultMutableTreeNode; +import org.w3c.dom.Element; +import org.w3c.dom.Document; public interface IndexTreeNode { @@ -71,4 +73,10 @@ public void register(); public void unregister(); + + /** + * Will export private keys too ! + */ + public Element do_export(Document xmlDoc, boolean withContent); + public void do_import(Element e); } From jflesch at freenetproject.org Fri Jan 5 06:55:27 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 06:55:27 +0000 (UTC) Subject: [Thaw-dev] r11569 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070105065527.A53CB9BBBF@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 06:55:26 +0000 (Fri, 05 Jan 2007) New Revision: 11569 Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java Log: Fix a weird bug ; will try to understand why it happen later ( https://bugs.freenetproject.org/view.php?id=1055 ) Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2007-01-05 00:14:59 UTC (rev 11568) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexCategory.java 2007-01-05 06:55:26 UTC (rev 11569) @@ -374,13 +374,18 @@ } } - public void set(final Vector children, final int position, final TreeNode node) { + public void set(final Vector children, int position, final TreeNode node) { if((node == this) || (node == null)) return; if (children == null) loadChildren(); + if (position < 0) { + Logger.warning(this, "set(Vector, int position, TreeNode) : Gave a stupid position: "+position); + position = 0; + } + if(children.size() <= position) { children.setSize(position+1); } else { From jflesch at freenetproject.org Fri Jan 5 18:30:57 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 18:30:57 +0000 (UTC) Subject: [Thaw-dev] r11573 - in trunk/apps/Thaw/src/thaw: i18n plugins/index Message-ID: <20070105183057.236629BB50@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 18:30:56 +0000 (Fri, 05 Jan 2007) New Revision: 11573 Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java Log: very little change in the translation file Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties =================================================================== --- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-05 13:44:58 UTC (rev 11572) +++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-01-05 18:30:56 UTC (rev 11573) @@ -269,8 +269,8 @@ thaw.plugin.index.importExportPlugin=Index Import / Export thaw.plugin.index.export=Export thaw.plugin.index.import=Import -thaw.plugin.index.export.indexKeys=Index keys (+ folders) -thaw.plugin.index.export.all=Indexes keys + file lists + link lists +thaw.plugin.index.export.indexKeys=Index keys + folders +thaw.plugin.index.export.all=Indexes keys + folders + file lists + link lists thaw.plugin.index.importedFolderName=Imported indexes Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java 2007-01-05 13:44:58 UTC (rev 11572) +++ trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java 2007-01-05 18:30:56 UTC (rev 11573) @@ -27,6 +27,13 @@ if (!areChildrenLoaded()) loadChildren(); + /* TODO : Don't use getDirectChild() + * Use the database : + * ask '[importedFolderName]%' ORDER BY name DESC LIMIT 1 + * and pray there is no importedFolder n?10 or more, + * or that the database will return the good one :p + */ + idx = 0; name = I18n.getMessage("thaw.plugin.index.importedFolderName"); node = getDirectChild(name); From jflesch at freenetproject.org Fri Jan 5 20:04:28 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 20:04:28 +0000 (UTC) Subject: [Thaw-dev] r11574 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070105200428.6A55E9BB7E@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 20:04:27 +0000 (Fri, 05 Jan 2007) New Revision: 11574 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Thaw now uses its own directory for temporary files (bug report #1045) Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-05 18:30:56 UTC (rev 11573) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-05 20:04:27 UTC (rev 11574) @@ -264,15 +264,16 @@ return; } - String tmpdir = System.getProperty("java.io.tmpdir"); + //String tmpdir = System.getProperty("java.io.tmpdir"); - if (tmpdir == null) - tmpdir = ""; - else - tmpdir = tmpdir + java.io.File.separator; + String tmpdir = "tmp"; - targetFile = new java.io.File(tmpdir + realName +".frdx"); + (new File(tmpdir)).mkdir(); // we don't even care if it it alread existed or not + tmpdir = tmpdir + java.io.File.separator; + + targetFile = (new java.io.File(tmpdir + realName +".frdx")).getAbsoluteFile(); + if (transfer != null) { Logger.notice(this, "A transfer is already running"); return; @@ -356,8 +357,10 @@ Logger.info(this, "Key asked: "+key); + File dir = new File("tmp"); + dir.mkdir(); - clientGet = new FCPClientGet(key, 2, 2, false, -1, null); + clientGet = new FCPClientGet(key, 2, 2, false, -1, dir.getAbsolutePath()); setTransfer(clientGet); /* From jflesch at freenetproject.org Fri Jan 5 20:09:10 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 20:09:10 +0000 (UTC) Subject: [Thaw-dev] r11575 - trunk/apps/Thaw/src/thaw/core Message-ID: <20070105200910.477A89BB7E@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 20:09:09 +0000 (Fri, 05 Jan 2007) New Revision: 11575 Modified: trunk/apps/Thaw/src/thaw/core/Main.java Log: Changing version Modified: trunk/apps/Thaw/src/thaw/core/Main.java =================================================================== --- trunk/apps/Thaw/src/thaw/core/Main.java 2007-01-05 20:04:27 UTC (rev 11574) +++ trunk/apps/Thaw/src/thaw/core/Main.java 2007-01-05 20:09:09 UTC (rev 11575) @@ -16,7 +16,7 @@ public final static int _major = 0, _minor = 6, - _update = 1; + _update = 2; public final static String _svnBuildNumber = "@custom@"; From jflesch at freenetproject.org Fri Jan 5 20:14:18 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 20:14:18 +0000 (UTC) Subject: [Thaw-dev] r11576 - tags/Thaw Message-ID: <20070105201418.C568F9BB7E@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 20:14:17 +0000 (Fri, 05 Jan 2007) New Revision: 11576 Added: tags/Thaw/0.6.2/ Log: Thaw 0.6.2: - Icon theme changed - Doesn't use anymore the /tmp directory (uses its own directory) - Splashscreen improved - Various bugfixes - Index database import / export Copied: tags/Thaw/0.6.2 (from rev 11575, trunk/apps/Thaw) From jflesch at freenetproject.org Fri Jan 5 20:28:50 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 20:28:50 +0000 (UTC) Subject: [Thaw-dev] r11577 - trunk/apps/Thaw/src/thaw/plugins/index Message-ID: <20070105202850.EC8B39BB32@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 20:28:50 +0000 (Fri, 05 Jan 2007) New Revision: 11577 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java Log: Revert r11573 Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java =================================================================== --- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-05 20:14:17 UTC (rev 11576) +++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-05 20:28:50 UTC (rev 11577) @@ -264,16 +264,15 @@ return; } - //String tmpdir = System.getProperty("java.io.tmpdir"); + String tmpdir = System.getProperty("java.io.tmpdir"); - String tmpdir = "tmp"; + if (tmpdir == null) + tmpdir = ""; + else + tmpdir = tmpdir + java.io.File.separator; - (new File(tmpdir)).mkdir(); // we don't even care if it it alread existed or not + targetFile = new java.io.File(tmpdir + realName +".frdx"); - tmpdir = tmpdir + java.io.File.separator; - - targetFile = (new java.io.File(tmpdir + realName +".frdx")).getAbsoluteFile(); - if (transfer != null) { Logger.notice(this, "A transfer is already running"); return; @@ -357,10 +356,8 @@ Logger.info(this, "Key asked: "+key); - File dir = new File("tmp"); - dir.mkdir(); - clientGet = new FCPClientGet(key, 2, 2, false, -1, dir.getAbsolutePath()); + clientGet = new FCPClientGet(key, 2, 2, false, -1, null); setTransfer(clientGet); /* From jflesch at freenetproject.org Fri Jan 5 20:33:23 2007 From: jflesch at freenetproject.org (jflesch at freenetproject.org) Date: Fri, 5 Jan 2007 20:33:23 +0000 (UTC) Subject: [Thaw-dev] r11578 - tags/Thaw/0.6.2/src/thaw/plugins/index Message-ID: <20070105203323.6DA139BB74@emu.freenetproject.org> Author: jflesch Date: 2007-01-05 20:33:22 +0000 (Fri, 05 Jan 2007) New Revision: 11578 Modified: tags/Thaw/0.6.2/src/thaw/plugins/index/Index.java Log: Revert r11573 Modified: tags/Thaw/0.6.2/src/thaw/plugins/index/Index.java =======================