Controls.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import java.io.*;
  2. import java.io.File;
  3. import java.util.*;
  4. import java.awt.*;
  5. import javax.swing.*;
  6. import javax.swing.event.*;
  7. import java.awt.event.*;
  8. import javax.swing.ImageIcon;
  9. import java.awt.image.*;
  10. import javax.imageio.ImageIO;
  11. import javax.swing.JFileChooser;
  12. public class Controls extends JPanel implements Observer, Serializable
  13. {
  14. private Model model;
  15. private JSlider rating;
  16. private JRadioButton grid;
  17. private JRadioButton list;
  18. private class customListener implements ActionListener
  19. {
  20. public void actionPerformed(ActionEvent e)
  21. {
  22. if (e.getSource() ==grid)
  23. {
  24. grid.setSelected(true);
  25. list.setSelected(false);
  26. model.switchLayout(true);
  27. }
  28. else
  29. {
  30. list.setSelected(true);
  31. grid.setSelected(false);
  32. model.switchLayout(false);
  33. }
  34. }
  35. }
  36. private customListener customlistener;
  37. private ButtonGroup layouts;
  38. private Image starImg;
  39. private Image gridImg;
  40. private Image listImg;
  41. private Image folderImg;
  42. private ImageIcon starIcon;
  43. private ImageIcon gridIcon;
  44. private ImageIcon listIcon;
  45. private ImageIcon folderIcon;
  46. private JButton fileButton;
  47. private JFileChooser fileChooser;
  48. // Bob the Builder this shit
  49. public Controls(Model model)
  50. {
  51. this.model = model;
  52. this.customlistener = new customListener();
  53. this.setBackground(new Color(255, 75, 50));
  54. this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  55. this.setPreferredSize(new Dimension(1280,75));
  56. this.setMinimumSize(new Dimension(320, 75));
  57. try
  58. {
  59. this.starImg = ImageIO.read(new File("src/main/resources/star.png"));
  60. } catch(IOException e) {}
  61. try
  62. {
  63. this.gridImg = ImageIO.read(new File("src/main/resources/grid.png"));
  64. } catch(IOException e) {}
  65. try
  66. {
  67. this.listImg = ImageIO.read(new File("src/main/resources/list.png"));
  68. } catch(IOException e) {}
  69. try
  70. {
  71. this.folderImg = ImageIO.read(new File("src/main/resources/folder.jpg"));
  72. } catch(IOException e) {}
  73. this.starImg = starImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  74. this.gridImg = gridImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  75. this.listImg = listImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  76. this.folderImg = folderImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  77. this.starIcon = new ImageIcon(starImg);
  78. this.gridIcon = new ImageIcon(gridImg);
  79. this.listIcon = new ImageIcon(listImg);
  80. this.folderIcon = new ImageIcon(folderImg);
  81. this.grid = new JRadioButton(gridIcon, true);
  82. grid.addActionListener(customlistener);
  83. this.list = new JRadioButton(listIcon, false);
  84. list.addActionListener(customlistener);
  85. this.layouts = new ButtonGroup();
  86. layouts.add(grid);
  87. layouts.add(list);
  88. grid.setSelected(true);
  89. list.setSelected(false);
  90. this.fileChooser = new JFileChooser();
  91. this.fileButton = new JButton(folderIcon);
  92. fileButton.addActionListener(new ActionListener()
  93. {
  94. public void actionPerformed(ActionEvent e)
  95. {
  96. int retval = fileChooser.showOpenDialog(null);
  97. if (retval == JFileChooser.APPROVE_OPTION)
  98. {
  99. File file = fileChooser.getSelectedFile();
  100. if (file.isFile())
  101. {
  102. model.newPic(file.getAbsolutePath(), file.getName(), file.length(), file.lastModified());
  103. }
  104. }
  105. }
  106. });
  107. this.rating = new JSlider(0, 5, 0);
  108. rating.addChangeListener(new ChangeListener()
  109. {
  110. public void stateChanged(ChangeEvent e)
  111. {
  112. model.changeFilter(rating.getValue());
  113. }
  114. });
  115. this.rating.setPreferredSize(new Dimension(280, 75));
  116. this.add(grid);
  117. this.add(list);
  118. this.add(rating);
  119. this.add(fileButton);
  120. model.addObserver(this);
  121. }
  122. public void update(Object observable)
  123. {
  124. revalidate();
  125. repaint();
  126. }
  127. }