Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.ComboBox;
- import javafx.scene.control.Label;
- import javafx.scene.control.RadioButton;
- import javafx.scene.control.TextField;
- import javafx.scene.layout.BorderPane;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.stage.Stage;
- import java.io.*;
- public class Main extends Application implements EventHandler<ActionEvent>{
- Scene scene;
- Label correctOrNo;
- Button Create1, Create2, Edit1, Edit2, Delete, cancelCreate,cancelEdit;
- RadioButton answer1,answer2,ans1,ans2,editAns1,editAns2;
- TextField createText = new TextField();
- TextField createAnswer1 = new TextField();
- TextField createAnswer2 = new TextField();
- TextField editText = new TextField();
- TextField editAnswer1 = new TextField();
- TextField editAnswer2 = new TextField();
- VBox answers = new VBox(10);
- VBox createButton = new VBox(5);
- VBox EditButton = new VBox(5);
- HBox buttons = new HBox(10);
- HBox viewQues = new HBox(50);
- HBox createCancel = new HBox(5);
- HBox editCancel = new HBox(5);
- HBox createAnswers1 = new HBox(5);
- HBox createAnswers2 = new HBox(5);
- HBox correctAnswre1 = new HBox(5);
- HBox correctAnswre2 = new HBox(5);
- BorderPane pane = new BorderPane();
- static ArrayList<String> questions = new ArrayList<>();
- static ArrayList<String> viewQuestions = new ArrayList<>();
- private ComboBox<String> combo = new ComboBox<String>();
- @Override
- public void start(Stage primaryStage) throws IOException {
- //To read old file contents and save it in the array list
- try {
- DataInputStream input = new DataInputStream(new FileInputStream("QuestionBank.dat"));
- String temp;
- while((temp = input.readUTF()) != null) {
- questions.add(temp);
- }
- }
- catch(Exception e) {}
- primaryStage.setTitle("Bank Creator");
- Create1 = new Button("Create");
- Create2 = new Button("Create new question");
- createText.setPromptText("Write Your Question Here");
- createAnswer1.setPromptText("Write Answer 1");
- createAnswer2.setPromptText("Write Answer 1");
- Edit1 = new Button("Edit");
- Edit1.setDisable(true);
- Edit2 = new Button("Edit");
- Delete = new Button("Delete");
- Delete.setDisable(true);
- cancelCreate = new Button("Cancel");
- cancelEdit = new Button("Cancel");
- createCancel.getChildren().addAll(Create2,cancelCreate);
- editCancel.getChildren().addAll(Edit2,cancelEdit);
- ans1 = new RadioButton("Answer 1");
- ans2 = new RadioButton("Answer 2");
- correctAnswre1.getChildren().addAll(new Label("Which answer is correct?"),ans1,ans2);
- createAnswers1.getChildren().addAll(createAnswer1, createAnswer2);
- createAnswers1.setAlignment(Pos.BOTTOM_CENTER);
- createButton.getChildren().addAll(createText ,createAnswers1,correctAnswre1,createCancel);
- editAns1 = new RadioButton("Answer 1");
- editAns2 = new RadioButton("Answer 2");
- correctAnswre2.getChildren().addAll(new Label("Which answer is correct?"),editAns1,editAns2);
- createAnswers2.getChildren().addAll(new Label("Answer 1 "),editAnswer1,new Label("Answer 2 "),editAnswer2);
- createAnswers2.setAlignment(Pos.BOTTOM_CENTER);
- EditButton.getChildren().addAll(editText ,createAnswers2,correctAnswre2, editCancel);
- correctOrNo = new Label();
- answer1 = new RadioButton("Answer 1");
- answer2 = new RadioButton("Answer 2");
- answers.getChildren().addAll(answer1 , answer2,correctOrNo);
- answers.setAlignment(Pos.CENTER_LEFT);
- buttons.getChildren().addAll(Create1 , Edit1, Delete);
- buttons.setAlignment(Pos.CENTER);
- //Add only questions to viewQuestions ArrayList to view them in the combo box
- for (int i =0 ; i < questions.size() ; i++) {
- String temp = questions.get(i);
- viewQuestions.add(temp.split(":")[0]);
- }
- combo.getItems().addAll(viewQuestions);
- combo.setValue("Choose a question");
- viewQues.getChildren().addAll(new Label("View Questions: "),combo);
- pane.setPadding(new Insets(10,10,10,10));
- pane.setTop(viewQues);
- pane.setBottom(buttons);
- //--------------------------------------------------------------
- Create1.setOnAction(this);
- Create2.setOnAction(this);
- Delete.setOnAction(this);
- Edit1.setOnAction(this);
- Edit2.setOnAction(this);
- combo.setOnAction(this);
- answer1.setOnAction(this);
- answer2.setOnAction(this);
- ans1.setOnAction(this);
- ans2.setOnAction(this);
- editAns1.setOnAction(this);
- editAns2.setOnAction(this);
- cancelCreate.setOnAction(this);
- cancelEdit.setOnAction(this);
- scene = new Scene(pane, 450, 250);
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- @Override
- public void handle(ActionEvent event){
- //Create 1 button
- if (event.getSource() == Create1) {
- pane.setBottom(createButton);
- pane.setCenter(null);
- }
- //Create 2 button
- if (event.getSource() == Create2) {
- int correctAnswer;
- if (ans1.isSelected())
- correctAnswer = 1;
- else
- correctAnswer = 2;
- combo.getItems().add(createText.getText());
- // Question:Answer1:Answer2:CorrectAnswer(Answer 1 or 2) ==> Add this form to questions ArrayList
- questions.add(createText.getText() + ":" + createAnswer1.getText() + ":" + createAnswer2.getText() + ":" + correctAnswer);
- viewQuestions.add(createText.getText());
- pane.setBottom(buttons);
- pane.setCenter(answers);
- answer1.setSelected(false);
- answer2.setSelected(false);
- correctOrNo.setText("");
- combo.setValue(createText.getText());
- writeQuesions();
- }
- //Delete button
- if (event.getSource() == Delete) {
- String temp = combo.getValue();
- int pos = combo.getItems().indexOf(temp);
- questions.remove(pos);
- combo.getItems().remove(viewQuestions.get(pos));
- viewQuestions.remove(pos);
- writeQuesions();
- if(pane.getCenter() != null)
- pane.setCenter(null);
- }
- //Edit 1 button
- if (event.getSource() == Edit1) {
- pane.setBottom(EditButton);
- pane.setCenter(null);
- editText.setText(combo.getValue());
- editAnswer1.setText(answer1.getText());
- editAnswer2.setText(answer2.getText());
- }
- //Edit 2 button
- if (event.getSource() == Edit2) {
- int pos = combo.getItems().indexOf(combo.getValue());
- String[] answer = questions.get(pos).split(":");
- combo.getItems().set(pos, editText.getText());
- answer1.setText(editAnswer1.getText());
- answer2.setText(editAnswer2.getText());
- int correctAnswer;
- if (editAns1.isSelected())
- correctAnswer = 1;
- else
- correctAnswer = 2;
- String question = editText.getText() + ":" + editAnswer1.getText() + ":" + editAnswer2.getText() + ":" + correctAnswer;
- questions.set(pos, question);
- pane.setBottom(buttons);
- pane.setCenter(answers);
- answer1.setSelected(false);
- answer2.setSelected(false);
- correctOrNo.setText("");
- writeQuesions();
- }
- //Combo Box
- if (event.getSource() == combo) {
- try {
- if (combo.getValue() == null) {
- Edit1.setDisable(true);
- Delete.setDisable(true);
- pane.setCenter(null);
- }
- int pos = combo.getItems().indexOf(combo.getValue());
- String[] answer = questions.get(pos).split(":");
- pane.setCenter(answers);
- answer1.setText(answer[1]);
- answer2.setText(answer[2]);
- answer1.setSelected(false);
- answer2.setSelected(false);
- correctOrNo.setText("");
- Edit1.setDisable(false);
- Delete.setDisable(false);
- }catch(Exception e) {}
- }
- // View Answer 1
- if (event.getSource() == answer1) {
- try {
- int pos = combo.getItems().indexOf(combo.getValue());
- String[] answer = questions.get(pos).split(":");
- if(answer1.isSelected())
- answer2.setSelected(false);
- if((Integer.parseInt(answer[3]) == 1 && answer1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && answer2.isSelected()))
- correctOrNo.setText("Answer is correct");
- else {
- correctOrNo.setText("Wrong answer!");
- }
- if(answer1.isSelected() == false && answer2.isSelected() == false)
- correctOrNo.setText("");
- }catch(Exception e){}
- }
- // View Answer 2
- if (event.getSource() == answer2) {
- try {
- int pos = combo.getItems().indexOf(combo.getValue());
- String[] answer = questions.get(pos).split(":");
- if(answer2.isSelected())
- answer1.setSelected(false);
- if((Integer.parseInt(answer[3]) == 1 && answer1.isSelected()) || (Integer.parseInt(answer[3]) == 2 && answer2.isSelected()))
- correctOrNo.setText("Answer is correct");
- else {
- correctOrNo.setText("Wrong answer!");
- }
- if(answer1.isSelected() == false && answer2.isSelected() == false)
- correctOrNo.setText("");
- }catch(Exception e){}
- }
- // Create Answer 1
- if (event.getSource() == ans1) {
- if(ans1.isSelected())
- ans2.setSelected(false);
- }
- // Create Answer 2
- if (event.getSource() == ans2) {
- if(ans2.isSelected())
- ans1.setSelected(false);
- }
- // Edit Answer 1
- if (event.getSource() == editAns1) {
- if(editAns1.isSelected())
- editAns2.setSelected(false);
- }
- // Edit Answer 2
- if (event.getSource() == editAns2) {
- if(editAns2.isSelected())
- editAns1.setSelected(false);
- }
- // Cancel creating button
- if(event.getSource() == cancelCreate) {
- pane.setBottom(buttons);
- }
- // Cancel editing button
- if(event.getSource() == cancelEdit) {
- pane.setBottom(buttons);
- }
- }
- //This method to write the questions in the binary file
- public static void writeQuesions() {
- try {
- DataOutputStream output = new DataOutputStream(new FileOutputStream("QuestionBank.dat"));
- for(int i = 0 ; i < questions.size() ; i++) {
- output.writeUTF(questions.get(i));;
- }
- }
- catch(Exception e) {}
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement