mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
[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:
@@ -4,6 +4,7 @@ import com.jfoenix.controls.JFXButton;
|
|||||||
import com.jfoenix.controls.JFXDecorator;
|
import com.jfoenix.controls.JFXDecorator;
|
||||||
import com.jfoenix.controls.JFXDialog;
|
import com.jfoenix.controls.JFXDialog;
|
||||||
import com.jfoenix.controls.JFXDialog.DialogTransition;
|
import com.jfoenix.controls.JFXDialog.DialogTransition;
|
||||||
|
import com.jfoenix.controls.JFXSnackbar;
|
||||||
import com.jfoenix.svg.SVGGlyph;
|
import com.jfoenix.svg.SVGGlyph;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -37,6 +38,7 @@ public class ViewManager {
|
|||||||
private ObservableList<String> playerList;
|
private ObservableList<String> playerList;
|
||||||
private Logger logger = LoggerFactory.getLogger(ViewManager.class);
|
private Logger logger = LoggerFactory.getLogger(ViewManager.class);
|
||||||
private Stage stage;
|
private Stage stage;
|
||||||
|
private JFXSnackbar jfxSnackbar;
|
||||||
|
|
||||||
private ViewManager() {
|
private ViewManager() {
|
||||||
properties = new HashMap<>();
|
properties = new HashMap<>();
|
||||||
@@ -98,6 +100,10 @@ public class ViewManager {
|
|||||||
gameClient.stopGame();
|
gameClient.stopGame();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
jfxSnackbar = new JFXSnackbar();
|
||||||
|
decorator.getChildren().add(jfxSnackbar);
|
||||||
|
jfxSnackbar.registerSnackbarContainer(decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -210,13 +216,22 @@ public class ViewManager {
|
|||||||
DialogTransition.CENTER);
|
DialogTransition.CENTER);
|
||||||
KeyBindingDialogController keyBindingDialogController = dialogContent
|
KeyBindingDialogController keyBindingDialogController = dialogContent
|
||||||
.getController();
|
.getController();
|
||||||
keyBindingDialogController.init(gameClient.getKeyBind());
|
keyBindingDialogController.init(gameClient.getKeyBind(), this);
|
||||||
dialog.show();
|
dialog.show();
|
||||||
Sounds.playButtonClick();
|
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.
|
* Determines if a PC has compatibility with the bonjour protocol for server detection.
|
||||||
*/
|
*/
|
||||||
@@ -362,4 +377,13 @@ public class ViewManager {
|
|||||||
public Stage getStage() {
|
public Stage getStage() {
|
||||||
return stage;
|
return stage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter to return snackbar object.
|
||||||
|
*
|
||||||
|
* @return snackbar object.
|
||||||
|
*/
|
||||||
|
public JFXSnackbar getJfxSnackbar() {
|
||||||
|
return jfxSnackbar;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-4
@@ -1,20 +1,28 @@
|
|||||||
package seng302.visualiser.controllers.dialogs;
|
package seng302.visualiser.controllers.dialogs;
|
||||||
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
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.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyEvent;
|
import javafx.scene.input.KeyEvent;
|
||||||
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.*;
|
|
||||||
import seng302.model.GameClientAction;
|
import seng302.model.GameClientAction;
|
||||||
|
import seng302.visualiser.controllers.ViewManager;
|
||||||
|
|
||||||
public class KeyBindingDialogController implements Initializable {
|
public class KeyBindingDialogController implements Initializable {
|
||||||
|
|
||||||
//--------FXML BEGIN--------//
|
//--------FXML BEGIN--------//
|
||||||
@FXML
|
@FXML
|
||||||
|
private JFXDialogLayout keyBindDialog;
|
||||||
|
@FXML
|
||||||
private Label keyBindingDialogHeader;
|
private Label keyBindingDialogHeader;
|
||||||
@FXML
|
@FXML
|
||||||
private JFXButton zoomInbtn;
|
private JFXButton zoomInbtn;
|
||||||
@@ -32,6 +40,8 @@ public class KeyBindingDialogController implements Initializable {
|
|||||||
private JFXButton downwindBtn;
|
private JFXButton downwindBtn;
|
||||||
//---------FXML END---------//
|
//---------FXML END---------//
|
||||||
|
|
||||||
|
private ViewManager viewManager; // added viewManager to access snackbar. To be removed.
|
||||||
|
|
||||||
private Map<JFXButton, KeyCode> keys;
|
private Map<JFXButton, KeyCode> keys;
|
||||||
private List<JFXButton> buttons = new ArrayList<>();
|
private List<JFXButton> buttons = new ArrayList<>();
|
||||||
private Map<GameClientAction, KeyCode> keyBind;
|
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.
|
* @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.keyBind = keyBind;
|
||||||
|
this.viewManager = viewManager;
|
||||||
|
|
||||||
buttons = new ArrayList<>();
|
buttons = new ArrayList<>();
|
||||||
Collections
|
Collections
|
||||||
@@ -130,10 +141,13 @@ public class KeyBindingDialogController implements Initializable {
|
|||||||
keys.replace(button, null);
|
keys.replace(button, null);
|
||||||
keyBind.replace(buttonAndGameClientActionMap.get(button), null);
|
keyBind.replace(buttonAndGameClientActionMap.get(button), null);
|
||||||
button.setText("");
|
button.setText("");
|
||||||
|
viewManager
|
||||||
|
.showSnackbar(button.getId() + " can't be set to " + event.getCode().getName());
|
||||||
} else {
|
} else {
|
||||||
keys.replace(button, event.getCode());
|
keys.replace(button, event.getCode());
|
||||||
keyBind.replace(buttonAndGameClientActionMap.get(button), event.getCode());
|
keyBind.replace(buttonAndGameClientActionMap.get(button), event.getCode());
|
||||||
button.setText(event.getCode().getName());
|
button.setText(event.getCode().getName());
|
||||||
|
viewManager.showSnackbar(button.getId() + " is set to " + event.getCode().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,3 +100,18 @@
|
|||||||
.slider .track {
|
.slider .track {
|
||||||
-fx-background-color: -fx-pp-dark-text-color;
|
-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.ColumnConstraints?>
|
||||||
<?import javafx.scene.layout.GridPane?>
|
<?import javafx.scene.layout.GridPane?>
|
||||||
<?import javafx.scene.layout.RowConstraints?>
|
<?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"
|
<JFXDialogLayout fx:id="keyBindDialog" maxHeight="-Infinity" maxWidth="-Infinity"
|
||||||
xmlns:fx="http://javafx.com/fxml/1"
|
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">
|
fx:controller="seng302.visualiser.controllers.dialogs.KeyBindingDialogController">
|
||||||
<children>
|
<children>
|
||||||
<GridPane>
|
<GridPane>
|
||||||
@@ -68,31 +69,31 @@
|
|||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets/>
|
<Insets/>
|
||||||
</GridPane.margin></Label>
|
</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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0" text="Z"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1"
|
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1"
|
||||||
GridPane.valignment="CENTER"/>
|
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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0" text="X"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="2"
|
GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="2"
|
||||||
GridPane.valignment="CENTER"/>
|
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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
|
||||||
text="SPACE" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
text="SPACE" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="3" GridPane.valignment="CENTER"/>
|
GridPane.rowIndex="3" GridPane.valignment="CENTER"/>
|
||||||
<JFXButton fx:id="sailInOutBtn" buttonType="RAISED" maxHeight="-Infinity"
|
<JFXButton id="SAILS IN/OUT" fx:id="sailInOutBtn" buttonType="RAISED"
|
||||||
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
|
maxHeight="-Infinity" maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity"
|
||||||
text="SHIFT" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
prefWidth="150.0" text="SHIFT" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="4" GridPane.valignment="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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
|
||||||
text="ENTER" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
text="ENTER" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="5" GridPane.valignment="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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
|
||||||
text="PAGE_UP" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
text="PAGE_UP" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="6" GridPane.valignment="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"
|
maxWidth="-Infinity" minHeight="40.0" minWidth="-Infinity" prefWidth="150.0"
|
||||||
text="PAGE_DOWN" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
text="PAGE_DOWN" GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="7" GridPane.valignment="CENTER"/>
|
GridPane.rowIndex="7" GridPane.valignment="CENTER"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user