aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/connectbot/service/PromptHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/connectbot/service/PromptHelper.java')
-rw-r--r--src/org/connectbot/service/PromptHelper.java40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/org/connectbot/service/PromptHelper.java b/src/org/connectbot/service/PromptHelper.java
index 2fc5183..1523324 100644
--- a/src/org/connectbot/service/PromptHelper.java
+++ b/src/org/connectbot/service/PromptHelper.java
@@ -8,32 +8,32 @@ import android.os.Message;
/**
* Helps provide a relay for prompts and responses between a possible user
* interface and some underlying service.
- *
+ *
* @author jsharkey
*/
public class PromptHelper {
private final Object tag;
private Handler handler = null;
-
+
private Semaphore promptToken;
private Semaphore promptResponse;
-
+
public String promptHint = null;
public Object promptRequested = null;
-
+
private Object response = null;
-
+
public PromptHelper(Object tag) {
this.tag = tag;
-
+
// Threads must acquire this before they can send a prompt.
promptToken = new Semaphore(1);
-
+
// Responses will release this semaphore.
promptResponse = new Semaphore(0);
}
-
+
/**
* Register a user interface handler, if available.
@@ -50,7 +50,7 @@ public class PromptHelper {
response = value;
promptResponse.release();
}
-
+
/**
* Return the internal response value just before erasing and returning it.
*/
@@ -69,32 +69,32 @@ public class PromptHelper {
*/
private Object requestPrompt(String hint, Object type, boolean immediate) throws InterruptedException {
Object response = null;
-
+
if (immediate)
cancelPrompt();
-
+
promptToken.acquire();
try {
promptHint = hint;
promptRequested = type;
-
+
// notify any parent watching for live events
if (handler != null)
Message.obtain(handler, -1, tag).sendToTarget();
-
+
// acquire lock until user passes back value
promptResponse.acquire();
promptRequested = null;
-
+
response = popResponse();
} finally {
promptToken.release();
}
-
+
return response;
}
-
+
/**
* Request a string response from parent. This is a blocking call until user
* interface returns a value.
@@ -110,7 +110,7 @@ public class PromptHelper {
}
return value;
}
-
+
/**
* Convenience method for requestStringPrompt(String, boolean)
* @param hint prompt hint for user to answer
@@ -119,7 +119,7 @@ public class PromptHelper {
public String requestStringPrompt(String hint) {
return requestStringPrompt(hint, false);
}
-
+
/**
* Request a boolean response from parent. This is a blocking call until user
* interface returns a value.
@@ -135,7 +135,7 @@ public class PromptHelper {
}
return value;
}
-
+
/**
* Convenience method for requestBooleanPrompt(String, boolean)
* @param hint String to present to user in prompt
@@ -144,7 +144,7 @@ public class PromptHelper {
public Boolean requestBooleanPrompt(String hint) {
return requestBooleanPrompt(hint, false);
}
-
+
/**
* Cancel an in-progress prompt.
*/