22import javafx .application .Application ;
33import javafx .event .ActionEvent ;
44import javafx .event .EventHandler ;
5- import javafx .geometry .Insets ;
6- import javafx .geometry .Pos ;
75import javafx .scene .Scene ;
86import javafx .scene .control .Button ;
97import javafx .scene .control .Label ;
108import javafx .scene .control .TextField ;
9+ import javafx .scene .control .TextArea ;
1110import javafx .scene .layout .Border ;
1211import javafx .scene .layout .BorderPane ;
1312import javafx .scene .layout .GridPane ;
13+ import javafx .geometry .Insets ;
14+ import javafx .geometry .Pos ;
1415import javafx .scene .layout .HBox ;
1516import javafx .scene .paint .Color ;
1617import javafx .stage .Stage ;
17-
1818import java .util .LinkedHashMap ;
1919import java .util .HashSet ;
20- import javafx .scene .control .TextArea ;
2120
2221public class GUI extends Application {
23-
24- TextField SearchTextField ;
22+
23+ TextField SearchTextField ;
2524 LinkedHashMap hashMap = Setup .getInstance ();
2625 TextArea resultText ;
2726
@@ -30,32 +29,64 @@ public class GUI extends Application {
3029 public void start (Stage primaryStage ) {
3130 //Objects
3231 SearchTextField = new TextField ();
33- //SearchTextField.setPrefWidth(250);
3432
3533 Label labelExpl = new Label ("Input Search word: " );
3634 labelExpl .setTextFill (Color .web ("#0076a3" ));
3735
3836 resultText = new TextArea ();
3937 resultText .setText ("Search Results: \n " );
40- // resultText.setPrefWidth(250 );
38+ resultText .setWrapText ( true );
4139
4240 Button btn = new Button ("Search" );
4341 btn .setPrefWidth (170 );
42+
43+ Button btnCrawler = new Button ("Crawler" );
44+ btnCrawler .setPrefWidth (170 );
4445
4546 // TODO: Turn these things into lambdas
4647 //Add handle to btn (Search:)
4748 btn .setOnAction (new EventHandler <ActionEvent >() {
4849 // @Override
4950 public void handle (ActionEvent event ) {
50- String userInput = SearchTextField .getText ();
51-
52- //Test for input from user:
53- HashSet <String > results = SearchCmd .searchConstruct (userInput , hashMap );
51+
52+ String userInput = SearchTextField .getText (); //Collect input from textField
53+
54+
55+ if (userInput .length () != 0 ) { // textField does not handle (userInput != null)
5456
55- for (String result : results ) { // for-each loop
56- resultText .appendText (result +"\n " );
57+ long start = System .currentTimeMillis (); // Search time count start
58+
59+ HashSet <String > results = Searcher .search (userInput , hashMap );
60+
61+ long end = System .currentTimeMillis (); // Search time count end
62+
63+ int time = (int ) ((end - start ) /1000 ); // Search time total ms
64+
65+ if (results == null ) {
66+
67+ resultText .setText ("The search did not find any results for " +userInput );
68+
69+ } else {
70+
71+ resultText .setText ("Search Results for " +userInput +": \n " ); //Resets the textArea for new results to be shown
72+
73+ int count = 0 ;
74+
75+ for (String result : results ) { // for-each loop through the result and append
76+ resultText .appendText (result +"\n " );
77+ count ++;
78+ }
79+
80+ resultText .appendText (count +" results in " +time +" milisecond(s)." );
81+ }
82+
83+ } else {
84+
85+ resultText .setText ("Please enter a search query" );
86+
5787 }
5888 }
89+
5990 });
6091
6192 //GridPane (grid - top)
@@ -87,7 +118,7 @@ public void handle(ActionEvent event) {
87118 HBox hbox = new HBox ();
88119 hbox .setPadding (new Insets (5 , 10 , 10 , 45 ));
89120 hbox .setSpacing (10 );
90- hbox .getChildren ().addAll (btn );
121+ hbox .getChildren ().addAll (btn , btnCrawler );
91122
92123 //BorderPane (border)
93124 BorderPane border = new BorderPane ();
@@ -96,7 +127,7 @@ public void handle(ActionEvent event) {
96127 border .setCenter (paneCenter );
97128
98129 //Scene: (contains border)
99- Scene scene = new Scene (border , 600 , 400 );
130+ Scene scene = new Scene (border , 600 , 300 );
100131
101132 //Stage:
102133 primaryStage .setTitle ("JavaSearchEngine" );
0 commit comments