javafx integration runs till channel choice

android-scanner
Laura Radaelli 2017-01-06 17:24:38 +02:00
parent c8044fc93d
commit 29b8ef9734
15 changed files with 634 additions and 473 deletions

View File

@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory;
/** /**
* Created by Vladimir Eliezer Tokarev on 8/27/2016. * Created by Vladimir Eliezer Tokarev on 8/27/2016.
* StartSessionController handle the behavior of welcome splash class * WelcomeScreenController handle the behavior of welcome splash class
*/ */
public class WelcomeSplashController extends TwoWayNode { public class WelcomeSplashController extends TwoWayNode {

View File

@ -2,6 +2,14 @@ package meerkat.voting.gui.ui;
import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.FutureCallback;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.geometry.Insets;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.Text;
import meerkat.protobuf.Voting.BallotAnswer; import meerkat.protobuf.Voting.BallotAnswer;
import meerkat.protobuf.Voting.BallotQuestion; import meerkat.protobuf.Voting.BallotQuestion;
import meerkat.protobuf.Voting.UIElement; import meerkat.protobuf.Voting.UIElement;
@ -14,10 +22,7 @@ import org.slf4j.LoggerFactory;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Timer;
/** /**
@ -36,6 +41,7 @@ public class GraphicalUI implements VotingBoothUI, Runnable {
private MainFX ui; private MainFX ui;
public GraphicalUI() { public GraphicalUI() {
final int tickDurationInMillisec = 10; // period between view update calls final int tickDurationInMillisec = 10; // period between view update calls
@ -64,7 +70,7 @@ public class GraphicalUI implements VotingBoothUI, Runnable {
} }
}.start(); }.start();
try { try {
Thread.sleep(500); MainFX.waitUntilLaunched();
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -154,6 +160,7 @@ public class GraphicalUI implements VotingBoothUI, Runnable {
private void doShowWelcomeScreen(StartSessionUICommand command) { private void doShowWelcomeScreen(StartSessionUICommand command) {
logger.debug("UI entered doShowWelcomeScreen"); logger.debug("UI entered doShowWelcomeScreen");
VistaNavigator.setCurrentCommand(command); VistaNavigator.setCurrentCommand(command);
VistaNavigator.loadVista(VistaNavigator.WELCOME_SCREEN);
// waitForEnter(null); // waitForEnter(null);
// ControllerCallback<Void> callback = command.getCallback(); // ControllerCallback<Void> callback = command.getCallback();
// callback.onSuccess(null); // callback.onSuccess(null);
@ -212,7 +219,9 @@ public class GraphicalUI implements VotingBoothUI, Runnable {
*/ */
private void doAskChannelChoiceQuestions (ChannelChoiceUICommand command) { private void doAskChannelChoiceQuestions (ChannelChoiceUICommand command) {
logger.debug("UI: doAskChannelChoiceQuestions"); logger.debug("UI: doAskChannelChoiceQuestions");
VistaNavigator.getMainController().showChannelChoiceScreen(command, logger); UIUtils.assertQuestionsAreValid(command.getQuestions(), logger);
VistaNavigator.setCurrentCommand(command);
VistaNavigator.loadVista(VistaNavigator.CHANNEL_CHOICE);
} }
/** /**
@ -478,6 +487,45 @@ public class GraphicalUI implements VotingBoothUI, Runnable {
} }
} }
/**
* present a question in a JavaFX environment to the voter
* @param question a text ballot question
*/
public VBox showQuestionInFX(BallotQuestion question, ToggleGroup answerGroup) {
if (!UIUtils.isQuestionOnlyText(question)) {
System.err.println("debug: an element in question is not of TEXT type");
throw new UnsupportedOperationException();
}
String questionText = UIUtils.bytesToString(question.getQuestion().getData());
String description = UIUtils.bytesToString(question.getDescription().getData());
VBox vbox = new VBox();
vbox.setPadding(new Insets(10));
vbox.setSpacing(8);
Text title = new Text(questionText);
vbox.getChildren().add(title);
Text descr = new Text(description);
descr.setFont(Font.font(Font.getDefault().getFamily(), FontPosture.ITALIC, Font.getDefault().getSize()));
vbox.getChildren().add(descr);
int answerIndex = 0;
List<RadioButton> options = new ArrayList<RadioButton>();
for (UIElement answer : question.getAnswerList()) {
++answerIndex;
RadioButton rb1 = new RadioButton(UIUtils.bytesToString(answer.getData()));
rb1.setUserData(answerIndex);
rb1.setToggleGroup(answerGroup);
VBox.setMargin(rb1, new Insets(0, 0, 0, 8));
vbox.getChildren().add(rb1);
}
return vbox;
}
private boolean wasShutDownCalled () { private boolean wasShutDownCalled () {
return shutDownHasBeenCalled; return shutDownHasBeenCalled;
} }

View File

@ -10,11 +10,8 @@ import javafx.scene.layout.Pane;
import javafx.stage.Stage; import javafx.stage.Stage;
import meerkat.voting.gui.ui.controllersFX.MainController; import meerkat.voting.gui.ui.controllersFX.MainController;
import meerkat.voting.gui.ui.controllersFX.VistaNavigator; import meerkat.voting.gui.ui.controllersFX.VistaNavigator;
import meerkat.voting.gui.ui.uicommands.StartSessionUICommand;
import meerkat.voting.gui.ui.uicommands.UICommand;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javafx.scene.Parent;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import java.io.IOException; import java.io.IOException;
@ -32,6 +29,25 @@ public class MainFX extends Application {
// launch(args); // launch(args);
// } // }
private static boolean launched = false;
private static Object monitor = new Object();
public static void waitUntilLaunched() throws InterruptedException {
synchronized (monitor) {
while (!launched) {
monitor.wait();
}
}
}
private static void notifyLaunched() {
synchronized (monitor) {
launched = true;
monitor.notifyAll();
}
}
@Override @Override
public void start(Stage stage) throws Exception{ public void start(Stage stage) throws Exception{
stage.setTitle("Vista Viewer"); stage.setTitle("Vista Viewer");
@ -41,6 +57,7 @@ public class MainFX extends Application {
) )
); );
stage.show(); stage.show();
notifyLaunched();
} }
/** /**
@ -57,10 +74,10 @@ public class MainFX extends Application {
Pane mainPane = (Pane) loader.load(); Pane mainPane = (Pane) loader.load();
MainController mainController = loader.getController(); MainController mainController = loader.getController();
mainController.setCurrentCommand(null); mainController.init();//setCurrentCommand(null);
VistaNavigator.setMainController(mainController); VistaNavigator.setMainController(mainController);
VistaNavigator.loadVista(VistaNavigator.VISTA_1); VistaNavigator.loadVista(VistaNavigator.EMPTY_START);
return mainPane; return mainPane;
} }

View File

@ -10,14 +10,14 @@ import java.util.StringTokenizer;
* Created by Vladimir Eliezer Tokarev on 9/17/2016. * Created by Vladimir Eliezer Tokarev on 9/17/2016.
* This class contains methods that are used by all the UI's implementations * This class contains methods that are used by all the UI's implementations
*/ */
class UIUtils { public class UIUtils {
/** /**
* Convert string into protobuff message answer * Convert string into protobuff message answer
* @param s string represent of an answer for a question * @param s string represent of an answer for a question
* @return protobuff message answer * @return protobuff message answer
*/ */
static Voting.BallotAnswer translateStringAnswerToProtoBufMessageAnswer(String s) { public static Voting.BallotAnswer translateStringAnswerToProtoBufMessageAnswer(String s) {
Voting.BallotAnswer.Builder bab = Voting.BallotAnswer.newBuilder(); Voting.BallotAnswer.Builder bab = Voting.BallotAnswer.newBuilder();
StringTokenizer st = new StringTokenizer(s); StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens()) { while (st.hasMoreTokens()) {

View File

@ -2,9 +2,16 @@ package meerkat.voting.gui.ui.controllersFX;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import meerkat.protobuf.Voting; import meerkat.protobuf.Voting;
import meerkat.voting.controller.callbacks.VoterCancelThrowable; import meerkat.voting.controller.callbacks.VoterCancelThrowable;
//import meerkat.voting.gui.ui.UIUtils;
import meerkat.voting.gui.ui.UIUtils; import meerkat.voting.gui.ui.UIUtils;
import meerkat.voting.gui.ui.uicommands.ChannelChoiceUICommand; import meerkat.voting.gui.ui.uicommands.ChannelChoiceUICommand;
import meerkat.voting.gui.ui.uicommands.UICommand; import meerkat.voting.gui.ui.uicommands.UICommand;
@ -19,98 +26,71 @@ import java.util.List;
*/ */
public class ChannelChoiceController { public class ChannelChoiceController {
private List<Integer> chanelValue; // private List<Integer> chanelValue;
private int pointer; // private int pointer;
private boolean lock; // private boolean lock;
List<Voting.BallotAnswer> answers = new ArrayList<>();
List<Voting.BallotQuestion> questions = new ArrayList<>();
int index = 0;
ChannelChoiceUICommand command = (ChannelChoiceUICommand) VistaNavigator.getCurrentCommand();
@FXML ToggleGroup answerGroup;
@FXML private Text question;
@FXML private Pane questionPane;
@FXML @FXML
public void answerWelcomeScreen() { private void nextQuestion() {
// MainFX.parent.answerWelcomeScreen((StartSessionUICommand) MainFX.currentCommand); if (questions.size()==0) {
questions = command.getQuestions();
answerGroup = new ToggleGroup();
}
if (answerGroup.getSelectedToggle()!=null) {
String s = answerGroup.getSelectedToggle().getUserData().toString();
answers.add(UIUtils.translateStringAnswerToProtoBufMessageAnswer(s));
index++;
}
if (index < questions.size()) {
showQuestion();
} else {
//return answers to main threads
nextPane();
}
} }
private void nextPane() { private void showQuestion() {
ChannelChoiceUICommand command = (ChannelChoiceUICommand) VistaNavigator.getCurrentCommand(); Voting.BallotQuestion ballotQuestion = questions.get(index);
System.out.println("Showing questions for choosing channel:\n"); question.setText("This question n. "+index);
try { answerGroup.getToggles().clear();
List<Voting.BallotAnswer> answers = askVoterForAnswers(command.getQuestions()); VBox vbox = VistaNavigator.uiThread.showQuestionInFX(ballotQuestion, answerGroup);
VistaNavigator.getCurrentCommand().getCallback().onSuccess(answers); questionPane.getChildren().clear();
} questionPane.getChildren().addAll(vbox);
catch (VoterCancelThrowable e) {
VistaNavigator.getCurrentCommand().getCallback().onFailure(e);
}
catch (IOException e) {
// String errorMessage = "Channel choice failed due to IOException: " + e;
// logger.error (errorMessage);
// System.err.println(errorMessage);
VistaNavigator.getCurrentCommand().getCallback().onFailure(e);
} }
//askVoterForAnswers: @FXML
List<Voting.BallotAnswer> answers = new ArrayList<>(); private void goBack() throws VoterCancelThrowable{
int index = 0; if (index == 0) {
while (index < questions.size()) { doCancel();
Voting.BallotQuestion question = questions.get(index); } else {
System.out.println("Question number " + index);
showQuestionInConsole(question);
System.out.println("UI screen: Enter your answer. You can also type '(b)ack' or '(c)ancel' or '(s)kip");
String s = readInputLine();
if ((s.equals("cancel") || s.equals("c")) || (index == 0 && (s.equals("back") || s.equals("b")))) {
throw new VoterCancelThrowable();
}
else if (s.equals("back") || s.equals("b")) {
--index; --index;
answers.remove(index); answers.remove(index);
nextQuestion();
} }
else if (s.equals("skip") || s.equals("s")) {
answers.add(UIUtils.translateStringAnswerToProtoBufMessageAnswer(""));
++index;
}
else {
answers.add(UIUtils.translateStringAnswerToProtoBufMessageAnswer(s));
++index;
}
}
return answers;
} }
private void ProceedToNameSelection(MouseEvent boutonPressed) { @FXML
// this.currentStage.close(); private void doCancel() throws VoterCancelThrowable{
// this.currentStage.setScene(this.next.GetCurrentScene()); VoterCancelThrowable e = new VoterCancelThrowable();
// this.next.UpdateNode(); command.getCallback().onFailure(e);
// this.currentStage.show(); //see what is done in the original (basically need to call the callback of the command onFailure()
// this.logger.debug("Created the proceess to name selection object loader.");
} }
// @Override
/**
* Creates the array of the canel value
*/
public void UpdateNode() {
this.pointer = 0;
this.lock = false;
// created the channel value list private void nextPane() {
// every value in the list represents one of the cells values VistaNavigator.loadVista(VistaNavigator.LOADING);
this.chanelValue = new ArrayList<>(); command.getCallback().onSuccess(answers);
this.chanelValue.add(0);
this.chanelValue.add(0);
this.chanelValue.add(0);
this.chanelValue.add(0);
// this.logger.debug("Created and filled with zeros the channel value.");
this.updateVisualChanel();
// this.UpdateVotersChoise();
} }
/**
* Updates the channel in the voters choise
*/
// private void UpdateVotersChoise(){
// this.votersBallot.VoterChannel = this.chanelValue;
// }
/** /**
* Updates the visual channel value * Updates the visual channel value
*/ */
@ -123,35 +103,4 @@ public class ChannelChoiceController {
// this.logger.debug("Updated the visual representation of the channel (its visual value)."); // this.logger.debug("Updated the visual representation of the channel (its visual value).");
} }
@FXML
private void numberPressed(MouseEvent mousePressed){
if (!this.lock) {
String value = ((Button) mousePressed.getSource()).getId().split("_")[1];
this.chanelValue.set(this.pointer, Integer.parseInt(value));
this.pointer++;
this.updateVisualChanel();
// this.UpdateVotersChoise();
if (this.pointer == 4) {
this.lock = true;
}
// this.logger.debug("The " + value +" button have been pressed, then this value was pushed to channel value.");
}
}
@FXML
private void clearLastNumber(MouseEvent mousePressed){
if (this.pointer >= 1) {
int lastValueLocation = this.pointer - 1;
int lastValue = this.chanelValue.get(lastValueLocation);
this.chanelValue.set(lastValueLocation, 0);
// this.currentStage.show();
this.pointer--;
this.updateVisualChanel();
// this.UpdateVotersChoise();
this.lock = false;
// this.logger.debug("The last value was removed from channel value (the value was " + lastValue + " ).");
}
}
} }

View File

@ -0,0 +1,21 @@
package meerkat.voting.gui.ui.controllersFX;
import javafx.fxml.FXML;
import meerkat.voting.gui.ui.uicommands.StartSessionUICommand;
/**
* Created by Vladimir Eliezer Tokarev on 8/27/2016.
* WelcomeScreenController handle the behavior of welcome splash class
*/
public class EmptyStartController {
/**
* Event handler fired when the user requests a new vista.
*
*/
// @FXML
// void nextPane() {
// VistaNavigator.loadVista(VistaNavigator.VISTA_2);
// }
}

View File

@ -9,6 +9,7 @@ import javafx.scene.Parent;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import meerkat.protobuf.Voting; import meerkat.protobuf.Voting;
import meerkat.voting.controller.callbacks.VoterCancelThrowable; import meerkat.voting.controller.callbacks.VoterCancelThrowable;
import meerkat.voting.gui.ui.CommandPend;
import org.slf4j.Logger; import org.slf4j.Logger;
import meerkat.voting.gui.ui.uicommands.ChannelChoiceUICommand; import meerkat.voting.gui.ui.uicommands.ChannelChoiceUICommand;
import meerkat.voting.gui.ui.uicommands.UICommand; import meerkat.voting.gui.ui.uicommands.UICommand;
@ -21,12 +22,16 @@ import java.util.List;
*/ */
public class MainController { public class MainController {
private UICommand currentCommand; private CommandPend<UICommand> cmdPend;
/** Holder of a switchable vista. */ /** Holder of a switchable vista. */
@FXML @FXML
private StackPane vistaHolder; private StackPane vistaHolder;
public void init() {
cmdPend = new CommandPend<>();
}
/** /**
* Replaces the vista displayed in the vista holder with a new vista. * Replaces the vista displayed in the vista holder with a new vista.
* *
@ -37,22 +42,16 @@ public class MainController {
} }
public void setCurrentCommand(UICommand command) { public void setCurrentCommand(UICommand command) {
this.currentCommand = command; cmdPend.trample(command);
} }
public UICommand getCurrentCommand() { public UICommand getCurrentCommand() {
while (this.currentCommand==null) { try {
; return cmdPend.take();
} catch (InterruptedException e) {
e.printStackTrace();
return null;
} }
return this.currentCommand;
}
public void showChannelChoiceScreen(ChannelChoiceUICommand command, Logger logger) {
this.currentCommand = command;
System.out.println("in FX showChannelChoiceScreen");
// UIUtils.assertQuestionsAreValid (command.getQuestions(), logger);
VistaNavigator.loadVista(VistaNavigator.CHANNEL_CHOICE);
} }
} }

View File

@ -18,7 +18,7 @@ public class Vista2Controller {
*/ */
@FXML @FXML
void previousPane(ActionEvent event) { void previousPane(ActionEvent event) {
VistaNavigator.loadVista(VistaNavigator.VISTA_1); VistaNavigator.loadVista(VistaNavigator.EMPTY_START);
} }
} }

View File

@ -3,11 +3,15 @@ package meerkat.voting.gui.ui.controllersFX;
/** /**
* Created by Laura on 12/16/2016. * Created by Laura on 12/16/2016.
*/ */
import javafx.application.Platform;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import meerkat.voting.gui.ui.GraphicalUI; import meerkat.voting.gui.ui.GraphicalUI;
import meerkat.voting.gui.ui.uicommands.UICommand; import meerkat.voting.gui.ui.uicommands.UICommand;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/** /**
* Utility class for controlling navigation between vistas. * Utility class for controlling navigation between vistas.
@ -22,7 +26,8 @@ public class VistaNavigator {
*/ */
public static final String MAIN = "/views/main.fxml"; public static final String MAIN = "/views/main.fxml";
public static final String LOADING = "/views/loading.fxml"; public static final String LOADING = "/views/loading.fxml";
public static final String VISTA_1 = "/views/starting_session.fxml"; public static final String EMPTY_START = "/views/empty_start.fxml";
public static final String WELCOME_SCREEN = "/views/welcome_screen.fxml";
public static final String VISTA_2 = "/views/vista2.fxml"; public static final String VISTA_2 = "/views/vista2.fxml";
public static final String CHANNEL_CHOICE = "/views/channel_choice.fxml"; public static final String CHANNEL_CHOICE = "/views/channel_choice.fxml";
@ -88,10 +93,18 @@ public class VistaNavigator {
*/ */
public static void loadVista(String fxml) { public static void loadVista(String fxml) {
try { try {
mainController.setVista( // mainController.setVista(FXMLLoader.load(VistaNavigator.class.getResource(fxml)));
FXMLLoader.load(VistaNavigator.class.getResource(fxml) // final BlockingQueue queue = new ArrayBlockingQueue(1);
) Node node = FXMLLoader.load(VistaNavigator.class.getResource(fxml));
Platform.runLater(new Runnable() {
@Override
public void run() {
mainController.setVista(node);
}
}
); );
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -5,9 +5,9 @@ import meerkat.voting.gui.ui.uicommands.StartSessionUICommand;
/** /**
* Created by Vladimir Eliezer Tokarev on 8/27/2016. * Created by Vladimir Eliezer Tokarev on 8/27/2016.
* StartSessionController handle the behavior of welcome splash class * WelcomeScreenController handle the behavior of welcome splash class
*/ */
public class StartSessionController { public class WelcomeScreenController {
/** /**
* Event handler fired when the user requests a new vista. * Event handler fired when the user requests a new vista.

View File

@ -1,322 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?> <?import javafx.scene.control.Button?>
<?import javafx.scene.text.*?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.control.*?> <?import javafx.scene.text.Text?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<GridPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.MainFX"> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.controllersFX.ChannelChoiceController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="129.0" minHeight="0.0" prefHeight="31.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="326.0" minHeight="10.0" prefHeight="315.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="75.0" minHeight="10.0" prefHeight="35.0" vgrow="SOMETIMES" />
</rowConstraints>
<children> <children>
<GridPane> <Button layoutX="469.0" layoutY="343.0" mnemonicParsing="false" onMousePressed="#nextQuestion" text="Next" />
<columnConstraints> <Text fx:id="question" layoutX="84.0" layoutY="89.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Click 'Next' to see the first question." wrappingWidth="431.3046875" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="295.0" minWidth="10.0" prefWidth="193.0" /> <Pane fx:id="questionPane" layoutX="84.0" layoutY="97.0" prefHeight="234.0" prefWidth="422.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="416.0" minWidth="10.0" prefWidth="407.0" /> <Button layoutX="275.0" layoutY="343.0" mnemonicParsing="false" onMousePressed="#doCancel" text="Cancel" />
</columnConstraints> <Button layoutX="84.0" layoutY="343.0" mnemonicParsing="false" onMousePressed="#goBack" text="Back" />
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Label text="Organization Logo" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<left>
<Label text="This is the Name of the Election" BorderPane.alignment="CENTER">
<font>
<Font size="16.0" />
</font>
<opaqueInsets>
<Insets left="300.0" />
</opaqueInsets>
</Label>
</left>
</BorderPane>
</children> </children>
</GridPane> </Pane>
<GridPane GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="193.0" minWidth="10.0" prefWidth="54.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="490.0" minWidth="10.0" prefWidth="481.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="145.0" minWidth="10.0" prefWidth="59.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="88.0" minHeight="3.0" prefHeight="21.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="272.0" minHeight="10.0" prefHeight="270.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="56.0" minHeight="6.0" prefHeight="8.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<center>
<GridPane prefHeight="251.0" prefWidth="483.0" BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="72.0" minHeight="0.0" prefHeight="16.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="156.0" minHeight="10.0" prefHeight="17.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="217.0" minHeight="10.0" prefHeight="217.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<top>
<Label text="Choose Your channel" BorderPane.alignment="CENTER">
<font>
<Font size="15.0" />
</font>
</Label>
</top>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
<top>
<Label text="Use the keypad to enter your 4 digit code" BorderPane.alignment="CENTER" />
</top>
</BorderPane>
<GridPane prefHeight="203.0" prefWidth="483.0" GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="116.0" minWidth="10.0" prefWidth="104.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="333.0" minWidth="10.0" prefWidth="275.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="156.0" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<GridPane BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="67.0" prefWidth="46.0">
<center>
<TextField fx:id="textarea_0" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="69.0" prefWidth="69.0" text="1" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<TextField fx:id="textarea_1" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="69.0" prefWidth="69.0" text="6" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<TextField fx:id="textarea_2" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="54.0" prefWidth="69.0" text="8" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="55.0" prefWidth="70.0" GridPane.columnIndex="3">
<center>
<TextField fx:id="textarea_3" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="54.0" prefWidth="69.0" text="5" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_2" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="2" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" />
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button fx:id="button_3" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="3" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
<center>
<Button fx:id="button_4" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="4" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<Button fx:id="button_1" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="1">
<font>
<Font size="25.0" />
</font>
</Button>
</children>
</GridPane>
<GridPane GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Button fx:id="button_5" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="5" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_6" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="6" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button fx:id="button_7" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="7" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
<center>
<Button fx:id="button_8" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="8" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="3">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="92.0" minWidth="10.0" prefWidth="71.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="87.0" minWidth="10.0" prefWidth="68.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="138.0" minWidth="10.0" prefWidth="138.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" />
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_0" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="0" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<right>
<Button fx:id="button_clear_last" mnemonicParsing="false" onMousePressed="#clearLastNumber" prefHeight="54.0" prefWidth="138.0" text="Clear Last" BorderPane.alignment="CENTER">
<font>
<Font size="24.0" />
</font>
</Button>
</right>
</BorderPane>
<Button fx:id="button_9" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="9">
<font>
<Font size="25.0" />
</font>
</Button>
</children>
</GridPane>
</children>
</GridPane>
</center>
</BorderPane>
</children>
</GridPane>
</children>
</GridPane>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button mnemonicParsing="false" onMousePressed="#ProceedToNameSelection" prefHeight="39.0" prefWidth="128.0" text="Next" BorderPane.alignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Button>
</center>
</BorderPane>
</children>
</GridPane>
</children>
</GridPane>

View File

@ -0,0 +1,322 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<GridPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.MainFX">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="129.0" minHeight="0.0" prefHeight="31.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="326.0" minHeight="10.0" prefHeight="315.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="75.0" minHeight="10.0" prefHeight="35.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="295.0" minWidth="10.0" prefWidth="193.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="416.0" minWidth="10.0" prefWidth="407.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Label text="Organization Logo" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<left>
<Label text="This is the Name of the Election" BorderPane.alignment="CENTER">
<font>
<Font size="16.0" />
</font>
<opaqueInsets>
<Insets left="300.0" />
</opaqueInsets>
</Label>
</left>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="193.0" minWidth="10.0" prefWidth="54.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="490.0" minWidth="10.0" prefWidth="481.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="145.0" minWidth="10.0" prefWidth="59.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="88.0" minHeight="3.0" prefHeight="21.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="272.0" minHeight="10.0" prefHeight="270.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="56.0" minHeight="6.0" prefHeight="8.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<center>
<GridPane prefHeight="251.0" prefWidth="483.0" BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="72.0" minHeight="0.0" prefHeight="16.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="156.0" minHeight="10.0" prefHeight="17.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="217.0" minHeight="10.0" prefHeight="217.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<top>
<Label text="Choose Your channel" BorderPane.alignment="CENTER">
<font>
<Font size="15.0" />
</font>
</Label>
</top>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
<top>
<Label text="Use the keypad to enter your 4 digit code" BorderPane.alignment="CENTER" />
</top>
</BorderPane>
<GridPane prefHeight="203.0" prefWidth="483.0" GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="116.0" minWidth="10.0" prefWidth="104.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="333.0" minWidth="10.0" prefWidth="275.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="156.0" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<GridPane BorderPane.alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="67.0" prefWidth="46.0">
<center>
<TextField fx:id="textarea_0" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="69.0" prefWidth="69.0" text="1" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<TextField fx:id="textarea_1" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="69.0" prefWidth="69.0" text="6" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<TextField fx:id="textarea_2" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="54.0" prefWidth="69.0" text="8" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
<BorderPane prefHeight="55.0" prefWidth="70.0" GridPane.columnIndex="3">
<center>
<TextField fx:id="textarea_3" maxHeight="74.0" maxWidth="74.0" minHeight="54.0" minWidth="58.0" prefHeight="54.0" prefWidth="69.0" text="5" BorderPane.alignment="CENTER">
<font>
<Font size="30.0" />
</font>
</TextField>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_2" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="2" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" />
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button fx:id="button_3" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="3" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
<center>
<Button fx:id="button_4" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="4" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<Button fx:id="button_1" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="1">
<font>
<Font size="25.0" />
</font>
</Button>
</children>
</GridPane>
<GridPane GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Button fx:id="button_5" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="5" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_6" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="6" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button fx:id="button_7" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="7" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
<center>
<Button fx:id="button_8" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="8" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="3">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="92.0" minWidth="10.0" prefWidth="71.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="87.0" minWidth="10.0" prefWidth="68.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="138.0" minWidth="10.0" prefWidth="138.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" />
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
<center>
<Button fx:id="button_0" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="0" BorderPane.alignment="CENTER">
<font>
<Font size="25.0" />
</font>
</Button>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<right>
<Button fx:id="button_clear_last" mnemonicParsing="false" onMousePressed="#clearLastNumber" prefHeight="54.0" prefWidth="138.0" text="Clear Last" BorderPane.alignment="CENTER">
<font>
<Font size="24.0" />
</font>
</Button>
</right>
</BorderPane>
<Button fx:id="button_9" mnemonicParsing="false" onMousePressed="#numberPressed" prefHeight="54.0" prefWidth="69.0" text="9">
<font>
<Font size="25.0" />
</font>
</Button>
</children>
</GridPane>
</children>
</GridPane>
</center>
</BorderPane>
</children>
</GridPane>
</children>
</GridPane>
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Button mnemonicParsing="false" onMousePressed="#ProceedToNameSelection" prefHeight="39.0" prefWidth="128.0" text="Next" BorderPane.alignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Button>
</center>
</BorderPane>
</children>
</GridPane>
</children>
</GridPane>

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.controllersFX.EmptyStartController">
<columnConstraints>
<ColumnConstraints />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints maxHeight="129.0" minHeight="10.0" prefHeight="47.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="222.0" minHeight="10.0" prefHeight="201.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="170.0" minHeight="10.0" prefHeight="129.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="185.0" minWidth="10.0" prefWidth="185.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="334.0" minWidth="10.0" prefWidth="258.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="194.0" minWidth="10.0" prefWidth="124.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Label text="Organization Logo" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
<center>
<Label text="Date" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
</children>
</GridPane>
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="74.0" minHeight="10.0" prefHeight="74.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="123.0" minHeight="10.0" prefHeight="93.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="59.0" minHeight="10.0" prefHeight="29.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="75.0" minHeight="10.0" prefHeight="75.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="107.0" minHeight="10.0" prefHeight="107.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="56.0" minHeight="10.0" prefHeight="27.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<BorderPane prefHeight="200.0" prefWidth="200.0">
<center>
<Label text="This is the name of the Election" BorderPane.alignment="CENTER">
<font>
<Font size="18.0" />
</font>
</Label>
</center>
</BorderPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
<top>
<Label text="Location | Precinct" BorderPane.alignment="CENTER" />
</top>
</BorderPane>
</children>
</GridPane>
</children>
</GridPane>
<BorderPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
<center>
<Label fx:id="ErrorPanel" maxHeight="30.0" maxWidth="500.0" minHeight="30.0" minWidth="500.0" prefHeight="30.0" prefWidth="500.0" BorderPane.alignment="CENTER" />
</center>
</BorderPane>
</children>
</GridPane>

View File

@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.Label?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?scenebuilder-stylesheet vista.css?> <?scenebuilder-stylesheet vista.css?>
<VBox prefHeight="200.0" prefWidth="300.0" xmlns:fx="http://javafx.com/fxml" fx:controller="meerkat.voting.gui.ui.controllersFX.MainController"> <VBox prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.controllersFX.MainController">
<children> <children>
<Label fx:id="headerLabel" maxWidth="1.7976931348623157E308" text="Header" VBox.vgrow="NEVER" /> <Label fx:id="headerLabel" maxWidth="1.7976931348623157E308" text="Header" VBox.vgrow="NEVER" />
<StackPane fx:id="vistaHolder" VBox.vgrow="ALWAYS" /> <StackPane fx:id="vistaHolder" prefHeight="404.0" prefWidth="524.0" VBox.vgrow="ALWAYS" />
</children> </children>
</VBox> </VBox>

View File

@ -5,7 +5,7 @@
<?import java.lang.*?> <?import java.lang.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.controllersFX.StartSessionController"> <GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meerkat.voting.gui.ui.controllersFX.WelcomeScreenController">
<columnConstraints> <columnConstraints>
<ColumnConstraints /> <ColumnConstraints />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />