# Java editor with Object Teams capability

The extended Java editor provides specialized features for editing OT/J code. The original Java editor has been extended for the following features:

- Navigation support for Object Teams elements (F3 = Open Declaration, see below)
- Syntax highlighting for OT/J keywords and modifiers.
  OT/J keywords are enabled based on the contents of the file being edited. This way the same editor still handles plain Java sources without interpreting OT/J keywords.
  However, within an OT/J file syntax highlighting is determined in a context-free manner, which means that scoped keywords ( A.0.1) like `after, base, before, get, result, set` are highlighted, even in situations where they have no special meaning.
- Content/code assist (code completions) for Object Teams program elements.
- Templates (source patterns) for Object Teams specific language constructs using content assist (Ctrl+Space), e.g. `within` (Expression) Statement
- Code formatting for OT/J syntax.
- New binding marker annotations in the vertical ruler (for base classes/methods bound using playedBy/callin/callout) allowing navigation to the affecting role.

## Navigation

Obvious enhancements for the normal F3 navigation regard the following:

- Go to a role's base class using the `playedBy` clause.
- Go to a bound base method or a bound field using a callout or callin binding
  (the opposite direction is supported by binding markers).

Navigating role files ( 1.2.5):

- Hitting F3 on the `team package` declarations jumps to the enclosing team.
- In order to navigate from a team to its role file use the quick outline by hitting `Ctrl-O` twice:
  role files will be offered for selection along inline members.
- If javadoc `@role` tags are used as recommended for listing all role files of the current team ( 1.2.5(d)), the role names in these tags support F3-navigation to the corresponding roles, too.

Navigating the implicit role hierarchy ( 1.3.1):

- A role class that overrides a corresponding role from the super team is decorated with an override marker () in the vertical ruler, which supports the Open Super Implementation action.
- A role method overriding a corresponding method from any explicit or implicit super role are also decorated with an override marker () supporting navigation to the overridden method.