diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..fb50116 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/BrowserView.java b/src/BrowserView.java index 7d59606..94621e0 100644 --- a/src/BrowserView.java +++ b/src/BrowserView.java @@ -1,4 +1,6 @@ import java.awt.Dimension; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URL; import java.util.Optional; import java.util.ResourceBundle; @@ -200,21 +202,16 @@ private Node makeNavigationPanel () { HBox result = new HBox(); // create buttons, with their associated actions // old style way to do set up callback (anonymous class) - myBackButton = makeButton("BackCommand", new EventHandler() { - @Override - public void handle (ActionEvent event) { - back(); - } - }); + myBackButton = makeButton("BackCommand","back"); result.getChildren().add(myBackButton); // new style way to do set up callback (lambdas) - myNextButton = makeButton("NextCommand", event -> next()); + myNextButton = makeButton("NextCommand", "next"); result.getChildren().add(myNextButton); - myHomeButton = makeButton("HomeCommand", event -> home()); + myHomeButton = makeButton("HomeCommand", "home"); result.getChildren().add(myHomeButton); // if user presses button or enter in text field, load/show the URL EventHandler showHandler = new ShowPage(); - result.getChildren().add(makeButton("GoCommand", showHandler)); + result.getChildren().add(makeButton("GoCommand", "handleShow")); myURLDisplay = makeInputField(40, showHandler); result.getChildren().add(myURLDisplay); return result; @@ -226,30 +223,52 @@ private Node makePreferencesPanel () { myFavorites = new ComboBox(); myFavorites.setPromptText(myResources.getString("FavoriteFirstItem")); myFavorites.valueProperty().addListener((o, s1, s2) -> showFavorite(s2)); - result.getChildren().add(makeButton("AddFavoriteCommand", event -> addFavorite())); + result.getChildren().add(makeButton("AddFavoriteCommand","addFavorite")); result.getChildren().add(myFavorites); - result.getChildren().add(makeButton("SetHomeCommand", event -> { - myModel.setHome(); - enableButtons(); - })); + result.getChildren().add(makeButton("SetHomeCommand", "handleSetHome")); return result; } + + private void handleSetHome() { + myModel.setHome(); + enableButtons(); + } // makes a button using either an image or a label - private Button makeButton (String property, EventHandler handler) { + + private Button makeButton (String property, String handler ){ //[EventHandler handler) { // represent all supported image suffixes final String IMAGEFILE_SUFFIXES = - String.format(".*\\.(%s)", String.join("|", ImageIO.getReaderFileSuffixes())); + String.format(".*\\.(%s)", String.join("|", ImageIO.getReaderFileSuffixes())); Button result = new Button(); String label = myResources.getString(property); if (label.matches(IMAGEFILE_SUFFIXES)) { result.setGraphic(new ImageView( - new Image(getClass().getResourceAsStream(DEFAULT_RESOURCE_PACKAGE + label)))); + new Image(getClass().getResourceAsStream(DEFAULT_RESOURCE_PACKAGE + label)))); } else { result.setText(label); } - result.setOnAction(handler); + // Class c = Class.forName(args[); + //Class[] argTypes = new Class[] { String[].class }; + Method method = null; + + try { + method = this.getClass().getDeclaredMethod(handler); + //main.invoke(this); + //result.setOnAction( e -> method.invoke(this)); + } + catch (ReflectiveOperationException | IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + //String[] mainArgs = Arrays.copyOfRange(args, 1, args.length); + //System.out.format("invoking %s.main()%n", c.getName()); + //main.invoke(null); + + + return result; } @@ -269,6 +288,10 @@ public void handle (ActionEvent event) { showPage(myURLDisplay.getText()); } } + + private void handleShow() { + showPage(myURLDisplay.getText()); + } // Inner class to deal with link-clicks and mouse-overs Mostly taken from