use of org.apache.pivot.util.concurrent.TaskListener in project pivot by apache.
the class StockTrackerWindow method refreshTable.
private void refreshTable() {
// Abort any outstanding query
if (getQuery != null) {
synchronized (getQuery) {
if (getQuery.isPending()) {
getQuery.abort();
}
}
}
// Execute the query
if (symbols.getLength() > 0) {
getQuery = new GetQuery(SERVICE_HOSTNAME, SERVICE_PATH);
StringBuilder symbolsParameterBuilder = new StringBuilder();
for (int i = 0, n = symbols.getLength(); i < n; i++) {
if (i > 0) {
symbolsParameterBuilder.append(",");
}
symbolsParameterBuilder.append(symbols.get(i));
}
// Format:
// s - symbol
// n - company name
// l1 - most recent value
// o - opening value
// h - high value
// g - low value
// c1 - change percentage
// v - volume
String symbolsParameter = symbolsParameterBuilder.toString();
getQuery.getParameters().put("s", symbolsParameter);
getQuery.getParameters().put("f", "snl1ohgc1v");
CSVSerializer quoteSerializer = new CSVSerializer(StockQuote.class);
quoteSerializer.setKeys("symbol", "companyName", "value", "openingValue", "highValue", "lowValue", "change", "volume");
getQuery.setSerializer(quoteSerializer);
getQuery.execute(new TaskAdapter<>(new TaskListener<Object>() {
@Override
public void taskExecuted(Task<Object> task) {
if (task == getQuery) {
@SuppressWarnings("unchecked") List<Object> quotes = (List<Object>) task.getResult();
// Preserve any existing sort and selection
Sequence<?> selectedStocks = stocksTableView.getSelectedRows();
@SuppressWarnings("unchecked") List<Object> tableData = (List<Object>) stocksTableView.getTableData();
Comparator<Object> comparator = tableData.getComparator();
quotes.setComparator(comparator);
stocksTableView.setTableData(quotes);
if (selectedStocks.getLength() > 0) {
// Select current indexes of selected stocks
for (int i = 0, n = selectedStocks.getLength(); i < n; i++) {
Object selectedStock = selectedStocks.get(i);
int index = 0;
for (Object stock : stocksTableView.getTableData()) {
String symbol = JSON.get(stock, "symbol");
String selectedSymbol = JSON.get(selectedStock, "symbol");
if (symbol.equals(selectedSymbol)) {
stocksTableView.addSelectedIndex(index);
break;
}
index++;
}
}
} else {
if (quotes.getLength() > 0) {
stocksTableView.setSelectedIndex(0);
}
}
refreshDetail();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM, Locale.getDefault());
lastUpdateLabel.setText(dateFormat.format(new Date()));
getQuery = null;
}
}
@Override
public void executeFailed(Task<Object> task) {
if (task == getQuery) {
System.err.println(task.getFault());
getQuery = null;
}
}
}));
}
}
use of org.apache.pivot.util.concurrent.TaskListener in project pivot by apache.
the class SplashScreenTest method startup.
@Override
public void startup(final Display display, final Map<String, String> properties) throws Exception {
File splashFile = new File("org/apache/pivot/tests/splash.png");
System.out.println("Startup the application at " + new Date());
System.out.println("To show the Splash Screen, remember to run as a Standard Java Application this way:\n" + "java -splash:" + splashFile.getPath() + " <mainclassname> --preserveSplashScreen=true\n" + "or no splash screen will be shown.");
// Create a Task that will load a BXML file and simulate some other
// processing while updating a progress meter on the SplashScreen
final Task<Void> prepareApplicationTask = new Task<Void>() {
final SplashScreenProgressOverlay progressOverlay = new SplashScreenProgressOverlay();
@Override
public Void execute() throws TaskExecutionException {
// Load the main BXML
progressOverlay.increment(0);
loadBXML(display, 0.1);
// Simulate other tasks until the progress meter has been filled
final Random random = new Random();
while (progressOverlay.getPercentage() < 1.0) {
// Short random sleep to simulate some processing
try {
Thread.sleep(random.nextInt(50) + 100);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Update the progress meter by a random amount
progressOverlay.increment((1 + random.nextInt(10)) / 100.0);
}
return null;
}
// Load the Pivot UI
private void loadBXML(final Display displayArgument, final double weight) {
try {
ApplicationContext.queueCallback(() -> {
Window window = null;
try {
window = (Window) new BXMLSerializer().readObject(this.getClass().getResource("splash.bxml"));
} catch (Exception e) {
throw new RuntimeException(e);
}
if (window != null) {
window.open(displayArgument);
progressOverlay.increment(weight);
}
});
} catch (Exception e) {
throw new RuntimeException(e);
}
}
};
// Hide the SplashScreen when the Task finishes by making the Pivot host
// window visible.
final TaskListener<Void> taskListener = new TaskListener<Void>() {
@Override
public void taskExecuted(final Task<Void> task) {
finished();
}
@Override
public void executeFailed(final Task<Void> task) {
System.err.println(String.format("Failed\n%s", task.getFault()));
task.getFault().printStackTrace();
finished();
}
private void finished() {
DesktopApplicationContext.replaceSplashScreen(display);
}
};
// Run the Task asynchronously
prepareApplicationTask.execute(new TaskAdapter<>(taskListener));
}
use of org.apache.pivot.util.concurrent.TaskListener in project pivot by apache.
the class BackgroundTasks method initialize.
@Override
public void initialize(Map<String, Object> namespace, URL location, Resources resources) {
activityIndicator = (ActivityIndicator) namespace.get("activityIndicator");
executeSynchronousButton = (PushButton) namespace.get("executeSynchronousButton");
executeAsynchronousButton = (PushButton) namespace.get("executeAsynchronousButton");
executeSynchronousButton.getButtonPressListeners().add(new ButtonPressListener() {
@Override
public void buttonPressed(Button button) {
activityIndicator.setActive(true);
System.out.println("Starting synchronous task execution.");
SleepTask sleepTask = new SleepTask();
String result = null;
try {
result = sleepTask.execute();
} catch (TaskExecutionException exception) {
System.err.println(exception);
}
System.out.println("Synchronous task execution complete: \"" + result + "\"");
activityIndicator.setActive(false);
}
});
executeAsynchronousButton.getButtonPressListeners().add(new ButtonPressListener() {
@Override
public void buttonPressed(Button button) {
activityIndicator.setActive(true);
setEnabled(false);
System.out.println("Starting asynchronous task execution.");
SleepTask sleepTask = new SleepTask();
TaskListener<String> taskListener = new TaskListener<String>() {
@Override
public void taskExecuted(Task<String> task) {
activityIndicator.setActive(false);
setEnabled(true);
System.out.println("Synchronous task execution complete: \"" + task.getResult() + "\"");
}
@Override
public void executeFailed(Task<String> task) {
activityIndicator.setActive(false);
setEnabled(true);
System.err.println(task.getFault());
}
};
sleepTask.execute(new TaskAdapter<>(taskListener));
}
});
}
use of org.apache.pivot.util.concurrent.TaskListener in project pivot by apache.
the class SuggestionDemo method getSuggestions.
private void getSuggestions() {
if (suggestionQuery != null && suggestionQuery.isPending()) {
suggestionQuery.abort();
}
// Get the query text
String text;
try {
text = URLEncoder.encode(textInput.getText(), "UTF-8");
} catch (UnsupportedEncodingException exception) {
throw new RuntimeException(exception);
}
// Create query
suggestionQuery = new GetQuery("search.yahooapis.com", "/WebSearchService/V1/relatedSuggestion");
suggestionQuery.getParameters().put("appid", getClass().getName());
suggestionQuery.getParameters().put("query", text);
suggestionQuery.getParameters().put("output", "json");
suggestionQuery.execute(new TaskAdapter<>(new TaskListener<Object>() {
@Override
public void taskExecuted(Task<Object> task) {
if (task == suggestionQuery) {
List<?> suggestions = null;
Object result = JSON.get(task.getResult(), "ResultSet.Result");
if (result instanceof List<?>) {
suggestions = (List<?>) result;
}
if (suggestions == null || suggestions.getLength() == 0) {
suggestionPopup.close();
} else {
suggestionPopup.setSuggestionData(suggestions);
suggestionPopup.open(textInput, new SuggestionPopupCloseListener() {
@Override
public void suggestionPopupClosed(SuggestionPopup suggestionPopupArgument) {
if (suggestionPopupArgument.getResult()) {
String textLocal;
try {
textLocal = URLEncoder.encode(textInput.getText(), "UTF-8");
} catch (UnsupportedEncodingException exception) {
throw new RuntimeException(exception);
}
String location = "http://search.yahoo.com/search?p=" + textLocal;
try {
Desktop.getDesktop().browse(new URI(location));
} catch (IOException exception) {
System.err.println(exception);
} catch (URISyntaxException exception) {
System.err.println(exception);
}
}
}
});
}
activityIndicator.setActive(false);
suggestionQuery = null;
}
}
@Override
public void executeFailed(Task<Object> task) {
if (task == suggestionQuery) {
System.err.println(task.getFault());
activityIndicator.setActive(false);
suggestionQuery = null;
}
}
}));
activityIndicator.setActive(true);
}
use of org.apache.pivot.util.concurrent.TaskListener in project pivot by apache.
the class SearchDemo method updateArtwork.
/**
* Updates the artwork to reflect the current selection.
*/
public void updateArtwork() {
@SuppressWarnings("unchecked") Map<String, Object> result = (Map<String, Object>) resultsTableView.getSelectedRow();
URL artworkURL = null;
if (result != null) {
try {
artworkURL = new URL((String) result.get("artworkUrl100"));
} catch (MalformedURLException exception) {
// ignore exception
}
}
if (artworkURL == null) {
artworkImageView.setImage((Image) null);
} else {
Image.load(artworkURL, new TaskAdapter<>(new TaskListener<Image>() {
@Override
public void taskExecuted(Task<Image> task) {
artworkImageView.setImage(task.getResult());
}
@Override
public void executeFailed(Task<Image> task) {
artworkImageView.setImage((Image) null);
}
}));
}
previewButton.setEnabled(result != null);
}
Aggregations