Skip to content

Project 7 Rubric #103

@Eventhisone

Description

@Eventhisone

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions