-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
GRADE: 61.5/64
Well done, as usual!
Functional and implementation requirements: 42/44 points
Menu: 11/14 points
- 2/2 Add Cut, Copy, and Paste menu items to the Edit menu
with the standard keyboard shortcuts: Shortcut-X, Shortcut-C, Shortcut-V. By convention, they are presented in the order Cut, Copy, Paste. Follow conventions! - 1/1 Cut is disabled when nothing is selected.
- 1/1 Copy is disabled when nothing is selected.
- 0/3 Paste is disabled when there is nothing on the clipboard or it does not contain appropriate data.
- I did not ever see that the Paste menu item was disabled, because I started running the program with data on my clipboard. Note it was not appropriate data to paste into the application, and it caused an exception (see below.)
- 1/1 Undo is disabled when the program starts and when all actions have been undone; it is enabled when the first action is taken.
- 1/1 Redo is disabled unless there is an action to redo.
- 1/1 Group is disabled when there are fewer than two items selected.
- 1/1 Ungroup is disabled when the selection is not (or does not contain) a gesture.
- 1/1 Delete is disabled when nothing is selected.
- 1/1 Play is disabled when there are no notes.
- 1/1 Stop is disabled when the composition is not playing.
Cut/Copy/Paste Implementation: 19/20 points
- 2/2 When Copy is chosen, all currently selected note rectangles and gesture rectangles are copied.
- 2/2 When Cut is chosen, all currently selected note rectangles and gesture rectangles are copied and deleted.
- 4/4 When Paste is chosen, the cut or copied rectangles are added to the composition panel.
- 1/1 Pasted rectangles become the only selected rectangles.
- 1/1 You should be able to paste the contents of the clipboard multiple times.
- 2/2 Gestures can be cut/copied/pasted just like individual notes.
- 4/4 The system clipboard should be used, rather than a clipboard internal to your program.
- 4/4 Cut and Paste should be undoable/redoable actions. ( Copy is not undoable.)
-1 BUG: Your program throws an exception if I attempt to paste invalid data.
Caused by: java.lang.NumberFormatException: For input string: "* 4/4 When **Paste** is chosen, the cut or copied rectangles are added to the composition panel."
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at tunecomposer.CopyPasteActions.translatePastedNoteRectangles(CopyPasteActions.java:144)
at tunecomposer.CopyPasteActions.notesFromString(CopyPasteActions.java:122)
at tunecomposer.CopyPasteActions.paste(CopyPasteActions.java:59)
at tunecomposer.MenuBarController.handlePasteAction(MenuBarController.java:307)
Above & beyond: 2/0 points
- 2/0 For better usability, pasted elements are slightly offset from their original location.
- 0/0 The clipboard content is restored to its previous value when undoing a Cut operation.
- 0/0 Copy composition is the same as Select all-Copy. It's not a standard or common operation, and I think it kind of clutters up the menu.
- 0/0 Saving to a file is addressed in Project 8. You may have gotten ahead on Project 8, but I'm not going to give you any points for doing it early.
No regressions - 8/8 points
- 8/8 All prior requirements are met, unless they have been superseded by new requirements. (I will not replicate points taken off in Project 6.)
Release tag - 2/2 points
- 2/2 The release is tagged as project7-release.
Reflection and elegance - 18.5/20 points
As promised, I am not looking closely at your code for this iteration, only spot-checking.
Your reflection is very helpful overall. Thanks!
- 4/4 UML diagram is accurate and complete.
- I'm surprised that Constants uses GestureModelController - perhaps that arrow should go the other direction?
- You might think about whether this would be easier to read as multiple diagrams: one giving an overview of class relationships, and others providing the details of class interfaces.
- 2/2 Design overview addresses changes from Project 6 in general.
- I like to hear that you reconsidered where existing methods and fields belong with respect to the Single Responsibility Principle.
- Thanks for explaining your stretch goals.
- 1/1 Design overview specifically addresses classes and methods responsible for Cut/Copy/Paste.
- I like that you created a new class responsible for these functions. Were you thinking about the Open-Closed Principle when you made that choice?
- 1/1 Design overview addresses strategy for disabling/enabling menu items, particularly the Paste menu item.
- I like your Timeline approach - that's using the tools that JavaFX provides. You need to also test whether the contents of the clipboard are paste-able.
- 5.5/6 Assessment of what is elegant and what is not thoughtfully addresses object-oriented design principles.
- You are stretching some of the principles, notably DIP. I would not do that in a job interview. But I like that you are thinking about these principles systematically.
- 2/2 Velocity is presented. How does your velocity compare to previous iterations? Are your estimates getting more accurate?
- 1/1 Team retrospective is presented.
- 2/3 New classes/methods are reasonably self-explanatory.
CopyPasteAction.notesToString()is scary.initializePastedGestures()is kind of scary too. While your code is well-documented and names are intention-revealing, you need to work on decomposing complex methods according to the guidelines in Chapter 4.
tylermauletylermauletylermauletylermaule
Metadata
Metadata
Assignees
Labels
No labels