Java Model Example
==================

Please see the `README` file in the `org.eclipse.handly.examples` bundle
for general information regarding Handly Examples.

The Java model example (`o.e.handly.examples.javamodel*`) demonstrates
a Handly-based model for the Java language along the lines of the JDT's
Java model.

As one would expect from an example, the model is somewhat contrived.
In particular:

* Only classpath entries of kind CPE_SOURCE, with paths of length 1
are considered (i.e. only source folders that are direct children
of the project resource);

* Inclusion/exclusion filters are ignored -- everything is included;

* Only default output location is supported, with path of length 1;

* Initializers and local/anonymous types are not represented in the model.

Some of these constraints may be relaxed in the future (especially
based on community feedback).

Besides the core model and tests, the following UI parts, which are based on
the example model for Java, are provided:

* Example Java editor, with Handly-based reconciling and outline;

* Example Java navigator view (kindly contributed by Ondrej Ilcik, Codasip).

To try it out, launch runtime Eclipse (you can use the predefined launch
configuration), and open the `Java Navigator (Handly)` view (under the
`Handly Examples` category). The view shows the elements of the underlying
example model for Java. You can navigate the structure of the projects in your
workspace down to types, methods, and fields in Java source files. Select
a Java file and edit it with the `Java Editor (Handly Java Model Example)`.
See how changes to the inner structure of the source file are reflected
in both the Java Navigator and the Outline view.

Please note that the UI functionality is necessarily very much contrived.
In particular, the example Java editor is based on a simple text editor
with no syntax coloring, content assist, or reporting problems as you type.
The goal has been to keep the example code comprehensible while demonstrating
the relevant Handly-related functionality such as reconciling and outline.
Similarly, the above-stated constraints of the example model are revealed
in earnest in the Java Navigator view. The view provides no actions for
manipulating the model -- you can use the standard Package Explorer for that --
but changes in the underlying model will, of course, be reflected in the view.

It is hoped that this example is sufficiently real-world despite
the inevitable simplifications vs. the full-fledged JDT implementation,
and will be useful to Handly adopters. Feedback is most welcome
and can be directed to the project's forum:

    http://eclipse.org/forums/eclipse.handly

or right to the developer mailing list:

    https://dev.eclipse.org/mailman/listinfo/handly-dev
