Changeset 548


Ignore:
Timestamp:
11/27/13 16:57:30 (10 years ago)
Author:
csl14
Message:

added back and forward functionality for JfxBrowser

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/actions/Misc.java

    r540 r548  
    10611061                }
    10621062               
    1063                 Frame frame = FrameIO.CreateNewFrame(text);                                                             // create new frame for browser
    1064                 frame.addText(0, 50, "@iw:org.expeditee.items.widgets.Browser", null);  // create new text item for browser widget
    1065                 FrameUtils.Parse(frame);                                                                                                // parse created frame; loads browser widget
    1066                
    1067                 for(InteractiveWidget iw : frame.getInteractiveWidgets()) {                             // may be other widgets on frame
     1063                // Create new frame and text item for browser widget and parse created frame; loads browser widget
     1064                Frame frame = FrameIO.CreateNewFrame(text);
     1065                frame.addText(0, 50, "@iw:org.expeditee.items.widgets.Browser", null);
     1066                FrameUtils.Parse(frame);
     1067               
     1068                for(InteractiveWidget iw : frame.getInteractiveWidgets()) {     // may be other widgets on frame
    10681069                        if(iw instanceof org.expeditee.items.widgets.Browser) {
    10691070                                // Set browser to 'full screen'
    1070                                 iw.setSize(-1, -1, -1, -1, Browser._theBrowser.getWidth(), Browser._theBrowser.getHeight() - MessageBay.MESSAGE_BUFFER_HEIGHT - 80);
     1071                                iw.setSize(-1, -1, -1, -1, Browser._theBrowser.getWidth(), Browser._theBrowser.getHeight()
     1072                                                - MessageBay.MESSAGE_BUFFER_HEIGHT - 80);
    10711073                               
    10721074                                // If there is a text item attached to cursor use it as url for browser
     
    10781080                                        ((org.expeditee.items.widgets.Browser)iw).navigate("http://www.waikato.ac.nz");
    10791081                                        Text t = new Text("http://www.waikato.ac.nz");
    1080                                         t.setParent(DisplayIO.getCurrentFrame());                                       // set parent of text source for InteractiveWidget.createWidget()
     1082                                        t.setParent(DisplayIO.getCurrentFrame());               // set parent of text source for InteractiveWidget.createWidget()
    10811083                                        t.setXY(FrameMouseActions.getX(), FrameMouseActions.getY());
    1082                                         t.setLink("" + frame.getNumber());                                                      // link url text to new browser frame
    1083                                         FrameMouseActions.pickup(t);                                                            // Attach new text link to cursor
     1084                                        t.setLink("" + frame.getNumber());                              // link url text to new browser frame
     1085                                        FrameMouseActions.pickup(t);                                    // Attach new text link to cursor
    10841086                                }
    10851087                        }
    10861088                }
    10871089               
    1088                 FrameIO.SaveFrame(frame);                                                                                               // save frame to disk
     1090                FrameIO.SaveFrame(frame);                                                                       // save frame to disk
    10891091        }
    10901092       
     
    11071109                Text wt = new Text("@iw:org.expeditee.items.widgets.JfxBrowser");       // create new text item for browser widget
    11081110               
    1109                 if(FreeItems.textOnlyAttachedToCursor()) {                                                      // navigates to url specified by the text item
     1111                if(FreeItems.textOnlyAttachedToCursor()) {                      // navigates to url specified by the text item
    11101112                        wt.appendText(":" + text.getText());
    11111113                } else {
     
    11131115                }
    11141116               
    1115                 FreeItems.getInstance().clear();                                                                        // remove url text from cursor
    1116                
    1117                 wt.setParent(DisplayIO.getCurrentFrame());                                                      // set parent of text source for InteractiveWidget.createWidget()
     1117                FreeItems.getInstance().clear();                                        // remove url text from cursor
     1118               
     1119                wt.setParent(DisplayIO.getCurrentFrame());                      // set parent of text source for InteractiveWidget.createWidget()
    11181120                wt.setXY(FrameMouseActions.getX(), FrameMouseActions.getY());
    11191121                // create widget from text item
    11201122                JfxBrowser browser = (JfxBrowser) InteractiveWidget.createWidget(wt);
    11211123                       
    1122                 FrameMouseActions.pickup(browser.getItems());                                           // attach browser widget to mouse
     1124                FrameMouseActions.pickup(browser.getItems());           // attach browser widget to mouse
    11231125        }
    11241126       
     
    11391141                }
    11401142               
    1141                 // If no text with url is passed to the action create a new text item with http://www.waikato.ac.nz for the default url
     1143                // If no text with url is passed to action create a new text item with http://www.waikato.ac.nz for a default url
    11421144                if(!FreeItems.textOnlyAttachedToCursor()) {
    1143                         text = DisplayIO.getCurrentFrame().addText(FrameMouseActions.getX(), FrameMouseActions.getY(), "http://www.waikato.ac.nz", null);
     1145                        text = DisplayIO.getCurrentFrame().addText(FrameMouseActions.getX(), FrameMouseActions.getY(),
     1146                                        "http://www.waikato.ac.nz", null);
    11441147                        text.setParent(DisplayIO.getCurrentFrame());    // set parent of text source for InteractiveWidget.createWidget()
    11451148                        FrameMouseActions.pickup(text);                                 // Attach new text link to cursor
     
    11501153                text.setLink("" + frame.getNumber());                           // link this text item to new frame
    11511154                // Create widget via text annotation
    1152                 Text wt = frame.addText(0, 50, "@iw: org.expeditee.items.widgets.JfxBrowser "+ Browser._theBrowser.getWidth() + " " + (Browser._theBrowser.getHeight() - 50) + " : ".concat(text.getText()), null);
     1155                Text wt = frame.addText(0, 50, "@iw: org.expeditee.items.widgets.JfxBrowser "+ Browser._theBrowser.getWidth() +
     1156                                 " " + (Browser._theBrowser.getHeight() - 50) + " : ".concat(text.getText()), null);
    11531157                InteractiveWidget.createWidget(wt);
    11541158               
  • trunk/src/org/expeditee/items/widgets/JfxBrowser.java

    r547 r548  
    1010import java.io.File;
    1111import java.lang.reflect.Constructor;
     12import java.lang.reflect.InvocationTargetException;
    1213import java.lang.reflect.Method;
    1314import java.net.URL;
     
    3435 */
    3536public class JfxBrowser extends DataFrameWidget {
     37       
     38        private static final String BACK = "back";
     39        private static final String FORWARD = "forward";
     40        private static final String REFRESH = "refresh";
     41       
    3642        private WebBrowserPanel _browser;
    3743
     
    5662        static Method WebEngineGetLocation;
    5763        static Method WebEngineGetLoadWorker;
     64        static Method WebEngineGetHistory;
     65        static Method WebEngineReload;
     66
     67        static Class WebHistory;
     68        static Method WebHistoryGo;
    5869
    5970        static Class Worker;
     
    105116                        WebEngineGetLocation = WebEngine.getMethod("getLocation");
    106117                        WebEngineGetLoadWorker = WebEngine.getMethod("getLoadWorker");
     118                        WebEngineGetHistory = WebEngine.getMethod("getHistory");
     119                        WebEngineReload = WebEngine.getMethod("reload");
     120                       
     121                        WebHistory = classLoader.loadClass("javafx.scene.web.WebHistory");
     122                        WebHistoryGo = WebHistory.getMethod("go", int.class);
    107123
    108124                        Worker = classLoader.loadClass("javafx.concurrent.Worker");
     
    332348        }
    333349
     350        /**
     351         * Navigates JfxBrowser back through history. If end of history reached the user is notified via the MessageBay.
     352         * Max size of history is 100 by default.
     353         */
     354        public void navigateBack() {
     355                try {
     356                        WebHistoryGo.invoke(WebEngineGetHistory.invoke(WebViewGetEngine.invoke(this._browser.webview)), -1);
     357                        FreeItems.getInstance().clear();
     358                } catch (InvocationTargetException e) {
     359                        MessageBay.displayMessage("End of History");
     360                } catch (Exception e) {
     361                        e.printStackTrace();
     362                }
     363        }
     364       
     365        /**
     366         * Navigates JfxBrowser forward through history. If end of history reached the user is notified via the MessageBay.
     367         * Max size of history is 100 by default.
     368         */
     369        public void navigateForward() {
     370                try {
     371                        WebHistoryGo.invoke(WebEngineGetHistory.invoke(WebViewGetEngine.invoke(this._browser.webview)), 1);
     372                        FreeItems.getInstance().clear();
     373                } catch (InvocationTargetException e) {
     374                        MessageBay.displayMessage("End of History");
     375                } catch (Exception e) {
     376                        e.printStackTrace();
     377                }
     378        }
     379       
     380        /**
     381         * Refreshes page in webview.
     382         */
     383        public void refresh() {
     384                try {
     385                        //WebEngineReload.invoke(WebViewGetEngine.invoke(this._browser.webview));
     386                        MessageBay.displayMessage("Page Refreshed");
     387                        FreeItems.getInstance().clear();
     388                } catch (Exception e) {
     389                        e.printStackTrace();
     390                }
     391        }
     392       
    334393        @Override
    335394        public boolean ItemsLeftClickDropped() {
    336395                Text carried = null;
    337                 if ((carried = FreeItems.getTextAttachedToCursor()) != null) {
     396                if ((carried = FreeItems.getTextAttachedToCursor()) == null) {
     397                        return false;
     398                }
     399               
     400                if(carried.getText().toLowerCase().equals(BACK)) {
     401                        navigateBack();
     402                } else if(carried.getText().toLowerCase().equals(FORWARD)) {
     403                        navigateForward();
     404                } else if(carried.getText().toLowerCase().equals(REFRESH)) {
     405                        refresh();
     406                } else {
    338407                        String text = carried.getText().trim();
    339408                        this.navigate(text);
    340409                        FreeItems.getInstance().clear();
    341                         return true;
    342                 }
    343                 return false;
     410                }
     411               
     412                return true;
    344413        }
    345414
Note: See TracChangeset for help on using the changeset viewer.