graph LR
User_Interface_UI_Editor["User Interface (UI) & Editor"]
Application_Layer["Application Layer"]
Domain_Layer["Domain Layer"]
Infrastructure_Layer["Infrastructure Layer"]
Plugin_Extension_System["Plugin/Extension System"]
Event_Bus["Event Bus"]
Project_Management["Project Management"]
Robot_Framework_Runner_Executor["Robot Framework Runner/Executor"]
Main_Application_Frame["Main Application Frame"]
Project_Tree_View["Project Tree View"]
Editor_Management["Editor Management"]
Text_Editor["Text Editor"]
Grid_Editor["Grid Editor"]
User_Interface_UI_Editor -- "sends commands to and receives updates from" --> Application_Layer
User_Interface_UI_Editor -- "leverages" --> Event_Bus
Application_Layer -- "receives commands from and sends data to" --> User_Interface_UI_Editor
Application_Layer -- "requests operations from" --> Domain_Layer
Application_Layer -- "requests services from" --> Infrastructure_Layer
Application_Layer -- "publishes events to" --> Event_Bus
Application_Layer -- "subscribes to updates from" --> Event_Bus
Application_Layer -- "subscribes to progress and results from" --> Event_Bus
Domain_Layer -- "receives requests from and returns results to" --> Application_Layer
Domain_Layer -- "requests services from" --> Infrastructure_Layer
Domain_Layer -- "publishes events to" --> Event_Bus
Infrastructure_Layer -- "provides services to" --> Application_Layer
Infrastructure_Layer -- "provides services to" --> Domain_Layer
Plugin_Extension_System -- "registers extensions with and provides services to" --> Application_Layer
Plugin_Extension_System -- "adds UI elements to" --> User_Interface_UI_Editor
Plugin_Extension_System -- "leverages" --> Event_Bus
Project_Management -- "receives commands from and provides state to" --> Application_Layer
Project_Management -- "performs operations via" --> Infrastructure_Layer
Project_Management -- "publishes updates to" --> Event_Bus
Robot_Framework_Runner_Executor -- "receives commands from" --> Application_Layer
Robot_Framework_Runner_Executor -- "retrieves data from" --> Domain_Layer
Robot_Framework_Runner_Executor -- "publishes progress and results to" --> Event_Bus
Main_Application_Frame -- "manages/contains" --> Project_Tree_View
Main_Application_Frame -- "manages/contains" --> Editor_Management
Main_Application_Frame -- "sends commands to and receives updates from" --> Application_Layer
Project_Tree_View -- "is contained by" --> Main_Application_Frame
Project_Tree_View -- "requests operations from" --> Application_Layer
Editor_Management -- "is contained by" --> Main_Application_Frame
Editor_Management -- "manages/contains" --> Text_Editor
Editor_Management -- "manages/contains" --> Grid_Editor
Editor_Management -- "requests content from and signals operations to" --> Application_Layer
Text_Editor -- "is contained by" --> Editor_Management
Text_Editor -- "requests data from" --> Application_Layer
Text_Editor -- "sends content to and receives content from" --> Application_Layer
Grid_Editor -- "is contained by" --> Editor_Management
Grid_Editor -- "requests data from" --> Application_Layer
Grid_Editor -- "sends data to and receives data from" --> Application_Layer
click User_Interface_UI_Editor href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/RIDE/User_Interface_UI_Editor.md" "Details"
click Plugin_Extension_System href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/RIDE/Plugin_Extension_System.md" "Details"
click Project_Management href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/RIDE/Project_Management.md" "Details"
Abstract Components Overview: This document outlines the key architectural components of the Robot Framework IDE, their responsibilities, and their interrelationships. The architecture is designed to be modular, extensible, and maintainable, following layered principles to ensure clear separation of concerns. The component relationships have been revised to align with standard layered architectural principles. Specifically: 1. Direct interactions where the User Interface (UI) & Editor received data directly from the Domain Layer have been removed. UI components now primarily interact with the Application Layer, which then orchestrates data retrieval from the Domain Layer. 2. Direct updates/data transfers from backend components (Project Management, Robot Framework Runner/Executor) to the User Interface (UI) & Editor have been re-routed. These backend components now publish updates and results to the Event Bus. The Application Layer subscribes to these events and then sends the necessary updates to the User Interface (UI) & Editor, maintaining the Application Layer's role as an orchestrator.
User Interface (UI) & Editor [Expand]
Responsible for all visual aspects of the IDE and handling user interactions. This includes the main application frame, the project tree view, the notebook for open files, and specialized editors.
Related Classes/Methods: None
Acts as the orchestrator, handling user commands, managing application state, and coordinating interactions between the UI, Domain, and Infrastructure layers. It includes high-level project and file handling logic.
Related Classes/Methods: None
Encapsulates all the business logic related to Robot Framework. This includes parsing Robot Framework files, managing test suites, test cases, keywords, variables, and interacting with the Robot Framework engine.
Related Classes/Methods: None
Provides common services and utilities, such as file I/O operations, configuration management, logging, and potentially integration points with external tools or the operating system.
Related Classes/Methods: None
Plugin/Extension System [Expand]
A well-defined API and mechanism for third-party or internal extensions to integrate seamlessly with the IDE, adding new functionalities without modifying the core application.
Related Classes/Methods: None
A central communication hub implementing an Event-Driven Architecture, facilitating loose coupling between components by allowing them to publish and subscribe to events without direct dependencies.
Related Classes/Methods: None
Project Management [Expand]
Manages the lifecycle of Robot Framework projects, including creating new projects, opening existing ones, handling file system operations within a project context, and maintaining project-specific settings.
Related Classes/Methods: None
Responsible for invoking the actual Robot Framework engine to execute test suites or individual test cases, capturing execution results, and providing feedback to the IDE.
Related Classes/Methods: None
The top-level window of the IDE, serving as the primary container for all other UI elements. It manages the overall layout, menu bar, toolbars, and status bar, orchestrating the display and interaction of the entire application's visual interface.
Related Classes/Methods:
robotide.ui.mainframe
Displays the hierarchical structure of the Robot Framework project, including files, folders, and test suites. It allows users to navigate the project, select items, and trigger actions like opening files or running tests.
Related Classes/Methods:
robotide.ui.mainframe
Responsible for orchestrating the various specialized editors within the IDE. It manages the notebook-style interface for open files, handles tab switching, and coordinates the lifecycle (opening, closing, saving) of individual editor instances.
Related Classes/Methods:
robotide.editor.editors
Provides a rich text-based interface specifically tailored for editing Robot Framework test data. It includes features such as syntax highlighting, content assist (autocompletion), and basic text manipulation capabilities, enhancing the user's coding experience.
Related Classes/Methods:
robotide.editor.texteditor
(Inferred from "grid-based" editor in the project description). Offers a tabular, structured interface for editing Robot Framework test data, particularly useful for managing keywords, arguments, or variable tables in a more visual and organized manner.
Related Classes/Methods:
robotide.editor.editors