Tool Integration Development
Welcome to the the EiffelStudio tool integration development page. The content held within this page will show you how to develop and integrate an new tool in EiffelStudio.
Getting Started
We are just getting started so this tutorial will only cover the basics for more advanced tutorials, see Tool_Integration_Advanced_Development and Tool_Integration_Service_Development and Services.
Requirements
The content of this tutorial relates to the working version of EiffelStudio 6.1, current attainable from the open source repository https://eiffelsoftware.origo.ethz.ch/svn/es/trunk/Src/Eiffel. Please see the pages on attain the EiffelStudio source code from the Repository, Compiling EiffelStudio and Debugging_EiffelStudio.
Once you have EiffelStudio compiled and in a state where it can be debugged then continue reading.
Creating a Tool
Before anything else can be done you need to create a tool. Most tools inside EiffelStudio utilized a class call EB_TOOL
(as of 6.1.) EB_TOOL
is current the most basic tool class and has become a little outdated. In 6.1 a new abstract base class call ES_DOCKABLE_TOOL_WINDOW
was created for the purpose of creating EiffelStudio tools with greater ease. ES_DOCKABLE_TOOL_WINDOW
still derives from EB_TOOL
but this may change in the future if all tools are converted to use ES_DOCKABLE_TOOL_WINDOW
instead.
So to be clear, only use ES_DOCKABLE_TOOL_WINDOW
as your base for tool development.
ES_DOCKABLE_TOOL_WINDOW
requires a generic parameter constrained to EV_WIDGET
. The generic parameter, G
, represents the "user widget". The user widget, defined by the feature user_widget
is the top level widget you tool should interact with. If you tool consists of just a grid, list or tree widget then the user control will be of the respective type.
To start out create a new Eiffel class and inherit ES_DOCKABLE_TOOL_WINDOW
, specifying the generic parameter for your user widget.
Note: Through out this tutorial I'll be creating a tool that uses ES_GRID
, an EiffelVision 2 grid (EV_GRID
widget that has been specialized for use in EiffelStudio.