![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
3D Class BrowserProject done by Sayantan Chakravarthy and Ganesh Bikshandi.GoalOur project aims to build a 3D class browser in the croquet environment. The standard class browser in squeak is 2D. We will extend it to 3D, so each class is a 3D object and an 'avatar' can view several 'faces' of the class. One 'face' would possess black-box information of the class, other would posses white-box information etc.Features1. Displays a 3D view for a class.2. An avatar can rotate the view and see its different faces. 3. Scrolling enabled for each face. 4. Display source code of several methods. 5. Show class hierarchy (superclass and subclasses). 6. Traversal of hierarchy. 7. Show potential types of instance variables and load them. Patterns1. Observer2. Mediator 3. Command 4. Chain of Responsibility Installation/Usage InstructionsTo run our system, croquet system has to be installed. Visit http://www.opencroquet.org for more information on how to install croquet on your system. Once croquet is installed follow the follwing steps.1. Open a workspace. 2. Type 'ClassBrowser3D openInWorldExtent: 400@400 className: 'Date'. 3. A 3D view opens. It has a solid cube object for the class 'Date'. 4. You can rotate the object by clicking over it. 5. You can see the self methods, class methods and inherited methods on each of its face. 6. If you click on any of those methods, you can see the code that implements the method. 7. In the front face, all the class details are displayed. The details include potential class types of instance variables. Clicking on it would load the appropriate class. 8. Clicking on 'parent' button loads the parent class. 9. Clicking on 'child' buttion brings up a menu for all the subclasses of the class. Now you can click one of the classes to be loaded. 10. Pressing down or up arrow makes the avatar fly up or down. 11. Clicking on the connector between classes would make the avatar traverse the class views. Interesting Findings1. In croquet, we found that if we click on a clickable object using mouse, then in the time in-between the click of mouse and the release, most of the code to perform the action gets executed. At the time of release, however, a check is done to see if the mouse pointer is in the same position as that of the time when the click occured. If so, the action is performed. Otherwise, it is ignored. Is this a typical UI design pattern? Is this an optimization or an overhead? cs598rej.zip Links to this Page
|