package 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; //tore- VideoPanel video = new VideoPanel(); 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); video.stopPlaying(); }else if(event.getSource() == mainMenuPanel.getButton(0)){ changePanel(0); }else if(event.getSource() == mainMenuPanel.getButton(1)){ //changePanel(1); tore- changePanel(video); video.startPlaying(); }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(50,00); testFrame.setVisible(true); } }// end class MainPanel