Add new class for Relationship handling and add an enumeration to handle the type. The enumeration may drop out when we change the design to have relationship subclasses.
Re-work to correctly implement the State pattern. This still needs to be broken into 2 states, one for handling when an element is selected and another for handling when an element is not selected.
Added to replace the AddClass/AddRelationship DiagramStates. They both did exactly the same thing but with different elements, so they could be combined into this single state. Also re-worked it to correctly implement the state pattern.
Modified to correct state pattern implementation. Instead of determining the next state in this file, the dialog now has access to a single state (initialized to the SelectDiagramState). Then all calls to the state changed to "state = state.whateverTransitionOperation". So the calls process the event and then return the next state.
Modified all the function calls to return DiagramState instead of void. This is to correct the state pattern implementation to match the book more closely. The form is that for each method, the state will process the event and then return the next state. So a client using this state pattern should make all calls in the form of "state = state.method()" so that the state gets updated by the current state.
Correction so that deleted diagrams are actually removed from the file system
In the opened project dialog, changed File->Exit to File->Close Project.
Added get/set functions for unique ID. Unique IDs are assigned to newly created elements (and should be saved/loaded as well). Plan for future use in determining relationship's source/destination/association classes. Unique ID will be used to aid in persistence. May not be necessary...
Added function to add a relationship to the current diagram. Also added a function to add a generic DiagramElement to the diagram (which is used by the AddElementDiagramState).
Added unique ID support. Added relationship support.
Added an item for the default relationship length, which is the initial size of a relationship line. Also modified the diagram buffer size default so that it's big enough you do not see the bounds on a new diagram.
Added support for unique IDs. Also modified the getLocation function to return a new Point at the element's location instead of a pointer to the location. This prevents other classes from using the get call to modify the actual location.
Removed the class diagram state. This was combined with the relationship diagram state into a single generic AddElementDiagramState.