- when displaying MessageDialogs an error occurs due to illegal thread 
accessing GUI classes
        - in order to fix this, a new DialogRunnable is used, that will use 
invoke synchronous to display the message dialog

[Yocto #4585]
Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com>
---
 .../src/org/yocto/remote/utils/DialogRunnable.java |   26 ++++++++++++++++++++
 .../src/org/yocto/remote/utils/ShellSession.java   |   13 ++++++----
 2 files changed, 34 insertions(+), 5 deletions(-)
 create mode 100644 
plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/DialogRunnable.java

diff --git 
a/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/DialogRunnable.java 
b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/DialogRunnable.java
new file mode 100644
index 0000000..5fbab76
--- /dev/null
+++ 
b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/DialogRunnable.java
@@ -0,0 +1,26 @@
+package org.yocto.remote.utils;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+public         class DialogRunnable implements Runnable{
+       int type = 0;
+       boolean result;
+       public static final int QUESTION = 1;
+       public static final int ERROR = 2;
+       String title;
+       String message;
+
+       DialogRunnable(String title, String message, int type){
+               this.title = title;
+               this.message = message;
+               this.type = type;
+       }
+       @Override
+       public void run() {
+               if (type == QUESTION) {
+                       result = MessageDialog.openQuestion(null, title, 
message);
+               } else if (type == ERROR) {
+                       MessageDialog.openError(null, title, message);
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java 
b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java
index 0f4097b..4ac8001 100644
--- 
a/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java
+++ 
b/plugins/org.yocto.remote.utils/src/org/yocto/remote/utils/ShellSession.java
@@ -22,7 +22,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
 
 public class ShellSession {
        /**
@@ -242,7 +242,9 @@ public class ShellSession {
                                                        int keys = new 
Integer(m.group(1));
                                                        if (keys == 0) {
                                                                proc.destroy();
-                                                               accepted = 
MessageDialog.openQuestion(null, "Host authenticity", "The authenticity of host 
'" + host + "(" + host + ")' can't be established.\nAre you sure you want to 
continue connecting ?");
+                                                               DialogRunnable 
runnable = new DialogRunnable("Host authenticity", "The authenticity of host '" 
+ host + "(" + host + ")' can't be established.\nAre you sure you want to 
continue connecting ?", DialogRunnable.QUESTION);
+                                                               
Display.getDefault().syncExec(runnable);
+                                                               accepted = 
runnable.result;
                                                                if (accepted){
                                                                        proc = 
Runtime.getRuntime().exec("ssh -o StrictHostKeyChecking=no " + user + "@" + 
host);//add host key to known_hosts
                                                                        try {
@@ -252,7 +254,7 @@ public class ShellSession {
                                                                        }
                                                                        
proc.destroy();
                                                                } else {
-                                                                       
MessageDialog.openError(null, "Host authenticity", "Host key verification 
failed.");
+                                                                       
Display.getDefault().syncExec( new DialogRunnable("Host authenticity", "Host 
key verification failed.", DialogRunnable.ERROR));
                                                                }
                                                        } else {
                                                                String errorMsg 
= "";
@@ -280,8 +282,9 @@ public class ShellSession {
                                                                                
buffer.delete(0, buffer.length());
                                                                        }
                                                                }
-                                                               if (!accepted 
&& !errorMsg.isEmpty())
-                                                                       
MessageDialog.openError(null, "Host authenticity", errorMsg);
+                                                               if (!accepted 
&& !errorMsg.isEmpty()) {
+                                                                       
Display.getDefault().syncExec( new DialogRunnable("Host authenticity", 
errorMsg, DialogRunnable.ERROR));
+                                                               }
                                                        }
                                                        loadKeysMatch = true;
                                                        break;
-- 
1.7.9.5

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to