FCVW-DOCUMENTATION
Authors: Hsiang Koo
Lanfang Peng
Jing Gong
Omkarnath Prabhu
Dr. Elhadi Shakshuki
Dr. Ivan Tomek
Date: August 18, 2004.
TABLE OF CONTENTS
Introduction……………………………………………..3
Purpose of the Document ………………………………………………..3
Brief Overview of client function ………………………………………..3
Programming Languages used …………………………………………..3
CVW…….…..…………………………………………...4
Component Diagram for Message Passing ….…………………………..4
Component Diagram for Network setting …………………………..…..4
Class Diagram with Components…………. ……………………………..5
Classes involved……………………………. ……………………………..6
Evaluation of CVW ………..……………..………………………………9
FCVW…..…..…………………………………………..10
New GUI Classes added ……………………..………….…………………10
Modified GUI Classes …….....……………..………….…………………14
State Transition Diagrams …………………..…………………………...17
Sequence Diagrams and MessageDiagrams...…………………………...37
Functionalities of FCVW………………….....…………………………...41
1. Introduction
CVW (Collaborative Virtual Workspace) is an open source extendible and customizable environment for collaboration and knowledge management in temporally and geographically dispersed work teams. It was developed by MITRE in the late 1990s. Although CVW is a very useful and powerful product, it has certain substantial limitations that prompted us to make certain extensions, resulting in an open-source program called FCVW (Federated CVW). FCVW extends CVW, broadens its spatial metaphor, increases scalability, offers a program development environment (IDE), includes extensive on-line help, and provides an infrastructure for software agents.
The name of CVW is from the “Collaborative Virtual Workspace”. It provides a virtual building that contains floors and rooms as the realistic world. In the building users can communicate with each other through the Internet. Users can also share information. Users can join to a room to have a meeting. There are other features such as audio conferencing, video conferencing, personal carrying folder, etc.
This documentation details the features of FCVW and describes the process that lead us from CVW to FCVW: deployment diagrams, component diagrams, user testing, feature evaluation, the changes made in classes and methods, screenshots, identification of desired changes and extensions and transition diagrams under our constrained resources, the development process and the resulting new environment.
1.1 Purpose of the Document
CVW uses a client-server architecture in which the server consists of a MOO server and a document server, and the client is a standalone application with custom user interfaces. The purpose of this document is to explain the essentials of CVW and FCVW architecture and to highlight the transition done from CVW to FCVW. It will give an idea to a naïve user as to the changes brought about. It will also help in the development of the FCVW in future.
1.2 Brief Overview of client function
The client helps the user to interact with the servers (Lambda MOO server and Document Server) with the help of the client interface. The user interface of CVW was not user friendly and complex in its appearance. The client is capable of interacting with the server by means of sending messages using MCP (Moo Communication Protocol). The client provides features for communication with other users and with the server.
1.3 Programming Languages used
The client is largely programmed using Java but some administrative components of the client interface were created by Tcl.
2. CVW
2.1 Component Diagrams
2.1.1 Component Diagram for Message Passing
2.1.2 Deployment Diagram for Network setting
2.2 Class Diagram with Components
2.2.1 Main Classes involved
These classes are the classes from the original client code. CVW client contains about 190 classes but the following ones are the most important .
1. AdminProc
This is a thread to launch the external Admin Tool
2. AdminServerMgr
This class starts a thread that will read information from the external Admin process and then forward the information to the AdminTool. This thread will start an AdminThreadWriter thread capable of writing information to the external AdminTool.
3. ConfigFrame
This class creates a frame which takes input for the various parameters needed by the server like sessions created, server parameters, document parameters, user name and password.
4. CVWCoordinator
This is the class which represents the main window of the client. It is a singleton class. It also has been the dumping ground for all functions that have no home.
5. CVWObject
This class is the base class for all CVW objects.
6. CVWServerComm
This class processes all communication from and to the CVW server.
7. CVWUser
This class represents the user on the CVW server.
8. DetailObject
This class is the display object for all contents: room contents panel, and all folder windows, including the carrying folder window.
9. DocMenu
This class is concrete implementation of the DocumentMenu class.
10. DocServerComm
This class will provide out-of-band information about the Document Server.
11. DocServerInterface
This class implements the Document Server public interface.
12. DocumentObjectPanel
This class implements the GUI panel to display information about CVWDocuments.
13. FolderDialog
This class is an easy API to create a folder inside of a frame since folder is only a component, not a window.
14. JCVWApplic
This is the main class to be run.
15. ObjectItem
This class creates the Menu Items for CVW objects.
16. ObjectMenu
This class provides the interface for creating menus. This class also provides the basis for building different object menu types in CVW.
17. ObjectValues
This class provides the interface that defines the different popup menu types
18. RoomContents
This class basically help in extracting the contents in a room.
19. RoomListPanel
This tabbed panel is part of the find functionality; it shows a list of CVWRooms and the CVWFloor they are on.
20. RoomObject
This is the display object for all room and floor objects used in find place.
21. RoomScrollback
This is the class that represents the room scrollback. It knows which window it belongs to, how to launch urls, and how to print various messages.
22. RoomScrollbackLayout
The layout manager used by JScrollPane. JScrollPaneLayout is responsible for nine components: a viewport, two scrollbars, a row header, a column header, and four "corner" components.
23. UserDescPanel
This Class creates a modified Panel that displays information about a CVW user.
24. UserMenu
This class will create a menu for a representation of a user in the client program. When a user right clicks on the user representation (image or list item), this menu will appear and allow for different communications or information about that user.
3. Evaluation of CVW
3.1 Advantages
a. CVW has good quality of implementation and has lot of built-in features associated with it like communication (Both text, voice and video), Email system, recorders, groups and white boards.
b. It also provides a good documentation and a user guide and has been complemented by documented exhaustive testing.
c. Communication involves sending pop-ups or private chats with a user. Users can also set up conferencing tools such as audio and video. They can use the phone to ring to another user and talk using the audio communication.
d. Other features involve creation of folders to hold notes, documents and recorders. We can also set permissions on the objects we carry and drop into workspaces also called “rooms”. We can traverse through the various work spaces using an environment map. It also provides the online and offline user information. CVW has the potential in knowledge management and in an educational environment.
3.2 Disadvantages
a. The existing GUI is old fashioned and overcrowded. It is also difficult for the user to use.
b. There is a lack of on-line help and the help that is provided for CVW is minimal.
c. CVW has rigid topology and can be used only in a single building. There is a need for multiple buildings and rooms.
d. There is a lack of framework for software agents. There can be many software agents fulfilling a variety of roles such as garbage collection, monitoring documents, distributing documents and notifying events.
e. There is lack of support for programming which can be presently done only using a single line text-field. Such a programming support can be provided by IDE.
f. The present CVW has put a limit on user population at 300 users. This is a small number when compared to software that is supposed to be used on the Internet.
3. FCVW
The name of FCVW is from the “Federated Collaborative Virtual Workspace”. This program is based on the CVW of the MITRE Corporation. This project is funded by IBM Eclipse award and by the Teaching Innovation Fund from Acadia University and its goals is to create new user interfaces for the client, build a LambdaMOO IDE which allows the administrator to add, modify, or delete a moo command and support LambdaMoo code management.
3.1 Functionalities of FCVW
There are a few new features added to the CVW. Also we modified some functions in order to achieve the goal that users can use CVW more convenient. For example, the new features include the new user interfaces for the property file, main window, chat room, etc. and the modified functions have “Search Scrollback”. People can find more details about the new features in the next few sections.
In order to match our new user interfaces to modify CVW methods is necessary. The following descriptions and classes indicate what we have done for the changes and ideas what the methods are about.
3.5.1 Functionalities Modified and added in classes
1. JCVWApplic.java
a. Modified method
1. main(): The start point of the program. It will open a configuration window to allow users to input server information and connect to the server.
b. New methods
1. private static void configFrame(): This method is to call the Class ConfigFrame and Class MainToolsFrame to create configuration window and main window, and make them visible.
2. public static ConfigFrame getCFInstance(): return a Frame variable for other classes to use.
2. CVWCoordinator.java
a. New Variables
1. private static JFrame connectingFrameClose: To get a Frame object.
2. private MainToolsFrame mainframe: To get a Frame object.
b. Modified methods
1. public void start(String Username, String Password): Starts the login process.
2. public void initUserID (String name, CVWObjNum objNum, String priv, String quota): When user successfully connects to CVW server, the name, object number, and privileges are sent to client. Also invoke the method to setup the preferred environment for the user.
c. New Text Command added
1. public void textCommand(String inputText, String cmd, String getUsers):
Creates the MCP for text communication given the info entered in the command entry area.
2. public void showAllPagesCommand(): Brings all popup text message windows to front, if any.
3. public void allUsersCommand():Starts to open the all user static list window, if already open, then just bring to front.
4. public ImageApp getUsersPanel():Returns an object of the ImageApp from CVWCoordinator.
5. public ContentsCoordinator getContentsPanel():Returns an object of the ContentCoordinator from CVWCoordinator.
6. public RoomScrollback getMudText():Returns an object of the RoomScrollback from CVWCoordinator.
7. public void clearContentsPanel(): Closes all folders which are open.
3. NetThread.java
a. New Variables
1. private JTextField jTextFieldConnectingText = new JTextField()
2. private String str = "Connecting ".
b. Modified methods
1. public NetThread(Socket s, CVWServerComm sc): The constructor for the Class NetThread, and new updates in this method are to show a window to display the connecting status.
2. public void run() : Processes all communication from the CVW server.
c. New methods
1. private void connectingDialogInit() throws Exception: Component initialization.
2. public static JFrame getConnectingFrame():return a JFrame object.
4. CVWServerComm.java
a. Modified Methods
1. public synchronized void receiveLine(String theLine): Receives communication from the CVW server one line at a time. This does some processing if the line does not start with #$#, otherwise it is processed by the processMCP method.
5. ImageApp.java
a. New Variables
1. private static Vector getObjNums: get object numbers
b. Modified Methods
1. public void processObjects(String oNums): Continues processing objects by retrieving users from the cache, creating an imagePanel for each if not already in the imagePanel Cache.
c. New methods
1. public static Vector getObjNums(): return a vector objects which hold object numbers.
6. CmdEntryPanel.java
a. Modified Methods
1. public void personFieldSetText(String text) : Sets the text of the person field.
2. public void userMenu(CVWObject user, String function): Processes a menu command on the user, if a new command then remove any existing user name and change the command, if the same command then append this user name to the person field.
7. MultiList.java
a. Modified Methods
1. public MultiList(MultiListData dataModel, boolean carrying): Create a table which hold documents for the carrying folder.
8. ContentsCoordinator.java
a. Modified Methods
1. public void init():Initialzes the GUI.
9. DetailList.java
a. Constructor
DetailList(CVWObject[] cvwObj, String dot, String title2): Constructor
10. RoomScrollback.java
a. Modified Methods
1. public void saveSelectedText():Starts the process of saving of the selected text in the scrollback.
2. public void displayURL(String messageString, String url): Displays a url with some additional text.
3. public void displayPubCommMsg(String messageString): Displays a public communication message that everyone in the room sees.
4. public void displayPrvCommMsg(String messageString): Displays a private communication message to the current user that no one else in the room sees.
b. New methods
1. public void saveAllText():Starts the process of saving of the all text in the scrollback.
11. TextProcessor.java
a. Modified Methods
1. public void displayPasteText(String text, Color c): Displays the actual text to be pasted.
12. SearchDialog.java
a. Modified Methods
1. public void cancel():Handles the cancel button event
2. public SearchDialog(JFrame frame, TextSearcher textSearch): Constructor
b. New methods
1. protected void processWindowEvent(WindowEvent e): Overridden so we can exit when window is closed.
13. ObjectFindPanel.java
1. public void init(): creates vector objects for different check boxes.
14. FindFrame.java
a. Modified Methods
1. public boolean destroy():Closes this window and removes it from the window manager list.
2. public FindFrame(): Constructor; Creates all tabbed panels.
15. FindPanel.java
a. Modified Methods
1. public void init():Initializes the GUI for finding Panels.
16. PeopleFindPanel.java
a. Modified Methods
1. public boolean ok():Proccesses the search entered in this panel when the user hits find, forming the search mcp.
17. PlaceFindPanel.java
a. Modified Methods
1. public boolean ok():Proccesses the search entered in this panel when the user hits find, forming the search mcp.
18. OnlineUserList.java