Controls.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  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 JRadioButton grid;
  16. private JRadioButton list;
  17. private class customListener implements ActionListener
  18. {
  19. public void actionPerformed(ActionEvent e)
  20. {
  21. if (e.getSource() == grid)
  22. {
  23. grid.setSelected(true);
  24. list.setSelected(false);
  25. model.switchLayout(true);
  26. grid.setIcon(lightGridIcon);
  27. }
  28. else
  29. {
  30. list.setSelected(true);
  31. grid.setSelected(false);
  32. model.switchLayout(false);
  33. list.setIcon(lightListIcon);
  34. }
  35. }
  36. }
  37. private class superListener implements ActionListener
  38. {
  39. public void actionPerformed(ActionEvent e)
  40. {
  41. if (e.getSource() == star1)
  42. {
  43. if (!(star1.isSelected()) || model.getFilter() == 1)
  44. {
  45. star1.setSelected(false);
  46. star2.setSelected(false);
  47. star3.setSelected(false);
  48. star4.setSelected(false);
  49. star5.setSelected(false);
  50. star1.setIcon(emptyStarIcon);
  51. star2.setIcon(emptyStarIcon);
  52. star3.setIcon(emptyStarIcon);
  53. star4.setIcon(emptyStarIcon);
  54. star5.setIcon(emptyStarIcon);
  55. model.changeFilter(0);
  56. }
  57. else
  58. {
  59. star1.setSelected(true);
  60. star2.setSelected(false);
  61. star3.setSelected(false);
  62. star4.setSelected(false);
  63. star5.setSelected(false);
  64. star1.setIcon(fullStarIcon);
  65. star2.setIcon(emptyStarIcon);
  66. star3.setIcon(emptyStarIcon);
  67. star4.setIcon(emptyStarIcon);
  68. star5.setIcon(emptyStarIcon);
  69. model.changeFilter(1);
  70. }
  71. }
  72. else if (e.getSource() == star2)
  73. {
  74. if (!(star2.isSelected()) || model.getFilter() == 2)
  75. {
  76. star1.setSelected(false);
  77. star2.setSelected(false);
  78. star3.setSelected(false);
  79. star4.setSelected(false);
  80. star5.setSelected(false);
  81. star1.setIcon(emptyStarIcon);
  82. star2.setIcon(emptyStarIcon);
  83. star3.setIcon(emptyStarIcon);
  84. star4.setIcon(emptyStarIcon);
  85. star5.setIcon(emptyStarIcon);
  86. model.changeFilter(0);
  87. }
  88. else
  89. {
  90. star1.setSelected(true);
  91. star2.setSelected(true);
  92. star3.setSelected(false);
  93. star4.setSelected(false);
  94. star5.setSelected(false);
  95. star1.setIcon(fullStarIcon);
  96. star2.setIcon(fullStarIcon);
  97. star3.setIcon(emptyStarIcon);
  98. star4.setIcon(emptyStarIcon);
  99. star5.setIcon(emptyStarIcon);
  100. model.changeFilter(2);
  101. }
  102. }
  103. else if (e.getSource() == star3)
  104. {
  105. if (!(star3.isSelected()) || model.getFilter() == 3)
  106. {
  107. star1.setSelected(false);
  108. star2.setSelected(false);
  109. star3.setSelected(false);
  110. star4.setSelected(false);
  111. star5.setSelected(false);
  112. star1.setIcon(emptyStarIcon);
  113. star2.setIcon(emptyStarIcon);
  114. star3.setIcon(emptyStarIcon);
  115. star4.setIcon(emptyStarIcon);
  116. star5.setIcon(emptyStarIcon);
  117. model.changeFilter(0);
  118. }
  119. else
  120. {
  121. star1.setSelected(true);
  122. star2.setSelected(true);
  123. star3.setSelected(true);
  124. star4.setSelected(false);
  125. star5.setSelected(false);
  126. star1.setIcon(fullStarIcon);
  127. star2.setIcon(fullStarIcon);
  128. star3.setIcon(fullStarIcon);
  129. star4.setIcon(emptyStarIcon);
  130. star5.setIcon(emptyStarIcon);
  131. model.changeFilter(3);
  132. }
  133. }
  134. else if (e.getSource() == star4)
  135. {
  136. if (!(star4.isSelected()) || model.getFilter() == 4)
  137. {
  138. star1.setSelected(false);
  139. star2.setSelected(false);
  140. star3.setSelected(false);
  141. star4.setSelected(false);
  142. star5.setSelected(false);
  143. star1.setIcon(emptyStarIcon);
  144. star2.setIcon(emptyStarIcon);
  145. star3.setIcon(emptyStarIcon);
  146. star4.setIcon(emptyStarIcon);
  147. star5.setIcon(emptyStarIcon);
  148. model.changeFilter(0);
  149. }
  150. else
  151. {
  152. star1.setSelected(true);
  153. star2.setSelected(true);
  154. star3.setSelected(true);
  155. star4.setSelected(true);
  156. star5.setSelected(false);
  157. star1.setIcon(fullStarIcon);
  158. star2.setIcon(fullStarIcon);
  159. star3.setIcon(fullStarIcon);
  160. star4.setIcon(fullStarIcon);
  161. star5.setIcon(emptyStarIcon);
  162. model.changeFilter(4);
  163. }
  164. }
  165. else
  166. {
  167. if (!(star5.isSelected()) || model.getFilter() == 5)
  168. {
  169. star1.setSelected(false);
  170. star2.setSelected(false);
  171. star3.setSelected(false);
  172. star4.setSelected(false);
  173. star5.setSelected(false);
  174. star1.setIcon(emptyStarIcon);
  175. star2.setIcon(emptyStarIcon);
  176. star3.setIcon(emptyStarIcon);
  177. star4.setIcon(emptyStarIcon);
  178. star5.setIcon(emptyStarIcon);
  179. model.changeFilter(0);
  180. }
  181. else
  182. {
  183. star1.setSelected(true);
  184. star2.setSelected(true);
  185. star3.setSelected(true);
  186. star4.setSelected(true);
  187. star5.setSelected(true);
  188. star1.setIcon(fullStarIcon);
  189. star2.setIcon(fullStarIcon);
  190. star3.setIcon(fullStarIcon);
  191. star4.setIcon(fullStarIcon);
  192. star5.setIcon(fullStarIcon);
  193. model.changeFilter(5);
  194. }
  195. }
  196. }
  197. }
  198. private customListener customlistener;
  199. private superListener superlistener;
  200. private ButtonGroup layouts;
  201. private ButtonGroup stars;
  202. private Image emptyStarImg;
  203. private Image fullStarImg;
  204. private Image gridImg;
  205. private Image listImg;
  206. private Image lightGridImg;
  207. private Image lightListImg;
  208. private Image folderImg;
  209. private ImageIcon emptyStarIcon;
  210. private ImageIcon fullStarIcon;
  211. private ImageIcon gridIcon;
  212. private ImageIcon listIcon;
  213. private ImageIcon lightGridIcon;
  214. private ImageIcon lightListIcon;
  215. private ImageIcon folderIcon;
  216. private JButton fileButton;
  217. private JRadioButton star1;
  218. private JRadioButton star2;
  219. private JRadioButton star3;
  220. private JRadioButton star4;
  221. private JRadioButton star5;
  222. private JFileChooser fileChooser;
  223. // Bob the Builder this shit
  224. public Controls(Model model)
  225. {
  226. this.model = model;
  227. this.customlistener = new customListener();
  228. this.superlistener = new superListener();
  229. this.setBackground(Color.white);
  230. this.setLayout(new BorderLayout(0 , 0));
  231. this.setPreferredSize(new Dimension(1280,75));
  232. this.setMinimumSize(new Dimension(320, 75));
  233. try
  234. {
  235. this.fullStarImg = ImageIO.read(new File("src/main/resources/fullStar.png"));
  236. } catch(IOException e) {}
  237. try
  238. {
  239. this.emptyStarImg = ImageIO.read(new File("src/main/resources/emptyStar.png"));
  240. } catch(IOException e) {}
  241. try
  242. {
  243. this.gridImg = ImageIO.read(new File("src/main/resources/grid.png"));
  244. } catch(IOException e) {}
  245. try
  246. {
  247. this.listImg = ImageIO.read(new File("src/main/resources/list.png"));
  248. } catch(IOException e) {}
  249. try
  250. {
  251. this.lightGridImg = ImageIO.read(new File("src/main/resources/invertedgrid.png"));
  252. } catch(IOException e) {}
  253. try
  254. {
  255. this.lightListImg = ImageIO.read(new File("src/main/resources/invertedlist.png"));
  256. } catch(IOException e) {}
  257. try
  258. {
  259. this.folderImg = ImageIO.read(new File("src/main/resources/folder.jpg"));
  260. } catch(IOException e) {}
  261. this.fullStarImg = fullStarImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  262. this.emptyStarImg = emptyStarImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  263. this.gridImg = gridImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  264. this.listImg = listImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  265. this.lightGridImg = lightGridImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  266. this.lightListImg = lightListImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  267. this.folderImg = folderImg.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
  268. this.fullStarIcon = new ImageIcon(fullStarImg);
  269. this.emptyStarIcon = new ImageIcon(emptyStarImg);
  270. this.gridIcon = new ImageIcon(gridImg);
  271. this.listIcon = new ImageIcon(listImg);
  272. this.folderIcon = new ImageIcon(folderImg);
  273. this.grid = new JRadioButton(gridIcon, true);
  274. grid.addActionListener(customlistener);
  275. this.list = new JRadioButton(lightListIcon, false);
  276. list.addActionListener(customlistener);
  277. this.layouts = new ButtonGroup();
  278. layouts.add(grid);
  279. layouts.add(list);
  280. grid.setSelected(true);
  281. list.setSelected(false);
  282. this.fileChooser = new JFileChooser();
  283. this.fileButton = new JButton(folderIcon);
  284. fileButton.addActionListener(new ActionListener()
  285. {
  286. public void actionPerformed(ActionEvent e)
  287. {
  288. int retval = fileChooser.showOpenDialog(null);
  289. if (retval == JFileChooser.APPROVE_OPTION)
  290. {
  291. File file = fileChooser.getSelectedFile();
  292. if (file.isFile())
  293. {
  294. model.newPic(file.getAbsolutePath(), file.getName(), file.length(), file.lastModified());
  295. }
  296. }
  297. }
  298. });
  299. this.star1 = new JRadioButton(emptyStarIcon, false);
  300. star1.addActionListener(superlistener);
  301. this.star2 = new JRadioButton(emptyStarIcon, false);
  302. star2.addActionListener(superlistener);
  303. this.star3 = new JRadioButton(emptyStarIcon, false);
  304. star3.addActionListener(superlistener);
  305. this.star4 = new JRadioButton(emptyStarIcon, false);
  306. star4.addActionListener(superlistener);
  307. this.star5 = new JRadioButton(emptyStarIcon, false);
  308. star5.addActionListener(superlistener);
  309. this.stars = new ButtonGroup();
  310. stars.add(star1);
  311. stars.add(star2);
  312. stars.add(star3);
  313. stars.add(star4);
  314. stars.add(star5);
  315. star1.setSelected(false);
  316. star2.setSelected(false);
  317. star3.setSelected(false);
  318. star4.setSelected(false);
  319. star5.setSelected(false);
  320. JPanel tempPanel = new JPanel();
  321. tempPanel.setLayout(new BoxLayout(tempPanel, BoxLayout.X_AXIS));
  322. tempPanel.add(grid);
  323. tempPanel.add(list);
  324. this.add(tempPanel, BorderLayout.LINE_START);
  325. this.add(new JLabel("Fotag!", JLabel.CENTER), BorderLayout.CENTER);
  326. JPanel tempPanel2 = new JPanel();
  327. tempPanel2.setLayout(new BoxLayout(tempPanel2, BoxLayout.X_AXIS));
  328. tempPanel2.add(star1);
  329. tempPanel2.add(star2);
  330. tempPanel2.add(star3);
  331. tempPanel2.add(star4);
  332. tempPanel2.add(star5);
  333. tempPanel2.add(fileButton);
  334. this.add(tempPanel2, BorderLayout.LINE_END);
  335. model.addObserver(this);
  336. }
  337. public void update(Object observable)
  338. {
  339. revalidate();
  340. repaint();
  341. }
  342. }