rendered paste bodypackage nith.hansa.gui;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import nith.hansa.gui.keyboard.*;
public class MainPanel extends JPanel{
private InfoCardManager cardManager;
private Dimension bottomDim = new Dimension(1280,175);
private Dimension topDim = new Dimension(1280,62);
private Dimension buttonDim = new Dimension(110,110);
private BottomPanel bottomPanel;
private TopPanel topPanel;
private MainMenuPanel mainMenuPanel;
private JPanel centerPanel;
private Color topBottomColor = Color.BLACK;
private Timer timer;
private JButton homeButton;
private JButton nextButton;
private JButton prevButton;
private final String IMAGE_PREFIX = "Images/GUI/";
private ImageIcon homeButtonIcon;
private ImageIcon homeButtonIconHit;
private ImageIcon nextButtonIcon;
private ImageIcon nextButtonIconHit;
private ImageIcon nextButtonIconDisabled;
private ImageIcon prevButtonIcon;
private ImageIcon prevButtonIconHit;
private ImageIcon prevButtonIconDisabled;
private ImageIcon topPanelIcon;
private ImageIcon bottomPanelIcon;
private FlowLayout layout;
private Font descriptionTextFont = new Font("Microsoft Sans Serif",Font.PLAIN,30);
private ActionHandler handler = new ActionHandler();
private TimerHandler timerHandler = new TimerHandler();
private ChoicePanel choicePanel;
private InfoCardManager[] managers = {
new InfoCardManager("Historikk"),
new InfoCardManager("Ølbrygging"),
new InfoCardManager("Øl"),
new InfoCardManager("Mineralvann"),
new InfoCardManager("Idag")
};
private final int IDLE_TIME_BEFORE_RESET = 300000;
public MainPanel(){
timer = new Timer(IDLE_TIME_BEFORE_RESET,timerHandler);
setLayout(new BorderLayout());
mainMenuPanel = new MainMenuPanel(handler);
choicePanel = new ChoicePanel(handler);
centerPanel = mainMenuPanel;
// HomeButton
homeButtonIcon = new ImageIcon(IMAGE_PREFIX + "MainMenu.jpg");
homeButtonIconHit = new ImageIcon(IMAGE_PREFIX + "MainMenuHit.jpg");
topPanelIcon = new ImageIcon(IMAGE_PREFIX + "TopPanel.jpg");
bottomPanelIcon = new ImageIcon(IMAGE_PREFIX + "BottomPanel.jpg");
homeButton = new JButton(homeButtonIcon);
homeButton.setPressedIcon(homeButtonIconHit);
homeButton.setBorderPainted(false);
homeButton.setMaximumSize(new Dimension(buttonDim));
homeButton.setMinimumSize(new Dimension(buttonDim));
homeButton.setContentAreaFilled(false);
homeButton.setFocusPainted(false);
homeButton.addActionListener(handler);
// NextButton
nextButtonIcon = new ImageIcon(IMAGE_PREFIX + "Next.jpg");
nextButtonIconHit = new ImageIcon(IMAGE_PREFIX + "NextHit.jpg");
nextButtonIconDisabled = new ImageIcon(IMAGE_PREFIX + "NextDisabled.jpg");
nextButton = new JButton(nextButtonIcon);
nextButton.setPressedIcon(nextButtonIconHit);
nextButton.setDisabledIcon(nextButtonIconDisabled);
nextButton.setBorderPainted(false);
nextButton.setMaximumSize(new Dimension(buttonDim));
nextButton.setMinimumSize(new Dimension(buttonDim));
nextButton.setContentAreaFilled(false);
nextButton.setFocusPainted(false);
nextButton.addActionListener(handler);
// PrevButton
prevButtonIcon = new ImageIcon(IMAGE_PREFIX + "Prev.jpg");
prevButtonIconHit = new ImageIcon(IMAGE_PREFIX + "PrevHit.jpg");
prevButtonIconDisabled = new ImageIcon(IMAGE_PREFIX + "PrevDisabled.jpg");
prevButton = new JButton(prevButtonIcon);
prevButton.setPressedIcon(prevButtonIconHit);
prevButton.setDisabledIcon(prevButtonIconDisabled);
prevButton.setBorderPainted(false);
prevButton.setMaximumSize(new Dimension(buttonDim));
prevButton.setMinimumSize(new Dimension(buttonDim));
prevButton.setContentAreaFilled(false);
prevButton.setFocusPainted(false);
prevButton.addActionListener(handler);
bottomPanel = new BottomPanel();
topPanel = new TopPanel();
add(centerPanel,BorderLayout.CENTER);
// add(new KeyboardControls(false),BorderLayout.CENTER);
// topPanel.setDescriptionText("Skriv inn navnet du ønsker å skrive ut på diplomet");
add(bottomPanel,BorderLayout.SOUTH);
add(topPanel,BorderLayout.NORTH);
toggleButtons();
timer.start();
}// end no-param constructor
private class BottomPanel extends JPanel{
public BottomPanel(){
layout = new FlowLayout();
layout.setVgap(22);
setLayout(layout);
setBackground(topBottomColor);
setPreferredSize(bottomDim);
}// end constructor
public void removeButtons(){
remove(prevButton);
remove(homeButton);
remove(nextButton);
revalidate();
}
public void addButtons() {
add(prevButton);
add(homeButton);
add(nextButton);
revalidate();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
bottomPanelIcon.paintIcon(this,g,0,0);
}
}// end private class BottomPanel
private class TopPanel extends JPanel{
private String stringToDraw = "";
public TopPanel(){
setBackground(topBottomColor);
setPreferredSize(topDim);
}// end constructor
public void setDescriptionText(String text){
stringToDraw = text;
repaint();
}
public void paintComponent(Graphics g){
setFont(descriptionTextFont);
super.paintComponent(g);
topPanelIcon.paintIcon(this,g,0,0);
RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
renderHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHints(renderHints);
g2d.setColor(Color.WHITE);
g2d.drawString(stringToDraw,(getWidth()/2)-((stringToDraw.length() * descriptionTextFont.getSize()/2)/2)+40,40);
}
}// end private class TopPanel
private class ActionHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource() == prevButton){
cardManager.previousSlide();
toggleButtons();
}else if( event.getSource() == nextButton){
cardManager.nextSlide();
toggleButtons();
}else if(event.getSource() == homeButton){
mainMenu(false);
}else if(event.getSource() == mainMenuPanel.getButton(0)){
changePanel(0);
}else if(event.getSource() == mainMenuPanel.getButton(1)){
changePanel(1);
}else if(event.getSource() == mainMenuPanel.getButton(2)){
changePanel(choicePanel);
toggleButtons(1);
}else if(event.getSource() == mainMenuPanel.getButton(3)){
changePanel(4);
}else if(event.getSource() == choicePanel.getØlButton()){
changePanel(2);
}else if(event.getSource() == choicePanel.getMineralvannButton()){
changePanel(3);
}
timer.restart();
}// end actionPerformed
private void changePanel(int i){
remove(centerPanel);
cardManager = managers[i];
centerPanel = cardManager;
toggleButtons();
add(centerPanel);
bottomPanel.addButtons();
refresh();
}
private void changePanel(ContentPanel panel){
remove(centerPanel);
centerPanel = panel;
add(centerPanel);
bottomPanel.addButtons();
refresh();
}
}// end ActionHandler
private class TimerHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
MainPanel.this.mainMenu(true);
}
}// end class TimerHandler
public void refresh(){
centerPanel.revalidate();
centerPanel.repaint();
bottomPanel.revalidate();
bottomPanel.repaint();
}
public void toggleButtons(){
int enabled ;
if(cardManager != null){
enabled = cardManager.getButtonsEnabled();
}else{
enabled = 1;
}
toggleButtons(enabled);
}// end toggleButtons
public void toggleButtons(int buttonMode){
switch(buttonMode){
case 1:
nextButton.setEnabled(false);
prevButton.setEnabled(false);
break;
case 2:
nextButton.setEnabled(true);
prevButton.setEnabled(false);
break;
case 3:
nextButton.setEnabled(false);
prevButton.setEnabled(true);
break;
case 4:
nextButton.setEnabled(true);
prevButton.setEnabled(true);
}
}
public void mainMenu(boolean isTimerTriggered){
ContentPanel tempPanel = mainMenuPanel;
if(centerPanel == choicePanel){
bottomPanel.removeButtons();
}else {
if(cardManager != null){
if(cardManager.getInfoSubject().equals("Øl")
|| cardManager.getInfoSubject().equals("Mineralvann")){
/*
* If the event is triggered by the timer the program will return
* to the main menu even though a push on the main menu button would send
* you back to the choicePanel
*/
if(!isTimerTriggered){
tempPanel = choicePanel;
toggleButtons(1);
}else{
tempPanel = mainMenuPanel;
bottomPanel.removeButtons();
}
}else{
tempPanel = mainMenuPanel;
bottomPanel.removeButtons();
}// end inner else if
}// end if
}// end else if
if(cardManager != null){
cardManager.resetSlides();
}
remove(centerPanel);
centerPanel = tempPanel;
add(centerPanel);
refresh();
}
public void resetManagers(){
for (int i = 0; i < managers.length;i++){
managers[i].resetSlides();
}
}
public static void main(String[]args){
JFrame testFrame = new JFrame();
testFrame.add(new MainPanel());
// testFrame.add(new InfoPanel("test"),BorderLayout.CENTER);
testFrame.setAlwaysOnTop(true);
testFrame.setUndecorated(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setSize(1280,1024);
testFrame.setLocation(0,-250);
testFrame.setVisible(true);
}
}// end class MainPanel