Author: jflesch
Date: 2007-03-31 00:38:20 +0000 (Sat, 31 Mar 2007)
New Revision: 12463
Added:
trunk/apps/Thaw/images/copy.png
trunk/apps/Thaw/images/file.png
trunk/apps/Thaw/images/min-copy.png
trunk/apps/Thaw/images/min-file.png
trunk/apps/Thaw/images/min-key.png
trunk/apps/Thaw/src/thaw/plugins/index/BlackList.java
Modified:
trunk/apps/Thaw/src/thaw/core/ConfigWindow.java
trunk/apps/Thaw/src/thaw/core/Core.java
trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
trunk/apps/Thaw/src/thaw/core/MainWindow.java
trunk/apps/Thaw/src/thaw/core/SplashScreen.java
trunk/apps/Thaw/src/thaw/gui/IconBox.java
trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties
trunk/apps/Thaw/src/thaw/i18n/thaw.properties
trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java
trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java
trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java
trunk/apps/Thaw/src/thaw/plugins/PeerMonitor.java
trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
trunk/apps/Thaw/src/thaw/plugins/Restarter.java
trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java
trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
trunk/apps/Thaw/src/thaw/plugins/index/Index.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java
trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
trunk/apps/Thaw/src/thaw/plugins/index/Link.java
trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java
trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java
trunk/apps/Thaw/src/thaw/plugins/index/SearchResult.java
trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
Log:
Implement an index black list + add a lot of icons
Added: trunk/apps/Thaw/images/copy.png
===================================================================
(Binary files differ)
Property changes on: trunk/apps/Thaw/images/copy.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/apps/Thaw/images/file.png
===================================================================
(Binary files differ)
Property changes on: trunk/apps/Thaw/images/file.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/apps/Thaw/images/min-copy.png
===================================================================
(Binary files differ)
Property changes on: trunk/apps/Thaw/images/min-copy.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/apps/Thaw/images/min-file.png
===================================================================
(Binary files differ)
Property changes on: trunk/apps/Thaw/images/min-file.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/apps/Thaw/images/min-key.png
===================================================================
(Binary files differ)
Property changes on: trunk/apps/Thaw/images/min-key.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/apps/Thaw/src/thaw/core/ConfigWindow.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/ConfigWindow.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/core/ConfigWindow.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -229,6 +229,13 @@
}
+ public void close() {
+ setVisible(false);
+ setChanged();
+ this.notifyObservers(cancelButton); /* Equivalent to a click on
the cancel button */
+ }
+
+
public void windowActivated(final WindowEvent e) {
}
Modified: trunk/apps/Thaw/src/thaw/core/Core.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Core.java 2007-03-31 00:35:06 UTC (rev
12462)
+++ trunk/apps/Thaw/src/thaw/core/Core.java 2007-03-31 00:38:20 UTC (rev
12463)
@@ -168,7 +168,11 @@
if(!initConfig())
return false;
- splashScreen.setProgressionAndStatus(10, "Connecting ...");
+ splashScreen.setProgressionAndStatus(10, "Applying look and
feel ...");
+ if (!initializeLookAndFeel())
+ return false;
+
+ splashScreen.setProgressionAndStatus(20, "Connecting ...");
splashScreen.addIcon(IconBox.connectAction);
if(!initConnection())
new WarningWindow(this,
I18n.getMessage("thaw.warning.unableToConnectTo")+
@@ -395,7 +399,7 @@
* This method sets the look and feel specified with setLookAndFeel().
* If none was specified, the System Look and Feel is set.
*/
- private void initializeLookAndFeel() { /* non static, else I can't call
correctly Logger functions */
+ private boolean initializeLookAndFeel() { /* non static, else I can't
call correctly Logger functions */
JFrame.setDefaultLookAndFeelDecorated(false); /* Don't touch my
window decorations ! */
JDialog.setDefaultLookAndFeelDecorated(false);
@@ -410,11 +414,15 @@
} else {
UIManager.setLookAndFeel(Core.lookAndFeel);
}
+
+ if (splashScreen != null)
+ splashScreen.rebuild();
} catch (final Exception e) {
Logger.warning(this, "Exception while setting the L&F :
" + e.getMessage());
Logger.warning(this, "Using the default lookAndFeel");
}
+ return true;
}
@@ -422,7 +430,7 @@
* Init graphics.
*/
public boolean initGraphics() {
- initializeLookAndFeel();
+ //initializeLookAndFeel();
mainWindow = new MainWindow(this);
Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -5,7 +5,7 @@
*/
public class FreenetURIHelper {
- public FreenetURIHelper() {
+ private FreenetURIHelper() {
}
@@ -192,7 +192,7 @@
for (int j = 0 ; j < subsplit.length-1 ; j++) {
if (j == 0)
- key = key + subsplit[j];
+ key = key + "/" + subsplit[j];
else
key = key + "-" + subsplit[j];
}
@@ -256,7 +256,7 @@
/**
* will lower the case !
- * compare only with another result from this function
+ * will return the begining of the key.
*/
public static String getComparablePart(String key) {
if (key == null)
@@ -273,6 +273,9 @@
}
+ /**
+ * this process is not costless.
+ */
public static boolean compareKeys(String keyA, String keyB) {
if (keyA == keyB)
return true;
@@ -304,9 +307,15 @@
if (keyA.startsWith("SSK@")) {
keyA = changeSSKRevision(keyA, 0, 0);
keyB = changeSSKRevision(keyB, 0, 0);
+
+ keyA = keyA.replaceAll(".frdx", ".xml"); /* we consider
.frdx equivalent to .xml */
+ keyB = keyB.replaceAll(".frdx", ".xml"); /* we consider
.frdx equivalent to .xml */
}
- return keyA.equals(keyB);
+ if ( keyA.equals(keyB) )
+ return true;
+
+ return false;
}
}
Modified: trunk/apps/Thaw/src/thaw/core/MainWindow.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/core/MainWindow.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -146,19 +146,20 @@
// TOOLBAR
connectButton = new JButton(IconBox.connectAction);
+ connectButton.setBorderPainted(false);
connectButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.connect"));
- connectButton.setBorderPainted(false);
+
disconnectButton = new JButton(IconBox.disconnectAction);
+ disconnectButton.setBorderPainted(false);
disconnectButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.disconnect"));
- disconnectButton.setBorderPainted(false);
settingsButton = new JButton(IconBox.settings);
+ settingsButton.setBorderPainted(false);
settingsButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.settings"));
- settingsButton.setBorderPainted(false);
quitButton = new JButton(IconBox.quitAction);
+ quitButton.setBorderPainted(false);
quitButton.setToolTipText(I18n.getMessage("thaw.toolbar.button.quit"));
- quitButton.setBorderPainted(false);
connectButton.addActionListener(this);
disconnectButton.addActionListener(this);
Modified: trunk/apps/Thaw/src/thaw/core/SplashScreen.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/core/SplashScreen.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -157,4 +157,9 @@
progressBar = null;
}
+
+ public void rebuild() {
+ if (splashScreen != null)
+
javax.swing.SwingUtilities.updateComponentTreeUI(splashScreen);
+ }
}
Modified: trunk/apps/Thaw/src/thaw/gui/IconBox.java
===================================================================
--- trunk/apps/Thaw/src/thaw/gui/IconBox.java 2007-03-31 00:35:06 UTC (rev
12462)
+++ trunk/apps/Thaw/src/thaw/gui/IconBox.java 2007-03-31 00:38:20 UTC (rev
12463)
@@ -23,6 +23,12 @@
public static ImageIcon disconnectAction;
public static ImageIcon minDisconnectAction;
+ public static ImageIcon stop;
+ public static ImageIcon minStop;
+
+ public static ImageIcon copy;
+ public static ImageIcon minCopy;
+
public static ImageIcon queue;
public static ImageIcon minQueue;
@@ -40,16 +46,21 @@
public static ImageIcon insertAndAddToIndexAction;
public static ImageIcon makeALinkAction;
+ public static ImageIcon minMakeALinkAction;
public static ImageIcon minIndex;
public static ImageIcon minIndexReadOnly;
public static ImageIcon indexNew;
+ public static ImageIcon minIndexNew;
+
public static ImageIcon indexReuse;
public static ImageIcon delete;
+ public static ImageIcon minDelete;
public static ImageIcon refreshAction;
+ public static ImageIcon minRefreshAction;
public static ImageIcon settings;
public static ImageIcon minSettings;
@@ -61,15 +72,18 @@
public static ImageIcon minQuitAction;
public static ImageIcon key;
+ public static ImageIcon minKey;
public static ImageIcon help;
public static ImageIcon minHelp;
public static ImageIcon folderNew;
+ public static ImageIcon minFolderNew;
public static ImageIcon mainWindow;
public static ImageIcon add;
+ public static ImageIcon minAdd;
public static ImageIcon remove;
public static ImageIcon terminal;
@@ -92,7 +106,15 @@
public static ImageIcon lookAndFeel;
public static ImageIcon minLookAndFeel;
+ public static ImageIcon close;
+ public static ImageIcon minClose;
+ public static ImageIcon link;
+ public static ImageIcon minLink;
+
+ public static ImageIcon file;
+ public static ImageIcon minFile;
+
/**
* Not really used
*/
@@ -135,6 +157,8 @@
IconBox.connectAction = IconBox.loadIcon("connect.png");
IconBox.minConnectAction =
IconBox.loadIcon("min-connect.png");
IconBox.disconnectAction =
IconBox.loadIcon("disconnect.png");
+ IconBox.minStop =
IconBox.loadIcon("min-disconnect.png");
+ IconBox.stop =
IconBox.loadIcon("disconnect.png");
IconBox.minDisconnectAction =
IconBox.loadIcon("min-disconnect.png");
IconBox.queue = IconBox.loadIcon("connect.png");
IconBox.minQueue =
IconBox.loadIcon("min-connect.png");
@@ -143,6 +167,7 @@
IconBox.minIndex = IconBox.loadIcon("min-index.png");
IconBox.minIndexReadOnly =
IconBox.loadIcon("min-indexReadOnly.png");
IconBox.indexNew = IconBox.loadIcon("index-new.png");
+ IconBox.minIndexNew =
IconBox.loadIcon("min-index-new.png");
IconBox.indexReuse =
IconBox.loadIcon("indexReadOnly.png");
IconBox.downloads = IconBox.loadIcon("download.png");
IconBox.minDownloads =
IconBox.loadIcon("min-download.png");
@@ -152,16 +177,22 @@
IconBox.minIndexBrowser = IconBox.loadIcon("min-index.png");
IconBox.addToIndexAction = IconBox.loadIcon("add.png");
IconBox.add = IconBox.loadIcon("add.png");
+ IconBox.minAdd = IconBox.loadIcon("min-add.png");
IconBox.insertAndAddToIndexAction =
IconBox.loadIcon("index.png");
IconBox.makeALinkAction = IconBox.loadIcon("makeLink.png");
+ IconBox.minMakeALinkAction =
IconBox.loadIcon("min-makeLink.png");
IconBox.reconnectAction = IconBox.loadIcon("refresh.png");
IconBox.minReconnectAction =
IconBox.loadIcon("min-refresh.png");
IconBox.refreshAction = IconBox.loadIcon("refresh.png");
+ IconBox.minRefreshAction =
IconBox.loadIcon("min-refresh.png");
IconBox.quitAction = IconBox.loadIcon("quit.png");
IconBox.minQuitAction = IconBox.loadIcon("min-quit.png");
IconBox.key = IconBox.loadIcon("key.png");
+ IconBox.minKey = IconBox.loadIcon("min-key.png");
IconBox.delete = IconBox.loadIcon("delete.png");
+ IconBox.minDelete =
IconBox.loadIcon("min-delete.png");
IconBox.folderNew =
IconBox.loadIcon("folder-new.png");
+ IconBox.minFolderNew =
IconBox.loadIcon("min-folder-new.png");
IconBox.help = IconBox.loadIcon("help.png");
IconBox.minHelp = IconBox.loadIcon("min-help.png");
IconBox.mainWindow =
IconBox.loadIcon("mainWindow.png");
@@ -179,6 +210,14 @@
IconBox.peers = IconBox.loadIcon("peers.png");
IconBox.lookAndFeel =
IconBox.loadIcon("lookAndFeel.png");
IconBox.minLookAndFeel =
IconBox.loadIcon("min-lookAndFeel.png");
+ IconBox.close =
IconBox.loadIcon("emblem-unreadable.png");
+ IconBox.minClose =
IconBox.loadIcon("min-emblem-unreadable.png");
+ IconBox.copy = IconBox.loadIcon("copy.png");
+ IconBox.minCopy = IconBox.loadIcon("min-copy.png");
+ IconBox.file = IconBox.loadIcon("file.png");
+ IconBox.minFile = IconBox.loadIcon("min-file.png");
+ IconBox.link =
IconBox.loadIcon("indexBrowser.png");
+ IconBox.minLink =
IconBox.loadIcon("min-indexBrowser.png");
}
}
Modified: trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/i18n/source.thaw_fr.properties 2007-03-31
00:38:20 UTC (rev 12463)
@@ -3,11 +3,12 @@
## Commons
# Note for devs and translators: These words must be/are always used alone.
+thaw.common.queueWatcher=Transferts
thaw.common.node=Node
thaw.common.plugins=Plugins
thaw.common.add=Ajouter
thaw.common.remove=Enlever
-thaw.common.status=Transferts
+thaw.common.status=Status
thaw.common.identifier=Identifiant
thaw.common.insertion=Insertion
@@ -77,7 +78,10 @@
thaw.common.autodetect=Auto-detecter
+thaw.common.closeTab=Fermer cette tabulation
+
+
## Errors
thaw.error.idAlreadyUsed=Impossible de se connecter. Notre identifiant est
d?j? utilis? par un autre client connect? au noeud.
@@ -131,6 +135,8 @@
## Plugins
+thaw.plugin.queueWatcher=Transferts
+
thaw.plugin.insert.fileToInsert=Fichier ? ins?rer
thaw.plugin.insert.filesToInsert=Fichier(s) ? ins?rer
thaw.plugin.insert.selectKey=Selectionner le type de clef voulu
@@ -314,7 +320,12 @@
thaw.plugin.index.indexLoading=Chargement d'index
+thaw.plugin.index.blackList=Liste noire d'indexes
+thaw.plugin.index.editBlackList=Editer la liste noire d'indexes
+thaw.plugin.index.addToBlackList=Ajouter ? la liste noire d'indexes
+
+
thaw.plugin.peerMonitor.peerMonitor=Connexion
thaw.plugin.peerMonitor.yourReference=Votre r?f?rence:
thaw.plugin.peerMonitor.copyReference=Copier votre r?f?rence vers le
presse-papier
@@ -339,6 +350,9 @@
thaw.plugin.peerMonitor.infos.nodeMemory=Memoire du noeud
thaw.plugin.peerMonitor.infos.thawMemory=Memoire de Thaw
+
+
+
thaw.plugin.themeSelector.themeSelector=S?lecteur de th?me
thaw.plugin.themeSelector.selectATheme=Selectionnez un th?me:
thaw.plugin.themeSelector.theme=Th?me
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -3,6 +3,7 @@
## Commons
# Note for devs and translators: These words must be/are always used alone.
+
thaw.common.node=Node
thaw.common.plugins=Plugins
thaw.common.add=Add
@@ -72,7 +73,9 @@
thaw.common.paste=Paste
+thaw.common.closeTab=Close this tab
+
thaw.common.autodetect=Auto-detect
@@ -127,6 +130,8 @@
thaw.config.uncheckIfProblem=(Uncheck this option if you have any troubles)
## Plugins
+thaw.plugin.queueWatcher=Transfers
+
thaw.plugin.insert.fileToInsert=File to insert
thaw.plugin.insert.filesToInsert=File(s) to insert
thaw.plugin.insert.selectKey=Select the kind of key wanted
@@ -307,7 +312,13 @@
thaw.plugin.index.indexLoading=Index loading
+thaw.plugin.index.blackList=Index black list
+thaw.plugin.index.editBlackList=Edit the index blacklist
+thaw.plugin.index.addToBlackList=Add to the index black list
+thaw.plugin.index.ultimateWarning=You're about to delete all your indexes !
ARE YOU SURE ?
+
+
thaw.plugin.peerMonitor.peerMonitor=Connection
thaw.plugin.peerMonitor.yourReference=Your reference:
thaw.plugin.peerMonitor.copyReference=Copy your reference to the clipboard
@@ -333,10 +344,17 @@
thaw.plugin.peerMonitor.infos.nodeMemory=Node memory
thaw.plugin.peerMonitor.infos.thawMemory=Thaw memory
+
+
thaw.plugin.themeSelector.themeSelector=Theme selector
thaw.plugin.themeSelector.selectATheme=Select a theme:
thaw.plugin.themeSelector.theme=Theme
+
+
+thaw.plugin.index.blackList=Index blacklist
+
+
# ZeroConf
thaw.zeroconf.searchingNode=Searching freenet nodes ...
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -3,11 +3,12 @@
## Commons
# Note for devs and translators: These words must be/are always used alone.
+thaw.common.queueWatcher=Transferts
thaw.common.node=Node
thaw.common.plugins=Plugins
thaw.common.add=Ajouter
thaw.common.remove=Enlever
-thaw.common.status=Transferts
+thaw.common.status=Status
thaw.common.identifier=Identifiant
thaw.common.insertion=Insertion
@@ -77,7 +78,10 @@
thaw.common.autodetect=Auto-detecter
+thaw.common.closeTab=Fermer cette tabulation
+
+
## Errors
thaw.error.idAlreadyUsed=Impossible de se connecter. Notre identifiant est
d\u00e9j\u00e0 utilis\u00e9 par un autre client connect\u00e9 au noeud.
@@ -131,6 +135,8 @@
## Plugins
+thaw.plugin.queueWatcher=Transferts
+
thaw.plugin.insert.fileToInsert=Fichier \u00e0 ins\u00e9rer
thaw.plugin.insert.filesToInsert=Fichier(s) \u00e0 ins\u00e9rer
thaw.plugin.insert.selectKey=Selectionner le type de clef voulu
@@ -314,7 +320,12 @@
thaw.plugin.index.indexLoading=Chargement d'index
+thaw.plugin.index.blackList=Liste noire d'indexes
+thaw.plugin.index.editBlackList=Editer la liste noire d'indexes
+thaw.plugin.index.addToBlackList=Ajouter \u00e0 la liste noire d'indexes
+
+
thaw.plugin.peerMonitor.peerMonitor=Connexion
thaw.plugin.peerMonitor.yourReference=Votre r\u00e9f\u00e9rence:
thaw.plugin.peerMonitor.copyReference=Copier votre r\u00e9f\u00e9rence vers le
presse-papier
@@ -339,6 +350,9 @@
thaw.plugin.peerMonitor.infos.nodeMemory=Memoire du noeud
thaw.plugin.peerMonitor.infos.thawMemory=Memoire de Thaw
+
+
+
thaw.plugin.themeSelector.themeSelector=S\u00e9lecteur de th\u00e8me
thaw.plugin.themeSelector.selectATheme=Selectionnez un th\u00e8me:
thaw.plugin.themeSelector.theme=Th\u00e8me
Modified: trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/FetchPlugin.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -54,7 +54,7 @@
buttonInToolBar.setToolTipText(I18n.getMessage("thaw.common.download"));
buttonInToolBar.addActionListener(this);
- menuItem = new
JMenuItem(I18n.getMessage("thaw.common.addDownloads"));
+ menuItem = new
JMenuItem(I18n.getMessage("thaw.common.addDownloads"), IconBox.minDownloads);
menuItem.addActionListener(this);
if(core.getPluginManager().getPlugin("thaw.plugins.QueueWatcher") == null) {
Modified: trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/IndexBrowser.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -56,7 +56,7 @@
newDb = DatabaseManager.init(hsqldb, core.getConfig(),
core.getSplashScreen());
- browserPanel = new IndexBrowserPanel(hsqldb,
core.getQueueManager(), core.getConfig(), core.getMainWindow());
+ browserPanel = new IndexBrowserPanel(hsqldb, core);
setMainWindow(core.getMainWindow());
core.getMainWindow().getTabbedPane().addChangeListener(this);
@@ -73,7 +73,7 @@
stateChanged(null);
- configPanel = new IndexConfigPanel(core.getConfigWindow(),
core.getConfig());
+ configPanel = new IndexConfigPanel(core.getConfigWindow(),
core.getConfig(), browserPanel);
configPanel.addTab();
autoRefresh = null;
Modified: trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/InsertPlugin.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -63,7 +63,7 @@
buttonInToolBar.setToolTipText(I18n.getMessage("thaw.common.insertion"));
buttonInToolBar.addActionListener(this);
- menuItem = new
JMenuItem(I18n.getMessage("thaw.common.addInsertions"));
+ menuItem = new
JMenuItem(I18n.getMessage("thaw.common.addInsertions"), IconBox.minInsertions);
menuItem.addActionListener(this);
if(core.getPluginManager().getPlugin("thaw.plugins.QueueWatcher") == null) {
Modified: trunk/apps/Thaw/src/thaw/plugins/PeerMonitor.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/PeerMonitor.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/PeerMonitor.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -102,13 +102,11 @@
peerPanel = new PeerMonitorPanel(core.getConfig());
- if (advancedMode)
-
core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.peerMonitor.peerMonitor"),
-
thaw.gui.IconBox.minPeerMonitor,
- peerPanel.getTabPanel());
+
core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.peerMonitor.peerMonitor"),
+ thaw.gui.IconBox.minPeerMonitor,
+ peerPanel.getTabPanel());
+ peerPanel.addObserver(this);
- if (advancedMode)
- peerPanel.addObserver(this);
core.getMainWindow().addComponent(peerPanel.getPeerListPanel(),
BorderLayout.EAST);
@@ -123,9 +121,7 @@
public boolean stop() {
- if(advancedMode)
- core.getMainWindow().removeTab(peerPanel.getTabPanel());
-
+ core.getMainWindow().removeTab(peerPanel.getTabPanel());
core.getMainWindow().removeComponent(peerPanel.getPeerListPanel());
running = false;
return false;
Modified: trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/QueueWatcher.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -92,7 +92,7 @@
setMainWindow(core.getMainWindow());
core.getMainWindow().getTabbedPane().addChangeListener(this);
-
core.getMainWindow().addTab(I18n.getMessage("thaw.common.status"),
+
core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.queueWatcher"),
IconBox.minQueue,
panelAdded);
Modified: trunk/apps/Thaw/src/thaw/plugins/Restarter.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/Restarter.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/Restarter.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -71,7 +71,9 @@
configPanel.add(restartIntervalField);
configPanel.add(restartFatalsBox);
-
core.getConfigWindow().addTab(I18n.getMessage("thaw.plugin.restarter.configTabName"),
configPanel);
+
core.getConfigWindow().addTab(I18n.getMessage("thaw.plugin.restarter.configTabName"),
+ thaw.gui.IconBox.minRefreshAction,
+ configPanel);
core.getConfigWindow().addObserver(this);
running = true;
Added: trunk/apps/Thaw/src/thaw/plugins/index/BlackList.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/BlackList.java
(rev 0)
+++ trunk/apps/Thaw/src/thaw/plugins/index/BlackList.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -0,0 +1,349 @@
+package thaw.plugins.index;
+
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
+
+import javax.swing.JScrollPane;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JList;
+import javax.swing.JButton;
+import javax.swing.JTextField;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import java.sql.*; /* I'm lazy */
+
+import java.util.Vector;
+import java.util.Iterator;
+
+import thaw.core.I18n;
+import thaw.core.Logger;
+import thaw.core.Core;
+import thaw.core.FreenetURIHelper;
+
+import thaw.gui.IconBox;
+
+import thaw.plugins.Hsqldb;
+
+
+/**
+ * mix of View (non-static methods) and Modele management (static methods) =>
berk :p
+ */
+public class BlackList implements ActionListener {
+
+ private Core core;
+ private Hsqldb db;
+ private IndexBrowserPanel indexBrowser = null;
+
+ private JPanel panel = null;
+ private JButton hideButton = null;
+ private JList blackList = null;
+ private JButton removeButton = null;
+ private JTextField keyField = null;
+ private JButton addButton = null;
+
+ private boolean visible;
+
+ private BlackList() {
+
+ }
+
+
+ public BlackList(Core core, Hsqldb db, IndexBrowserPanel indexBrowser) {
+ this.core = core;
+ this.db = db;
+ this.indexBrowser = indexBrowser;
+
+
+ panel = new JPanel(new BorderLayout(5, 5));
+
+ JPanel northPanel = new JPanel(new BorderLayout());
+
+ hideButton = new JButton(IconBox.minClose);
+ hideButton.setBorderPainted(false);
+
hideButton.setToolTipText(I18n.getMessage("thaw.common.closeTab"));
+ hideButton.addActionListener(this);
+
+ northPanel.add(hideButton, BorderLayout.EAST);
+ northPanel.add(new
JLabel(I18n.getMessage("thaw.plugin.index.blackList")), BorderLayout.CENTER);
+
+ JPanel centerPanel = new JPanel(new BorderLayout());
+ blackList = new JList();
+
blackList.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+
+ removeButton = new
JButton(I18n.getMessage("thaw.common.remove"), IconBox.delete);
+ removeButton.addActionListener(this);
+
+ centerPanel.add(new JScrollPane(blackList),
BorderLayout.CENTER);
+ centerPanel.add(removeButton, BorderLayout.SOUTH);
+
+
+ JPanel southPanel = new JPanel(new BorderLayout());
+
+ keyField = new JTextField("");
+ addButton = new JButton(I18n.getMessage("thaw.common.add"),
IconBox.minAdd);
+ addButton.addActionListener(this);
+
+ southPanel.add(new JLabel(I18n.getMessage("thaw.common.key") +
" : "), BorderLayout.WEST);
+ southPanel.add(keyField, BorderLayout.CENTER);
+ southPanel.add(addButton, BorderLayout.EAST);
+
+ panel.add(northPanel, BorderLayout.NORTH);
+ panel.add(centerPanel, BorderLayout.CENTER);
+ panel.add(southPanel, BorderLayout.SOUTH);
+
+ visible = false;
+ }
+
+ public JPanel getPanel() {
+ return panel;
+ }
+
+
+ protected class BlackListedLink {
+ private int id;
+ private String name;
+ private String publicKey;
+
+ public BlackListedLink(int id, String name, String key) {
+ this.id = id;
+ this.name = name;
+ this.publicKey = key;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getPublicKey() {
+ return publicKey;
+ }
+
+ public String toString() {
+ return getName();
+ }
+ }
+
+
+ public void updateList() {
+ if (!visible)
+ return;
+
+ Vector list = new Vector();
+
+ try {
+ synchronized(db.dbLock) {
+ PreparedStatement st;
+
+ st =
db.getConnection().prepareStatement("SELECT id, name, publicKey FROM
indexBlackList ORDER BY name");
+
+ ResultSet res = st.executeQuery();
+
+ while(res.next()) {
+ list.add(new
BlackListedLink(res.getInt("id"),
+
res.getString("name"),
+
res.getString("publicKey")));
+ }
+
+ }
+ } catch(SQLException e) {
+ Logger.error(this, "SQLException while accessing black
list : "+e.toString());
+ purgeList();
+ return;
+ }
+
+ blackList.setListData(list);
+ }
+
+
+ /**
+ * Avoid useless memory use
+ */
+ protected void purgeList() {
+ blackList.setListData(new Vector());
+ }
+
+
+ public void displayPanel() {
+ visible = true;
+ updateList();
+
core.getMainWindow().addTab(I18n.getMessage("thaw.plugin.index.blackList"),
+ IconBox.minStop, panel);
+ core.getMainWindow().setSelectedTab(panel);
+ }
+
+
+ public void hidePanel() {
+ visible = false;
+ purgeList();
+ core.getMainWindow().removeTab(panel);
+ core.getMainWindow().setSelectedTab(indexBrowser.getPanel());
+ }
+
+
+
+
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource() == hideButton) {
+ hidePanel();
+ return;
+ }
+
+ if (e.getSource() == addButton) {
+ if (addToBlackList(db, keyField.getText()))
+ keyField.setText("");
+ return;
+ }
+
+
+ if (e.getSource() == removeButton) {
+ Object[] targets =
(Object[])blackList.getSelectedValues();
+
+ for (int i = 0 ; i < targets.length ; i++) {
+ BlackListedLink link =
(BlackListedLink)targets[i];
+ removeFromBlackList(db, link.getPublicKey());
+ }
+
+ updateList();
+
+ return;
+ }
+ }
+
+
+ public static int isBlackListed(Hsqldb db, String key) {
+ key = FreenetURIHelper.cleanURI(key);
+
+ if (key == null) {
+ Logger.error(new BlackList(), "isBlackListed() :
Invalid key !");
+ return -1;
+ }
+
+ try {
+ synchronized(db.dbLock) {
+ PreparedStatement st;
+
+ st =
db.getConnection().prepareStatement("SELECT id, publicKey FROM indexBlackList
WHERE "+
+
"LOWER(publicKey) LIKE ?");
+ st.setString(1,
FreenetURIHelper.getComparablePart(key) +"%");
+
+ ResultSet res = st.executeQuery();
+
+ while(res.next()) {
+ String pubKey =
res.getString("publicKey").replaceAll(".xml", ".frdx");
+
+ if
(FreenetURIHelper.compareKeys(pubKey, key)) {
+ return res.getInt("id");
+ }
+ }
+ }
+ } catch(SQLException e) {
+ Logger.error(new BlackList(), "Error while checking if
a given key is blacklisted : "+ e.toString());
+ return -1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * @param key must be an USK@ well formed with everything
+ * @return true if success
+ */
+ public static boolean addToBlackList(Hsqldb db, String key) {
+ if (isBlackListed(db, key) >= 0) {
+ Logger.notice(new BlackList(), "Key already
blacklisted");
+ return false;
+ }
+
+ key = FreenetURIHelper.cleanURI(key);
+
+ if (key == null) {
+ Logger.error(new BlackList(), "addToBlackList() :
Invalid key");
+ return false;
+ }
+
+ try {
+ synchronized(db.dbLock) {
+ PreparedStatement st =
db.getConnection().prepareStatement("INSERT INTO indexBlackList (publicKey,
name) VALUES (?, ?)");
+ PreparedStatement anotherSt =
db.getConnection().prepareStatement("UPDATE links SET blackListed = true WHERE
id = ?");
+
+ st.setString(1, key);
+ st.setString(2, Index.getNameFromKey(key));
+ st.execute();
+
+
+ st =
db.getConnection().prepareStatement("SELECT id, publicKey FROM links WHERE "+
+
"LOWER(publicKey) LIKE ?");
+ st.setString(1,
FreenetURIHelper.getComparablePart(key) +"%");
+
+ ResultSet res = st.executeQuery();
+
+ while(res.next()) {
+ String pubKey =
res.getString("publicKey").replaceAll(".xml", ".frdx");
+
+ if
(FreenetURIHelper.compareKeys(pubKey, key)) {
+ anotherSt.setInt(1,
res.getInt("id"));
+ anotherSt.execute();
+ }
+ }
+
+ }
+ } catch(SQLException e) {
+ Logger.error(new BlackList(), "Error while adding an
entry to the blacklist : "+e.toString());
+ return false;
+ }
+
+ return true;
+ }
+
+
+ /**
+ * @return true if success
+ */
+ public static boolean removeFromBlackList(Hsqldb db, String key) {
+ int id;
+
+ if ((id = isBlackListed(db, key)) < 0) {
+ Logger.notice(new BlackList(), "Key not blacklisted");
+ return false;
+ }
+
+ try {
+ synchronized(db.dbLock) {
+ PreparedStatement st =
db.getConnection().prepareStatement("SELECT id, publicKey FROM links WHERE "+
+
"LOWER(publicKey) LIKE ?");
+ PreparedStatement anotherSt =
db.getConnection().prepareStatement("UPDATE links SET blackListed = false WHERE
id = ?");
+
+ st.setString(1,
FreenetURIHelper.getComparablePart(key) +"%");
+
+ ResultSet res = st.executeQuery();
+
+ while(res.next()) {
+ String pubKey =
res.getString("publicKey").replaceAll(".xml", ".frdx");
+
+ if
(FreenetURIHelper.compareKeys(pubKey, key)) {
+ anotherSt.setInt(1,
res.getInt("id"));
+ anotherSt.execute();
+ }
+ }
+
+
+ st =
db.getConnection().prepareStatement("DELETE FROM indexBlackList WHERE id = ?");
+ st.setInt(1, id);
+ st.execute();
+ }
+ } catch(SQLException e) {
+ Logger.error(new BlackList(), "Error while removing an
entry from the blacklist : "+e.toString());
+ return false;
+ }
+
+ return true;
+ }
+
+}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -70,6 +70,8 @@
* indexParents(indexId, folderId) # table de jointure
* folderParents(folderId, parentId) # table de jointure
*
+ * indexBlackList(id, key) # key are complete USK@
+ *
* </pre>
*
* positionInTree == position in its JTree branch.
@@ -92,7 +94,7 @@
if (config.getValue("indexDatabaseVersion") == null) {
newDb = true;
- config.setValue("indexDatabaseVersion", "3");
+ config.setValue("indexDatabaseVersion", "4");
} else {
/* CONVERTIONS */
@@ -114,6 +116,13 @@
config.setValue("indexDatabaseVersion",
"3");
}
+ if
("3".equals(config.getValue("indexDatabaseVersion"))) {
+ if (splashScreen != null)
+ splashScreen.setStatus("Converting
database ...");
+ if (convertDatabase_3_to_4(db))
+ config.setValue("indexDatabaseVersion",
"4");
+ }
+
/* ... */
}
@@ -206,6 +215,7 @@
+ "indexTarget INTEGER NULL,"
+ "toDelete BOOLEAN DEFAULT false NOT NULL,"
+ "dontDelete BOOLEAN DEFAULT false NOT NULL,"
+ + "blackListed BOOLEAN DEFAULT false NOT NULL,"
+ "PRIMARY KEY (id),"
+ "FOREIGN KEY (indexParent) REFERENCES indexes (id),"
+ "FOREIGN KEY (indexTarget) REFERENCES indexes
(id))");
@@ -226,6 +236,11 @@
+ "FOREIGN KEY (fileId) REFERENCES files (id),"
+ "FOREIGN KEY (nameId) REFERENCES metadataNames
(id))");
+ sendQuery(db,
+ "CREATE CACHED TABLE indexBlackList ("
+ + "id INTEGER IDENTITY NOT NULL,"
+ + "publicKey VARCHAR(350) NOT NULL,"
+ + "name VARCHAR(255) NOT NULL)");
}
@@ -847,4 +862,14 @@
return true;
}
+
+
+ public static boolean convertDatabase_3_to_4(Hsqldb db) {
+ if (!sendQuery(db, "ALTER TABLE links ADD COLUMN blackListed
BOOLEAN DEFAULT false")) {
+ Logger.error(new DatabaseManager(), "Error while
converting the database (3 to 4) ! (adding column to link table)");
+ return false;
+ }
+
+ return true;
+ }
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -113,7 +113,7 @@
JButton button;
JMenuItem item;
- item = new
JMenuItem(I18n.getMessage("thaw.common.action.download"));
+ item = new
JMenuItem(I18n.getMessage("thaw.common.action.download"), IconBox.minDownloads);
button = new JButton(IconBox.downloads);
button.setToolTipText(I18n.getMessage("thaw.common.action.download"));
toolbarActions.add(new
FileManagementHelper.FileDownloader(config, queueManager, indexBrowser,
button));
@@ -121,7 +121,7 @@
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.FileDownloader(config, queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.insert"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.insert"), IconBox.minInsertions);
button = new JButton(IconBox.insertions);
button.setToolTipText(I18n.getMessage("thaw.plugin.index.insert"));
toolbarActions.add(new
FileManagementHelper.FileInserter(queueManager, indexBrowser, button));
@@ -129,7 +129,7 @@
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.FileInserter(queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.recalculateKeys"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.recalculateKeys"), IconBox.minKey);
button = new JButton(IconBox.key);
button.setToolTipText(I18n.getMessage("thaw.plugin.index.recalculateKeys"));
toolbarActions.add(new
FileManagementHelper.FileKeyComputer(queueManager, indexBrowser, button));
@@ -137,11 +137,11 @@
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.FileKeyComputer(queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.common.removeFromTheList"));
+ item = new
JMenuItem(I18n.getMessage("thaw.common.removeFromTheList"), IconBox.minStop);
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.TransferCanceller(queueManager, indexBrowser, item));
- item = new JMenuItem(I18n.getMessage("thaw.common.remove"));
+ item = new JMenuItem(I18n.getMessage("thaw.common.remove"),
IconBox.minDelete);
button = new JButton(IconBox.delete);
button.setToolTipText(I18n.getMessage("thaw.common.remove"));
toolbarActions.add(new
FileManagementHelper.FileRemover(indexBrowser, button));
@@ -149,7 +149,7 @@
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.FileRemover(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"));
+ item = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"), IconBox.minCopy);
rightClickMenu.add(item);
rightClickActions.add(new
FileManagementHelper.PublicKeyCopier(item));
@@ -180,7 +180,8 @@
protected void updateRightClickMenu(final Vector selectedFiles) {
FileManagementHelper.FileAction action;
- firstSelectedFile = selectedFiles != null ?
((thaw.plugins.index.File)selectedFiles.get(0)) : null;
+ firstSelectedFile = selectedFiles != null &&
selectedFiles.size() > 0 ?
+ ((thaw.plugins.index.File)selectedFiles.get(0)) : null;
for(final Iterator it = rightClickActions.iterator();
it.hasNext();) {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -864,14 +864,16 @@
PreparedStatement st;
- st =
db.getConnection().prepareStatement("SELECT id, publicKey FROM links WHERE
indexParent = ?");
+ st =
db.getConnection().prepareStatement("SELECT id, publicKey, blackListed FROM
links WHERE indexParent = ?");
st.setInt(1, id);
ResultSet res = st.executeQuery();
while(res.next()) {
- Link l = new Link(db, res.getInt("id"),
res.getString("publicKey"), this);
+ Link l = new Link(db, res.getInt("id"),
res.getString("publicKey"),
+
res.getBoolean("blackListed"),
+ this);
links.add(l);
}
@@ -1183,11 +1185,6 @@
int nextId;
try {
- if (insertLinkSt == null)
- insertLinkSt =
db.getConnection().prepareStatement("INSERT INTO links "
-
+ "(publicKey, mark, comment, indexParent, indexTarget) "
-
+ "VALUES (?, 0, ?, ?, NULL)");
-
String key = attrs.getValue("key");
if (key == null) /* it was the
beginning of the index */
@@ -1195,9 +1192,19 @@
key = key.trim();
+
+ boolean blackListed =
(BlackList.isBlackListed(db, key) >= 0);
+
+
+ if (insertLinkSt == null)
+ insertLinkSt =
db.getConnection().prepareStatement("INSERT INTO links "
+
+ "(publicKey, mark, comment, indexParent, indexTarget,
blackListed) "
+
+ "VALUES (?, 0, ?, ?, NULL, ?)");
+
insertLinkSt.setString(1, key);
insertLinkSt.setString(2, "No
comment"); /* comment not used at the moment */
insertLinkSt.setInt(3, id);
+ insertLinkSt.setBoolean(4, blackListed);
insertLinkSt.execute();
} catch(SQLException e) {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexBrowserPanel.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -5,10 +5,12 @@
import javax.swing.JPanel;
import javax.swing.JSplitPane;
+import thaw.core.Core;
import thaw.core.Config;
import thaw.core.I18n;
import thaw.core.Logger;
import thaw.core.MainWindow;
+
import thaw.fcp.FCPQueueManager;
import thaw.plugins.Hsqldb;
@@ -20,6 +22,8 @@
private UnknownIndexList unknownList;
private IndexProgressBar indexProgressBar;
+ private BlackList blackList;
+
private JSplitPane split;
private JPanel listAndDetails;
@@ -33,12 +37,14 @@
private MainWindow mainWindow;
- public IndexBrowserPanel(final Hsqldb db, final FCPQueueManager
queueManager, final Config config, final MainWindow mainWindow) {
+ public IndexBrowserPanel(final Hsqldb db, final Core core) {
this.db = db;
- this.queueManager = queueManager;
- this.config = config;
- this.mainWindow = mainWindow;
+ this.queueManager = core.getQueueManager();
+ this.config = core.getConfig();
+ this.mainWindow = core.getMainWindow();
+ blackList = new BlackList(core, db, this);
+
unknownList = new UnknownIndexList(queueManager, this);
indexTree = new
IndexTree(I18n.getMessage("thaw.plugin.index.indexes"),
@@ -120,13 +126,18 @@
return mainWindow;
}
+ public BlackList getBlackList() {
+ return blackList;
+ }
+
public JPanel getPanel() {
return globalPanel;
}
public void stopAllThreads() {
tables.stopRefresh();
+ blackList.hidePanel();
}
public void saveState() {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexConfigPanel.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -1,6 +1,7 @@
package thaw.plugins.index;
import java.awt.GridLayout;
+import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -8,6 +9,7 @@
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
+import javax.swing.JButton;
import thaw.core.Config;
import thaw.core.ConfigWindow;
@@ -26,10 +28,15 @@
private JCheckBox loadOnTheFly;
+ private JButton editBlackList;
- public IndexConfigPanel(ConfigWindow configWindow, Config config) {
+ private IndexBrowserPanel indexBrowser;
+
+
+ public IndexConfigPanel(ConfigWindow configWindow, Config config,
IndexBrowserPanel indexBrowser) {
this.configWindow = configWindow;
this.config = config;
+ this.indexBrowser = indexBrowser;
panel = new JPanel();
panel.setLayout(new GridLayout(15, 1));
@@ -51,11 +58,21 @@
configWindow.getOkButton().addActionListener(this);
configWindow.getCancelButton().addActionListener(this);
+
+ editBlackList = new
JButton(I18n.getMessage("thaw.plugin.index.editBlackList")+ " ...");
+ editBlackList.addActionListener(this);
+
+ JPanel editBlackListPanel = new JPanel(new BorderLayout());
+ editBlackListPanel.add(new JLabel(""), BorderLayout.CENTER);
+ editBlackListPanel.add(editBlackList, BorderLayout.EAST);
+
+
panel.add(autorefreshActivated);
panel.add(refreshIntervalLabel);
panel.add(refreshInterval);
panel.add(indexPerRefreshLabel);
panel.add(indexPerRefresh);
+ panel.add(editBlackListPanel);
if
(Boolean.valueOf(config.getValue("advancedMode")).booleanValue()) {
panel.add(new JLabel(" "));
@@ -143,6 +160,11 @@
if (e.getSource() == configWindow.getCancelButton()) {
resetValues();
}
+
+ if (e.getSource() == editBlackList) {
+ configWindow.close();
+ indexBrowser.getBlackList().displayPanel();
+ }
}
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -54,6 +54,12 @@
this.name = name;
}
+
+ protected Hsqldb getDb() {
+ return db;
+ }
+
+
public boolean isInTree() {
return (parentNode != null);
}
@@ -151,6 +157,11 @@
}
+ protected Vector getChildren() {
+ return children;
+ }
+
+
public void unloadChildren() {
children = null;
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -1007,8 +1007,7 @@
if (getActionSource() != null)
getActionSource().setEnabled(node != null
- &&
(getIndexBrowserPanel().getIndexTree() != null
- && node !=
getIndexBrowserPanel().getIndexTree().getRoot()));
+ &&
(getIndexBrowserPanel().getIndexTree() != null));
}
public void apply() {
@@ -1032,7 +1031,35 @@
}
+ /**
+ * Can be used on indexes only
+ */
+ public static class IndexBlackLister extends IndexDeleter {
+ private IndexBrowserPanel indexBrowser;
+ public IndexBlackLister(final IndexBrowserPanel indexBrowser,
final AbstractButton actionSource) {
+ super(indexBrowser, actionSource);
+
+ this.indexBrowser = indexBrowser;
+ }
+
+ public void setTarget(final IndexTreeNode node) {
+ if (node != null && node instanceof Index)
+ super.setTarget(node);
+ else
+ super.setTarget(null);
+ }
+
+ public void apply() {
+ BlackList.addToBlackList(indexBrowser.getDb(),
getTarget().getPublicKey());
+ super.apply();
+ indexBrowser.getBlackList().updateList();
+ }
+ }
+
+
+
+
public static class FileInserterAndAdder extends BasicIndexAction {
private Config config;
@@ -1402,8 +1429,8 @@
int nextId = DatabaseManager.getNextId(db,
"links");
- st =
db.getConnection().prepareStatement("INSERT INTO links (id, publicKey, mark,
comment, indexParent, indexTarget) "+
-
"VALUES (?, ?, ?, ?, ?, ?)");
+ st =
db.getConnection().prepareStatement("INSERT INTO links (id, publicKey, mark,
comment, indexParent, indexTarget, blackListed) "+
+
"VALUES (?, ?, ?, ?, ?, ?, FALSE)");
st.setInt(1, nextId);
st.setString(2, linkKey);
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexRoot.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -4,8 +4,12 @@
import java.sql.ResultSet;
import java.sql.SQLException;
+import javax.swing.JOptionPane;
+
import thaw.core.I18n;
import thaw.core.Logger;
+import thaw.core.MainWindow;
+
import thaw.fcp.FCPQueueManager;
import thaw.plugins.Hsqldb;
@@ -14,12 +18,16 @@
private FCPQueueManager queueManager;
private IndexBrowserPanel indexBrowser;
+ private MainWindow mainWindow;
+
public IndexRoot(final FCPQueueManager queueManager,
final IndexBrowserPanel indexBrowser,
final String name,
final boolean loadOnTheFly) {
super(indexBrowser.getDb(), -1, loadOnTheFly);
+ mainWindow = indexBrowser.getMainWindow();
+
this.queueManager = queueManager;
this.indexBrowser = indexBrowser;
@@ -66,5 +74,57 @@
return IndexManagementHelper.addIndexFolder(indexBrowser, this,
fname);
}
+
+
+ public void delete() {
+ Logger.warning(this, "The user will do something dangerous");
+
+ int ret =
JOptionPane.showConfirmDialog(mainWindow.getMainFrame(),
+
I18n.getMessage("thaw.plugin.index.ultimateWarning"),
+
I18n.getMessage("thaw.warning.title"),
+
JOptionPane.YES_NO_OPTION,
+
JOptionPane.WARNING_MESSAGE);
+
+ if (ret != JOptionPane.YES_OPTION) {
+ Logger.info(this, "Cancelled");
+ return;
+ }
+
+ Logger.warning(this, "DELETING ALL THE INDEXES");
+
+ try {
+ synchronized(getDb().dbLock) {
+ PreparedStatement st;
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM FILES");
+ st.execute();
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM LINKS");
+ st.execute();
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM INDEXES");
+ st.execute();
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM INDEXFOLDERS");
+ st.execute();
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM INDEXPARENTS");
+ st.execute();
+
+ st =
getDb().getConnection().prepareStatement("DELETE FROM FOLDERPARENTS");
+ st.execute();
+ }
+ } catch(SQLException e) {
+ Logger.error(this, "Woops, error while destroying the
world : "+e.toString());
+ return;
+ }
+
+ IndexManagementHelper.addIndex(queueManager, indexBrowser, null,
+
thaw.plugins.IndexBrowser.DEFAULT_INDEX);
+
+ forceReload();
+
+ Logger.notice(this, "Destruction of the world done, have a nice
day.");
+ }
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexTree.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -150,13 +150,17 @@
indexAndFileMenu = new JPopupMenu();
indexAndFileActions = new Vector();
indexMenu = new
JMenu(I18n.getMessage("thaw.plugin.index.index"));
+ indexMenu.setIcon(IconBox.minIndex);
fileMenu = new JMenu(I18n.getMessage("thaw.common.files"));
+ fileMenu.setIcon(IconBox.minFile);
linkMenu = new
JMenu(I18n.getMessage("thaw.plugin.index.links"));
+ linkMenu.setIcon(IconBox.minLink);
// Folder menu
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.downloadIndexes"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.downloadIndexes"),
+ IconBox.minRefreshAction);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexDownloader(queueManager, indexBrowser, item));
@@ -168,15 +172,17 @@
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexFolderReorderer(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addAlreadyExistingIndex"),
+ IconBox.minIndexReadOnly);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexReuser(queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addCategory"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addCategory"),
+ IconBox.minFolderNew);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexFolderAdder(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.createIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.createIndex"),
IconBox.minIndexNew);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexCreator(queueManager, indexBrowser, item));
@@ -184,21 +190,23 @@
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexRenamer(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.delete"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.delete"), IconBox.minDelete);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.IndexDeleter(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"), IconBox.minCopy);
indexFolderMenu.add(item);
indexFolderActions.add(new
IndexManagementHelper.PublicKeyCopier(item));
// Index menu
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.downloadIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.downloadIndex"),
+ IconBox.minRefreshAction);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexDownloader(queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.insertIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.insertIndex"),
+ IconBox.minInsertions);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexUploader(queueManager, indexBrowser, item));
@@ -206,50 +214,64 @@
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexRenamer(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.exportIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.exportIndex"),
+ IconBox.minExportAction);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexExporter(item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.importIndex"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.importIndex"),
+ IconBox.minImportAction);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexImporter(item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.delete"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.delete"),
+ IconBox.minDelete);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexDeleter(indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.changeIndexKeys"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addToBlackList"),
+ IconBox.minStop);
indexMenu.add(item);
+ indexAndFileActions.add(new
IndexManagementHelper.IndexBlackLister(indexBrowser, item));
+
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.changeIndexKeys"),
+ IconBox.minKey);
+ indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.IndexKeyModifier(indexBrowser, item));
item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyPrivateKey"));
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.PrivateKeyCopier(item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKey"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKey"),
+ IconBox.minCopy);
indexMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.PublicKeyCopier(item));
// File menu
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addFilesWithInserting"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addFilesWithInserting"),
+ IconBox.minInsertions);
fileMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.FileInserterAndAdder(config, queueManager, indexBrowser,
item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addFilesWithoutInserting"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addFilesWithoutInserting"),
+ IconBox.minAdd);
fileMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.FileAdder(config, queueManager, indexBrowser, item));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addKeys"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addKeys"),
+ IconBox.minKey);
fileMenu.add(item);
IndexManagementHelper.IndexAction ac = new
IndexManagementHelper.KeyAdder(indexBrowser, item);
indexAndFileActions.add(ac);
// Link menu
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addLink"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addLink"),
+ IconBox.minMakeALinkAction);
linkMenu.add(item);
indexAndFileActions.add(new
IndexManagementHelper.LinkAdder(indexBrowser, item));
@@ -652,7 +674,7 @@
final
boolean leaf,
final
int row,
final
boolean hasFocus) {
- setBackgroundNonSelectionColor(Color.WHITE);
+ setBackgroundNonSelectionColor(tree.getBackground());
setBackgroundSelectionColor(IndexTree.SELECTION_COLOR);
if(value instanceof DefaultMutableTreeNode || value
instanceof IndexTreeNode) {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/Link.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2007-03-31 00:35:06 UTC
(rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Link.java 2007-03-31 00:38:20 UTC
(rev 12463)
@@ -20,7 +20,9 @@
private int parentId;
private Index parent = null;
+ private boolean blackListed = false;
+
public Link(final Hsqldb hsqldb, final int id) {
this.id = id;
this.db = hsqldb;
@@ -29,31 +31,34 @@
}
- public Link(final Hsqldb hsqldb, final int id, String publicKey,
+ public Link(final Hsqldb hsqldb, final int id, String publicKey,
boolean blackListed,
int parentId) {
this.id = id;
this.db = hsqldb;
this.publicKey = publicKey;
+ this.blackListed = blackListed;
this.parentId = parentId;
}
- public Link(final Hsqldb hsqldb, final int id, String publicKey,
+ public Link(final Hsqldb hsqldb, final int id, String publicKey,
boolean blackListed,
Index parent) {
this.id = id;
this.db = hsqldb;
this.publicKey = publicKey;
+ this.blackListed = blackListed;
this.parentId = parent.getId();
this.parent = parent;
}
+
public void reloadDataFromDb(int id) {
this.id = id;
try {
PreparedStatement st;
- st = db.getConnection().prepareStatement("SELECT
publicKey, indexParent FROM links "+
+ st = db.getConnection().prepareStatement("SELECT
publicKey, blackListed, indexParent FROM links "+
"WHERE id = ?
LIMIT 1");
st.setInt(1, id);
@@ -63,6 +68,7 @@
if (rs.next()) {
publicKey = rs.getString("publicKey");
parentId = rs.getInt("indexParent");
+ blackListed = rs.getBoolean("blackListed");
} else {
Logger.error(this, "Link
'"+Integer.toString(id)+"' not found.");
}
@@ -71,6 +77,10 @@
}
}
+ public boolean isBlackListed() {
+ return blackListed;
+ }
+
public String getPublicKey() {
if (publicKey == null)
reloadDataFromDb(id);
@@ -237,4 +247,5 @@
return index.isModifiable();
}
+
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/LinkManagementHelper.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -10,8 +10,11 @@
import javax.swing.AbstractButton;
+import thaw.core.Logger;
+import thaw.plugins.Hsqldb;
import thaw.fcp.FCPQueueManager;
+
public class LinkManagementHelper {
public interface LinkAction extends ActionListener {
@@ -158,4 +161,64 @@
}
+ public static class BlackListDisplayer implements LinkAction {
+ private AbstractButton src;
+ private BlackList blackList;
+
+ public BlackListDisplayer(final AbstractButton actionSource,
BlackList blackList) {
+ src = actionSource;
+
+ if (actionSource != null)
+ actionSource.addActionListener(this);
+
+ this.blackList = blackList;
+ }
+
+ public void setTarget(final Vector targets) {
+ src.setEnabled(true);
+ }
+
+ public void actionPerformed(final ActionEvent e) {
+ blackList.displayPanel();
+ }
+ }
+
+
+ public static class ToBlackListAdder implements LinkAction {
+ private AbstractButton src;
+ private Vector t;
+
+ private IndexBrowserPanel indexBrowser;
+
+ public ToBlackListAdder(final AbstractButton actionSource,
IndexBrowserPanel indexBrowser) {
+ src = actionSource;
+
+ this.indexBrowser = indexBrowser;
+
+ if (actionSource != null)
+ actionSource.addActionListener(this);
+ }
+
+ public void setTarget(final Vector targets) {
+ t = targets;
+ src.setEnabled((targets != null) && (targets.size() >
0));
+ }
+
+ public void actionPerformed(final ActionEvent e) {
+ if (t == null) {
+ Logger.error(this, "No target !?");
+ return;
+ }
+
+ for (Iterator it = t.iterator();
+ it.hasNext(); ) {
+ Link link = (Link)it.next();
+
+ BlackList.addToBlackList(indexBrowser.getDb(),
link.getPublicKey());
+
indexBrowser.getUnknownIndexList().removeLink(link);
+ }
+
+ indexBrowser.getBlackList().updateList();
+ }
+ }
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/LinkTable.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -79,7 +79,7 @@
JMenuItem item;
JButton button;
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink"),
IconBox.minAdd);
button = new JButton(IconBox.indexReuse);
button.setToolTipText(I18n.getMessage("thaw.plugin.index.addIndexesFromLink"));
toolbarActions.add(new LinkManagementHelper.IndexAdder(button,
queueManager,
@@ -90,11 +90,11 @@
rightClickActions.add(new LinkManagementHelper.IndexAdder(item,
queueManager,
indexBrowser, true));
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"), IconBox.minCopy);
rightClickMenu.add(item);
rightClickActions.add(new
LinkManagementHelper.PublicKeyCopier(item));
- item = new JMenuItem(I18n.getMessage("thaw.common.remove"));
+ item = new JMenuItem(I18n.getMessage("thaw.common.remove"),
IconBox.minDelete);
button = new JButton(IconBox.delete);
button.setToolTipText(I18n.getMessage("thaw.common.remove"));
toolbarActions.add(new
LinkManagementHelper.LinkRemover(indexBrowser, button));
@@ -124,7 +124,8 @@
protected void updateRightClickMenu(final Vector selectedLinks) {
LinkManagementHelper.LinkAction action;
- firstSelectedLink = selectedLinks != null ?
((Link)selectedLinks.get(0)) : null;
+ firstSelectedLink = selectedLinks != null &&
selectedLinks.size() > 0 ?
+ ((Link)selectedLinks.get(0)) : null;
for (final Iterator it = rightClickActions.iterator();
it.hasNext(); ) {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/SearchResult.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/SearchResult.java 2007-03-31
00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/SearchResult.java 2007-03-31
00:38:20 UTC (rev 12463)
@@ -110,17 +110,20 @@
try {
PreparedStatement st;
- st =
db.getConnection().prepareStatement("SELECT id, publicKey, indexParent "+
+ st =
db.getConnection().prepareStatement("SELECT id, publicKey, indexParent,
blackListed "+
"FROM
links "+
"WHERE
"+getWhereClause(false));
fillInStatement(st);
ResultSet set = st.executeQuery();
while(set.next()) {
- v.add(new Link(db,
- set.getInt("id"),
-
set.getString("publicKey"),
-
set.getInt("indexParent")));
+ if (!set.getBoolean("blackListed")) {
+ v.add(new Link(db,
+ set.getInt("id"),
+
set.getString("publicKey"),
+ false,
+
set.getInt("indexParent") ));
+ }
}
} catch(SQLException e) {
Modified: trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -42,6 +42,7 @@
private FCPQueueManager queueManager;
private IndexBrowserPanel indexBrowser;
+
public UnknownIndexList(final FCPQueueManager queueManager,
IndexBrowserPanel indexBrowser) {
this.queueManager = queueManager;
this.indexBrowser = indexBrowser;
@@ -124,6 +125,25 @@
return ret;
}
+
+ public boolean removeLink(final Link link) {
+ boolean ret = false;
+
+ for (int i = 0 ; i < linkList.length ; i++) {
+ if ((linkList[i] != null) && linkList[i].compare(link))
{
+ if (!full)
+ vList.remove(linkList[i]);
+ erase(i);
+ ret = true;
+ }
+ }
+
+ refresh();
+
+ return ret;
+ }
+
+
public void makePlace(int i) {
int j;
for (j = linkList.length - 1; j > i ; j--) {
@@ -137,6 +157,7 @@
*/
public boolean addLink(final Link link) {
if ((link == null)
+ || link.isBlackListed()
|| Index.isAlreadyKnown(indexBrowser.getDb(),
link.getPublicKey()) >= 0
|| isInList(link))
return false;
@@ -189,17 +210,28 @@
protected void updateRightClickMenu(Vector links) {
if (rightClickMenu == null) {
+ /* first time */
+ /* I don't remember why it's done here .... */
+
rightClickMenu = new JPopupMenu();
rightClickActions = new Vector();
JMenuItem item;
- item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink"));
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addIndexesFromLink"),
IconBox.minAdd);
rightClickMenu.add(item);
rightClickActions.add(new
LinkManagementHelper.IndexAdder(item, queueManager, indexBrowser, false));
item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"));
rightClickMenu.add(item);
rightClickActions.add(new
LinkManagementHelper.PublicKeyCopier(item));
+
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.editBlackList"));
+ rightClickMenu.add(item);
+ rightClickActions.add(new
LinkManagementHelper.BlackListDisplayer(item, indexBrowser.getBlackList()));
+
+ item = new
JMenuItem(I18n.getMessage("thaw.plugin.index.addToBlackList"), IconBox.minStop);
+ rightClickMenu.add(item);
+ rightClickActions.add(new
LinkManagementHelper.ToBlackListAdder(item, indexBrowser));
}
LinkManagementHelper.LinkAction action;
Modified: trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -153,16 +153,16 @@
refPanel.add(refTitle, BorderLayout.NORTH);
refPanel.add(new JScrollPane(refArea), BorderLayout.CENTER);
- mainPanel.add(refPanel);
-
detailsLabel = new JLabel();
detailsPanel = new JPanel();
JPanel globalDetailsPanel = new JPanel(new BorderLayout(5, 5));
+
globalDetailsPanel.add(detailsLabel, BorderLayout.NORTH);
globalDetailsPanel.add(new JScrollPane(detailsPanel),
BorderLayout.CENTER);
mainPanel.add(globalDetailsPanel);
+ mainPanel.add(refPanel);
tabPanel.add(mainPanel, BorderLayout.CENTER);
}
@@ -488,7 +488,7 @@
public void valueChanged(ListSelectionEvent e) {
- if (e.getFirstIndex() == 0) {
+ if (e.getFirstIndex() == 0 && advanced) {
displayInfos(I18n.getMessage("thaw.plugin.peerMonitor.nodeInfos"), nodeInfos);
} else {
Peer peer;
Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2007-03-31 00:35:06 UTC (rev 12462)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2007-03-31 00:38:20 UTC (rev 12463)
@@ -138,13 +138,14 @@
tableModel.addTableModelListener(table);
rightClickMenu = new JPopupMenu();
+
clearFinishedItem = new
JMenuItem(I18n.getMessage("thaw.common.clearFinished"));
- removeItem = new
JMenuItem(I18n.getMessage("thaw.common.removeFromTheList"));
- cancelItem = new
JMenuItem(I18n.getMessage("thaw.common.cancel"));
+ removeItem = new
JMenuItem(I18n.getMessage("thaw.common.removeFromTheList"), IconBox.minDelete);
+ cancelItem = new
JMenuItem(I18n.getMessage("thaw.common.cancel"), IconBox.minStop);
delayItem = new JMenuItem(I18n.getMessage("thaw.common.delay"));
downloadItem = new
JMenuItem(I18n.getMessage("thaw.common.downloadLocally"));
- forceRestartItem = new
JMenuItem(I18n.getMessage("thaw.common.forceRestart"));
- copyKeysItem = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"));
+ forceRestartItem = new
JMenuItem(I18n.getMessage("thaw.common.forceRestart"),
IconBox.minRefreshAction);
+ copyKeysItem = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"), IconBox.minCopy);
final JMenu priorityMenu = new
JMenu(I18n.getMessage("thaw.common.priority"));
priorityGroup = new ButtonGroup();