Download presentation
Presentation is loading. Please wait.
Published byCody Preston Modified over 9 years ago
1
ProCol~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004 CS470 Final Presentation
2
What is ProCol? Plugin for the jEdit text editor Facilitates on-line collaboration between developers Small groups (2-10 people) Small to medium sized projects Provides file repository, users are able to check out files Provides communication and project management functions Quick and easy to set up and use Current solutions - CVS, SourceForge, gForge, etc. Complex to set up Time-consuming to maintain Not practical for small projects
3
Requirements Not developed for a specific client Requirements developed by looking at existing solutions Possible improvements Past experience Scope of project was fairly large Open-ended requirements Goal: Release usable beta version by end of class Development continued as an open-source software project (GPL) Able to be extended by others Clients for other development environments Web-based clients
4
Client Requirements Compact and simple graphical interface Able to integrate well with jEdit's user interface Complex functionality in separate dialog windows File tree Indicate checkout status with bold text Get information about individual files User list Windows for file transfer, messaging, etc Able to be docked Project snapshot
5
Server Requirements Handles multiple simultaneous connections from clients Uses SSL sockets for security Information stored on disk in properties files Readable by the Java Properties class Do not need separate database Java uses hash tables for this Maintain project and user information Simple configuration files Store versioning/changelog information for each file Store communication and project management messages Automatic file backup Accidental or malicious deletion/changes
6
Plugin Interface Options Connect Project Info Change Project File Tree Checked-out File Snapshot User List Private Messages Public Messages Help Upload file/directory New file/directory Todo List Progress Bar Bug List Popup Menu
7
Connecting to Server Connect Login Join Project
8
File Management File Info File Check-in
9
Communication Tools Reading messages Composing a message
10
Project Management Tools Bug List Posting a New Bug
11
Docked Windows
12
Client Architecture Sections communicate using Observer/Observable pattern Network Communication to Server GUI ProColClient IncomingMessageHandlerOutgoingMessageHandler MessageFactoryPacketFactory Misc. Dialogs Message Composers Dockable Windows Model Messages User Project Communication from Server
13
Server Architecture Network Communication to Client ProColServer ServerConnection IncomingMessageHandlerOutgoingMessageHandler MessageFactoryPacketFactory Model Projects Communication from Client Users ServerConnection maintains reference to currently opened project
14
Network Protocol Messages are broken into packets of maximum 2048 bytes 16 byte header followed by optional data section Allows low priority messages to be interrupted to send high priority message Less than 1% overhead per packet for full data section PacketFactory class generates packets to be sent Data can be drawn from Strings, byte arrays, files, etc Automatically determines which packet to send next based on priority MessageFactory class reassembles packets into original messages Handed off to Observers for handling messageIDrequestTypedataRemaindataSize Data Section Header (16 bytes) Packet (2048 bytes max) Data (0 to 2032 bytes)
15
What Worked? Networking Spent large percentage of time developing networking Packets and priority queues Anonymous SSL security Open, easy protocol, able to be used by other ProCol clients/servers Dockable windows Integrate well with jEdit Able to use as normal window or docked Store settings in Properties files Labels, buttons, error messages, etc Central location for changes, applied throughout program
16
What Did Not Work? NIO (New I/O) Java's new I/O API Good in theory, bad in implementation Many problems in Sun's code that I was unable to work around 2 weeks wasted with troubleshooting and rewriting Rewrote large portions of networking code to revert back to classic networking Too many features Not enough time to implement everything I wanted All required features implemented, but some are rather basic
17
Conclusion Was project successful? Yes, all requirements satisfied Proved usable during testing Interest expressed by jEdit community Will be released under GPL May continue development What did I learn? Java features – SSL, NIO, Threads, Properties Implementing design patterns – Observer, MVC, Factory jEdit – Plugin programming, Beanshell scripting Apache Ant – automated compiling and packaging
18
Questions? Justin Dieters Spring 2004 CS470 Final Presentation
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.