Package clueless.view

Source Code of clueless.view.NotebookView

package clueless.view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.GroupLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.SwingConstants;


/**
* View for displaying the clueless notebook to the user.
*
* @author T
*/
public class NotebookView extends AbstractView {
  /**
   * Singleton instance.
   */
  private static NotebookView instance = null;
 
  /**The main panel for the notebook view.
   */
  private JPanel notebookPanel = null;

  /**
   * @return an instance of the Notebook view
   */
  public static NotebookView getInstance(){
    if(instance == null){
      instance = new NotebookView();
    }
    return instance;
  }
 
  /**
   * Private constructor for the singleton.
   * Adds the empty UI components for the notebook view.
   */
  private NotebookView(){
    notebookPanel = new JPanel();
    notebookPanel.setLayout(new BoxLayout(notebookPanel, BoxLayout.Y_AXIS));
   
    // Header Labels
    JLabel characterLabel   = new JLabel("Suspects",   SwingConstants.LEFT);
    JLabel weaponLabel     = new JLabel("Weapons",   SwingConstants.LEFT);
    JLabel roomLabel     = new JLabel("Rooms",     SwingConstants.LEFT);
   
    // Weapons Labels
    JLabel knifeLabel     = new JLabel("Knife",     SwingConstants.LEFT);
    JLabel candlestickLabel = new JLabel("Candlestick", SwingConstants.LEFT);
    JLabel revolverLabel   = new JLabel("Revolver",   SwingConstants.LEFT);
    JLabel ropeLabel     = new JLabel("Rope",     SwingConstants.LEFT);
    JLabel leadPipeLabel   = new JLabel("Lead Pipe",   SwingConstants.LEFT);
    JLabel wrenchLabel     = new JLabel("Wrench",     SwingConstants.LEFT);
   
    // Character labels
    JLabel colMustardLabel   = new JLabel("Col. Mustard",   SwingConstants.LEFT);
    JLabel profPlumLabel   = new JLabel("Prof. Plum",     SwingConstants.LEFT);
    JLabel mrGreenLabel   = new JLabel("Mr. Green",     SwingConstants.LEFT);
    JLabel mrsPeacockLabel   = new JLabel("Mrs. Peacock",   SwingConstants.LEFT);
    JLabel missScarletLabel = new JLabel("Miss Scarlet",   SwingConstants.LEFT);
    JLabel mrsWhiteLabel   = new JLabel("Mrs. White",     SwingConstants.LEFT);
   
    colMustardLabel.setBackground(Color.YELLOW);
    profPlumLabel.setBackground(Color.MAGENTA);
    mrGreenLabel.setBackground(Color.GREEN);
    mrsPeacockLabel.setBackground(Color.BLUE);
    missScarletLabel.setBackground(Color.RED);
    mrsWhiteLabel.setBackground(Color.WHITE);
   
    colMustardLabel.setOpaque(true);
    profPlumLabel.setOpaque(true);
    mrGreenLabel.setOpaque(true);
    mrsPeacockLabel.setOpaque(true);
    missScarletLabel.setOpaque(true);
    mrsWhiteLabel.setOpaque(true);
   
    // Room Labels
    JLabel hallLabel     = new JLabel("Hall",         SwingConstants.LEFT);
    JLabel loungeLabel     = new JLabel("Lounge",         SwingConstants.LEFT);
    JLabel diningLabel     = new JLabel("Dining Room",     SwingConstants.LEFT);
    JLabel kitchenLabel   = new JLabel("Kitchen",       SwingConstants.LEFT);
    JLabel ballRmLabel     = new JLabel("Ball Room",       SwingConstants.LEFT);
    JLabel conservLabel   = new JLabel("Conservatory",    SwingConstants.LEFT);
    JLabel billiardLabel   = new JLabel("Billiard Room",   SwingConstants.LEFT);
    JLabel libraryLabel   = new JLabel("Library",       SwingConstants.LEFT);
    JLabel studyLabel     = new JLabel("Study",         SwingConstants.LEFT);
   
    // Character Checkboxes
    JCheckBox colMustardChkbox   = new JCheckBox();
    JCheckBox profPlumChkbox   = new JCheckBox();
    JCheckBox mrGreenChkbox   = new JCheckBox();
    JCheckBox mrsPeacockChkbox   = new JCheckBox();
    JCheckBox missScarletChkbox = new JCheckBox();
    JCheckBox mrsWhiteChkbox   = new JCheckBox();
   
    // Weapon Checkboxes
    JCheckBox knifeChkbox     = new JCheckBox();
    JCheckBox candlestickChkbox = new JCheckBox();
    JCheckBox revolverChkbox   = new JCheckBox();
    JCheckBox ropeChkbox     = new JCheckBox();
    JCheckBox leadPipeChkbox   = new JCheckBox();
    JCheckBox wrenchChkbox     = new JCheckBox();
   
    // Room Checkboxes
    JCheckBox hallChkbox     = new JCheckBox();
    JCheckBox loungeChkbox     = new JCheckBox();
    JCheckBox diningChkbox     = new JCheckBox();
    JCheckBox kitchenChkbox   = new JCheckBox();
    JCheckBox ballRmChkbox     = new JCheckBox();
    JCheckBox conservChkbox   = new JCheckBox();
    JCheckBox billiardChkbox   = new JCheckBox();
    JCheckBox libraryChkbox   = new JCheckBox();
    JCheckBox studyChkbox     = new JCheckBox();
   
    // Character Text Fields
    JTextField colMustardTextField   = new JTextField("", 13);
    JTextField profPlumTextField   = new JTextField("", 13);
    JTextField mrGreenTextField   = new JTextField("", 13);
    JTextField mrsPeacockTextField   = new JTextField("", 13);
    JTextField missScarletTextField = new JTextField("", 13);
    JTextField mrsWhiteTextField   = new JTextField("", 13);
   
    // Weapon Text Fields
    JTextField knifeTextField     = new JTextField("", 13);
    JTextField candlestickTextField = new JTextField("", 13);
    JTextField revolverTextField   = new JTextField("", 13);
    JTextField ropeTextField     = new JTextField("", 13);
    JTextField leadPipeTextField   = new JTextField("", 13);
    JTextField wrenchTextField     = new JTextField("", 13);
   
    // Room Text Fields
    JTextField hallTextField     = new JTextField("", 13);
    JTextField loungeTextField     = new JTextField("", 13);
    JTextField diningTextField     = new JTextField("", 13);
    JTextField kitchenTextField   = new JTextField("", 13);
    JTextField ballRmTextField     = new JTextField("", 13);
    JTextField conservTextField   = new JTextField("", 13);
    JTextField billiardTextField   = new JTextField("", 13);
    JTextField libraryTextField   = new JTextField("", 13);
    JTextField studyTextField     = new JTextField("", 13);
   
    colMustardTextField.setMaximumSize(colMustardTextField.getPreferredSize());
    profPlumTextField.setMaximumSize(profPlumTextField.getPreferredSize());  
    mrGreenTextField.setMaximumSize(mrGreenTextField.getPreferredSize());
    mrsPeacockTextField.setMaximumSize(mrsPeacockTextField.getPreferredSize());
    missScarletTextField.setMaximumSize(missScarletTextField.getPreferredSize());
    mrsWhiteTextField.setMaximumSize(mrsWhiteTextField.getPreferredSize());
    knifeTextField.setMaximumSize(knifeTextField.getPreferredSize());    
    candlestickTextField.setMaximumSize(candlestickTextField.getPreferredSize());
    revolverTextField.setMaximumSize(revolverTextField.getPreferredSize());  
    ropeTextField.setMaximumSize(ropeTextField.getPreferredSize());    
    leadPipeTextField.setMaximumSize(leadPipeTextField.getPreferredSize());  
    wrenchTextField.setMaximumSize(wrenchTextField.getPreferredSize());    
    hallTextField.setMaximumSize(hallTextField.getPreferredSize());    
    loungeTextField.setMaximumSize(loungeTextField.getPreferredSize());    
    diningTextField.setMaximumSize(diningTextField.getPreferredSize());    
    kitchenTextField.setMaximumSize(kitchenTextField.getPreferredSize());  
    ballRmTextField.setMaximumSize(ballRmTextField.getPreferredSize());    
    conservTextField.setMaximumSize(conservTextField.getPreferredSize());  
    billiardTextField.setMaximumSize(billiardTextField.getPreferredSize());  
    libraryTextField.setMaximumSize(libraryTextField.getPreferredSize());  
    studyTextField.setMaximumSize(studyTextField.getPreferredSize());    
   
    // Section Panels
    JPanel roomPanel     = new JPanel();
    JPanel characterPanel   = new JPanel();
    JPanel weaponPanel     = new JPanel();   
   
    GroupLayout characterLayout = new GroupLayout(characterPanel);
    characterLayout.setAutoCreateGaps(true);
    characterLayout.setAutoCreateContainerGaps(true);
   
    characterLayout.setHorizontalGroup(characterLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
        .addGroup(characterLayout.createSequentialGroup()
            .addComponent(colMustardLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(colMustardChkbox)
            .addComponent(colMustardTextField)
           )
          .addGroup(characterLayout.createSequentialGroup()
            .addComponent(profPlumLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(profPlumChkbox)
            .addComponent(profPlumTextField))
        .addGroup(characterLayout.createSequentialGroup()
            .addComponent(mrGreenLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(mrGreenChkbox)
            .addComponent(mrGreenTextField))
        .addGroup(characterLayout.createSequentialGroup()
            .addComponent(mrsPeacockLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(mrsPeacockChkbox)
            .addComponent(mrsPeacockTextField))
        .addGroup(characterLayout.createSequentialGroup()
            .addComponent(missScarletLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(missScarletChkbox)
            .addComponent(missScarletTextField))
        .addGroup(characterLayout.createSequentialGroup()
            .addComponent(mrsWhiteLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(mrsWhiteChkbox)
            .addComponent(mrsWhiteTextField))
      );
   
    characterLayout.setVerticalGroup(characterLayout.createSequentialGroup()
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(colMustardLabel)
            .addComponent(colMustardChkbox)
            .addComponent(colMustardTextField))
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(profPlumLabel)
            .addComponent(profPlumChkbox)
            .addComponent(profPlumTextField))
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(mrGreenLabel)
            .addComponent(mrGreenChkbox)
            .addComponent(mrGreenTextField))
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(mrsPeacockLabel)
            .addComponent(mrsPeacockChkbox)
            .addComponent(mrsPeacockTextField))
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(missScarletLabel)
            .addComponent(missScarletChkbox)
            .addComponent(missScarletTextField))
        .addGroup(characterLayout.createParallelGroup()
            .addComponent(mrsWhiteLabel)
            .addComponent(mrsWhiteChkbox)
            .addComponent(mrsWhiteTextField))
        );
   
    GroupLayout weaponLayout = new GroupLayout(weaponPanel);
    weaponLayout.setAutoCreateGaps(true);
    weaponLayout.setAutoCreateContainerGaps(true);
   
    weaponLayout.setHorizontalGroup(weaponLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
        .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(knifeLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(knifeChkbox)
            .addComponent(knifeTextField))
          .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(candlestickLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(candlestickChkbox)
            .addComponent(candlestickTextField))
        .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(revolverLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(revolverChkbox)
            .addComponent(revolverTextField))
        .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(ropeLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(ropeChkbox)
            .addComponent(ropeTextField))
        .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(leadPipeLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(leadPipeChkbox)
            .addComponent(leadPipeTextField))
        .addGroup(weaponLayout.createSequentialGroup()
            .addComponent(wrenchLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(wrenchChkbox)
            .addComponent(wrenchTextField))
      );
   
    weaponLayout.setVerticalGroup(weaponLayout.createSequentialGroup()
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(knifeLabel)
            .addComponent(knifeChkbox)
            .addComponent(knifeTextField))
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(candlestickLabel)
            .addComponent(candlestickChkbox)
            .addComponent(candlestickTextField))
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(revolverLabel)
            .addComponent(revolverChkbox)
            .addComponent(revolverTextField))
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(ropeLabel)
            .addComponent(ropeChkbox)
            .addComponent(ropeTextField))
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(leadPipeLabel)
            .addComponent(leadPipeChkbox)
            .addComponent(leadPipeTextField))
        .addGroup(weaponLayout.createParallelGroup()
            .addComponent(wrenchLabel)
            .addComponent(wrenchChkbox)
            .addComponent(wrenchTextField))
        );
   
    GroupLayout roomLayout = new GroupLayout(roomPanel);
    roomLayout.setAutoCreateGaps(true);
    roomLayout.setAutoCreateContainerGaps(true);
   
    roomLayout.setHorizontalGroup(roomLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(hallLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(hallChkbox)
            .addComponent(hallTextField))
          .addGroup(roomLayout.createSequentialGroup()
            .addComponent(loungeLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(loungeChkbox)
            .addComponent(loungeTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(diningLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(diningChkbox)
            .addComponent(diningTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(kitchenLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(kitchenChkbox)
            .addComponent(kitchenTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(ballRmLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(ballRmChkbox)
            .addComponent(ballRmTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(conservLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(conservChkbox)
            .addComponent(conservTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(billiardLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(billiardChkbox)
            .addComponent(billiardTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(libraryLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(libraryChkbox)
            .addComponent(libraryTextField))
        .addGroup(roomLayout.createSequentialGroup()
            .addComponent(studyLabel)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(studyChkbox)
            .addComponent(studyTextField))
      );
   
    roomLayout.setVerticalGroup(roomLayout.createSequentialGroup()
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(hallLabel)
            .addComponent(hallChkbox)
            .addComponent(hallTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(loungeLabel)
            .addComponent(loungeChkbox)
            .addComponent(loungeTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(diningLabel)
            .addComponent(diningChkbox)
            .addComponent(diningTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(kitchenLabel)
            .addComponent(kitchenChkbox)
            .addComponent(kitchenTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(ballRmLabel)
            .addComponent(ballRmChkbox)
            .addComponent(ballRmTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(conservLabel)
            .addComponent(conservChkbox)
            .addComponent(conservTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(billiardLabel)
            .addComponent(billiardChkbox)
            .addComponent(billiardTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(libraryLabel)
            .addComponent(libraryChkbox)
            .addComponent(libraryTextField))
        .addGroup(roomLayout.createParallelGroup()
            .addComponent(studyLabel)
            .addComponent(studyChkbox)
            .addComponent(studyTextField))
        );
   
    characterPanel.setLayout(characterLayout);
    weaponPanel.setLayout(weaponLayout);
    roomPanel.setLayout(roomLayout);
   
    roomPanel.setBackground(Color.LIGHT_GRAY);
    characterPanel.setBackground(Color.LIGHT_GRAY);
    weaponPanel.setBackground(Color.LIGHT_GRAY);
   
    roomPanel.revalidate();
    characterPanel.revalidate();
    weaponPanel.revalidate();
   
    notebookPanel.setBackground(Color.LIGHT_GRAY);
    notebookPanel.add(characterLabel);
    notebookPanel.add(characterPanel);
    notebookPanel.add(weaponLabel);
    notebookPanel.add(weaponPanel);
    notebookPanel.add(roomLabel);
    notebookPanel.add(roomPanel);
    notebookPanel.setVisible(true);
  }
 
 
  /**
   * @return a handle to the Notebook view. CAN be null.
   */
  public JPanel getNotebookPanel(){
    return this.notebookPanel;
  }
}
TOP

Related Classes of clueless.view.NotebookView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.