Controls.java 12 KB

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