[WIP] Created a snackbar for notification. Currently used for keybinding success/fail. Need to show red if fails.

#story[1278]
This commit is contained in:
Zhi You Tan
2017-09-23 01:39:26 +12:00
parent 094eb4c1cf
commit 957821f1f2
4 changed files with 71 additions and 17 deletions
@@ -4,6 +4,7 @@ import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDecorator;
import com.jfoenix.controls.JFXDialog;
import com.jfoenix.controls.JFXDialog.DialogTransition;
import com.jfoenix.controls.JFXSnackbar;
import com.jfoenix.svg.SVGGlyph;
import java.io.IOException;
import java.util.HashMap;
@@ -37,6 +38,7 @@ public class ViewManager {
private ObservableList<String> playerList;
private Logger logger = LoggerFactory.getLogger(ViewManager.class);
private Stage stage;
private JFXSnackbar jfxSnackbar;
private ViewManager() {
properties = new HashMap<>();
@@ -98,6 +100,10 @@ public class ViewManager {
gameClient.stopGame();
System.exit(0);
});
jfxSnackbar = new JFXSnackbar();
decorator.getChildren().add(jfxSnackbar);
jfxSnackbar.registerSnackbarContainer(decorator);
}
/**
@@ -210,13 +216,22 @@ public class ViewManager {
DialogTransition.CENTER);
KeyBindingDialogController keyBindingDialogController = dialogContent
.getController();
keyBindingDialogController.init(gameClient.getKeyBind());
keyBindingDialogController.init(gameClient.getKeyBind(), this);
dialog.show();
Sounds.playButtonClick();
}
}
}
/**
* Show a snackbar at the bottom of the app for 1 second.
*
* @param snackbarText text to be displayed.
*/
public void showSnackbar(String snackbarText) {
jfxSnackbar.show(snackbarText, 1000);
}
/**
* Determines if a PC has compatibility with the bonjour protocol for server detection.
*/
@@ -362,4 +377,13 @@ public class ViewManager {
public Stage getStage() {
return stage;
}
/**
* Getter to return snackbar object.
*
* @return snackbar object.
*/
public JFXSnackbar getJfxSnackbar() {
return jfxSnackbar;
}
}
@@ -1,20 +1,28 @@
package seng302.visualiser.controllers.dialogs;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDialogLayout;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import java.net.URL;
import java.util.*;
import seng302.model.GameClientAction;
import seng302.visualiser.controllers.ViewManager;
public class KeyBindingDialogController implements Initializable {
//--------FXML BEGIN--------//
@FXML
private JFXDialogLayout keyBindDialog;
@FXML
private Label keyBindingDialogHeader;
@FXML
private JFXButton zoomInbtn;
@@ -32,6 +40,8 @@ public class KeyBindingDialogController implements Initializable {
private JFXButton downwindBtn;
//---------FXML END---------//
private ViewManager viewManager; // added viewManager to access snackbar. To be removed.
private Map<JFXButton, KeyCode> keys;
private List<JFXButton> buttons = new ArrayList<>();
private Map<GameClientAction, KeyCode> keyBind;
@@ -48,8 +58,9 @@ public class KeyBindingDialogController implements Initializable {
*
* @param keyBind a map with GameClientAction and KeyCode pair to be used in GameClient.
*/
public void init(Map<GameClientAction, KeyCode> keyBind) {
public void init(Map<GameClientAction, KeyCode> keyBind, ViewManager viewManager) {
this.keyBind = keyBind;
this.viewManager = viewManager;
buttons = new ArrayList<>();
Collections
@@ -130,10 +141,13 @@ public class KeyBindingDialogController implements Initializable {
keys.replace(button, null);
keyBind.replace(buttonAndGameClientActionMap.get(button), null);
button.setText("");
viewManager
.showSnackbar(button.getId() + " can't be set to " + event.getCode().getName());
} else {
keys.replace(button, event.getCode());
keyBind.replace(buttonAndGameClientActionMap.get(button), event.getCode());
button.setText(event.getCode().getName());
viewManager.showSnackbar(button.getId() + " is set to " + event.getCode().getName());
}
}
}
+15
View File
@@ -100,3 +100,18 @@
.slider .track {
-fx-background-color: -fx-pp-dark-text-color;
}
.jfx-snackbar-content {
-fx-background-color: WHITE;
-fx-padding: 0 5 0 5;
-fx-spacing: 0 5 0 5;
-fx-font-size: 18px;
}
.jfx-snackbar-toast {
-fx-text-fill: -fx-pp-theme-color;
}
.jfx-snackbar-action {
-fx-text-fill: #ff4081;
}
@@ -9,9 +9,10 @@
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<JFXDialogLayout maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="650.0" prefWidth="550.0" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1"
<JFXDialogLayout fx:id="keyBindDialog" maxHeight="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="650.0" prefWidth="550.0"
xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="seng302.visualiser.controllers.dialogs.KeyBindingDialogController">
<children>
<GridPane>
@@ -68,31 +69,31 @@
<GridPane.margin>
<Insets/>
</GridPane.margin></Label>
<JFXButton fx:id="zoomInbtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="ZOOM IN" fx:id="zoomInbtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0" text="Z"
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1"
GridPane.valignment="CENTER"/>
<JFXButton fx:id="zoomOutBtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="ZOOM OUT" fx:id="zoomOutBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0" text="X"
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="2"
GridPane.valignment="CENTER"/>
<JFXButton fx:id="vmgBtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="VMG" fx:id="vmgBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
text="SPACE" GridPane.columnIndex="1" GridPane.halignment="CENTER"
GridPane.rowIndex="3" GridPane.valignment="CENTER"/>
<JFXButton fx:id="sailInOutBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
text="SHIFT" GridPane.columnIndex="1" GridPane.halignment="CENTER"
<JFXButton id="SAILS IN/OUT" fx:id="sailInOutBtn" buttonType="RAISED"
maxHeight="-Infinity" maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity"
prefWidth="150.0" text="SHIFT" GridPane.columnIndex="1" GridPane.halignment="CENTER"
GridPane.rowIndex="4" GridPane.valignment="CENTER"/>
<JFXButton fx:id="tackGybeBtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="TACK/GYBE" fx:id="tackGybeBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
text="ENTER" GridPane.columnIndex="1" GridPane.halignment="CENTER"
GridPane.rowIndex="5" GridPane.valignment="CENTER"/>
<JFXButton fx:id="upwindBtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="UPWIND" fx:id="upwindBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
text="PAGE_UP" GridPane.columnIndex="1" GridPane.halignment="CENTER"
GridPane.rowIndex="6" GridPane.valignment="CENTER"/>
<JFXButton fx:id="downwindBtn" buttonType="RAISED" maxHeight="-Infinity"
<JFXButton id="DOWNWIND" fx:id="downwindBtn" buttonType="RAISED" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
text="PAGE_DOWN" GridPane.columnIndex="1" GridPane.halignment="CENTER"
GridPane.rowIndex="7" GridPane.valignment="CENTER"/>