Search in sources :

Example 21 with Task

use of javafx.concurrent.Task in project latexdraw by arnobl.

the class LaTeXDraw method start.

@Override
public void start(final Stage stage) {
    final Task<Void> task = new Task<Void>() {

        @Override
        protected Void call() throws IOException {
            updateProgress(0.1, 1d);
            Platform.runLater(() -> {
                mainStage = new Stage(StageStyle.DECORATED);
                mainStage.setIconified(true);
                mainStage.setTitle(LABEL_APP);
            });
            final Parent root = // NON-NLS
            FXMLLoader.load(// NON-NLS
            getClass().getResource("/fxml/UI.fxml"), // NON-NLS
            LangTool.INSTANCE.getBundle(), new LatexdrawBuilderFactory(injector), instanceCallBack);
            updateProgress(0.6, 1d);
            final Scene scene = new Scene(root);
            updateProgress(0.7, 1d);
            // NON-NLS
            scene.getStylesheets().add("css/style.css");
            updateProgress(0.8, 1d);
            Platform.runLater(() -> {
                mainStage.setScene(scene);
                updateProgress(0.9, 1d);
                mainStage.show();
                registerScene(scene);
                final PreferencesSetter prefSetter = injector.getInstance(PreferencesSetter.class);
                prefSetter.readXMLPreferences();
                // Preventing the stage to close automatically.
                mainStage.addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, WindowEvent::consume);
                // NON-NLS
                mainStage.getIcons().add(new Image("/res/LaTeXDrawIcon.png"));
                mainStage.centerOnScreen();
                injector.getInstance(MagneticGrid.class).update();
                injector.getInstance(TabSelector.class).centreViewport();
                injector.getInstance(Canvas.class).requestFocus();
                // Checking a new version if required.
                if (VersionChecker.WITH_UPDATE && injector.getInstance(PreferencesSetter.class).isVersionCheckEnable()) {
                    new Thread(new VersionChecker(injector.getInstance(StatusBarController.class))).start();
                }
                setModified(false);
            });
            return null;
        }
    };
    task.setOnFailed(BadaboomCollector.INSTANCE);
    showSplash(stage, task);
    new Thread(task).start();
}
Also used : Task(javafx.concurrent.Task) Parent(javafx.scene.Parent) PreferencesSetter(net.sf.latexdraw.instruments.PreferencesSetter) TabSelector(net.sf.latexdraw.instruments.TabSelector) Canvas(net.sf.latexdraw.view.jfx.Canvas) StatusBarController(net.sf.latexdraw.instruments.StatusBarController) Scene(javafx.scene.Scene) Image(javafx.scene.image.Image) VersionChecker(net.sf.latexdraw.util.VersionChecker) WindowEvent(javafx.stage.WindowEvent) Stage(javafx.stage.Stage) MagneticGrid(net.sf.latexdraw.view.MagneticGrid)

Example 22 with Task

use of javafx.concurrent.Task in project tokentool by RPTools.

the class TokenTool_Controller method cacheOverlays.

private TreeItem<Path> cacheOverlays(File dir, TreeItem<Path> parent, int THUMB_SIZE) throws IOException {
    log.info("Caching " + dir.getAbsolutePath());
    TreeItem<Path> root = new TreeItem<>(dir.toPath());
    root.setExpanded(false);
    File[] files = dir.listFiles();
    final String I18N_CACHE_TEXT = I18N.getString("TokenTool.treeview.caching");
    final Task<Void> task = new Task<Void>() {

        @Override
        protected Void call() throws Exception {
            for (File file : files) {
                if (loadOverlaysThread.isInterrupted())
                    break;
                if (file.isDirectory()) {
                    cacheOverlays(file, root, THUMB_SIZE);
                } else {
                    Path filePath = file.toPath();
                    TreeItem<Path> imageNode = new TreeItem<>(filePath, ImageUtil.getOverlayThumb(new ImageView(), filePath));
                    root.getChildren().add(imageNode);
                    loadCount.getAndIncrement();
                    overlayTreeProgressBar.progressProperty().set(loadCount.doubleValue() / overlayCount);
                }
            }
            if (parent != null) {
                // When we show the overlay image, the TreeItem value is empty so we need to
                // sort those to the bottom for a cleaner look and keep sub dir's at the top.
                // If a node has no children then it's an overlay, otherwise it's a directory...
                root.getChildren().sort(new Comparator<TreeItem<Path>>() {

                    @Override
                    public int compare(TreeItem<Path> o1, TreeItem<Path> o2) {
                        if (o1.getChildren().size() == 0 && o2.getChildren().size() == 0)
                            return 0;
                        else if (o1.getChildren().size() == 0)
                            return Integer.MAX_VALUE;
                        else if (o2.getChildren().size() == 0)
                            return Integer.MIN_VALUE;
                        else
                            return o1.getValue().compareTo(o2.getValue());
                    }
                });
                parent.getChildren().add(root);
                parent.getChildren().sort(new Comparator<TreeItem<Path>>() {

                    @Override
                    public int compare(TreeItem<Path> o1, TreeItem<Path> o2) {
                        if (o1.getChildren().size() == 0 && o2.getChildren().size() == 0)
                            return 0;
                        else if (o1.getChildren().size() == 0)
                            return Integer.MAX_VALUE;
                        else if (o2.getChildren().size() == 0)
                            return Integer.MIN_VALUE;
                        else
                            return o1.getValue().compareTo(o2.getValue());
                    }
                });
            }
            return null;
        }
    };
    overlayTreeProgressBar.progressProperty().addListener(observable -> {
        Platform.runLater(() -> progressBarLabel.setText(I18N_CACHE_TEXT + Math.round(overlayCount - loadCount.doubleValue()) + "..."));
    });
    // Only add this listener to the parent task so it's only called once
    if (parent == null) {
        overlayTreeProgressBar.progressProperty().addListener(observable -> {
            Platform.runLater(() -> {
                if (overlayTreeProgressBar.getProgress() >= 1)
                    treeViewFinish();
            });
        });
    }
    executorService.execute(task);
    return root;
}
Also used : Path(java.nio.file.Path) Task(javafx.concurrent.Task) TreeItem(javafx.scene.control.TreeItem) ImageView(javafx.scene.image.ImageView) File(java.io.File)

Example 23 with Task

use of javafx.concurrent.Task in project tokentool by RPTools.

the class ManageOverlays_Controller method loadImages.

private void loadImages(File dir) {
    // Clear Details panel
    clearDetails();
    currentDirectory = dir;
    File[] files = dir.listFiles(ImageUtil.SUPPORTED_FILENAME_FILTER);
    Task<Void> task = new Task<Void>() {

        @Override
        public Void call() {
            for (File file : files) {
                Path filePath = file.toPath();
                if (loadOverlaysThread.isInterrupted()) {
                    Platform.runLater(() -> overlayViewFlowPane.getChildren().clear());
                    break;
                }
                try {
                    ToggleButton overlayButton = new ToggleButton();
                    ImageView imageViewNode = ImageUtil.getOverlayThumb(new ImageView(), filePath);
                    overlayButton.getStyleClass().add("overlay-toggle-button");
                    overlayButton.setGraphic(imageViewNode);
                    overlayButton.setUserData(file);
                    overlayButton.setToggleGroup(overlayToggleGroup);
                    overlayButton.addEventHandler(ActionEvent.ACTION, event -> {
                        // No modifier keys used so add toggle group back to all buttons
                        resetToggleGroup();
                        // Also set button to selected due to resetting toggle groups & no unselecting needed, makes for better interface IMO
                        overlayButton.setSelected(true);
                        // Update the Details panel with the last selected overlay
                        File overlayFile = (File) overlayButton.getUserData();
                        updateDetails(overlayFile, (ImageView) overlayButton.getGraphic(), overlayButton.isSelected());
                        // Consume the event, no more logic needed
                        event.consume();
                    });
                    overlayButton.setOnMouseClicked(new EventHandler<MouseEvent>() {

                        @Override
                        public void handle(MouseEvent event) {
                            // Allow multiple selections if shortcutKey+left_mouse is pressed
                            if (event.getButton().equals(MouseButton.PRIMARY) && event.isShortcutDown()) {
                                // Update the Details panel with the last selected overlay
                                File overlayFile = (File) overlayButton.getUserData();
                                updateDetails(overlayFile, (ImageView) overlayButton.getGraphic(), true);
                                // Remove the toggle group to allow multiple toggle button selection
                                overlayButton.setToggleGroup(null);
                                // Select the button
                                overlayButton.setSelected(true);
                                // Consume the event, no more logic needed
                                event.consume();
                            }
                        }
                    });
                    Platform.runLater(() -> overlayViewFlowPane.getChildren().add(overlayButton));
                } catch (IOException e) {
                    log.error("Loading image: " + filePath.getFileName(), e);
                }
            }
            return null;
        }
    };
    loadOverlaysThread.interrupt();
    executorService.execute(task);
}
Also used : Path(java.nio.file.Path) Task(javafx.concurrent.Task) ToggleButton(javafx.scene.control.ToggleButton) MouseEvent(javafx.scene.input.MouseEvent) ImageView(javafx.scene.image.ImageView) IOException(java.io.IOException) File(java.io.File)

Example 24 with Task

use of javafx.concurrent.Task in project bisq-desktop by bisq-network.

the class VerifyTask method call.

/**
 * Starts the task and therefore the actual download.
 *
 * @return A reference to the created file or {@code null} if no file could be found at the provided URL
 * @throws IOException Forwarded exceotions from HttpURLConnection and file handling methods
 */
@Override
protected List<BisqInstaller.VerifyDescriptor> call() throws IOException {
    log.debug("VerifyTask started...");
    Optional<BisqInstaller.FileDescriptor> installer = fileDescriptors.stream().filter(fileDescriptor -> BisqInstaller.DownloadType.INSTALLER.equals(fileDescriptor.getType())).findFirst();
    if (!installer.isPresent()) {
        log.error("No installer file found.");
        return Lists.newArrayList();
    }
    Optional<BisqInstaller.FileDescriptor> signingKeyOptional = fileDescriptors.stream().filter(fileDescriptor -> BisqInstaller.DownloadType.SIGNING_KEY.equals(fileDescriptor.getType())).findAny();
    List<BisqInstaller.VerifyDescriptor> verifyDescriptors = Lists.newArrayList();
    if (signingKeyOptional.isPresent()) {
        final BisqInstaller.FileDescriptor signingKeyFD = signingKeyOptional.get();
        StringBuilder sb = new StringBuilder();
        try {
            Scanner scanner = new Scanner(new FileReader(signingKeyFD.getSaveFile()));
            while (scanner.hasNext()) {
                sb.append(scanner.next());
            }
            scanner.close();
        } catch (Exception e) {
            log.error(e.toString());
            e.printStackTrace();
            BisqInstaller.VerifyDescriptor.VerifyDescriptorBuilder verifyDescriptorBuilder = BisqInstaller.VerifyDescriptor.builder();
            verifyDescriptorBuilder.verifyStatusEnum(BisqInstaller.VerifyStatusEnum.FAIL);
            verifyDescriptors.add(verifyDescriptorBuilder.build());
            return verifyDescriptors;
        }
        String signingKey = sb.toString();
        List<BisqInstaller.FileDescriptor> sigs = fileDescriptors.stream().filter(fileDescriptor -> BisqInstaller.DownloadType.SIG.equals(fileDescriptor.getType())).collect(Collectors.toList());
        // iterate all signatures available to us
        for (BisqInstaller.FileDescriptor sig : sigs) {
            BisqInstaller.VerifyDescriptor.VerifyDescriptorBuilder verifyDescriptorBuilder = BisqInstaller.VerifyDescriptor.builder().sigFile(sig.getSaveFile());
            // Sigs are linked to keys, extract all keys which have the same id
            List<BisqInstaller.FileDescriptor> keys = fileDescriptors.stream().filter(keyDescriptor -> BisqInstaller.DownloadType.KEY.equals(keyDescriptor.getType())).filter(keyDescriptor -> sig.getId().equals(keyDescriptor.getId())).collect(Collectors.toList());
            // iterate all keys which have the same id
            for (BisqInstaller.FileDescriptor key : keys) {
                if (signingKey.equals(key.getId())) {
                    verifyDescriptorBuilder.keyFile(key.getSaveFile());
                    try {
                        verifyDescriptorBuilder.verifyStatusEnum(BisqInstaller.verifySignature(key.getSaveFile(), sig.getSaveFile(), installer.get().getSaveFile()));
                        updateMessage(key.getFileName());
                    } catch (Exception e) {
                        verifyDescriptorBuilder.verifyStatusEnum(BisqInstaller.VerifyStatusEnum.FAIL);
                        log.error(e.toString());
                        e.printStackTrace();
                    }
                    verifyDescriptors.add(verifyDescriptorBuilder.build());
                } else {
                    log.trace("key not matching the defined in signingKey. We try the next.");
                }
            }
        }
    } else {
        log.error("signingKey is not found");
        BisqInstaller.VerifyDescriptor.VerifyDescriptorBuilder verifyDescriptorBuilder = BisqInstaller.VerifyDescriptor.builder();
        verifyDescriptorBuilder.verifyStatusEnum(BisqInstaller.VerifyStatusEnum.FAIL);
        verifyDescriptors.add(verifyDescriptorBuilder.build());
    }
    return verifyDescriptors;
}
Also used : List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) Task(javafx.concurrent.Task) Lists(com.google.common.collect.Lists) Getter(lombok.Getter) Optional(java.util.Optional) Scanner(java.util.Scanner) IOException(java.io.IOException) FileReader(java.io.FileReader) Collectors(java.util.stream.Collectors) Scanner(java.util.Scanner) IOException(java.io.IOException) FileReader(java.io.FileReader)

Example 25 with Task

use of javafx.concurrent.Task in project jgnash by ccavanaugh.

the class RegisterActions method exportTransactions.

static void exportTransactions(final Account account, final LocalDate startDate, final LocalDate endDate) {
    final ResourceBundle resources = ResourceUtils.getBundle();
    final Preferences pref = Preferences.userNodeForPackage(RegisterActions.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.CsvFiles") + " (*.csv)", "*.csv"), new FileChooser.ExtensionFilter(resources.getString("Label.OfxFiles") + " (*.ofx)", "*.ofx"), new FileChooser.ExtensionFilter(resources.getString("Label.SpreadsheetFiles") + " (*.xls)", "*.xls"), new FileChooser.ExtensionFilter(resources.getString("Label.SpreadsheetFiles") + " (*.xlsx)", "*.xlsx"));
    final File file = fileChooser.showSaveDialog(MainView.getPrimaryStage());
    final File exportFile;
    if (file != null) {
        if (!FileUtils.fileHasExtension(file.getName())) {
            // fix up the file name if the user did not specify it
            final String fileExtension = fileChooser.getSelectedExtensionFilter().getExtensions().get(0).substring(1);
            exportFile = new File(FileUtils.stripFileExtension(file.getAbsolutePath()) + fileExtension);
        } else {
            exportFile = file;
        }
        pref.put(EXPORT_DIR, exportFile.getParentFile().getAbsolutePath());
        final Task<Void> exportTask = new Task<>() {

            @Override
            protected Void call() {
                updateMessage(resources.getString("Message.PleaseWait"));
                updateProgress(-1, Long.MAX_VALUE);
                if (OFX.equals(FileUtils.getFileExtension(exportFile.getName()))) {
                    final OfxExport export = new OfxExport(account, startDate, endDate, exportFile);
                    export.exportAccount();
                } else if (FileUtils.getFileExtension(exportFile.getName()).contains(XLS)) {
                    final AbstractReportTableModel reportTableModel = AccountRegisterReport.createReportModel(account, startDate, endDate, false, "", "", true);
                    Workbook.export(reportTableModel, exportFile);
                } else {
                    CsvExport.exportAccount(account, startDate, endDate, exportFile.toPath());
                }
                return null;
            }
        };
        new Thread(exportTask).start();
        StaticUIMethods.displayTaskProgress(exportTask);
    }
}
Also used : Task(javafx.concurrent.Task) FileChooser(javafx.stage.FileChooser) ResourceBundle(java.util.ResourceBundle) OfxExport(jgnash.convert.exportantur.ofx.OfxExport) Preferences(java.util.prefs.Preferences) File(java.io.File) AbstractReportTableModel(jgnash.report.table.AbstractReportTableModel)

Aggregations

Task (javafx.concurrent.Task)30 FXML (javafx.fxml.FXML)9 File (java.io.File)8 List (java.util.List)5 IOException (java.io.IOException)4 Collectors (java.util.stream.Collectors)4 TRexClient (com.cisco.trex.stateless.TRexClient)3 ServiceModeRequiredException (com.cisco.trex.stateless.exception.ServiceModeRequiredException)3 FxUtil (com.kyj.fx.voeditor.visual.util.FxUtil)3 ValueUtil (com.kyj.fx.voeditor.visual.util.ValueUtil)3 ResourceBundle (java.util.ResourceBundle)3 Platform (javafx.application.Platform)3 ObservableList (javafx.collections.ObservableList)3 Node (javafx.scene.Node)3 Label (javafx.scene.control.Label)3 ImageView (javafx.scene.image.ImageView)3 Ipv6Node (com.cisco.trex.stateless.model.Ipv6Node)2 ActivePGIdsRPCResult (com.cisco.trex.stateless.model.stats.ActivePGIdsRPCResult)2 IPv6Host (com.cisco.trex.stl.gui.models.IPv6Host)2 DialogUtil (com.kyj.fx.voeditor.visual.util.DialogUtil)2