Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nsl8 and ras70 #50

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Browser Task Completed
  • Loading branch information
nicklockett committed Mar 3, 2016

Verified

This commit was signed with the committer’s verified signature. The key has expired.
WoozyMasta Maxim Levchenko
commit 3c36220f9e0bb2ef8e39d2dc4b91aa8c0e0f9d9d
94 changes: 68 additions & 26 deletions src/BrowserView.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
import java.awt.Dimension;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import javax.imageio.ImageIO;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.concurrent.Worker.State;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.Scene;
@@ -24,12 +30,6 @@
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;
import javax.imageio.ImageIO;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;


/**
@@ -101,6 +101,16 @@ public void showPage (String url) {
showError(e.getMessage());
}
}

public void showPage() {
try {
String url = myURLDisplay.getText();
URL valid = myModel.go(url);
update(valid);
} catch (BrowserException e) {
showError(e.getMessage());
}
}

/**
* Returns scene for this view so it can be added to stage.
@@ -127,7 +137,7 @@ public void showError (String message) {
}

// move to the next URL in the history
private void next () {
private void next() {
try{
update(myModel.next());
}
@@ -136,7 +146,7 @@ private void next () {
}

// move to the previous URL in the history
private void back () {
private void back() {
update(myModel.back());
}

@@ -207,23 +217,18 @@ 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<ActionEvent>() {
@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);
myFavoritesButton = makeButton("AddFavoriteCommand", event -> addFavorite());
myFavoritesButton = makeButton("AddFavoriteCommand", "addFavorite");
result.getChildren().add(myFavoritesButton);
// if user presses button or enter in text field, load/show the URL
EventHandler<ActionEvent> showHandler = new ShowPage();
result.getChildren().add(makeButton("GoCommand", showHandler));
result.getChildren().add(makeButton("GoCommand", "showPage"));
myURLDisplay = makeInputField(40, showHandler);
result.getChildren().add(myURLDisplay);
return result;
@@ -239,15 +244,35 @@ private Node makePreferencesPanel () {



result.getChildren().add(makeButton("SetHomeCommand", event -> {
myModel.setHome();
enableButtons();
}));
result.getChildren().add(makeButton("SetHomeCommand","makeModelAndButton"));
return result;
}

// makes a button using either an image or a label
private Button makeButton (String property, EventHandler<ActionEvent> handler) {
private void makeModelAndButton() {
myModel.setHome();
enableButtons();
}

// // makes a button using either an image or a label
// private Button makeButton (String property, EventHandler<ActionEvent> handler) {
// // represent all supported image suffixes
// final String IMAGEFILE_SUFFIXES =
// 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))));
// } else {
// result.setText(label);
// }
// result.setOnAction(handler);
// return result;
// }

// makes a button using either an image or a label
private Button makeButton (String property, String methodName, Object... args) {
// represent all supported image suffixes
final String IMAGEFILE_SUFFIXES =
String.format(".*\\.(%s)", String.join("|", ImageIO.getReaderFileSuffixes()));
@@ -260,7 +285,24 @@ private Button makeButton (String property, EventHandler<ActionEvent> handler) {
} else {
result.setText(label);
}
result.setOnAction(handler);
Class c = this.getClass();
try {
Method method = c.getDeclaredMethod(methodName);
result.setOnAction((ActionEvent e) -> {
try {
method.invoke(c, args);
}
catch (Exception exc) {
exc.printStackTrace();
}
});
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


return result;
}