The title says it all. I'm trying to write a study guide/educational, general purpose java applet.
I've come up with a few requirements it should have
1. Be able to display paragraphs of rich text information. This means colored text, different fonts and font sizes, and indenting.
2. Be able to display embedded images, either downloaded from an external webpage, my website, or distributed along with the java program.
3. Be able to display embedded LaTeX math symbols, so that the tool is usable for math courses.
4. Be able to display video and audio information. I tried several options, but I finally settled on opening up a youtube page in an external browser.
5. Be able to display other embedded programs (eg, my math applet)
6. Able to quiz you on both vocabulary, and other questions
7. Built in such a way that you can create new lessons with relative ease.
So, that's a big list, especially because of the "rich text" part of it. I figure the best way to have rich text, images, and pop-out players is to build the text renderer myself.
Before building the text renderer, I have to define the input syntax. I was thinking just to use XML syntax. Here's a mock-up of what the xml file for a course would look like:
<course title="Introduction to Music"
school="My Fake School"
coursetype="MUSI"
coursenum="101">
<lesson>
<vocab>
<def>
<word>Ars Nova</word>
<definition>Literally "new technique". A time period around the 14th century, famous for its <v>polyphonic</v>, <v>sacred</v>
and <v>secular</v> music.</definition>
<example>
<i>The following example is of polyphonic chant during the Ars Nova time period.</i>
<ytpopoutplayer>0yi2MMtIimY</ytpopoutplayer>
</example>
</def>
<def>
<word>Madrigal</word>
<definition>A lighter, secular song of love, popular in the <v>Renaissance</v> time period.</definition>
<example><i>This song is El Grillo, a madrigal written in the Renaissance.</i>
<ytpopoutplayer>62-aBOZrqh8</ytpopoutplayer></example>
</def>
<def>
<word>Polyphonic,Polyphony</word>
<definition>A piece of music having more than one <v>melody</v> playing at the same time.</definition>
<example><i>This song contains multiple melodies.</i>
<ytpopoutplayer>0yi2MMtIimY</ytpopoutplayer></example>
</def>
</vocab>
<!-- a lesson is in html-like rich text -->
<text>
In the umpteenth century, something happened of importance to music. The following is an example of music.<br/>
<ytpopoutplayer>0yi2MMtIimY</ytpopoutplayer><br/>
Here is a picture of music <br/>
<img>mypic.png</img><br/>
Learn the following vocab words:<br/>
<deftext word="Polyphonic"><br/>
<deftext word="Ars Nova"><br/>
<deftext word="Madrigal"><br/>
</text>
</lesson>
<quiz>
<quizinfo>
<questiondef num="1" type="custommultiplechoice">
<text>The following video is an example of what? <br/><ytpopoutplayer>0yi2MMtIimY</ytpopoutplayer></text>
<correct>Polyphony</correct>
<wrong>The color blue</wrong>
<wrong>Homophony</wrong>
<wrong>Ars Nova</wrong>
</questiondef>
</quizinfo>
<!-- The first three questions will be random vocabulary words. -->
<questionarr type="RandPullFromVocab" numq="3"/>
<!-- The next question will be question 1 from "quizinfo". -->
<singlequestion num="1"/>
</quiz>
</course>
Then, the XML would be taken, validated, and compiled. In the compiling process, every beginning/end tag would be replaced with a numerical value. Any errors in syntax would be checked, it would make sure all the images exist in the given directories, and any LaTeX would be rendered to a .png and saved, so that the java applet doesn't have to deal with any LaTeX rendering.
If you noticed, I have a section before the given lesson defining Vocabulary. This is so that we can have random vocab questions, and so that we can have embedded definitions. eg, when you surround a word or phrase with the <v></v> tags, it either turns it blue and bold and has the definition appear when you hover your mouse over it, or it bolds it if it can't find the given word in any <vocab> section.
Since a file like this would be massively annoying to code in notepad, there will be a GUI editor where all the XML is masked, and instead the whole course information would be displayed as a nested tree. You'd be able to, say, right click the "quizinfo" node, and select "add new question". For plaintext editing, I'd imagine there would be a rich text editor for the actual lesson text, with utilities to add in graph applets, youtube videos, images, or LaTeX.
So that's three major things.
(1) A java application to edit a lesson plan
(2) An application to compile the lesson plan into an easier to read format (with all LaTeX and what not compiled)
(3) The actual application, responsible for displaying the rich text correctly, and of course displaying the lessons and quizzes.
So, I have two questions. One: Am I making this too hard on myself? Two: Any other suggestions or must-haves for this program?

Why does blue text appear every time you are near?