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

added back and forward functionality for JfxBrowser

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.