Java 类javafx.concurrent.Worker 实例源码

项目:JavaFX-Web-Browser    文件:WebBrowserTabController.java   
@Override
public void changed(ObservableValue<? extends State> observable, State oldState, State newState) {
    if (newState == Worker.State.SUCCEEDED) {
        try {
            //Determine the full url
            String favIconFullURL = getHostName(webEngine.getLocation()) + "favicon.ico";
            //System.out.println(favIconFullURL)

            //Create HttpURLConnection 
            HttpURLConnection httpcon = (HttpURLConnection) new URL(favIconFullURL).openConnection();
            httpcon.addRequestProperty("User-Agent", "Mozilla/5.0");
            List<BufferedImage> image = ICODecoder.read(httpcon.getInputStream());

            //Set the favicon
            facIconImageView.setImage(SwingFXUtils.toFXImage(image.get(0), null));

        } catch (Exception ex) {
            //ex.printStackTrace()
            facIconImageView.setImage(null);
        }
    }
}
项目:ChessBot    文件:ChessBotAppSplash.java   
private void showSplash(final Stage initStage, Task<?> task, InitCompletionHandler initCompletionHandler) {
    progressText.textProperty().bind(task.messageProperty());
    loadProgress.progressProperty().bind(task.progressProperty());
    task.stateProperty().addListener((observableValue, oldState, newState) -> {
        if (newState == Worker.State.SUCCEEDED) {
            loadProgress.progressProperty().unbind();
            loadProgress.setProgress(1);
            initStage.toFront();
            FadeTransition fadeSplash = new FadeTransition(Duration.seconds(1.2), splashLayout);
            fadeSplash.setFromValue(1.0);
            fadeSplash.setToValue(0.0);
            fadeSplash.setOnFinished(actionEvent -> initStage.hide());
            fadeSplash.play();

            initCompletionHandler.complete();
        }
    });

    Scene splashScene = new Scene(splashLayout);
    initStage.initStyle(StageStyle.UNDECORATED);
    final Rectangle2D bounds = Screen.getPrimary().getBounds();
    initStage.setScene(splashScene);
    initStage.setX(bounds.getMinX() + bounds.getWidth() / 2 - SPLASH_WIDTH / 2);
    initStage.setY(bounds.getMinY() + bounds.getHeight() / 2 - SPLASH_HEIGHT / 2);
    initStage.show();
}
项目:Money-Manager    文件:TransactionHistoryController.java   
private void showHisoty() {
    debug = new HistorySearch(cmboHistoryMonth.getValue(), cmboFilterList.getValue());

    webEngine.getLoadWorker().stateProperty().addListener(
            new ChangeListener<Worker.State>() {
                @Override
                public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
                    if (newValue == Worker.State.SUCCEEDED) {
                        JSObject windowObject = (JSObject) webEngine.executeScript("window");
                        windowObject.setMember("HistorySearch", debug); // insert object
                        windowObject.call("ready"); // execute callback
                    }
                }
            }
        );
       URL url = getClass().getResource("/html/index.html");
       webEngine.load(url.toString());
}
项目:Money-Manager    文件:TransactionHistoryController.java   
@FXML
    private void btnGo(ActionEvent event) {
        historyByDate = new HistorySearchByDate(datePicker.getValue());

        webEngine.getLoadWorker().stateProperty().addListener(
                new ChangeListener<Worker.State>() {
                    @Override
                    public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
                        if (newValue == Worker.State.SUCCEEDED) {
                            JSObject windowObject = (JSObject) webEngine.executeScript("window");
                            windowObject.setMember("HistorySearchByDate", historyByDate); // insert object
                            windowObject.call("searchHistoryByDate"); // execute callback
                        }
                    }
                }
            );
        URL url = getClass().getResource("/html/index.html");
        webEngine.load(url.toString());

//        String url = getClass().getResource("../html/index.html").toExternalForm();
//        webEngine.load(url);
    }
项目:textmd    文件:EditorPane.java   
private void styleWebView(){
    webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
        Document doc = webEngine.getDocument();
        if (newState == Worker.State.SUCCEEDED && doc.getDocumentElement().getElementsByTagName("head").item(0) != null) {
            Node head = doc.getDocumentElement().getElementsByTagName("head").item(0);

            // Google prettify
            if(prettifyCode.get() || Settings.ALWAYS_PRETTIFY_CODE_VIEW) {
                Element scriptNode = doc.createElement("script");
                scriptNode.setAttribute("src", "https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js");
                head.appendChild(scriptNode);
            }

            // Inject css styles
            Element styleNode = doc.createElement("style");
            Text styleContent = doc.createTextNode(Utils.getWebViewCss(prettifyCode.get() || Settings.ALWAYS_PRETTIFY_CODE_VIEW ? "#f2f2f2" : "#545454"));

            styleNode.appendChild(styleContent);
            head.appendChild(styleNode);
            currentHtmlWithStyle = webEngine.executeScript("document.documentElement.innerHTML").toString();
        }
    });
}
项目:Netkit    文件:Netkit.java   
protected void initialize(boolean sync) {
    addJavascriptInterface("console", console);
    addJavascriptInterface("NetkitGateway", gateway);

    AtomicBoolean done = new AtomicBoolean(false);
    engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        @Override
        public void changed(ObservableValue<? extends Worker.State> observableValue, Worker.State oldValue, Worker.State newValue) {
            if (newValue == Worker.State.SUCCEEDED) {
                done.set(true);
            }
        }
    });

    String netkitView = IOUtils.convertStreamToString(Netkit.class.getResourceAsStream("/netkit-view.html"));
    engine.loadContent(netkitView);

    if (!done.get() && sync) {
        WebViewUtils.wait(view);
    }
}
项目:willow-browser    文件:LoadingProgressDisplay.java   
/**
 * Creates a UI display monitor for provided worker.
 *
 * Assumes the worker is reporting progress as work done on a scale from 0 to 100 (other values indicate indeterminate progress).
 *
 * @param worker the worker whose progress is to be monitored and displayed.
 */
public LoadingProgressDisplay(Worker worker) {
    setMaxWidth(Double.MAX_VALUE);

    ColorAdjust bleach = new ColorAdjust();
    bleach.setSaturation(-0.6);
    setEffect(bleach);

    HBox.setHgrow(this, Priority.ALWAYS);

    visibleProperty().bind(worker.runningProperty());

    // as the webview load progresses update progress.
    worker.workDoneProperty().addListener((observableValue, oldNumber, newNumber) -> {
        if (newNumber == null) newNumber = -1.0;
        final double newValue = newNumber.doubleValue();
        if (newValue < 0.0 || newValue > 100.0) {
            setProgress(ProgressBar.INDETERMINATE_PROGRESS);
        }
        setProgress(newValue / 100.0);
    });
}
项目:semtool    文件:BrowserPlaySheet2.java   
public void registerFunction( String namespace, Object theClass ) {
    log.debug( "Registering Java class whose methods can be called from javascript. Namespace: "
            + namespace + ", Java class: " + theClass );

    Platform.runLater( new Runnable() {
        @Override
        public void run() {
            engine.getLoadWorker().stateProperty().addListener(
                    new ChangeListener<State>() {
                        @Override
                        public void changed( ObservableValue<? extends Worker.State> ov,
                                State oldState, State newState ) {
                            if ( newState == Worker.State.SUCCEEDED ) {
                                JSObject jsobj = (JSObject) engine.executeScript( "window" );
                                jsobj.setMember( namespace, theClass );
                            }
                        }
                    }
            );
        }
    } );
}
项目:neural-style-gui    文件:AsyncImageProperty.java   
public AsyncImageProperty(int width, int height) {
    imageLoadService.setSize(width, height);

    imageLoadService.stateProperty().addListener((observable, oldValue, value) -> {
        if (value == Worker.State.SUCCEEDED)
            set(imageLoadService.getValue());
        if (value == Worker.State.FAILED)
            set(null);

        if (value == Worker.State.SUCCEEDED || value == Worker.State.CANCELLED || value == Worker.State.FAILED) {
            File handle = imageFile.get();
            if (handle != null && !handle.equals(imageLoadService.imageFile))
                loadImageInBackground(handle);
        }
    });

    imageFile.addListener((observable, oldValue, value) -> {
        if(!imageLoadService.isRunning()) {
            loadImageInBackground(imageFile.getValue());
        }
    });
}
项目:yfiton    文件:TwitterWebEngineListener.java   
@Override
public void doAction(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
    if (newValue == Worker.State.SUCCEEDED) {
        NodeList nodeList = webEngine.getDocument().getElementsByTagName("code");

        if (nodeList != null) {
            HTMLElementImpl htmlNode = (HTMLElementImpl) nodeList.item(0);

            if (htmlNode != null) {
                String authorizationCode = htmlNode.getInnerText();

                save(new AuthorizationData(authorizationCode));
            }
        }
    }
}
项目:openjfx-8u-dev-tests    文件:IFrameUnsatisfiedLinkTest.java   
@Test
public void test() {
    AtomicBoolean passed = new AtomicBoolean(false);
    Platform.runLater(() -> {
        initViewWithEngine();
        engine.getLoadWorker().stateProperty().addListener(
                (ov, old, now) -> {
                    if (now == Worker.State.SUCCEEDED) {
                        ((HTMLIFrameElement) engine.getDocument()
                        .getElementsByTagName("iframe").item(0)).getId();
                        passed.set(true);
                    }
                });
        engine.loadContent("<html><body>"
                + "<iframe id='123' src='resource/example1.html'/>"
                + "</body></html>");
    });
    doWait(passed::get);
}
项目:openjfx-8u-dev-tests    文件:getLoadWorkerTest.java   
/**
 * Test for javafx.scene.web.WebView.getLoadTask() method. Checks that a valid Task
 * is returned by WebEngine.getLoadTask() method while WebEngine is loading page.
 */
@Test(timeout=10000)
public void test1() {
    gotException = null;
    Platform.runLater(new Runnable() {
        public void run() {
            try {
                initWebEngine(url1);
                Worker w = engine.getLoadWorker();
                Assert.assertNotNull(w);
            } catch (Exception e) {
                gotException = Boolean.TRUE;
            }
            if (gotException == null)
                gotException = Boolean.FALSE;
        }
    });
    doWait(exceptionOcurred);
}
项目:openjfx-8u-dev-tests    文件:GenericTestClass.java   
protected void doWaitPageLoading() {
    doWait(engineReady);
    loadWorker = engine.getLoadWorker();
    final boolean[] b = new boolean[]{false};
    while (!b[0]) {
        Platform.runLater(new Runnable() {
            public void run() {
                if ((loadWorker.getState() == Worker.State.SUCCEEDED)
                        || (loadWorker.getState() == Worker.State.FAILED)
                        || (loadWorker.getState() == Worker.State.CANCELLED)) {
                    b[0] = true;
                }
            }
        });
        try {
            Thread.sleep(100);
        } catch (InterruptedException ex) {
            Logger.getLogger(GenericTestClass.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
项目:openjfx-8u-dev-tests    文件:HistoryLauncher.java   
@Override
public void start(Stage stage) {
    view = new WebView();
    web = view.getEngine();
    web.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        public void changed(ObservableValue<? extends State> ov, State t, State t1) {
            if (t1.equals(Worker.State.SUCCEEDED)) {
                currIndex.setText("Current index: " + web.getHistory().getCurrentIndex());
                currHistorySize.setText("Current number of entries: " + web.getHistory().getEntries().size());
            }
        }
    });
    String url = getParameters().getRaw().get(0);
    if (url != null)
        web.load(url);
    stage.setTitle("Launcher");
    stage.setScene(new Scene(createContainer(), 800, 600));
    stage.sizeToScene();
    stage.show();
}
项目:openjfx-8u-dev-tests    文件:WebNodeParent.java   
@Override
public List<ITEM> getControls() {

    view.getEnvironment().getWaiter(WebViewWrap.PAGE_LOADING_TIMEOUT).ensureValue(Worker.State.SUCCEEDED,
            () -> new FutureAction<>(view.getEnvironment(), () -> view.getControl().getEngine().getLoadWorker().getState()).get());

    return new FutureAction<>(view.getEnvironment(), () -> {
        List<ITEM> list = new ArrayList<>();

        NodeList childNodes;
        if (node == null) {
            childNodes = view.getControl().getEngine().getDocument().getChildNodes();
        } else {
            childNodes = node.getControl().getChildNodes();
        }
        addToList(list, childNodes);
        return list;
    }).get();
}
项目:stack-intheflow    文件:SearchToolWindowGUI.java   
/**
 * Creates and loads the HTML file in the proper JavaFX components.
 * This method is called in initComponents()
 */
private void createScene(){
    Platform.runLater(() -> {
        StackPane root = new StackPane();
        Scene scene = new Scene(root);
        webView = new WebView();
        engine = webView.getEngine();

        String htmlFileURL = this.getClass().getClassLoader().getResource("SearchToolWindow.html").toExternalForm();
        engine.load(htmlFileURL);

        //Listener to make sure it is properly loaded
        engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
            if(newState == Worker.State.SUCCEEDED) {
                window = (JSObject) engine.executeScript("window"); //Init window object
                window.setMember("JavaBridge", bridge);
                window.call("initialize"); //Initalizes Javascript logic. (Replacement for $(document).ready(...))
                updateUISettings();
            }
        });
        root.getChildren().add(webView);

        jfxPanel.setScene(scene);
    });
}
项目:musicdroid    文件:AppPresenter.java   
public void onClick() {
    try {
        FileUtils.deleteQuietly(EXPORT_DIRECTORY);
        FileUtils.forceMkdir(EXPORT_DIRECTORY);
    } catch (IOException e) {
        LOGGER.error(String.format("Unable to clear export directory %s", EXPORT_DIRECTORY), e);
    }

    mediaConverterService.setSongFiles(getSelectedSongs());
    mediaConverterService.setJadbDevice(devicesComboBox.getSelectionModel().getSelectedItem());
    if (mediaConverterService.getState().equals(Worker.State.SUCCEEDED)) {
        mediaConverterService.restart();
    } else {
        mediaConverterService.start();
    }
    exportButton.setDisable(true);
}
项目:pizzascript    文件:ViewResultsPanel.java   
private Scene createScene() {
    WebView browser = new WebView();
    webEngine = browser.getEngine();

    setupPizzaURLLoader();

    webEngine.load("pizza://pizza/testresults.html");
    webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        @Override
        public void changed(ObservableValue<? extends Worker.State> observableValue, Worker.State state, Worker.State newState) {
            if (newState.equals(Worker.State.SUCCEEDED)) {
                loaded.set(true);
                loadResults();
            }
        }
    });
    return new Scene(browser);
}
项目:bunkr    文件:ProgressDialog.java   
public ProgressDialog(final Worker<?> worker)
{
    if (worker == null) return;
    if (worker.getState() == State.CANCELLED || worker.getState() == State.FAILED || worker.getState() == State.SUCCEEDED)
    {
        return;
    }
    this.worker = worker;

    setResultConverter(dialogButton -> null);

    setTitle("Progress");
    getDialogPane().setHeaderText("Operation in Progress");

    initModality(Modality.APPLICATION_MODAL);

    createControls();
    createLayout();
    bindEvents();
}
项目:bunkr    文件:ProgressDialog.java   
public final void setWorker(final Worker<?> newWorker)
{
    if (newWorker != worker)
    {
        if (worker != null)
        {
            worker.stateProperty().removeListener(stateListener);
            end();
        }

        worker = newWorker;

        if (newWorker != null)
        {
            newWorker.stateProperty().addListener(stateListener);
            if (newWorker.getState() == Worker.State.RUNNING || newWorker.getState() == Worker.State.SCHEDULED)
            {
                // It is already running
                begin();
            }
        }
    }
}
项目:bunkr    文件:MarkdownWebViewAdapter.java   
public void adapt(WebView subject) throws IOException
{
    // load external style sheet into webview
    subject.getEngine().setUserStyleSheetLocation(Resources.getExternalPath(githubCSSPath));

    // disable existing context menu
    subject.setContextMenuEnabled(false);

    // disable javascript
    subject.getEngine().setJavaScriptEnabled(false);

    // need to bind the page load event in order to process link things
    subject.getEngine().getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
        // do this when the page load has finished
        if (newValue == Worker.State.SUCCEEDED)
        {
            this.adaptLoadedPage(subject);
        }
    });

    subject.getEngine().setOnError(event -> QuickDialogs.exception(event.getException()));
}
项目:bunkr    文件:HtmlWebViewAdapter.java   
public void adapt(WebView subject)
{
    // disable existing context menu
    subject.setContextMenuEnabled(false);

    // disable javascript
    subject.getEngine().setJavaScriptEnabled(false);

    // need to bind the page load event in order to process link things
    subject.getEngine().getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
        // do this when the page load has finished
        if (newValue == Worker.State.SUCCEEDED)
        {
            this.adaptLoadedPage(subject);
        }
    });

    subject.getEngine().setOnError(event -> QuickDialogs.exception(event.getException()));
}
项目:JavaFX-Skeleton-DEPRECATED    文件:TaskExecutor.java   
public static <T> T runTaskWithBlockingDialog(IDialog dialog, Task<T> task)
        throws Exception {

    task.stateProperty().addListener(
            (observableValue, oldState, newState) -> {
                if (newState == Worker.State.SUCCEEDED
                        || newState == Worker.State.FAILED
                        || newState == Worker.State.CANCELLED) {
                    dialog.close();
                }
            });
    new Thread(task).start();
    dialog.showAndWait();

    if (task.getException() != null) {
        throw new Exception(task.getException());
    }
    return task.getValue();
}
项目:youtrack-worklog-viewer    文件:MainViewController.java   
/**
 * Fetches groupBy criteria from YouTrack
 */
private void startGetGroupByCategoriesTask() {
    LOGGER.info("Fetching GroupByCategories");
    GetGroupByCategoriesTask task = new GetGroupByCategoriesTask();
    task.setOnSucceeded(event -> {
        @SuppressWarnings("unchecked") Worker<List<GroupByCategory>> worker = event.getSource();
        List<GroupByCategory> categoryList = worker.getValue();
        LOGGER.info("{} succeeded with {} GroupByCategories", task.getTitle(), categoryList.size());

        groupByCategoryComboBox.getItems().add(new NoSelectionGroupByCategory());
        categoryList.forEach(groupByCategoryComboBox.getItems()::add);
        groupByCategoryComboBox.getSelectionModel().select(0);
    });

    startTask(task);
}
项目:StudyGuide    文件:StudyGuideApplication.java   
/**
 * Helper method to construct a splash screen and display it while preparing the main stage for the application.
 *
 * @param initStage the initial stage to display the splash screen on
 * @param mainStageTask the task that loads, constructs and displays the main app
 */
private void showSplashScreen(Stage initStage, Task<ObservableValue<Stage>> mainStageTask) {
    int SPLASH_WIDTH = 640;
    int SPLASH_HEIGHT = 640;
    Pane splashLayout = new VBox();
    ImageView splash = new ImageView(new Image(getClass().getResourceAsStream(logoResourceLarge)));
    splashLayout.getChildren().add(splash);
    mainStageTask.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.SUCCEEDED) {
            initStage.toFront();
            FadeTransition fadeSplash = new FadeTransition(javafx.util.Duration.seconds(1.2), splashLayout);
            fadeSplash.setFromValue(1.0);
            fadeSplash.setToValue(0.0);
            fadeSplash.setOnFinished(actionEvent -> initStage.hide());
            fadeSplash.play();
        }
    });
    Scene splashScene = new Scene(splashLayout, Color.TRANSPARENT);
    Rectangle2D bounds = Screen.getPrimary().getBounds();
    initStage.setScene(splashScene);
    initStage.setX(bounds.getMinX() + bounds.getWidth() / 2 - SPLASH_WIDTH / 2);
    initStage.setY(bounds.getMinY() + bounds.getHeight() / 2 - SPLASH_HEIGHT / 2);
    initStage.initStyle(StageStyle.TRANSPARENT);
    initStage.show();
    new Thread(mainStageTask).start();
}
项目:lab_browser    文件:BrowserView.java   
@Override
public void changed (ObservableValue<? extends State> ov, State oldState, State newState) {
    if (newState == Worker.State.SUCCEEDED) {
        EventListener listener = event -> {
            final String href = ((Element)event.getTarget()).getAttribute(HTML_LINK);
            if (href != null) {
                String domEventType = event.getType();
                if (domEventType.equals(EVENT_CLICK)) {
                    showPage(href);
                } else if (domEventType.equals(EVENT_MOUSEOVER)) {
                    showStatus(href);
                } else if (domEventType.equals(EVENT_MOUSEOUT)) {
                    showStatus(BLANK);
                }
            }
        };
        Document doc = myPage.getEngine().getDocument();
        NodeList nodes = doc.getElementsByTagName("a");
        for (int i = 0; i < nodes.getLength(); i++) {
            EventTarget node = (EventTarget)nodes.item(i);
            node.addEventListener(EVENT_CLICK, listener, false);
            node.addEventListener(EVENT_MOUSEOVER, listener, false);
            node.addEventListener(EVENT_MOUSEOUT, listener, false);
        }
    }
}
项目:yfiton    文件:TwitterWebEngineListener.java   
@Override
public void doAction(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
    if (newValue == Worker.State.SUCCEEDED) {
        NodeList nodeList = webEngine.getDocument().getElementsByTagName("code");

        if (nodeList != null) {
            HTMLElementImpl htmlNode = (HTMLElementImpl) nodeList.item(0);

            if (htmlNode != null) {
                String authorizationCode = htmlNode.getInnerText();

                save(new AuthorizationData(authorizationCode));
            }
        }
    }
}
项目:StreamSis    文件:CompactModeController.java   
public void searchSisScenes(ActionEvent event) {
    final javafx.concurrent.Task<List<Actor>> searchTasksActor = new javafx.concurrent.Task<List<Actor>>() {
        protected List<Actor> call() throws Exception {
            return ProjectManager.getProject().getGlobalActorsUnmodifiable();
        }
    };

    searchTasksActor.stateProperty().addListener(new ChangeListener<Worker.State>() {
        public void changed(ObservableValue<? extends Worker.State> source, Worker.State oldState, Worker.State newState) {
            if (newState.equals(Worker.State.SUCCEEDED)) {
                actorList.getItems().setAll(searchTasksActor.getValue());
            }
        }
    });

    new Thread(searchTasksActor).start();
}
项目:epubfx    文件:AbstractRichTextCodeEditor.java   
AbstractRichTextCodeEditor()
    {
        AnchorPane.setTopAnchor(codeArea, 0.0);
        AnchorPane.setLeftAnchor(codeArea, 0.0);
        AnchorPane.setBottomAnchor(codeArea, 0.0);
        AnchorPane.setRightAnchor(codeArea, 0.0);

        getChildren().add(codeArea);

        IntFunction<String> format = (digits -> " %" + digits + "d ");
/*        String stylesheet = AbstractRichTextCodeEditor.class.getResource("java-keywords.css").toExternalForm();     */
        IntFunction<Node> factory = LineNumberFactory.get(codeArea, format);
        codeArea.setParagraphGraphicFactory(factory);

        codeArea.textProperty().addListener((obs, oldText, newText) -> {
            codeArea.setStyleSpans(0, computeHighlighting(newText));
        });
        Platform.runLater(() -> {
            state.setValue(Worker.State.SUCCEEDED);
        });

        canUndo.bind(codeArea.getUndoManager().undoAvailableProperty());
        canRedo.bind(codeArea.getUndoManager().redoAvailableProperty());
        codeArea.fontProperty().set(Font.font("Source Code Pro", 14));
    }
项目:netentionj-desktop    文件:LoadingProgressDisplay.java   
/**
 * Creates a UI display monitor for provided worker.
 *
 * Assumes the worker is reporting progress as work done on a scale from 0 to 100 (other values indicate indeterminate progress).
 *
 * @param worker the worker whose progress is to be monitored and displayed.
 */
public LoadingProgressDisplay(Worker worker) {
    setMaxWidth(Double.MAX_VALUE);

    ColorAdjust bleach = new ColorAdjust();
    bleach.setSaturation(-0.6);
    setEffect(bleach);

    HBox.setHgrow(this, Priority.ALWAYS);

    visibleProperty().bind(worker.runningProperty());

    // as the webview load progresses update progress.
    worker.workDoneProperty().addListener((observableValue, oldNumber, newNumber) -> {
        if (newNumber == null) newNumber = -1.0;
        final double newValue = newNumber.doubleValue();
        if (newValue < 0.0 || newValue > 100.0) {
            setProgress(ProgressBar.INDETERMINATE_PROGRESS);
        }
        setProgress(newValue / 100.0);
    });
}
项目:URL-pad    文件:Snapshotter.java   
/**
 * Converts a given URL to an image which will be saved on /images/ folder.
 * It uses a WebView which basically renders the page in the browser. Once the rendering is complete the screenshot is taken.
 * @return the file location.
 */
public String getWebsiteSnapshot(){
    String fileName = buildFileNameFromUrl();
    webEngine.load(url);
    webEngine.getLoadWorker().stateProperty().addListener(new BrowserStatusChangeListener(fileName));
    //Timeout for loading pages. If the page is still loading after 20 seconds we force it to stop.
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    if (webEngine.getLoadWorker().getState() == Worker.State.RUNNING) {
                        webEngine.load(null);
                        urlStage.close();
                    }
                }
            });

        }
    },30000);

    return fileName;
}
项目:URL-pad    文件:Snapshotter.java   
@Override
public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
    if (newValue.equals(Worker.State.SUCCEEDED)) {
        if(webEngine.getDocument().getBaseURI().equals("about:blank")) return;
        //If the page loads, let's take a snapshot of it.
        WritableImage snapshot = new WritableImage((int) screenSize.getWidth(), (int) screenSize.getHeight());
        browser.snapshot(null, snapshot);
        BufferedImage renderedImage = SwingFXUtils.fromFXImage(snapshot, null);
        //Some math to get a little better thumbnail. Starting x is at 1/4 of the totale page. Goes for a width of half of the screen size to attempt and get the 'core' of the content.
        renderedImage = renderedImage.getSubimage((int)(screenSize.getWidth() /4),0,(int)( screenSize.getWidth()  / 2 ),(int) screenSize.getHeight() / 2);
        saveImage(padPath, fileName, renderedImage);
        controller.refreshListView();
        urlStage.close();
        webEngine.load(null);
    }
    else if(newValue.equals(Worker.State.FAILED)){
        //TODO: Send an error message somehow.
        urlStage.close();
    }
}
项目:CloudTrailViewer    文件:CloudTrailViewer.java   
private void showSplash(final Stage initStage, Task<?> task, InitCompletionHandler initCompletionHandler) {

        task.stateProperty().addListener((observableValue, oldState, newState) -> {

            if (newState == Worker.State.SUCCEEDED) {

                initStage.toFront();
                FadeTransition fadeSplash = new FadeTransition(Duration.seconds(0.8), splashLayout);
                fadeSplash.setFromValue(1.0);
                fadeSplash.setToValue(0.0);
                fadeSplash.setOnFinished(actionEvent -> initStage.hide());
                fadeSplash.play();

                initCompletionHandler.complete();
            }
        });

        Scene splashScene = new Scene(splashLayout, Color.TRANSPARENT);
        final Rectangle2D bounds = Screen.getPrimary().getBounds();
        initStage.setScene(splashScene);
        initStage.setX(bounds.getMinX() + bounds.getWidth() / 2 - SPLASH_WIDTH / 2);
        initStage.setY(bounds.getMinY() + bounds.getHeight() / 2 - SPLASH_HEIGHT / 2);
        initStage.initStyle(StageStyle.TRANSPARENT);
        initStage.setAlwaysOnTop(true);
        initStage.show();
    }
项目:jace    文件:Program.java   
public void initEditor(WebView editor, File sourceFile, boolean isBlank) {
    this.editor = editor;
    targetFile = sourceFile;
    if (targetFile != null) {
        filename = targetFile.getName();
    }

    editor.getEngine().getLoadWorker().stateProperty().addListener(
            (value, old, newState) -> {
                if (newState == Worker.State.SUCCEEDED) {
                    JSObject document = (JSObject) editor.getEngine().executeScript("window");
                    document.setMember("java", this);
                    Platform.runLater(()->createEditor(isBlank));
                }
            });

    editor.getEngine().setPromptHandler((PromptData prompt) -> {
        TextInputDialog dialog = new TextInputDialog(prompt.getDefaultValue());
        dialog.setTitle("Jace IDE");
        dialog.setHeaderText("Respond and press OK, or Cancel to abort");
        dialog.setContentText(prompt.getMessage());
        return dialog.showAndWait().orElse(null);
    });

    editor.getEngine().load(getClass().getResource(CODEMIRROR_EDITOR).toExternalForm());
}
项目:updatefx    文件:UpdateFinderServiceTest.java   
@Test
public void testServiceUpdateWithSameLicense() throws Exception {
    CompletableFuture<ServiceTestResults<Release>> serviceStateDoneFuture = new CompletableFuture<>();
    UpdateFinderService service = new UpdateFinderService(app, 10001, 1);

    service.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
            serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
        }
    });

    service.start();

    ServiceTestResults<Release> result = serviceStateDoneFuture.get(200, TimeUnit.MILLISECONDS);

    assertNull(result.exception);
    assertEquals(Worker.State.SUCCEEDED, result.state);
    assertEquals(release10002SameLicense, result.serviceResult);
}
项目:updatefx    文件:UpdateFinderServiceTest.java   
@Test
public void testServiceUpdateWithNewLicense() throws Exception {
    CompletableFuture<ServiceTestResults<Release>> serviceStateDoneFuture = new CompletableFuture<>();
    UpdateFinderService service = new UpdateFinderService(app, 10002, 1);

    service.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
            serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
        }
    });

    service.start();

    ServiceTestResults<Release> result = serviceStateDoneFuture.get(200, TimeUnit.MILLISECONDS);

    assertNull(result.exception);
    assertEquals(Worker.State.SUCCEEDED, result.state);
    assertEquals(releaseNewerLicense, result.serviceResult);
}
项目:updatefx    文件:UpdateFinderServiceTest.java   
@Test
public void testServiceUpdateNoUpdate() throws Exception {
    CompletableFuture<ServiceTestResults<Release>> serviceStateDoneFuture = new CompletableFuture<>();
    UpdateFinderService service = new UpdateFinderService(app, 20000, 2);

    service.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
            serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
        }
    });

    service.start();

    ServiceTestResults<Release> result = serviceStateDoneFuture.get(200, TimeUnit.MILLISECONDS);

    assertThat(result.exception, instanceOf(NoUpdateException.class));
    assertEquals(Worker.State.FAILED, result.state);
    assertNull(result.serviceResult);
}
项目:updatefx    文件:UpdateDownloadServiceTest.java   
@Test
public void testServiceBinaryFoundNoVerification() throws Exception {
    CompletableFuture<ServiceTestResults<Path>> serviceStateDoneFuture = new CompletableFuture<>();
    UpdateDownloadService service = new UpdateDownloadService(releaseNoVerification);

    service.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
            serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
        }
    });

    service.start();

    ServiceTestResults<Path> result = serviceStateDoneFuture.get(1000, TimeUnit.MILLISECONDS);

    assertNull(result.exception);
    assertEquals(Worker.State.SUCCEEDED, result.state);
    assertEquals(Paths.get(System.getProperty("java.io.tmpdir"), "updatefx.xml"), result.serviceResult);
    Files.delete(result.serviceResult);
}
项目:updatefx    文件:UpdateDownloadServiceTest.java   
@Test
public void testServiceBinaryNotFound() throws Exception {
    CompletableFuture<ServiceTestResults<Path>> serviceStateDoneFuture = new CompletableFuture<>();
    UpdateDownloadService service = new UpdateDownloadService(emptyRelease);

    service.stateProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
            serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
        }
    });

    service.start();

    ServiceTestResults<Path> result = serviceStateDoneFuture.get(1000, TimeUnit.MILLISECONDS);

    assertThat(result.exception, instanceOf(IllegalArgumentException.class));
    assertEquals(Worker.State.FAILED, result.state);
    assertNull(result.serviceResult);
}
项目:updatefx    文件:XMLRetrieverServiceTest.java   
@Test
public void testService() throws Throwable {
    CompletableFuture<ServiceTestResults<Application>> serviceStateDoneFuture = new CompletableFuture<>();

    XMLRetrieverService service = new XMLRetrieverService(getClass().getResource("updatefx.xml"));
    service.stateProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue == Worker.State.FAILED || newValue == Worker.State.SUCCEEDED) {
                serviceStateDoneFuture.complete(new ServiceTestResults<>(service.getState(), service.getValue(), service.getException()));
            }
    });

    service.start();

    ServiceTestResults<Application> result = serviceStateDoneFuture.get(1000, TimeUnit.MILLISECONDS); 

    assertNull(result.exception);
    assertEquals(Worker.State.SUCCEEDED, result.state);
    assertNotNull(result.serviceResult);
    assertEquals("Example App", result.serviceResult.getName());
    assertEquals(2, result.serviceResult.getReleases().size());

    for (Release release : result.serviceResult.getReleases()) {
        assertEquals(result.serviceResult, release.getApplication());
    }
}