graph LR
Application_Core["Application Core"]
Domain_Model["Domain Model"]
Persistence_History["Persistence & History"]
User_Interface["User Interface"]
Modeling_Language_Services["Modeling Language Services"]
Code_Generation["Code Generation"]
Application_Core -- "initializes and manages" --> Domain_Model
Application_Core -- "triggers operations on" --> Persistence_History
Application_Core -- "initializes and manages" --> User_Interface
Application_Core -- "initializes and manages" --> Modeling_Language_Services
Domain_Model -- "persists and loads via" --> Persistence_History
Domain_Model -- "notifies changes to" --> Persistence_History
Domain_Model -- "provides data to" --> User_Interface
User_Interface -- "updates" --> Domain_Model
Domain_Model -- "provides model to" --> Code_Generation
Modeling_Language_Services -- "configures" --> Domain_Model
Modeling_Language_Services -- "provides definitions to" --> User_Interface
User_Interface -- "initiates file operations on" --> Persistence_History
click Application_Core href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/Application_Core.md" "Details"
click Domain_Model href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/Domain_Model.md" "Details"
click Persistence_History href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/Persistence_History.md" "Details"
click User_Interface href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/User_Interface.md" "Details"
click Modeling_Language_Services href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/Modeling_Language_Services.md" "Details"
click Code_Generation href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/gaphor/Code_Generation.md" "Details"
The Gaphor project exhibits a clear Model-View-Controller (MVC) like architecture, with a strong emphasis on a central Domain Model that encapsulates the core UML/SysML data. The Application Core acts as the orchestrator, managing the lifecycle of various services and components. Persistence & History is a critical component for data integrity and user experience, handling model storage and change tracking. The User Interface serves as the primary interaction point, visualizing and allowing manipulation of the Domain Model. Specialized services like Modeling Language Services and Code Generation extend the core functionality, providing language-specific configurations and model-to-code transformations, respectively. The design promotes modularity, allowing for clear separation of concerns and facilitating future extensions, particularly in supporting new modeling languages or export formats.
Application Core [Expand]
Manages the overall application lifecycle, service orchestration, event dispatching, and plugin management. It acts as the central hub for application-wide concerns, ensuring services are properly initialized and coordinated.
Related Classes/Methods:
Domain Model [Expand]
The foundational component responsible for managing the abstract UML/SysML data model. It is the "Model" in the MVC pattern, encapsulating the core data, relationships, and business logic of the modeling domain.
Related Classes/Methods:
gaphor.core.modeling.elementfactorygaphor.core.modeling.elementdispatchergaphor.core.modeling.base
Persistence & History [Expand]
Handles the loading, saving, and recovery of models from storage, along with managing the history of model changes to support undo and redo operations. This component ensures data integrity and user flexibility.
Related Classes/Methods:
gaphor.storage.loadgaphor.storage.savegaphor.storage.recoverygaphor.services.undomanager
User Interface [Expand]
Encompasses all graphical user interface elements for user interaction, including diagram editing, property editing, model browsing, and file management dialogs. It combines the "View" and "Controller" aspects for visual interaction.
Related Classes/Methods:
gaphor.ui.diagramsgaphor.ui.diagrampagegaphor.diagram.toolsgaphor.diagram.paintergaphor.diagram.shapesgaphor.diagram.presentationgaphor.core.styling.compilergaphor.core.modeling.stylesheetgaphor.diagram.styleeditorgaphor.ui.toolboxgaphor.diagram.tools.placementgaphor.ui.elementeditorgaphor.diagram.propertypagesgaphor.UML.propertypagesgaphor.ui.modelbrowsergaphor.UML.treemodelgaphor.ui.filemanager
Modeling Language Services [Expand]
Manages the active modeling language (e.g., UML, SysML), providing language-specific definitions for toolbox elements, diagram types, and element behaviors. It ensures the application adheres to the rules and constructs of the chosen modeling standard.
Related Classes/Methods:
Code Generation [Expand]
Translates the abstract model into executable code or other textual representations (e.g., XML, documentation). This component provides the capability to derive artifacts from the visual model.
Related Classes/Methods: