Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.18 KB | None | 0 0
  1. package com.protocase.notes.views;
  2.  
  3. import com.protocase.notes.controller.NotesController;
  4. import com.protocase.notes.model.Note;
  5. import java.awt.CardLayout;
  6. import java.awt.Color;
  7. import java.awt.Component;
  8. import java.awt.Dimension;
  9. import java.awt.GridBagConstraints;
  10. import java.awt.GridBagLayout;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.text.DateFormat;
  14. import java.text.SimpleDateFormat;
  15. import javax.swing.BoxLayout;
  16. import javax.swing.JButton;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JTextArea;
  21. import javax.swing.border.BevelBorder;
  22.  
  23. /**
  24. * @author dah01
  25. */
  26. public class NotesPanel extends JPanel {
  27. // <editor-fold defaultstate="collapsed" desc="Attributes">
  28. private Note note;
  29. private NotesController controller;
  30. private CardLayout cardLayout;
  31. //</editor-fold>
  32. // <editor-fold defaultstate="collapsed" desc="Getters N' Setters">
  33.  
  34. public NotesController getController() {
  35. return controller;
  36. }
  37.  
  38. public void setController(NotesController controller) {
  39. this.controller = controller;
  40. }
  41.  
  42. public Note getNote() {
  43. return note;
  44. }
  45.  
  46. public void setNote(Note note) {
  47. this.note = note;
  48. }
  49. //</editor-fold>
  50. // <editor-fold defaultstate="collapsed" desc="Constructor">
  51.  
  52. /**
  53. * Sets up a note panel that shows everything about the note.
  54. * @param note
  55. */
  56. public NotesPanel(Note note, NotesController controller) {
  57. this.note = note;
  58. cardLayout = new CardLayout();
  59. this.setLayout(cardLayout);
  60.  
  61. // -- Setup the layout manager.
  62. this.setBackground(new Color(199, 187, 192));
  63. this.setBorder(new BevelBorder(BevelBorder.RAISED));
  64.  
  65. // -- ViewPanel
  66. this.add("ViewPanel", makeViewPanel());
  67. this.add("EditPanel", makeEditPanel());
  68. }
  69. //</editor-fold>
  70. // <editor-fold defaultstate="collapsed" desc="EditPanel">
  71. private JPanel makeEditPanel() {
  72. JPanel editPanel = new JPanel();
  73. editPanel.setLayout(new GridBagLayout());
  74. GridBagConstraints c = new GridBagConstraints();
  75.  
  76. c.fill = GridBagConstraints.HORIZONTAL;
  77. c.gridy = 0;
  78. c.weightx = 1;
  79. c.weighty = 0.3;
  80. editPanel.add(makeCreatorLabel(), c);
  81.  
  82. c.gridy++;
  83. editPanel.add(makeEditTextScroll(), c);
  84.  
  85. c.gridy++;
  86. editPanel.add(makeEditorLabel(), c);
  87.  
  88. c.gridy++;
  89. c.anchor = GridBagConstraints.EAST;
  90. editPanel.add(makeSaveButton(), c);
  91.  
  92. return editPanel;
  93. }
  94.  
  95. private JScrollPane makeEditTextScroll() {
  96. JTextArea notesContentsArea = new JTextArea(note.getContents());
  97. notesContentsArea.setLineWrap(true);
  98. notesContentsArea.setWrapStyleWord(true);
  99. JScrollPane scrollPane = new JScrollPane(notesContentsArea);
  100. scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);
  101. return scrollPane;
  102. }
  103.  
  104. private JButton makeSaveButton() {
  105. final CardLayout l = this.cardLayout;
  106. final JPanel p = this;
  107.  
  108. final NotesController c = this.controller;
  109. final Note n = this.note;
  110. ActionListener al = new ActionListener() {
  111.  
  112. @Override
  113. public void actionPerformed(ActionEvent e) {
  114. //controller.saveNote(n);
  115. l.next(p);
  116. }
  117. };
  118.  
  119. JButton saveButton = new JButton("Save");
  120. saveButton.addActionListener(al);
  121.  
  122. return saveButton;
  123. }
  124.  
  125. //</editor-fold>
  126. // <editor-fold defaultstate="collapsed" desc="ViewPanel">
  127. private JPanel makeViewPanel() {
  128. JPanel viewPanel = new JPanel();
  129. viewPanel.setLayout(new GridBagLayout());
  130. GridBagConstraints c = new GridBagConstraints();
  131.  
  132. c.fill = GridBagConstraints.HORIZONTAL ;
  133. c.gridy = 0;
  134. c.weightx = 1;
  135. c.weighty = 0.3;
  136. viewPanel.add(makeCreatorLabel(), c);
  137.  
  138. c.gridy++;
  139. viewPanel.add(makeNoteTextArea(), c);
  140.  
  141. c.gridy++;
  142. viewPanel.add(makeEditorLabel(), c);
  143.  
  144. c.gridy++;
  145. c.anchor = GridBagConstraints.EAST;
  146. viewPanel.add(makeEditButton(), c);
  147.  
  148. return viewPanel;
  149. }
  150.  
  151. private JLabel makeCreatorLabel() {
  152. DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  153. if (note != null) {
  154. String noteBy = "Note by " + note.getCreator();
  155.  
  156. String noteCreated = formatter.format(note.getDateCreated());
  157. JLabel creatorLabel = new JLabel(noteBy + " @ " + noteCreated);
  158. creatorLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT);
  159. return creatorLabel;
  160. } else {
  161. System.out.println("NOTE IS NULL");
  162. return null;
  163. }
  164.  
  165.  
  166. }
  167.  
  168. private JScrollPane makeNoteTextArea() {
  169. // -- Setup the notes area.
  170. JTextArea notesContentsArea = new JTextArea(note.getContents());
  171. notesContentsArea.setEditable(false);
  172. notesContentsArea.setLineWrap(true);
  173. notesContentsArea.setWrapStyleWord(true);
  174. JScrollPane scrollPane = new JScrollPane(notesContentsArea);
  175. scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);
  176. return scrollPane;
  177. }
  178.  
  179. private JLabel makeEditorLabel() {
  180. // -- Setup the edited by label.
  181. JLabel editorLabel = new JLabel(" -- Last edited by " + note.getLastEdited() + " at " + note.getDateModified());
  182. editorLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
  183. return editorLabel;
  184. }
  185.  
  186. private JButton makeEditButton() {
  187. final CardLayout l = this.cardLayout;
  188. final JPanel p = this;
  189.  
  190. ActionListener ar = new ActionListener() {
  191.  
  192. @Override
  193. public void actionPerformed(ActionEvent e) {
  194. l.next(p);
  195. }
  196. };
  197.  
  198. JButton editButton = new JButton("Edit");
  199. editButton.addActionListener(ar);
  200.  
  201. return editButton;
  202. }
  203. //</editor-fold>
  204. // <editor-fold defaultstate="collapsed" desc="Grow Width When Resized">
  205.  
  206. @Override
  207. public Dimension getPreferredSize() {
  208. int fw = this.getParent().getSize().width;
  209. int fh = super.getPreferredSize().height;
  210. return new Dimension(fw,fh);
  211. }
  212. //</editor-fold>
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement