# abraham-ny/sabretooth-ide architecture

> Architecture diagram of the GitHub repository abraham-ny/sabretooth-ide, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abraham-ny/sabretooth-ide
- Repository: https://github.com/abraham-ny/sabretooth-ide

## Overview

SabreTooth is a lightweight desktop Android IDE whose central workflow is to create or open a project, edit and save its files, configure project build settings, and invoke Gradle to produce an APK. The UI also supports project-tree file operations, search and replace, syntax highlighting, and global preferences. The README documents Gradle and Eclipse-style projects plus tool discovery; sampled source confirms key UI, project, and configuration relationships, but BuildManager internals were not sampled.

Main entry points: [`src/com/vitalsoft/sabretooth/ui/MainWindow.java`](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/MainWindow.java) (Main window), [`src/com/vitalsoft/sabretooth/ui/EditorTabPanel.java`](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/EditorTabPanel.java) (Editor tabs), [`src/com/vitalsoft/sabretooth/ui/ProjectTreePanel.java`](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ProjectTreePanel.java) (Project tree), [`src/com/vitalsoft/sabretooth/ui/CodeEditorPane.java`](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/CodeEditorPane.java) (Code editor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application and workflow"]
  node_main["Application entry<br/>[Main.java]"]
  node_window["Main window<br/>[MainWindow.java]"]
  node_project["Project model<br/>[Project.java]"]
  node_console["Build console<br/>[ConsolePanel.java]"]
  node_status["Status bar<br/>[StatusBar.java]"]
end

subgraph group_editing["Project editing"]
  node_tree["Project tree"]
  node_tabs["Editor tabs"]
  node_editor["Code editor"]
  node_highlight["Syntax highlighting"]
  node_find["Find and replace"]
end

subgraph group_setup["Project setup"]
  node_newproject["New project wizard"]
  node_settings["Project settings"]
  node_sabreconf["Project configuration<br/>[SabreConf.java]"]
  node_preferences[("IDE preferences")]
  node_prefdialog["Preferences dialog"]
end

subgraph group_build["Build and tools"]
  node_tools["Tool discovery<br/>[ToolDetector.java]"]
  node_buildmanager["Build manager<br/>[BuildManager.java]"]
end

node_user(("IDE user"))
node_gradle["Gradle"]
node_projectfiles[("Project files")]
node_apk["APK output"]

node_user -->|"uses"| node_window
node_main -->|"opens"| node_window
node_window -->|"opens or creates"| node_project
node_window -->|"opens wizard"| node_newproject
node_newproject -->|"creates scaffold"| node_project
node_window -->|"loads project"| node_tree
node_window -->|"manages editors"| node_tabs
node_tree -->|"opens file"| node_tabs
node_tabs -->|"hosts"| node_editor
node_editor -->|"requests highlighting"| node_highlight
node_editor -->|"reads and saves"| node_projectfiles
node_tree -->|"lists and modifies"| node_projectfiles
node_window -->|"opens search"| node_find
node_window -->|"opens settings"| node_settings
node_settings -->|"updates configuration"| node_sabreconf
node_project -->|"loads configuration"| node_sabreconf
node_sabreconf -->|"persists project config"| node_projectfiles
node_window -->|"opens preferences"| node_prefdialog
node_prefdialog -->|"updates"| node_preferences
node_window -->|"reads and saves"| node_preferences
node_newproject -->|"queries installations"| node_tools
node_settings -->|"queries installations"| node_tools
node_window -->|"starts build"| node_buildmanager
node_window -->|"saves before build"| node_tabs
node_buildmanager -->|"invokes"| node_gradle
node_gradle -->|"builds"| node_apk
node_buildmanager -->|"streams output"| node_console
node_window -->|"updates status"| node_status

click node_main "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/Main.java"
click node_window "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/MainWindow.java"
click node_project "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/project/Project.java"
click node_tree "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ProjectTreePanel.java"
click node_tabs "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/EditorTabPanel.java"
click node_editor "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/CodeEditorPane.java"
click node_highlight "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/SyntaxHighlighter.java"
click node_find "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/FindReplaceDialog.java"
click node_console "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ConsolePanel.java"
click node_status "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/StatusBar.java"
click node_newproject "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/NewProjectDialog.java"
click node_settings "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ProjectSettingsDialog.java"
click node_sabreconf "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/config/SabreConf.java"
click node_preferences "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/config/IdePreferences.java"
click node_prefdialog "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/IdePreferencesDialog.java"
click node_tools "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/util/ToolDetector.java"
click node_buildmanager "https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/build/BuildManager.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_window,node_project,node_console,node_status,node_user toneBlue
class node_tree,node_tabs,node_editor,node_highlight,node_find,node_projectfiles toneAmber
class node_newproject,node_settings,node_sabreconf,node_preferences,node_prefdialog toneMint
class node_tools,node_buildmanager toneRose
class node_gradle,node_apk toneIndigo
```

## Components

### Application and workflow

- [Application entry](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/Main.java): `src/com/vitalsoft/sabretooth/Main.java`
- [Main window](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/MainWindow.java): `src/com/vitalsoft/sabretooth/ui/MainWindow.java`
- [Project model](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/project/Project.java): `src/com/vitalsoft/sabretooth/project/Project.java`
- [Build console](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ConsolePanel.java): `src/com/vitalsoft/sabretooth/ui/ConsolePanel.java`
- [Status bar](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/StatusBar.java): `src/com/vitalsoft/sabretooth/ui/StatusBar.java`

### Project editing

- [Project tree](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ProjectTreePanel.java): `src/com/vitalsoft/sabretooth/ui/ProjectTreePanel.java`
- [Editor tabs](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/EditorTabPanel.java): `src/com/vitalsoft/sabretooth/ui/EditorTabPanel.java`
- [Code editor](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/CodeEditorPane.java): `src/com/vitalsoft/sabretooth/ui/CodeEditorPane.java`
- [Syntax highlighting](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/SyntaxHighlighter.java): `src/com/vitalsoft/sabretooth/ui/SyntaxHighlighter.java`
- [Find and replace](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/FindReplaceDialog.java): `src/com/vitalsoft/sabretooth/ui/FindReplaceDialog.java`

### Project setup

- [New project wizard](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/NewProjectDialog.java): `src/com/vitalsoft/sabretooth/ui/NewProjectDialog.java`
- [Project settings](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/ProjectSettingsDialog.java): `src/com/vitalsoft/sabretooth/ui/ProjectSettingsDialog.java`
- [Project configuration](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/config/SabreConf.java): `src/com/vitalsoft/sabretooth/config/SabreConf.java`
- [IDE preferences](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/config/IdePreferences.java): `src/com/vitalsoft/sabretooth/config/IdePreferences.java`
- [Preferences dialog](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/ui/IdePreferencesDialog.java): `src/com/vitalsoft/sabretooth/ui/IdePreferencesDialog.java`

### Build and tools

- [Tool discovery](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/util/ToolDetector.java): `src/com/vitalsoft/sabretooth/util/ToolDetector.java`
- [Build manager](https://github.com/abraham-ny/sabretooth-ide/blob/master/src/com/vitalsoft/sabretooth/build/BuildManager.java): `src/com/vitalsoft/sabretooth/build/BuildManager.java`

### Other components

- **IDE user**
- **Gradle**
- **Project files**
- **APK output**

## Connections

- IDE user → Main window: uses
- Application entry → Main window: opens
- Main window → Project model: opens or creates
- Main window → New project wizard: opens wizard
- New project wizard → Project model: creates scaffold
- Main window → Project tree: loads project
- Main window → Editor tabs: manages editors
- Project tree → Editor tabs: opens file
- Editor tabs → Code editor: hosts
- Code editor → Syntax highlighting: requests highlighting
- Code editor → Project files: reads and saves
- Project tree → Project files: lists and modifies
- Main window → Find and replace: opens search
- Main window → Project settings: opens settings
- Project settings → Project configuration: updates configuration
- Project model → Project configuration: loads configuration
- Project configuration → Project files: persists project config
- Main window → Preferences dialog: opens preferences
- Preferences dialog → IDE preferences: updates
- Main window → IDE preferences: reads and saves
- New project wizard → Tool discovery: queries installations
- Project settings → Tool discovery: queries installations
- Main window → Build manager: starts build
- Main window → Editor tabs: saves before build
- Build manager → Gradle: invokes
- Gradle → APK output: builds
- Build manager → Build console: streams output
- Main window → Status bar: updates status
