Tuesday, January 10, 2006

Glossary of Eclipse Terms

Eclipse is an open source project coordinated by IBM. Besides a tool, it is a runtime environment where one can create and deploy new components (plug-ins).
When I started with Eclipse plug-in development in late 2003 I was overwhelmed by the number of specific terms and the richness of the programming framework. I started putting together a glossary of terms, and still today it's a useful reference for myself. I hope it can be useful for you too. If you have anything to add or change in the glossary, please let me know.


































































































































































































Action
Logic associated with a user action, such as clicking a button and selecting a menu option. Some actions are invoked on the current selection, such as the Properties popup menu option on a resource in the navigator view. Other actions are global and do not operate on the current selection, such as Project | Build All.
Plug-in developers typically implement actions by extending the abstract class ActionDelegate or implementing IActionDelegate (when the action is contributed via an extension point), or extending the abstract class Action.
Action delegate
See Action
Action set
Menus, menu options and toolbar items can be contributed to workbench menus and toolbar. These kinds of contributions can be grouped together in action sets. Then the user can make specific action sets visible or not. Note that popup menu options and other kinds of actions cannot be part of an action set.
Builder
Special kind of action that can be associated to projects. When the user builds a project, all builders are called in a specific order. Builders are typically associated to project natures. For example, the Java Builder that calls the Java compiler is by default called on projects with the Java nature.
Collector view
A kind of view used to collect particular artifacts. Examples: Tasks, Bookmarks.
Contribution
In Eclipse, "everything is a contribution." Eclipse has a very small core and all else comes from the plug-ins. Each plug-in can contain several
contributions. A contribution can be a menu option, a view, a compiler, a property page, and so on.
Core
Most Eclipse-based tools are deployed as a set of plug-ins. As a convention, there's usually at least a "core" plug-in and a "ui" plug-in. The core plug-in is "headless", that is, it contains core logic, but no user interface code (no SWT or JFace code).
Detail view
See Information view
Eclipse rules
The developers of Eclipse share a set of rules for design. They are stated and explained in the book "Contributing to Eclipse"
Eclipse platform
See Platform
EditorA kind of workbench part that is created to see or edit a file. Changes made in an editor follow an open-save-close lifecycle, different from a view where changes are saved immediately. See picture.
Extension point
Contributions are written to adhere to extension points. An extension point is like an outlet to which one can connect (extend) functionality. For example, to contribute a new view I need to extend the "org.eclipse.ui.views" extension point, to contribute a new popup menu option I have to extend "org.eclipse.ui.popupMenus", and so on. An Eclipse plug-in typically extend many extension points. But it may also define new extension points, inviting others to contribute (i.e., extend) your contribution.
Feature
Unit of download and installation consisting of one or more plug-ins. It is easier to package and deploy an Eclipse application that contains several plug-ins by creating a feature--the alternative would be to package and deploy each plug-in separately.
One can see the installed features in Eclipse selecting Help | About Eclipse Platform | Feature Details.
Features are stored in folder "eclipse/features"
Feature plug-in
One of the plug-ins in a feature should be the "feature plug-in." It has the same name of the feature and contains additional information used by the feature: about.ini file that defines information in the about page, splash.bmp, welcome page, help pages.
Information view
A kind of view used to show detailed information about an object selected in another view. Example: Properties.
Internal package
A package that has "internal" in the package name (e.g., "org.eclipse.core.internal.jobs"). Classes in internal packages are not part of the public Eclipse API and should not be used by plug-in developers.
JFace
Is a toolkit built on top of SWT widgets to provide higher lever visual components. Examples of visual elements that JFace provides: special editors (e.g., color editor to set a color preference), special dialog boxes (e.g., message dialog, progress monitor dialog, wizard dialog), special viewers (e.g., tree viewer, table viewer), and so on.
Job

Marker
A general-purpose annotation associated with a resource. A marker may point to a specific location in the resource, such as a compile error marker on a
Java file. Markers are typically displayed in special views (e.g., Tasks, Problems) and may also show in the left margin (gutter) of editors. Some examples of markers: tasks, problems, bookmarks, debug breakpoints, compile errors and warnings.
Multi-page editor
A special editor that presents a tabbed window to edit the contents of the file in different ways. The editor for plugin.xml is an example. Note that the term "page" is used here in a slightly different way.
Nature
It is a property of a project that simply indicates what kind of project that is. For example, if a project is tagged with the Java nature, then the Java builder, the Java editor, Java preferences and other Java specific features are enabled for that project. Some natures have associated a "nature image," which is a small decoration shown in the project icon in the navigator view. For the Java nature, the decoration is a small letter "J". A project can have zero or more natures.
Navigator view
A kind of view that shows a hierarchical tree structure of different elements. Example: Package explorer (hierarchy of Java packages), Navigator (tree of resources), Type Hierarchy (hierarchy of Java classes and interfaces).
Outline view
A kind of view that is used to show the structure of the element that is in the active editor.
Output view
A kind of view that shows the results of an operation. Examples: Search (search results), Console (output of application execution), JUnit (results of a test run).
Page
See workbench page.
Part
See workbench part.
Perspective
A pre-defined (or customized) layout of views, editors and action sets. A perspective define which views and editors should be visible and what is their
size and position on the workbench. That way a perspective defines an arrangement of the workbench that is suitable for a particular task. For example, the debug perspective shows the views that are appropriated when tracing over Java code.
Platform

Plug-in
A subfolder under the plugins folder of your eclipse installation. It contains a plugin.xml file and may optionally contain code in jar files, source code, html docs and other types of files. A plug-in may contribute zero or more items, such as views, editors,
actions.
Primary feature
In Eclipse 2.x, one of the installed features could be tagged as the primary feature. The primary feature defined the "branding" of an Eclipse application--splash screen, welcome page, about box. The primary feature was defined by entry "feature.default.id" in the install.ini file located in the root folder of the Eclipse installation.
Project
Special kind of resource that corresponds to a directory inside the workspace. Some actions are performed on projects, such as Build. In addition, a project can have one or more project natures.
Project nature
See Nature
ResourceEither a file or a directory that exists in the file system. A project and the workspace root are also (special) resources that map to directories.
Result view
See output view.
Rules
See Eclipse rules
Runtime

SWT
A GUI framework that provides portable UI widgets (buttons, windows, scroll bars, etc.), like AWT or Swing. Your SWT code is portable across platforms, but the SWT implementation itself relies on native code.
Table view
A kind of view that shows information in columns. Examples: Problems, Tasks, CVS Resource History.
Task
In the task view you can add things to do (tasks), which can have a description, priority (high, medium, low), a completed status and a link to a location in a resource.
ViewA window within a workbench page. Modifications made in a view are saved immediately (in contrast to an editor, which typically follows a open-save-close
lifecycle). A view is used to display and manipulate information in different formats and therefore there are different kinds of views: navigator view (aka explorer view), outline view, output view (aka result view), table view, information view (aka properties or detail view). See picture.
Window
Wizard
In Eclipse, a wizard is a sequence of one or more dialog boxes activated by the New menu option. Examples: New Project, New Class, etc.
Workbench
The entire Eclipse UI is the workbench. Internally, the workbench is a single root object that contains the menu bar, tool bar, perspective bar, status line and a main area for displaying pages containing workbench parts. Only one page can be active at a time. See picture.
Workbench page
A page can contaion 0 or more workbench parts.
Workbench part
A workbench part can be a view or an editor.
Workbenc window
See workbench.
WorkspaceIt is in practice a directory in the file system and everything under it. There is only one workspace per running instance of Eclipse. All resources exist within that one workspace. Thus, projects are created within a workspace.


Tuesday, January 03, 2006

Inaugural Post

This is my inaugural post. At a minimum, it fulfills a new year's resolution. :-)
Creating a weblog using blogger is very simple, as long as you want a simple blog. The first feature I missed was the ability to create categories for your posts. Thanks to Google I already found a solution, which I'll try to apply next.