Changeset 824


Ignore:
Timestamp:
02/04/14 16:20:02 (10 years ago)
Author:
ngw8
Message:

Added overlay to browser that shows while the page is converting. Started styling JFX elements of browser a little bit.

Location:
trunk/src/org/expeditee
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/io/WebParser.java

    r816 r824  
    4848import org.expeditee.items.Picture;
    4949import org.expeditee.items.Text;
     50import org.expeditee.items.widgets.JfxBrowser;
    5051import org.w3c.dom.Node;
    5152import org.w3c.dom.html.HTMLBodyElement;
     
    281282         *            The Expeditee frame to output the converted page to
    282283         */
    283         public static void parsePageSimple(final WebEngine webEngine, final WebView webView, final Frame frame) {
     284        public static void parsePageSimple(JfxBrowser browserWidget, final WebEngine webEngine, final WebView webView, final Frame frame) {
    284285                try {
     286                        browserWidget.setOverlayVisible(true);
     287
    285288                        final Object notifier = new Object();
    286289                       
     
    633636                }
    634637
    635 
     638                browserWidget.setOverlayVisible(false);
    636639
    637640        }
     
    11791182                        bounds = (JSObject) ((JSObject) currentNode.getParentNode()).call("getBoundingClientRect", new Object[] {});
    11801183
    1181                         // TODO: This doesn't check if an element or any of its parent elements have position:fixed set - the only way to check seems to be to walking through the element's parents until the document root is reached (or a recursive function)
     1184                        // TODO: This doesn't check if an element or any of its parent elements have position:fixed set - the only way to check seems to
     1185                        // be to walking through the element's parents until the document root is reached (or a recursive function)
    11821186                        float x = Float.valueOf(bounds.getMember("left").toString());
    11831187                        float y = Float.valueOf(bounds.getMember("top").toString());
  • trunk/src/org/expeditee/items/widgets/JfxBrowser.java

    r815 r824  
    2222import javafx.event.EventDispatcher;
    2323import javafx.event.EventHandler;
     24import javafx.geometry.Insets;
    2425import javafx.geometry.Point2D;
     26import javafx.geometry.Pos;
    2527import javafx.geometry.Rectangle2D;
    2628import javafx.scene.Node;
    2729import javafx.scene.Scene;
    2830import javafx.scene.control.Button;
     31import javafx.scene.control.Label;
     32import javafx.scene.control.ProgressIndicator;
    2933import javafx.scene.control.TextField;
    3034import javafx.scene.input.KeyEvent;
     
    3337import javafx.scene.layout.HBox;
    3438import javafx.scene.layout.Priority;
     39import javafx.scene.layout.StackPane;
    3540import javafx.scene.layout.VBox;
    3641import javafx.scene.web.WebEngine;
     
    6873        private WebEngine _webEngine;
    6974        private TextField _urlField;
     75        private StackPane _overlay;
    7076       
    7177        private MouseButton _buttonDownId = MouseButton.NONE;
     
    145151        private void initFx(String url) {
    146152                try {
     153                        StackPane mainLayout = new StackPane();
    147154                        VBox vertical = new VBox();
    148155                        HBox horizontal = new HBox();
     156                        horizontal.getStyleClass().add("custom-toolbar");
    149157                       
    150158                        Button backButton = new Button("Back");
    151159                        backButton.setMinWidth(Button.USE_PREF_SIZE);
    152160                        backButton.setFocusTraversable(false);
     161                        backButton.getStyleClass().add("first");
     162
    153163                        Button forwardButton = new Button("Forward");
    154164                        forwardButton.setMinWidth(Button.USE_PREF_SIZE);
    155165                        forwardButton.setFocusTraversable(false);
     166                        forwardButton.getStyleClass().add("last");
     167
    156168                        this._urlField = new TextField(url);
     169                        this._urlField.getStyleClass().add("first");
    157170                        this._urlField.setMinWidth(0);
    158171                        this._urlField.setMaxWidth(Double.MAX_VALUE);
    159172                        this._urlField.setFocusTraversable(false);
     173
     174                        Button goButton = new Button("Go");
     175                        goButton.getStyleClass().add("last");
     176                        goButton.setMinWidth(Button.USE_PREF_SIZE);
     177                        goButton.setFocusTraversable(false);
     178
    160179                        Button convertButton = new Button("Convert");
    161180                        convertButton.setMinWidth(Button.USE_PREF_SIZE);
    162181                        convertButton.setFocusTraversable(false);
    163                         Button convertButtonNew = new Button("Convert (New Method)");
    164                         convertButtonNew.setMinWidth(Button.USE_PREF_SIZE);
    165                         convertButtonNew.setFocusTraversable(false);
    166                        
    167                         horizontal.getChildren().addAll(backButton, forwardButton, this._urlField, convertButton, convertButtonNew);
    168                        
     182                       
     183                        horizontal.getChildren().addAll(backButton, forwardButton, this._urlField, goButton, convertButton);
     184
    169185                        HBox.setHgrow(backButton, Priority.NEVER);
    170186                        HBox.setHgrow(forwardButton, Priority.NEVER);
    171187                        HBox.setHgrow(convertButton, Priority.NEVER);
    172                         HBox.setHgrow(convertButtonNew, Priority.NEVER);
     188                        HBox.setHgrow(goButton, Priority.NEVER);
    173189                        HBox.setHgrow(this._urlField, Priority.ALWAYS);
    174190                       
     191                        HBox.setMargin(goButton, new Insets(0, 5, 0, 0));
     192                        HBox.setMargin(forwardButton, new Insets(0, 5, 0, 0));
     193
    175194                        this._webView = new WebView();
    176195                        this._webView.setMaxWidth(Double.MAX_VALUE);
     
    179198                        VBox.setVgrow(this._webView, Priority.ALWAYS);
    180199                        this._webEngine = this._webView.getEngine();
    181                        
     200
    182201                        vertical.getChildren().addAll(horizontal, this._webView);
    183                        
    184                         Scene scene = new Scene(vertical);
     202
     203                        this._overlay = new StackPane();
     204                        this._overlay.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
     205
     206                        // Class for CSS styling
     207                        this._overlay.getStyleClass().add("browser-overlay");
     208
     209                        // Don't show the overlay until processing the page
     210                        this._overlay.setVisible(false);
     211
     212                        Label overlayLabel = new Label("Importing page to Expeditee...");
     213
     214                        ProgressIndicator prog = new ProgressIndicator();
     215                        prog.setMaxSize(25, 25);
     216
     217                        this._overlay.getChildren().addAll(overlayLabel, prog);
     218
     219                        this._overlay.setAlignment(Pos.CENTER);
     220                        StackPane.setMargin(overlayLabel, new Insets(-50, 0, 0, 0));
     221                        StackPane.setMargin(prog, new Insets(50, 0, 0, 0));
     222
     223                        mainLayout.getChildren().addAll(vertical, this._overlay);
     224                       
     225                        Scene scene = new Scene(mainLayout);
     226
     227                        scene.getStylesheets().add(ClassLoader.getSystemResource("org/expeditee/assets/style/jfx.css").toString());
    185228
    186229                        this._panel.setScene(scene);
     
    217260                        });
    218261                       
    219                        
    220262                        convertButton.setOnAction(new EventHandler<ActionEvent>() {
    221                                 @Override
    222                 public void handle(ActionEvent e) {
    223                     getFrame();
    224                 }
    225                         });
    226 
    227                         convertButtonNew.setOnAction(new EventHandler<ActionEvent>() {
    228263                                @Override
    229264                public void handle(ActionEvent e) {
     
    591626                        new Thread(new Runnable() {
    592627                                public void run() {
    593                                         WebParser.parsePageSimple(JfxBrowser.this._webEngine, JfxBrowser.this._webView, DisplayIO.getCurrentFrame());
     628                                        WebParser.parsePageSimple(JfxBrowser.this, JfxBrowser.this._webEngine, JfxBrowser.this._webView, DisplayIO.getCurrentFrame());
    594629                                }
    595630                        }).start();
     
    613648        public boolean ItemsLeftClickDropped() {
    614649                Text carried = null;
    615                 if ((carried = FreeItems.getTextAttachedToCursor()) == null) {  // fails if no text is attached to cursor.
     650                if ((carried = FreeItems.getTextAttachedToCursor()) == null) { // fails if no text is attached to cursor.
    616651                        return false;
    617652                }
    618653               
    619                 if(carried.getText().toLowerCase().equals(BACK)) {
     654                if (carried.getText().toLowerCase().equals(BACK)) {
    620655                        navigateBack();
    621                 } else if(carried.getText().toLowerCase().equals(FORWARD)) {
     656                } else if (carried.getText().toLowerCase().equals(FORWARD)) {
    622657                        navigateForward();
    623                 } else if(carried.getText().toLowerCase().equals(REFRESH)) {
     658                } else if (carried.getText().toLowerCase().equals(REFRESH)) {
    624659                        refresh();
    625                 } else if(carried.getText().toLowerCase().equals(CONVERT)) {
     660                } else if (carried.getText().toLowerCase().equals(CONVERT)) {
    626661                        getFrame();
    627662                } else {
     
    630665                        FreeItems.getInstance().clear();
    631666                }
    632                
     667
    633668                return true;
    634669        }
     
    683718        }
    684719       
     720        public void setOverlayVisible(final boolean visible) {
     721                Platform.runLater(new Runnable() {
     722
     723                        @Override
     724                        public void run() {
     725                                JfxBrowser.this._overlay.setVisible(visible);
     726                        }
     727                });
     728
     729        }
     730
    685731        @Override
    686732        protected String[] getArgs() {
Note: See TracChangeset for help on using the changeset viewer.