Basic features to implement: Check if workspace exists for project, if not create one; Allow source files to be checked out (*.java); Allow source files to be reconciled; Allow source files *.java) to be submitted. Classes: PerforceExtension (provides functionality7 for open for edit, reconcile and submit). Client (Provides functionality for client creation, modification and general error handling relating to the clients). Connection (Provides methods for creating connections, logging in and out and disconnecting). May use Martin's 'P4Util' class to call the methods, create the objects for submit etc, so that I do not have to do as much coding. Work on implementation: 1. Write the code to allow connect and disconnect from the Perforce Server * complete 2. Adapt the SimpleExtension so that a value for P4PORT can be set in the preferences menu * complete (Will need to parse these values to our Connection object's constructor). 3. Add an action to the tools menu, to allow connect and disconnect * in progress. After connect is successful, the user will be able to select their project, using a dialog. For now, we will just check if the directory they are in has a client, and if not create one. We could also take the approach of assuming they will use DVCS, so we just need to check if there is a 'p4 root' there. If yes, then do nothing, if no run: p4 init. This would probably be a more appropriate fit for BlueJ, as students will probably only version locally.