aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 67147dcb57de21a291b47f4e07d844f3ed79cfb6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# apus

## a local web browser

apus (from _Gigantochloa apus_: the most common bamboo on the island of Java) is a local web browser.
It will parse and display HTML, Markdown, epub, and potentially other XML-based file formats.
It will not connect to the internet, and instead only parse local files given to it on the command line or eventually uploaded in a user interface.
Hopefully nobody outside of this class will use it because it will be a standards-failing web browser written in Java Swing.

This project is of interest to me because I enjoy writing parsers and have been meaning to play around with text and image rendering.
I've heard that Java Swing has a native HTML rendering component. I hope to entirely disregard this, and instead reimplement it poorly.

## user stories

- As a user, I want to be able to construct a structural representation of an HTML file.
- As a user, I want to be able to construct a structural representation of a CSS file.
- As a user, I want to be able to add multiple tabs to a list of open tabs.
- As a user, I want to be able to view a rendering of an arbitrary HTML file.

- As a user, I want to be given the option to save my currently open tabs to disk when quitting.
- As a user, I want to be given the option to restore my previous tabs upon relaunching the application.

## instructions for grader

- You can generate the first required event of adding multiple Xs to a Y by creating a new tab by entering a path into the browser bar and pressing "Go". Observe that the tab is added to the tablist.
- You can generate the second required event of adding multiple Xs to a Y by creating a new tab by opening the tab menu, selecting a tab, and closing it. Observe that the tab is removed from the tablist.
- The panel in which all of the Xs added to a Y are displayed is the tablist.
- You can locate my visual component by observing the main browser window, which may render arbitrary paths and open tabs.
- You can save the state of my application by attempting to close it with tabs open. You will be asked if you would like to save your tabs.
- You can load the state of my application by attempting to open it after saving tabs. You will be asked if you would like to restore your tabs.

## credits

This project makes extensive use of the Javatuples library ([javatuples.org](https://www.javatuples.org/)).
Many thanks to the author, Daniel Fernández.