Merge branch 'master' of https://git.xdrm.io/MTI/javafx-p1
This commit is contained in:
commit
d33413052c
|
@ -0,0 +1,22 @@
|
||||||
|
package Classes;
|
||||||
|
|
||||||
|
public class Event implements Interfaces.Event {
|
||||||
|
|
||||||
|
private String objectId;
|
||||||
|
private String eventType;
|
||||||
|
|
||||||
|
public Event(String objectId, String eventType) {
|
||||||
|
this.objectId = objectId;
|
||||||
|
this.eventType = eventType;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getObjectId() {
|
||||||
|
return objectId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEventType() {
|
||||||
|
return eventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package Interfaces;
|
||||||
|
|
||||||
|
public interface Event {
|
||||||
|
|
||||||
|
public String getObjectId();
|
||||||
|
|
||||||
|
public String getEventType();
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package Interfaces;
|
||||||
|
|
||||||
|
public interface EventObserver {
|
||||||
|
|
||||||
|
public void handleEvent(Event e);
|
||||||
|
|
||||||
|
}
|
|
@ -2,10 +2,6 @@ package controller;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
|
||||||
import javafx.scene.image.Image;
|
|
||||||
import javafx.scene.image.ImageView;
|
|
||||||
import javafx.scene.input.MouseEvent;
|
|
||||||
import javafx.scene.layout.FlowPane;
|
import javafx.scene.layout.FlowPane;
|
||||||
import model.HeaderMenuItem;
|
import model.HeaderMenuItem;
|
||||||
|
|
||||||
|
@ -13,69 +9,20 @@ public class HeaderMenu{
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
private ArrayList<HeaderMenuItem> items;
|
private ArrayList<HeaderMenuItem> items;
|
||||||
|
private FlowPane parent;
|
||||||
|
|
||||||
|
|
||||||
/* Constructor */
|
/* Constructor */
|
||||||
public HeaderMenu(){
|
public HeaderMenu(FlowPane p_parent){
|
||||||
|
this.parent = p_parent;
|
||||||
this.items = new ArrayList<HeaderMenuItem>();
|
this.items = new ArrayList<HeaderMenuItem>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void addItem(HeaderMenuItem p_item) {
|
public void addItem(HeaderMenuItem p_item) {
|
||||||
this.items.add(p_item);
|
this.items.add(p_item);
|
||||||
}
|
// Add to parent
|
||||||
|
parent.getChildren().add(p_item);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Content Builder */
|
|
||||||
public void render(FlowPane p_parent) {
|
|
||||||
|
|
||||||
/* (1) Initialize variables */
|
|
||||||
int i, il;
|
|
||||||
|
|
||||||
/* (2) Create each item */
|
|
||||||
for( i = 0, il = this.items.size() ; i < il ; i++ ) {
|
|
||||||
|
|
||||||
// Create ImageView
|
|
||||||
ImageView v_view = new ImageView();
|
|
||||||
|
|
||||||
// Get image
|
|
||||||
Image v_img = new Image( this.items.get(i).getImageURI() );
|
|
||||||
|
|
||||||
// Set image on button
|
|
||||||
v_view.setImage(v_img);
|
|
||||||
|
|
||||||
// Set default props.
|
|
||||||
v_view.setId("header_menu_item_"+this.items.get(i).getName());
|
|
||||||
v_view.getStyleClass().add("header_menu_item");
|
|
||||||
|
|
||||||
// HOVER
|
|
||||||
v_view.addEventHandler(MouseEvent.MOUSE_MOVED, e -> {
|
|
||||||
System.out.println("hover");
|
|
||||||
ImageView view = (ImageView) e.getTarget();
|
|
||||||
System.out.println( view.getId() );
|
|
||||||
e.consume();
|
|
||||||
});
|
|
||||||
|
|
||||||
// CLICK
|
|
||||||
v_view.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> {
|
|
||||||
System.out.println("clicked");
|
|
||||||
ImageView view = (ImageView) e.getTarget();
|
|
||||||
e.consume();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add to parent
|
|
||||||
p_parent.getChildren().add(v_view);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void onClick(ActionEvent p_event){
|
|
||||||
System.out.println("You clicked the button");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package controller;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import Interfaces.Event;
|
||||||
|
import Interfaces.EventObserver;
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
@ -10,7 +12,7 @@ import javafx.scene.layout.FlowPane;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import model.HeaderMenuItem;
|
import model.HeaderMenuItem;
|
||||||
|
|
||||||
public class RootLayout extends Application {
|
public class RootLayout extends Application implements EventObserver {
|
||||||
|
|
||||||
private Stage root_stage;
|
private Stage root_stage;
|
||||||
private Scene root_scene;
|
private Scene root_scene;
|
||||||
|
@ -26,22 +28,17 @@ public class RootLayout extends Application {
|
||||||
this.root_stage.setTitle("Inifiny Mail Client");
|
this.root_stage.setTitle("Inifiny Mail Client");
|
||||||
|
|
||||||
/* (2) Load the root layout*/
|
/* (2) Load the root layout*/
|
||||||
this.loadRootLayout();
|
this.loadRootLayout();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (1) HEADER
|
/* (1) HEADER
|
||||||
-------------------------------------*/
|
-------------------------------------*/
|
||||||
/* (1) Create header menu */
|
/* (1) Create header menu */
|
||||||
HeaderMenu hm = new HeaderMenu();
|
HeaderMenu hm = new HeaderMenu((FlowPane) this.root_scene.lookup("#header_menu"));
|
||||||
|
|
||||||
hm.addItem( new HeaderMenuItem("notification", "/src/header-notif.png") );
|
hm.addItem( new HeaderMenuItem("notification", "/src/header-notif.png",this) );
|
||||||
hm.addItem( new HeaderMenuItem("mail", "/src/header-mail.png") );
|
hm.addItem( new HeaderMenuItem("mail", "/src/header-mail.png",this) );
|
||||||
hm.addItem( new HeaderMenuItem("search", "/src/header-search.png") );
|
hm.addItem( new HeaderMenuItem("search", "/src/header-search.png",this) );
|
||||||
hm.addItem( new HeaderMenuItem("menu", "/src/header-menu.png") );
|
hm.addItem( new HeaderMenuItem("menu", "/src/header-menu.png",this) );
|
||||||
|
|
||||||
hm.render( (FlowPane) this.root_scene.lookup("#header_menu") );
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -75,15 +72,16 @@ public class RootLayout extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
launch(args);
|
launch(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleEvent(Event e) {
|
||||||
|
System.out.println("Object "+e.getObjectId()+" fired a "+e.getEventType()+" event");
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
package model;
|
package model;
|
||||||
|
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import Interfaces.Event;
|
||||||
import javafx.beans.property.StringProperty;
|
import Interfaces.EventObserver;
|
||||||
|
import javafx.event.EventHandler;
|
||||||
|
import javafx.scene.image.Image;
|
||||||
|
import javafx.scene.image.ImageView;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
|
||||||
public class HeaderMenuItem{
|
public class HeaderMenuItem extends ImageView{
|
||||||
|
|
||||||
private final StringProperty name;
|
private final String name;
|
||||||
private final String image_uri;
|
private EventObserver parentHandler;
|
||||||
|
|
||||||
|
|
||||||
/* Constructor
|
/* Constructor
|
||||||
|
@ -15,19 +19,28 @@ public class HeaderMenuItem{
|
||||||
* @param p_image_uri<String> The URI of the image
|
* @param p_image_uri<String> The URI of the image
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public HeaderMenuItem(String p_name, String p_image_uri){
|
public HeaderMenuItem(String p_name, String p_image_uri, EventObserver parent){
|
||||||
this.name = new SimpleStringProperty(p_name);
|
this.name = p_name;
|
||||||
this.image_uri = p_image_uri;
|
this.parentHandler = parent;
|
||||||
|
this.setImage(new Image(p_image_uri));
|
||||||
|
this.setId("header_menu_item_"+p_name);
|
||||||
|
this.getStyleClass().add("header_menu_item");
|
||||||
|
|
||||||
|
this.setOnMousePressed(new EventHandler<MouseEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(MouseEvent event) {
|
||||||
|
HeaderMenuItem.this.sendEvent(new Classes.Event(HeaderMenuItem.this.getId(),"click"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendEvent(Event e) {
|
||||||
|
this.parentHandler.handleEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName(){
|
||||||
public StringProperty getName(){
|
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getImageURI(){
|
|
||||||
return this.image_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue