How mihalypal/biroplugin works
BiroPlugin is an IntelliJ IDEA client for Biro 3: users sign in, browse courses and assignments, open an assignment’s exercises, work with starter files in the IDE project, and submit files. The map preserves the documented workflow and the sampled UI, authentication, assignment, and file/submission responsibilities. Some product stages are documented but their complete implementations were not sampled, so their links are omitted or marked unverified rather than inferred.
Main entry points: AssignmentView.java Assignment view · UserServices.java Authentication · BiroUIMainForm.java Course browser · UploadService.java Submission service
Components 21
IDE entry
- Tool window factory
src/main/java/com/github/mihalypal/biroplugin/toolWindow/MyToolWindowFactory.java - Tool window UI
src/main/java/com/github/mihalypal/biroplugin/toolWindow/MyToolWindowUI.java - Message bundle
src/main/kotlin/com/github/mihalypal/biroplugin/MyBundle.kt
Plugin interface
- Login form
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUILoginForm.java - Course browser
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUIMainForm.java - Assignment view
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - File selection
src/main/java/com/github/mihalypal/biroplugin/Dialog/FileUploadDialog.java - Assignment rendering
src/main/java/com/github/mihalypal/biroplugin/appearanceChanges/AssignmentCellRenderer.java - Button styling
src/main/java/com/github/mihalypal/biroplugin/appearanceChanges/CustomButtonUI.java - Progress styling
src/main/java/com/github/mihalypal/biroplugin/appearanceChanges/CustomProgressBarUI.java
Assignment domain
- Assignment data
src/main/java/com/github/mihalypal/biroplugin/Model/Assignment.java - Exercise status
src/main/java/com/github/mihalypal/biroplugin/Model/ExerciseStatus.java - Starter file
src/main/java/com/github/mihalypal/biroplugin/Model/StarterFile.java
Biro services
- Authentication
src/main/java/com/github/mihalypal/biroplugin/Services/UserServices.java - Submission service
src/main/java/com/github/mihalypal/biroplugin/Services/UploadService.java
IDE project files
- Project file setup
src/main/java/com/github/mihalypal/biroplugin/Services/FileService.java - Image conversion
src/main/java/com/github/mihalypal/biroplugin/Services/PNGConverter.java - Image transcoder
src/main/java/com/github/mihalypal/biroplugin/Services/BufferedImageTranscoder.java
Other components
- IDE user
- Biro 3 API
- IDE project
Connections 22
- IDE user → Tool window factory: opens plugin
- Tool window factory → Tool window UI: creates
src/main/java/com/github/mihalypal/biroplugin/toolWindow/MyToolWindowFactory.java - Tool window UI → Login form: displays
src/main/java/com/github/mihalypal/biroplugin/toolWindow/MyToolWindowUI.java - Login form → Course browser: opens after login
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUILoginForm.java - Course browser → Authentication: requests course data
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUIMainForm.java - Course browser → Assignment view: opens selection
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUIMainForm.java - Course browser → Assignment rendering: renders list
src/main/java/com/github/mihalypal/biroplugin/UIForms/BiroUIMainForm.java - Assignment view → Authentication: fetches assignment
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Assignment view → Assignment data: builds data
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Assignment data → Exercise status: contains status
src/main/java/com/github/mihalypal/biroplugin/Model/Assignment.java - Assignment view → File selection: selects files
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Assignment view → Project file setup: prepares exercise
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Assignment view → Submission service: submits work
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Submission service → Authentication: refreshes token
src/main/java/com/github/mihalypal/biroplugin/Services/UploadService.java - Authentication → Biro 3 API: authenticates
src/main/java/com/github/mihalypal/biroplugin/Services/UserServices.java - Submission service → Biro 3 API: sends submissions
src/main/java/com/github/mihalypal/biroplugin/Services/UploadService.java - Authentication → Biro 3 API: fetches data
src/main/java/com/github/mihalypal/biroplugin/Services/UserServices.java - Project file setup → IDE project: creates files
src/main/java/com/github/mihalypal/biroplugin/Services/FileService.java - Submission service → IDE project: reads selected files
src/main/java/com/github/mihalypal/biroplugin/Services/UploadService.java - Assignment view → Button styling: styles controls
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Assignment view → Progress styling: styles progress
src/main/java/com/github/mihalypal/biroplugin/UIForms/AssignmentView.java - Image conversion → Image transcoder: uses
src/main/java/com/github/mihalypal/biroplugin/Services/PNGConverter.java