/MyInvenotry/src/presentation/classes/FileNewPanel.java

https://bitbucket.org/spider_lock/my-invenotry · Java · 274 lines · 223 code · 23 blank · 28 comment · 24 complexity · cf2f1720420cd77c59cddfdba1647782 MD5 · raw file

  1. /*
  2. * FileNewPanel will provide the user with a way of adding new equipment to the
  3. * database.
  4. *
  5. * @author Slobodan Milanko
  6. * @version 1.0
  7. *
  8. */
  9. package presentation.classes;
  10. // imports
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;
  15. import javax.swing.JButton;
  16. import javax.swing.JLabel;
  17. import javax.swing.JOptionPane;
  18. import javax.swing.JPanel;
  19. import javax.swing.JPopupMenu;
  20. import javax.swing.JTextField;
  21. import business.classes.EquipmentSvcMgr;
  22. import domain.classes.Equipment;
  23. import domain.classes.Logger;
  24. import presentation.exceptions.RequiredFieldsAreEmptyException;
  25. public class FileNewPanel extends JPanel {
  26. // private componenets
  27. private JPanel panel;
  28. private JButton addButton;
  29. private JButton cancelButton;
  30. private JLabel title;
  31. private JLabel typeLabel;
  32. private JLabel makeLabel;
  33. private JLabel modelLabel;
  34. private JLabel yearLabel;
  35. private JLabel serialLabel;
  36. private JLabel descriptionLabel;
  37. private JTextField typeField;
  38. private JTextField makeField;
  39. private JTextField modelField;
  40. private JTextField yearField;
  41. private JTextField descriptionField;
  42. private JTextField serialField;
  43. public FileNewPanel() {
  44. // add to panel
  45. panel = new JPanel();
  46. title = new JLabel("Add New Equipment");
  47. typeLabel = new JLabel("Type");
  48. makeLabel = new JLabel("Make");
  49. modelLabel = new JLabel("Model");
  50. yearLabel = new JLabel("Year");
  51. serialLabel = new JLabel("Serial");
  52. descriptionLabel = new JLabel("Description");
  53. typeField = new JTextField(20);
  54. makeField = new JTextField(20);
  55. modelField = new JTextField(20);
  56. yearField = new JTextField(20);
  57. serialField = new JTextField(20);
  58. descriptionField = new JTextField(20);
  59. addButton = new JButton("Add");
  60. cancelButton = new JButton("Cancel");
  61. panel = new JPanel();
  62. // we will do a manual position of components
  63. panel.setLayout(null);
  64. panel.setSize(700, 450);
  65. // setting label positions
  66. title.setBounds(310,0,200, 25);
  67. typeLabel.setBounds(150, 50, 100, 25);
  68. makeLabel.setBounds(150, 90, 200, 25);
  69. modelLabel.setBounds(150, 130, 200, 25);
  70. yearLabel.setBounds(150, 170, 200, 25);
  71. serialLabel.setBounds(150, 210, 200, 25);
  72. descriptionLabel.setBounds(150, 250, 200, 25);
  73. // setting Field positions
  74. typeField.setBounds(320, 50, 450, 25);
  75. makeField.setBounds(320, 90, 450, 25);
  76. modelField.setBounds(320, 130, 450, 25);
  77. yearField.setBounds(320, 170, 450, 25);
  78. serialField.setBounds(320, 210, 450, 25);
  79. descriptionField.setBounds(320, 250, 450, 25);
  80. // setting button positions
  81. addButton.setBounds(500, 330, 100, 30);
  82. cancelButton.setBounds(670, 330, 100, 30);
  83. // add to panel
  84. panel.add(title);
  85. panel.add(typeLabel);
  86. panel.add(typeField);
  87. panel.add(makeLabel);
  88. panel.add(makeField);
  89. panel.add(modelLabel);
  90. panel.add(modelField);
  91. panel.add(yearLabel);
  92. panel.add(yearField);
  93. panel.add(serialLabel);
  94. panel.add(serialField);
  95. panel.add(descriptionLabel);
  96. panel.add(descriptionField);
  97. panel.add(addButton);
  98. panel.add(cancelButton);
  99. // internal listeners
  100. addButton.addActionListener(new ActionListener(){
  101. @Override
  102. public void actionPerformed(ActionEvent addClicked) {
  103. // grab field data and place it in new eQ instance
  104. try {
  105. // if any field empty, throw new field empty exception
  106. if(
  107. (makeField.getText().isEmpty() || makeField.getText()== null)||
  108. (typeField.getText().isEmpty() || typeField.getText() == null)||
  109. (modelField.getText().isEmpty() || modelField.getText() == null)||
  110. (yearField.getText().isEmpty() || yearField.getText() == null)||
  111. (serialField.getText().isEmpty() || serialField.getText() == null)
  112. ) {
  113. throw new RequiredFieldsAreEmptyException();
  114. }
  115. else {
  116. // create a new equipment object
  117. Equipment newEquipment = new Equipment();
  118. // set its properties
  119. newEquipment.setMakeOfEq(makeField.getText());
  120. newEquipment.setTypeOfEq(typeField.getText());
  121. newEquipment.setModelOfEq(modelField.getText());
  122. newEquipment.setYearOfEq(Integer.parseInt(yearField.getText()));
  123. newEquipment.setSerialNumberOfEq(serialField.getText());
  124. newEquipment.setDescriptionOfEq(descriptionField.getText());
  125. // validate input
  126. boolean validateQ = newEquipment.validate();
  127. // if valid, call appropriate managers
  128. if(validateQ == true) {
  129. EquipmentSvcMgr addEq = new EquipmentSvcMgr();
  130. boolean wasAdded = addEq.addEquipment(newEquipment);
  131. if (wasAdded == true) {
  132. JOptionPane.showMessageDialog(null, "Equipment added successfully!");
  133. // reset all fields
  134. makeField.setText("");
  135. typeField.setText("");
  136. modelField.setText("");
  137. yearField.setText("");
  138. serialField.setText("");
  139. descriptionField.setText("");
  140. }
  141. else {
  142. JOptionPane.showMessageDialog(null, "Unable to add new Equipment.");
  143. }
  144. } // else tell the user something was entered in wrong. consult the help file
  145. else {
  146. JOptionPane.showMessageDialog(null, "Something was entered incorrectly. Please try again.");
  147. }
  148. }
  149. }
  150. catch (RequiredFieldsAreEmptyException emptyField) {
  151. JOptionPane.showMessageDialog(null, emptyField.getMessage());
  152. }
  153. catch (NumberFormatException cannotParse) {
  154. JOptionPane.showMessageDialog(null, "Incorrect value entered for year");
  155. }
  156. catch (Exception e) {
  157. Logger logger = new Logger(e.getMessage() + " FileNewPanel addButton");
  158. JOptionPane.showMessageDialog(null, "Unknow error occoured :: " + e.getMessage() + " FileNewPanel.add");
  159. }
  160. }});
  161. // listeners
  162. cancelButton.addActionListener(new ActionListener(){
  163. @Override
  164. public void actionPerformed(ActionEvent cancelClicked){
  165. // remove the panel from HomeFrame
  166. HomeFrame.removePanel();
  167. }});
  168. // create a popupmenu listener for all fields copy / paste / delete / cut
  169. typeField.addMouseListener(new MouseAdapter() {
  170. @Override
  171. public void mouseReleased(MouseEvent rightClick) {
  172. if(rightClick.isPopupTrigger()) {
  173. typeField.requestFocus();
  174. final RightClickPopupNew pasteMenu = new RightClickPopupNew(typeField);
  175. JPopupMenu menu = pasteMenu.getMenu();
  176. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  177. }
  178. }
  179. });
  180. typeField.addMouseListener(new MouseAdapter() {
  181. @Override
  182. public void mouseReleased(MouseEvent rightClick) {
  183. if(rightClick.isPopupTrigger()) {
  184. typeField.requestFocus();
  185. final RightClickPopupNew pasteMenu = new RightClickPopupNew(typeField);
  186. JPopupMenu menu = pasteMenu.getMenu();
  187. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  188. }
  189. }
  190. });
  191. makeField.addMouseListener(new MouseAdapter() {
  192. @Override
  193. public void mouseReleased(MouseEvent rightClick) {
  194. if(rightClick.isPopupTrigger()) {
  195. makeField.requestFocus();
  196. final RightClickPopupNew pasteMenu = new RightClickPopupNew(makeField);
  197. JPopupMenu menu = pasteMenu.getMenu();
  198. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  199. }
  200. }
  201. });
  202. modelField.addMouseListener(new MouseAdapter() {
  203. @Override
  204. public void mouseReleased(MouseEvent rightClick) {
  205. if(rightClick.isPopupTrigger()) {
  206. modelField.requestFocus();
  207. final RightClickPopupNew pasteMenu = new RightClickPopupNew(modelField);
  208. JPopupMenu menu = pasteMenu.getMenu();
  209. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  210. }
  211. }
  212. });
  213. yearField.addMouseListener(new MouseAdapter() {
  214. @Override
  215. public void mouseReleased(MouseEvent rightClick) {
  216. if(rightClick.isPopupTrigger()) {
  217. yearField.requestFocus();
  218. final RightClickPopupNew pasteMenu = new RightClickPopupNew(yearField);
  219. JPopupMenu menu = pasteMenu.getMenu();
  220. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  221. }
  222. }
  223. });
  224. serialField.addMouseListener(new MouseAdapter() {
  225. @Override
  226. public void mouseReleased(MouseEvent rightClick) {
  227. if(rightClick.isPopupTrigger()) {
  228. serialField.requestFocus();
  229. final RightClickPopupNew pasteMenu = new RightClickPopupNew(serialField);
  230. JPopupMenu menu = pasteMenu.getMenu();
  231. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  232. }
  233. }
  234. });
  235. descriptionField.addMouseListener(new MouseAdapter() {
  236. @Override
  237. public void mouseReleased(MouseEvent rightClick) {
  238. if(rightClick.isPopupTrigger()) {
  239. descriptionField.requestFocus();
  240. final RightClickPopupNew pasteMenu = new RightClickPopupNew(descriptionField);
  241. JPopupMenu menu = pasteMenu.getMenu();
  242. menu.show(rightClick.getComponent(), rightClick.getX(), rightClick.getY());
  243. }
  244. }
  245. });
  246. }
  247. // getter for panel
  248. public JPanel getPanel() {
  249. return panel;
  250. }
  251. }