[ Class Homepage ][ My Class Page ][ Project Log ][ Jim's Homepage ]

Senior Seminar Project Document - Mozart

Overview

In my entire career here at Earlham, I've never written what you could call a "large" application; one where the entire program would not logically fit in a single source file. So, after talking to Charlie, I have decided to trash the Serial Communication thing, and go for building a WYSIWYG (What You See Is What You Get) HTML editor instead. I figured that I wanted to build something that would teach me about the issues involved, as well as being something useful. Since the web is becoming increasingly more important in our day to day lives, I figured that yet another HTML editor is something that we all needed (especially since I haven't found one that I REALLY like).

Requirements

When I first started thinking about this project, I knew I wanted to build something that had a similar functionality and interface to Microsoft's FrontPage Editor. I have used several other WYSIWYG editors before, and FrontPage was the most intuitive and had the cleanest interface of any of the other editors (unlike most of the rest of Microsoft's software). However, one of the biggest problems I've found with FrontPage is its intimate marriage with existing Microsoft software. For instance, the extensions that come with FrontPage (timestamps, page includes, etc) will only work with Microsoft's Personal Web Server or Information Server. My problem comes when I'm not using any of those web servers. Mozart will have very similar look and feel to FrontPage, but none of its proprietary nature. The user will be able to configure the editor to use any web server's capabilities (Apache's Server Side Includes, etc). In addition, I am going to be building Mozart in Java, making the program usable on many different platforms.

Functional Specification

It should be noted that these features are listed in order of implementation. That means that I will implement them in the order that they are listed here. I wanted to get the most important features added first, and work toward the "fluff" later.

WYSIGYG
Functionally, Mozart is going to be an HTML editor, with some significant improvements over earlier editors. The most important improvement is its interface. Mozart is an editor which will let the user edit his web page directly and not the source code. This will let the user see the formatting of images and paragraphs. However, if the user wants to, Mozart will also let the user view and edit HTML directly.

Popup Menus
One of the powerful features of the WYSIWYG interface is the "Popup Menu." This menu will give the user access to functions that have to do with what the mouse was clicked over. For instance, if the user clicked on an image that was in a table, the menu would contain "Page Properties," "Table Properties," "Cell Properties," "Image Properties." This context sensitive popup menu adds an important enhancement to the experience of using Mozart.

Web View Tool
Another of FrontPage's strengths are its web-management tools. FrontPage comes with FrontPage Explorer, a tool that lets users graphically view and manage their web site. Future releases of Mozart will also have such a tool, although it will not be as feature-packed. Mozart will have a tool that will read the structure of a web site and allow the user to select and edit pages from a tree view.

FTP Communication
One feature that I have not seen implemented in Web Page editors is the ability to open and save pages from remotely hosted sites. The TCP/IP protocols are a richly functional suite of programs, and it is a waste not to fully utilize them. And since many people today are using Internet Service Providers to host their pages, they are required to send their documents over FTP anyway using separate FTP client programs. Mozart will allow users to send and recieve documents through FTP without the "middle-man approach."

Design Specification

Architectural Style
Mozart is going to be written in the Java programming language to allow it to be as portable as possible. I felt that since the web is a collection of different platforms and operating systems, it is important that Mozart is available to them. In addition, Java seems to be gaining global acceptance within mainstream computer software manufacturers.

Sun, the developers of Java, have recently released the Java Foundation Classes, that they call the Swing Classes. These classes contain already implemented HTML parsers and viewers, and I will depend heavily on them. I think it is important to note that the Swing HTML parser is not fully correct yet, but it is replaceable. However, it is not my plan to re-implement a fully functional HTML 4.0 parser for this project. Instead, I will implement Mozart using Swing's HTML parser and viewer, and rely on forthcoming versions of Swing to correct any incorrect displaying of HTML in Mozart. This seems like a cheeky way to get around the problem, but my late start has left me a little short on alternatives.

Interface
Mozart will be based on a Multiple Document Interface, allowing the user to edit many documents at once. Each document will have its own resizeable window and have the ability to edit the HTML code directly. As explained above, the user will also have access to a context-sensitive popup menu allowing the user to modify any object shown in the document. There will also be a rich set of menus, allowing the user to manipulate the document in a reasonable way. A list of the menus and their choices is listed below.

File Edit Insert Format Table Window Help
New
Open
Close
--------------
Save
Save As...
Save All
--------------
Print
Page Setup
Print Preview
--------------
<Old Documents>
--------------
Exit
Undo
Redo
--------------
Cut
Copy
Paste
--------------
Search
Replace
--------------
Preferences
Hyperlink
Anchor
Image
Timestamp
Horizontal Line
Form
File
Comment
Table
Symbol
Page Properties
Background
Paragraph
Image
Font
--------------
Remove Formatting
Insert Table...
Insert Rows/Columns
Insert Cell
Insert Caption
Delete Cells
Merge Cells
Split Cells
--------------
Cell Properties...
Table Properties...
Cascade
Tile
Arrange Icons
--------------
<List Windows>
Help Topics
Mozart Homepage
--------------
About Mozart

In addition to the menu set, there will be a dockable toolbar with the most popular funtions, ie. new file, open file, cut, copy, paste, etc.

Modules
One of the reasons that I chose Java was its modularity. Java is a strictly object-oriented programming language, and, as such, requires the developer to create objects that are based on previously defined and implemented objects. The Mozart class will be derived from several smaller classes, each of which is derived from additional, smaller classes. The class structure is shown here:

<Insert graphic (I'll make it later)>

Testing

l8r

Development Methodology

l8r

Documentation

l8r

[ Class Homepage ][ My Class Page ][ Project Log ][ Jim's Homepage ]