Author: jflesch
Date: 2006-07-30 09:54:53 +0000 (Sun, 30 Jul 2006)
New Revision: 9818
Modified:
trunk/apps/Thaw/src/thaw/core/Core.java
trunk/apps/Thaw/src/thaw/core/Logger.java
trunk/apps/Thaw/src/thaw/core/WarningWindow.java
trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
trunk/apps/Thaw/src/thaw/i18n/thaw.properties
trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
Log:
Improve disconnection management
Modified: trunk/apps/Thaw/src/thaw/core/Core.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Core.java 2006-07-29 22:30:49 UTC (rev
9817)
+++ trunk/apps/Thaw/src/thaw/core/Core.java 2006-07-30 09:54:53 UTC (rev
9818)
@@ -1,10 +1,11 @@
-
package thaw.core;
import java.util.Observer;
import java.util.Observable;
import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
@@ -16,7 +17,7 @@
/**
* A "core" contains references to all the main parts of Thaw.
- *
+ * The Core has all the functions needed to initialize Thaw / stop Thaw.
*/
public class Core implements Observer {
@@ -84,7 +85,7 @@
return false;
if(!initNodeConnection())
- new WarningWindow(this, "Unable to connect to
"+config.getValue("nodeAddress")+":"+
+ new WarningWindow(this,
I18n.getMessage("thaw.warning.unableToConnectTo")+ "
"+config.getValue("nodeAddress")+":"+
config.getValue("nodePort"));
if(!initGraphics())
@@ -302,7 +303,7 @@
* Check if the connection can be interrupted safely.
*/
public boolean canDisconnect() {
- return !connection.isWriting();
+ return connection == null || !connection.isWriting();
}
/**
@@ -315,13 +316,15 @@
if(!canDisconnect()) {
int ret =
JOptionPane.showOptionDialog((java.awt.Component)null,
I18n.getMessage("thaw.warning.isWriting"),
-
I18n.getMessage("thaw.warning.title"),
+ "Thaw -
"+I18n.getMessage("thaw.warning.title"),
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,
(javax.swing.Icon)null,
(java.lang.Object[])null,
(java.lang.Object)null);
- if(ret == JOptionPane.CLOSED_OPTION || ret > 0)
+ if(ret == JOptionPane.CLOSED_OPTION
+ || ret == JOptionPane.CANCEL_OPTION
+ || ret == JOptionPane.NO_OPTION)
return;
}
}
@@ -345,13 +348,26 @@
}
-
public void update(Observable o, Object target) {
Logger.debug(this, "Move on the connection (?)");
if(o == connection && !connection.isConnected()) {
int nmbReconnect = 0;
+ JDialog warningDialog = new JDialog();
+ warningDialog.setTitle("Thaw - reconnection");
+ warningDialog.setModal(false);
+ warningDialog.setSize(500, 40);
+
+ JPanel warningPanel = new JPanel();
+
+ JLabel warningLabel = new
JLabel(I18n.getMessage("thaw.warning.autoreconnecting"),
+ JLabel.CENTER);
+ warningPanel.add(warningLabel);
+ warningDialog.setContentPane(warningPanel);
+
+ warningDialog.setVisible(true);
+
for(nmbReconnect = 0;
nmbReconnect < MAX_CONNECT_TRIES ;
nmbReconnect++) {
@@ -362,16 +378,36 @@
// brouzouf
}
- Logger.info(this, "Trying to reconnect ... : "+
Integer.toString(nmbReconnect));
+ Logger.notice(this, "Trying to reconnect ... :
"+ Integer.toString(nmbReconnect));
if(initNodeConnection())
break;
}
+
+ warningDialog.setVisible(false);
+
if(nmbReconnect == MAX_CONNECT_TRIES) {
- new WarningWindow(this, "We have been
disconnected");
+ while(!initNodeConnection()) {
+ int ret =
JOptionPane.showOptionDialog((java.awt.Component)null,
+
I18n.getMessage("thaw.warning.disconnected"),
+
"Thaw - "+I18n.getMessage("thaw.warning.title"),
+
JOptionPane.YES_NO_OPTION,
+
JOptionPane.WARNING_MESSAGE,
+
(javax.swing.Icon)null,
+
(java.lang.Object[])null,
+
(java.lang.Object)null);
+ if(ret == JOptionPane.CLOSED_OPTION
+ || ret == JOptionPane.CANCEL_OPTION
+ || ret == JOptionPane.NO_OPTION)
+ break;
+ }
+
}
-
+
+ getPluginManager().stopPlugins();
+ getPluginManager().loadPlugins();
+ getPluginManager().runPlugins();
}
}
Modified: trunk/apps/Thaw/src/thaw/core/Logger.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Logger.java 2006-07-29 22:30:49 UTC (rev
9817)
+++ trunk/apps/Thaw/src/thaw/core/Logger.java 2006-07-30 09:54:53 UTC (rev
9818)
@@ -94,10 +94,10 @@
* As it. Similar to verbose()
*/
public static void asIt(Object o, String msg) {
- //if(LOG_LEVEL >= 5) {
+ if(LOG_LEVEL >= 5) {
System.out.println(msg);
notifyLogListeners(msg);
- //}
+ }
}
Modified: trunk/apps/Thaw/src/thaw/core/WarningWindow.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/WarningWindow.java 2006-07-29 22:30:49 UTC
(rev 9817)
+++ trunk/apps/Thaw/src/thaw/core/WarningWindow.java 2006-07-30 09:54:53 UTC
(rev 9818)
@@ -19,12 +19,12 @@
if(core != null && core.getMainWindow() != null) {
JOptionPane.showMessageDialog(core.getMainWindow().getMainFrame(),
warning,
-
I18n.getMessage("thaw.warning.title"),
+ "Thaw -
"+I18n.getMessage("thaw.warning.title"),
JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(null,
warning,
-
I18n.getMessage("thaw.warning.title"),
+ "Thaw -
"+I18n.getMessage("thaw.warning.title"),
JOptionPane.WARNING_MESSAGE);
}
}
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2006-07-29 22:30:49 UTC
(rev 9817)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java 2006-07-30 09:54:53 UTC
(rev 9818)
@@ -152,6 +152,11 @@
bufferedOut = new FCPBufferedStream(this, maxUploadSpeed);
bufferedOut.startSender();
+ rawBytesWaiting = 0;
+ lockWriting = false;
+ lockReading = false;
+ lastWrite = 0;
+
Logger.info(this, "Connected");
setChanged();
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-07-29 22:30:49 UTC
(rev 9817)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-07-30 09:54:53 UTC
(rev 9818)
@@ -138,5 +138,8 @@
## Warnings
thaw.warning.title=Warning
-thaw.warning.isWriting=Warning ! Thaw is writing data. It would be better to
quit when thaw will finish. Are you sure that you want to quit ?
+thaw.warning.isWriting=Warning ! Thaw is exchanging data with the node.\nIt
would be better to quit when thaw will finish.\nAre you sure that you want to
quit ?
thaw.warning.isWritingSoApplyLater=Warning ! Thaw is exchanging data with the
node,\nand settings changes makes Thaw disconnect/reconnect.\nAre you sure that
you want to change them now ?
+thaw.warning.disconnected=Thaw has been disconnected. Do you want to try to
reconnect ?
+thaw.warning.unableToConnectTo=Unable to connect to
+thaw.warning.autoreconnecting=Disconnected. Thaw is trying to automatically
reconnect
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2006-07-29 22:30:49 UTC
(rev 9817)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw_fr.properties 2006-07-30 09:54:53 UTC
(rev 9818)
@@ -137,5 +137,8 @@
## Warnings
thaw.warning.title=Avertissement
-thaw.warning.isWriting=Attention ! Thaw est entrain d'?crire des informations.
Il serait pr?f?rable de quitter une fois ces envois finis. Etes-vous s?r de
vouloir quitter ?
+thaw.warning.isWriting=Attention ! Thaw est entrain d'?changer des
informations avec la node.\nIl serait pr?f?rable de quitter une fois ces envois
finis.\nEtes-vous s?r de vouloir quitter ?
thaw.warning.isWritingSoApplyLater=Attention ! Thaw est en train d'?changer
des informations avec la node,\net changer des param?tres d?connecte/reconnecte
Thaw.\nEtes-vous s?r de vouloir les changer maintenant ?
+thaw.warning.disconnected=Thaw a ?t? d?connect?, voulez-vous essayer de vous
reconnecter ?
+thaw.warning.unableToConnectTo=Impossible de se connecter ?
+thaw.warning.autoreconnecting=D?connect?. Thaw est entrain d'essayer de se
reconnecter ...