Changeset 837


Ignore:
Timestamp:
02/05/14 10:52:39 (10 years ago)
Author:
ngw8
Message:

JFXBrowser buttons are now disabled when they can't be used

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/items/widgets/JfxBrowser.java

    r833 r837  
    7474        private WebView _webView;
    7575        private WebEngine _webEngine;
     76        private Button _forwardButton;
     77        private Button _backButton;
     78        private Button _convertButton;
     79
    7680        private TextField _urlField;
    7781        private ProgressBar _urlProgressBar;
     
    161165                        horizontal.getStyleClass().add("custom-toolbar");
    162166                       
    163                         Button backButton = new Button("Back");
    164                         backButton.setMinWidth(Button.USE_PREF_SIZE);
    165                         backButton.setFocusTraversable(false);
    166                         backButton.getStyleClass().add("first");
    167 
    168                         Button forwardButton = new Button("Forward");
    169                         forwardButton.setMinWidth(Button.USE_PREF_SIZE);
    170                         forwardButton.setFocusTraversable(false);
    171                         forwardButton.getStyleClass().add("last");
     167                        this._backButton = new Button("Back");
     168                        this._backButton.setMinWidth(Button.USE_PREF_SIZE);
     169                        this._backButton.setFocusTraversable(false);
     170                        this._backButton.getStyleClass().add("first");
     171
     172                        this._backButton.setDisable(true);
     173
     174                        this._forwardButton = new Button("Forward");
     175                        this._forwardButton.setMinWidth(Button.USE_PREF_SIZE);
     176                        this._forwardButton.setFocusTraversable(false);
     177                        this._forwardButton.getStyleClass().add("last");
    172178
    173179                        this._urlField = new TextField(url);
     
    181187                        goButton.setFocusTraversable(false);
    182188
    183                         Button convertButton = new Button("Convert");
    184                         convertButton.setMinWidth(Button.USE_PREF_SIZE);
    185                         convertButton.setFocusTraversable(false);
     189                        this._convertButton = new Button("Convert");
     190                        this._convertButton.setMinWidth(Button.USE_PREF_SIZE);
     191                        this._convertButton.setFocusTraversable(false);
    186192                                               
    187193                        this._urlProgressBar = new ProgressBar();               
     
    192198                        urlbar.getChildren().addAll(_urlProgressBar, this._urlField);
    193199                                               
    194                         horizontal.getChildren().addAll(backButton, forwardButton, urlbar, goButton, convertButton);
    195 
    196                         HBox.setHgrow(backButton, Priority.NEVER);
    197                         HBox.setHgrow(forwardButton, Priority.NEVER);
    198                         HBox.setHgrow(convertButton, Priority.NEVER);
     200                        horizontal.getChildren().addAll(this._backButton, this._forwardButton, urlbar, goButton, this._convertButton);
     201
     202                        HBox.setHgrow(this._backButton, Priority.NEVER);
     203                        HBox.setHgrow(this._forwardButton, Priority.NEVER);
     204                        HBox.setHgrow(this._convertButton, Priority.NEVER);
    199205                        HBox.setHgrow(goButton, Priority.NEVER);
    200206                        HBox.setHgrow(urlbar, Priority.ALWAYS);
    201207                       
    202208                        HBox.setMargin(goButton, new Insets(0, 5, 0, 0));
    203                         HBox.setMargin(forwardButton, new Insets(0, 5, 0, 0));
     209                        HBox.setMargin(this._forwardButton, new Insets(0, 5, 0, 0));
    204210
    205211                        this._webView = new WebView();
     
    260266                        });
    261267                       
    262                         backButton.setOnAction(new EventHandler<ActionEvent>() {
     268                        this._backButton.setOnAction(new EventHandler<ActionEvent>() {
    263269                                @Override
    264270                public void handle(ActionEvent e) {
     
    267273                        });
    268274
    269                         forwardButton.setOnAction(new EventHandler<ActionEvent>() {
     275                        _forwardButton.setOnAction(new EventHandler<ActionEvent>() {
    270276                                @Override
    271277                public void handle(ActionEvent e) {
     
    282288                        });
    283289                       
    284                         convertButton.setOnAction(new EventHandler<ActionEvent>() {
     290                        this._convertButton.setOnAction(new EventHandler<ActionEvent>() {
    285291                                @Override
    286292                public void handle(ActionEvent e) {
     
    421427                                                // Removing the style from the progress bar that causes it to hide
    422428                                                JfxBrowser.this._urlProgressBar.getStyleClass().remove("completed");
     429
     430                                                if (JfxBrowser.this._webEngine.getHistory().getCurrentIndex() + 1 >= JfxBrowser.this._webEngine.getHistory().getEntries().size()) {
     431                                                        JfxBrowser.this._forwardButton.setDisable(true);
     432                                                } else {
     433                                                        JfxBrowser.this._forwardButton.setDisable(false);
     434                                                }
     435
     436                                                // Unless the history is empty (i.e. this is the first page being loaded), enable the back button.
     437                                                // The only time the back button should be disbaled is on the first page load (which this statement deals with)
     438                                                // and if the user has just hit the back button taking them to the first page in the history (dealt with in the
     439                                                // navigateBack method)
     440                                                if (JfxBrowser.this._webEngine.getHistory().getEntries().size() > 0) {
     441                                                        JfxBrowser.this._backButton.setDisable(false);
     442                                                }
     443
     444                                                JfxBrowser.this._convertButton.setDisable(true);
     445
    423446                                                break;
    424447                                        case SUCCEEDED: // SUCCEEDED
    425448                                                MessageBay.displayMessage("Finished loading page");
    426449                                                JfxBrowser.this._urlProgressBar.getStyleClass().add("completed");
    427                                                 break;
     450
    428451                                        case CANCELLED: // CANCELLED
    429                                                 MessageBay.displayMessage("Cancelled loading page");
     452                                                JfxBrowser.this._convertButton.setDisable(false);
    430453                                                break;
    431454                                        case FAILED: // FAILED
     
    569592        public void navigateBack() {
    570593                try {
    571                 Platform.runLater(new Runnable() {
    572                         @Override
    573                         public void run() {
    574                                 try {
    575                                         JfxBrowser.this._webEngine.getHistory().go(-1);
    576                                         FreeItems.getInstance().clear();
    577                                 } catch (IndexOutOfBoundsException e) {
    578                                         MessageBay.displayMessage("Start of History");
    579                                         }
    580                         }
    581                 });
     594                        Platform.runLater(new Runnable() {
     595                                @Override
     596                                public void run() {
     597                                        try {
     598                                                JfxBrowser.this._webEngine.getHistory().go(-1);
     599
     600                                                // Disable the back button if we're at the start of history
     601                                                if (JfxBrowser.this._webEngine.getHistory().getCurrentIndex() <= 0) {
     602                                                        JfxBrowser.this._backButton.setDisable(true);
     603                                                } else {
     604                                                        JfxBrowser.this._backButton.setDisable(false);
     605                                                }
     606
     607                                                FreeItems.getInstance().clear();
     608                                        } catch (IndexOutOfBoundsException e) {
     609                                                MessageBay.displayMessage("Start of History");
     610                                        }
     611                                }
     612                        });
    582613                } catch (Exception e) {
    583614                        e.printStackTrace();
Note: See TracChangeset for help on using the changeset viewer.