use of javafx.concurrent.Task in project jgnash by ccavanaugh.
the class BudgetViewController method handleExportAction.
@FXML
private void handleExportAction() {
Objects.requireNonNull(budgetTableController);
final Preferences pref = Preferences.userNodeForPackage(BudgetViewController.class);
final FileChooser fileChooser = new FileChooser();
final File initialDirectory = new File(pref.get(EXPORT_DIR, System.getProperty("user.home")));
// Protect against an IllegalArgumentException
if (initialDirectory.isDirectory()) {
fileChooser.setInitialDirectory(initialDirectory);
}
fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter(resources.getString("Label.SpreadsheetFiles") + " (*.xls, *.xlsx)", "*.xls", "*.xlsx"));
final File file = fileChooser.showSaveDialog(MainView.getPrimaryStage());
if (file != null) {
pref.put(EXPORT_DIR, file.getParentFile().getAbsolutePath());
final Task<String> exportTask = new Task<>() {
@Override
protected String call() {
updateMessage(resources.getString("Message.PleaseWait"));
updateProgress(-1, Long.MAX_VALUE);
return BudgetResultsExport.exportBudgetResultsModel(file.toPath(), budgetTableController.getBudgetResultsModel());
}
};
new Thread(exportTask).start();
StaticUIMethods.displayTaskProgress(exportTask);
}
}
use of javafx.concurrent.Task in project jgnash by ccavanaugh.
the class DefaultCurrencyAction method showAndWait.
public static void showAndWait() {
final Task<List<CurrencyNode>> task = new Task<>() {
final ResourceBundle resources = ResourceUtils.getBundle();
private List<CurrencyNode> currencyNodeList;
@Override
protected List<CurrencyNode> call() {
final Engine engine = EngineFactory.getEngine(EngineFactory.DEFAULT);
Objects.requireNonNull(engine);
currencyNodeList = engine.getCurrencies();
return currencyNodeList;
}
@Override
protected void succeeded() {
super.succeeded();
JavaFXUtils.runLater(() -> {
final Engine engine = EngineFactory.getEngine(EngineFactory.DEFAULT);
Objects.requireNonNull(engine);
final ChoiceDialog<CurrencyNode> dialog = new ChoiceDialog<>(engine.getDefaultCurrency(), currencyNodeList);
dialog.setTitle(resources.getString("Title.SelDefCurr"));
dialog.setContentText(resources.getString("Title.SelDefCurr"));
final Optional<CurrencyNode> optional = dialog.showAndWait();
optional.ifPresent(currencyNode -> {
engine.setDefaultCurrency(currencyNode);
JavaFXUtils.runLater(() -> StaticUIMethods.displayMessage(resources.getString("Message.CurrChange") + " " + engine.getDefaultCurrency().getSymbol()));
});
});
}
};
new Thread(task).start();
}
use of javafx.concurrent.Task in project jgnash by ccavanaugh.
the class DefaultLocaleAction method showAndWait.
public static void showAndWait() {
final Task<Collection<LocaleObject>> task = new Task<>() {
final ResourceBundle resources = ResourceUtils.getBundle();
private Collection<LocaleObject> localeObjects;
@Override
protected Collection<LocaleObject> call() {
localeObjects = new ArrayList<>(LocaleObject.getLocaleObjects());
return localeObjects;
}
@Override
protected void succeeded() {
super.succeeded();
JavaFXUtils.runLater(() -> {
final ChoiceDialog<LocaleObject> dialog = new ChoiceDialog<>(new LocaleObject(Locale.getDefault()), localeObjects);
dialog.setTitle(resources.getString("Title.SelDefLocale"));
dialog.setContentText(resources.getString("Title.SelDefLocale"));
final Optional<LocaleObject> optional = dialog.showAndWait();
optional.ifPresent(localeObject -> {
ResourceUtils.setLocale(localeObject.getLocale());
JavaFXUtils.runLater(() -> StaticUIMethods.displayMessage(localeObject + "\n" + resources.getString("Message.RestartLocale")));
});
});
}
};
new Thread(task).start();
}
use of javafx.concurrent.Task in project Entitas-Java by Rubentxu.
the class CodeGeneratorApp method handleGenerate.
@FXML
public void handleGenerate(ActionEvent actionEvent) throws IOException {
result.setText("");
progress.setVisible(true);
result.setText("Generating...");
if (props != null)
saveProperties();
// loads the items at another thread, asynchronously
Task loader = new Task<List<CodeGenFile>>() {
{
setOnSucceeded(workerStateEvent -> {
progress.setVisible(false);
result.setText("Success");
});
setOnFailed(workerStateEvent -> {
result.setText("Failed");
getException().printStackTrace();
});
}
@Override
protected List<CodeGenFile> call() throws Exception {
List<ICodeGenerator> codeGenerators = new ArrayList<>();
if (componentsGenerator.isSelected())
codeGenerators.add(new EntityGenerator());
if (componentIndicesGenerator.isSelected())
codeGenerators.add(new ComponentIndicesGenerator());
if (contextsGenerator.isSelected())
codeGenerators.add(new ContextGenerator());
codeGenerators.add(new MatcherGenerator());
codeGenerators.add(new EntitasGenerator());
TypeReflectionProvider provider = new TypeReflectionProvider(fieldComponentFolder.getText());
CodeGeneratorOld generator = new CodeGeneratorOld();
return generator.generate(provider, fieldGeneratedFolder.getText(), codeGenerators);
}
};
Thread loadingThread = new Thread(loader, "generated-loader");
loadingThread.setDaemon(true);
loadingThread.start();
}
use of javafx.concurrent.Task in project trex-stateless-gui by cisco-system-traffic-generator.
the class PortLayerConfiguration method runPingCmd.
private void runPingCmd(Event event) {
if (model.getPortStatus().equalsIgnoreCase("tx")) {
guiLogger.appendText(LogType.ERROR, "Port " + model.getIndex() + " is in TX mode. Please stop traffic first.");
return;
}
if (Strings.isNullOrEmpty(pingDestination.getText())) {
guiLogger.appendText(LogType.ERROR, "Empty ping destination address.");
return;
}
final String targetIP = pingDestination.getText();
if (!targetIP.contains(":") && !model.getL3LayerConfiguration().getState().equalsIgnoreCase("resolved")) {
guiLogger.appendText(LogType.ERROR, "ARP resolution required. Configure L3IPv4 mode properly.");
return;
}
pingCommandBtn.setDisable(true);
Task<Void> pingTask = new Task<Void>() {
@Override
public Void call() {
TRexClient trexClient = ConnectionManager.getInstance().getTrexClient();
trexClient.serviceMode(model.getIndex(), true);
guiLogger.appendText(LogType.PING, " Start ping " + targetIP);
AsyncResponseManager.getInstance().muteLogger();
AsyncResponseManager.getInstance().suppressIncomingEvents(true);
try {
int icmp_id = new Random().nextInt(100);
for (int icmp_sec = 1; icmp_sec < 6; icmp_sec++) {
EthernetPacket reply = null;
if (targetIP.contains(":")) {
// IPv6
reply = trexClient.sendIcmpV6Echo(model.getIndex(), targetIP, icmp_id, icmp_sec, 2);
if (reply != null) {
IcmpV6CommonPacket icmpV6CommonPacket = reply.get(IcmpV6CommonPacket.class);
IcmpV6Type icmpReplyType = icmpV6CommonPacket.getHeader().getType();
String msg = null;
if (IcmpV6Type.ECHO_REPLY.equals(icmpReplyType)) {
msg = " Reply from " + targetIP + " size=" + reply.getRawData().length + " icmp_sec=" + icmp_sec;
} else if (IcmpV6Type.DESTINATION_UNREACHABLE.equals(icmpReplyType)) {
msg = " Destination host unreachable";
}
guiLogger.appendText(LogType.PING, msg);
} else {
guiLogger.appendText(LogType.PING, "Request timeout.");
}
} else {
// IPv4
reply = trexClient.sendIcmpEcho(model.getIndex(), targetIP, icmp_id, icmp_sec, 1000);
if (reply != null) {
IpV4Packet ip = reply.get(IpV4Packet.class);
String ttl = String.valueOf(ip.getHeader().getTtlAsInt());
IcmpV4CommonPacket echoReplyPacket = reply.get(IcmpV4CommonPacket.class);
IcmpV4Type replyType = echoReplyPacket.getHeader().getType();
if (IcmpV4Type.ECHO_REPLY.equals(replyType)) {
guiLogger.appendText(LogType.PING, " Reply from " + targetIP + " size=" + reply.getRawData().length + " ttl=" + ttl + " icmp_sec=" + icmp_sec);
} else if (IcmpV4Type.DESTINATION_UNREACHABLE.equals(replyType)) {
guiLogger.appendText(LogType.PING, " Destination host unreachable");
}
} else {
guiLogger.appendText(LogType.PING, " Request timeout for icmp_seq " + icmp_sec);
}
}
}
guiLogger.appendText(LogType.PING, " Ping finished.");
} catch (UnknownHostException e) {
guiLogger.appendText(LogType.PING, " Unknown host");
} catch (ServiceModeRequiredException e) {
e.printStackTrace();
} finally {
pingCommandBtn.setDisable(false);
trexClient.serviceMode(model.getIndex(), false);
AsyncResponseManager.getInstance().unmuteLogger();
AsyncResponseManager.getInstance().suppressIncomingEvents(false);
}
return null;
}
};
pingTask.setOnSucceeded(e -> pingCommandBtn.setDisable(false));
new Thread(pingTask).start();
}
Aggregations