This project represents an IDE-like desktop application for graphics and text document handling. It is written in Java, using the Swing toolkit for the GUI, with a heavy focus on various design patterns.
The application supports common IDE functionalities such as creating/switching workspaces, rendering the project tree, importing/exporting projects, sharing documents between projects etc. A project contains text/graphics elements that the user can edit with the text/graphics editor.
- Create/load workspace
- Switch workspace
- Create/delete project
- Import/export project
- Create/delete document in a project
- Import/export document to/from a project
- Share document with another project (every change made to the document is applied in all projects that the document is shared with)
- Create/delete page in a document
- Create/delete slot in a page
- Create/delete text/graphics element in a slot that the user can write/draw to
- Drawing to a graphics element with the graphics editor
- Draw/erase square or circle
- Multiple select
- Cut/copy/paste
- Undo/redo
- Writing text in a text element using the text editor
- Bold/italic/underline
- Font type size and color
- Subscript/superscript
- Singleton
- Observer/observable (MVC)
- Command pattern
- State pattern
Java's serialization is used for storing projects.
When sharing a document between projects, the document view (implements interface Cloneable) is cloned but points to the same model, so any changes to the model are being rendered simultaneously in all projects.
This project was an assignment as part of the course - Software design during the 3rd semester at the Faculty of Computer Science in Belgrade.
You can download the .jar file here.
- Stefan Ginic - stefangwars@gmail.com