/**
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.weld.environment.se.example.numberguess;
import java.awt.CardLayout;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import org.jboss.weld.environment.se.events.ContainerInitialized;
/**
* Swing-based number guess example, main application frame.
*
* @author Peter Royle
*/
@ApplicationScoped
public class NumberGuessFrame extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
@Inject
private Game game;
@Inject
private MessageGenerator msgGenerator;
public void start(@Observes ContainerInitialized event) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
initComponents();
setVisible(true);
}
});
}
/**
* This method is called to initialize the form.
*/
private void initComponents() {
borderPanel = new javax.swing.JPanel();
gamePanel = new javax.swing.JPanel();
inputsPanel = new javax.swing.JPanel();
buttonPanel = new javax.swing.JPanel();
guessButton = new javax.swing.JButton();
replayBtn = new javax.swing.JButton();
guessText = new javax.swing.JTextField();
remainingGuessesPanel = new javax.swing.JPanel();
guessremainLabel = new javax.swing.JLabel();
guessesLeftBar = new javax.swing.JProgressBar();
mainMsgPanel = new javax.swing.JPanel();
mainLabel = new javax.swing.JLabel();
messageLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new java.awt.CardLayout());
borderPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
borderPanel.setLayout(new java.awt.CardLayout());
gamePanel.setLayout(new java.awt.BorderLayout(6, 6));
inputsPanel.setLayout(new java.awt.BorderLayout(8, 8));
buttonPanel.setLayout(new java.awt.CardLayout());
guessButton.setText("Guess");
guessButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
guessButtonActionPerformed(evt);
}
});
buttonPanel.add(guessButton, "card2");
replayBtn.setText("Replay!");
replayBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
replayBtnActionPerformed(evt);
}
});
buttonPanel.add(replayBtn, "card3");
inputsPanel.add(buttonPanel, java.awt.BorderLayout.LINE_END);
inputsPanel.add(guessText, java.awt.BorderLayout.CENTER);
gamePanel.add(inputsPanel, java.awt.BorderLayout.CENTER);
remainingGuessesPanel.setLayout(new java.awt.BorderLayout(8, 8));
guessremainLabel.setText("Guesses remaining: ");
remainingGuessesPanel.add(guessremainLabel, java.awt.BorderLayout.LINE_START);
guessesLeftBar.setMaximum(Game.MAX_NUM_GUESSES);
guessesLeftBar.setValue(Game.MAX_NUM_GUESSES);
guessesLeftBar.setPreferredSize(new java.awt.Dimension(10, 14));
remainingGuessesPanel.add(guessesLeftBar, java.awt.BorderLayout.CENTER);
gamePanel.add(remainingGuessesPanel, java.awt.BorderLayout.PAGE_END);
mainMsgPanel.setLayout(new java.awt.GridLayout(2, 1, 6, 6));
mainLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
mainLabel.setText(msgGenerator.getChallengeMessage());
mainMsgPanel.add(mainLabel);
messageLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
messageLabel.setText(msgGenerator.getResultMessage());
mainMsgPanel.add(messageLabel);
gamePanel.add(mainMsgPanel, java.awt.BorderLayout.PAGE_START);
borderPanel.add(gamePanel, "card2");
getContentPane().add(borderPanel, "card2");
pack();
}
private void guessButtonActionPerformed(java.awt.event.ActionEvent evt) {
int guess = -1;
try {
guess = Integer.parseInt(guessText.getText());
} catch (NumberFormatException nfe) {
// noop
}
game.setGuess(guess);
game.check();
refreshUI();
if (game.isGameWon() || game.isGameLost()) {
switchButtons();
}
}
private void replayBtnActionPerformed(java.awt.event.ActionEvent evt) {
game.reset();
refreshUI();
switchButtons();
}
private void switchButtons() {
CardLayout buttonLyt = (CardLayout) buttonPanel.getLayout();
buttonLyt.next(buttonPanel);
}
private void refreshUI() {
mainLabel.setText(msgGenerator.getChallengeMessage());
messageLabel.setText(msgGenerator.getResultMessage());
guessText.setText("");
guessesLeftBar.setValue(game.getRemainingGuesses());
guessText.requestFocus();
}
// swing components
private javax.swing.JPanel borderPanel;
private javax.swing.JPanel buttonPanel;
private javax.swing.JPanel gamePanel;
private javax.swing.JButton guessButton;
private javax.swing.JTextField guessText;
private javax.swing.JProgressBar guessesLeftBar;
private javax.swing.JLabel guessremainLabel;
private javax.swing.JPanel inputsPanel;
private javax.swing.JLabel mainLabel;
private javax.swing.JPanel mainMsgPanel;
private javax.swing.JLabel messageLabel;
private javax.swing.JPanel remainingGuessesPanel;
private javax.swing.JButton replayBtn;
}