General information about ArgoEclipse
What is ArgoEclipse?
- Why do we need this?
- What adds !Argoeclipe to Eclipse?
What are the differences between ArgoUML and ArgoEclipse?
- Rich Client Platform (RCP) vs Plugin
What is ArgoEclipse?
The ArgoEclipse project provides integration between the Eclipse IDE and the UML components of ArgoUML. Instead of a standalone application, all ArgoUML functionality is available tightly integrated with the IDE.
The project began as a 2006 Google Summer of Code project (from May until August). The initial developers were Tom Morris (the mentor) and Bogdan Ciprian Pistol (the student).
Why do we need this?
ArgoEclipse aims to be a UML tool that interacts with the Eclipse environment, this means that you will be able to generate skeleton classes from UML diagrams and generate UML diagrams from eclipse resources.
ArgoEclipse brings alongside ArgoUML functionality the interaction with eclipse functionality that will ease the development of programmers who use the Eclipse IDE.
What does ArgoEclipse to Eclipse?
There are a lot of Eclipse places (extension points) where you can find an ArgoEclipse implementation, these are the main extensions:
You can access ArgoUML like perspective in Eclipse that will bring up three ArgoUML specific views : Explorer, ?ToDo and Details (there is also the diagram editor, but this can be found in any perspective like any other editor);
- You can create new ArgoUML project files with a new wizard from the File → New menu;
The standard ArgoUML extensions: zargo, uml, xmi, xml, zip are registered with the ArgoEclipse plugin;
- With File → Open or double clicking on any file with a standard ArgoUML extension you can open those files in a diagram editor;
- Only when the diagram editor is opened you have access to new menus and toolbar items specific to ArgoUML;
- You have the possibility to export as XMI or export the graphics from the current diagram editor from the File → Export menu;
- The Save and Save As actions are implemented and are working in the eclipse way;
The Help for ArgoEclipse is available from Help → Help Contents and browse to the ArgoUML topic;
There is a prototype of Argo preference page in Window → Preferences and select ArgoEclipse;
What are the differences between ArgoUML and !ArgoEclipse?
The main difference is that ArgoEclipse is hosted by Eclipse, this means that the application framework is already there, we don't need a JFrame to be a container, we don't need to worry about deploying ArgoEclipse (Eclipse takes care of this), we already have a lot of functionality already available in Eclipse that can be customized and used.
But there are issues with ArgoEclipse, that's because Eclipse is different from ArgoUML:
Eclipse has multiple editors, ArgoUML only handles a single model, so mapping a model with an editor we'll hold us from using multiple editors with ArgoEclipse.
ArgoUML uses Swing and Eclipse uses SWT (Standard Widget Toolkit), there is the possibility to wrap Swing inside SWT, but with limited functionality and with conflicts (eg. focus, event queues). ArgoEclipse uses Swing for the diagram editor and the views, we gradually replace Swing dialogs with SWT ones.
Eclipse has a repository for storing files and folders that is different from the filesystem, it can be mapped to the filesystem but it's not necessary. ArgoUML uses java.io.File for Input/Output. What will use ArgoEclipse? ArgoEclipse uses both the eclipse repository and java.io.File. It would be nicer for ArgoEclipse and future forks of ArgoUML if ArgoUML used java.io.?InputStream and java.io.?OutputStream as parameters within the ArgoUML API.
ArgoUML has a lot of dependency cycles, these cycles contain a lot of Swing, so it's hard to change Swing into ArgoEclipse SWT, this imply a lot of code changed.
- ArgoUML is built with the design of having opened at any time a project, if no project is opened then it has a default project with two empty diagrams. In Eclipse we don't need a default project, we should map with the editor, so when the editor is closed there should be no project opened.
RCP vs Plugin
Eclipse is a framework, it can be used to create not only plugins, but entire new applications, these applications benefit from the plugin architecture of Eclipse, and can be combined with any other plugin. ArgoEclipse is an Eclipse plugin, so it's easy to make a RCP application with it. The main difference between ArgoEclipse and an ArgoUML RCP application is that the RCP application will be lighter and will contain just a few core plugins from Eclipse. One issue might arise, if ArgoEclipse depends on more Eclipse plugins, then the RCP will have to incorporate those too.