3.4 Release

Trajectory bug fix — WellboreStationTrajectory. Fixed bug which would prevent plots from deviating if the starting depth was equal to 0.

Improved ergonomics in the demo: rubberband is not supported while deviated

Fixed broken hyper-links in documentation

Fixes for SimpleLabelDecorationPainter, DynamicRightLabelLayoutStrategy and DynamicLeftLabelLayoutStrategy to insure labels pin to the edge of the viewport instead of partially rendering off-screen.

Changed cement.svg to be light grey instead of candy stripes.

3.3 Release

Removed deprecated WITSML parser and associated classes. Fixed bugs in TrueVerticalDepthTickGenerator. Deprecated
TrueVerticalDepthTickGenerator.setIsShowingDeviation as it now does nothing.

In this release, we have added support for wellhead equipment. We have an SVG file for them that is wellhead.svg in the usual package. This equipment
is treated specially by the toolkit

It is above ground (at negative depth) 
It is not stretchable 
It cannot be deviated 
The label tether for it is drawn horizontally 
We added a new class, Wellhead, to represent the wellhead equipment.

WellboreTestSource.WellboreType got two new sources that have wellheads: SIMPLE_WELLHEAD, and OTHER_WELLHEAD. You can see
the new wellhead in action by running the demo with an argument of "TEST" (without quotes) and then picking one of these two sources
from the application menu bar at the top.

This release does not provide support for declaring wellhead equipment in our xml files; the wellhead must be added
to the wellbore programmatically. To add a wellhead you should use some code like the following

```xml
// creating the wellbore instance to use, giving it the name example
        Wellbore rtn_wellbore = new Wellbore("Simple");
        ...
        // create the first completion string
        CompletionString completion1 = new CompletionString();

        rtn_wellbore.getSubsurfaceCompletion().add(completion1);

        Wellhead wellhead = new Wellhead(depthUnits,
                new DiameterMeasurement(
                    new OuterDiameter(30, diameterUnits))
                );
        wellhead.setDescription("Wellhead");
        completion1.add(wellhead);
        ...
```

The class SubsurfaceDepthIntervalObject has two new methods preserveAspectRatio() (default implementation returns false) and
isDeviatable() (default implementation returns true). The new Wellhead object has implementations of these methods that
return the opposite.

This release does not support using wellhead equipment with multiple completion strings.

The interface DepthIntervalCompressionStrategy has a new method double getPositionAtDepthIntervalIndex( int index).

We changed the demo zooming behavior to preserve the aspect ratio when necessary.

We fixed a bug that caused wellbore's containing a Hole to have their completion string positioned incorrectly.

We made changes to the labeling strategy. The strategy now aligns the left edge of the labels when there is room, and has improved
the vertical position of the labels so they are closer to the anchor point.

DynamicLeftLabelLayoutStrategy and DynamicRightLabelLayoutStrategy have a new method setLeftLabelEdgeHorizontalThreshold(double threshold)

We fixed an error in drill bit.svg where some of the small circles were misplaced.

Changed demos and tutorials so that they all build the GUI on the Event Dispatch Thread to follow the guidelines from
Oracle.

Changed the demo to fix a GUI freeze, and to not print out its model structure.

3.2 Release Notes

Added user guide and tutorial documents.

Added labels to deviated schematics.

Including easy filtering of schematic components and the ability to easily create lithology behind the wellbore.

Clarified unsupported features for deviated schematics: multiple strings and
uncompressed view.

Fixed bug in TransformedShape.applyTransform

Textures for cement (CementCompositeShape), and  gradient fill for hollow shapes.

Added getDepthRange to WellboreTrajectory

Major rework and testing of WellboreStationTrajectory

Deprecated DeviatedNormalizedDepthIntervalCompressionStrategy and its associated Builder. Restructured Deviated  & Compressed shapes; Made StandardCompressor separate class. Added new DeviatedCompressionStrategy and new interface CompressionStrategy

Minor fixes that permit users to have a custom
SVG map with a deviated schematic. The changes are to
DeviatedCompressedWellboreMechanicalShapeBuilder. This class now

Has a new getter method for the compression strategy:
    getCompressionStrategy. This allows users to change the properties of the
    compression strategy when needed.
The default no argument constructor sets the horizontal scale factor
    for the default compression strategy to 150. This value is a sane and
    useful default which is used by many of our tutorials.
The second constructor that used to take only a
    SubsurfaceSchematicShapeFactory now has a second argument. It now takes a
    DepthIntervalCompressionStrategy in addition to a
    SubsurfaceSchematicShapeFactory. This change allows users to specify both
    the shape factory and the compression strategy of their choice.
Details of the API changes can be found in wellschematic_32changes.txt.

3.1 Release Notes

For the 3.1 release, J/WellSchematic moved up to JDK 5, and all
collections were generified. Many improvements were made to the printing, see
the J/CarnacPro release notes. Additionally,
the new print to scale feature was completed in this release. This
necessitated a change in the requirements that applications must
follow in order for printing to work properly.

The changes for 3.1 are the following:

Added support for deviated schematics. Some classes were added to the
    API, and the data schema now have new elements. 
    
The new schema is viewable in
        
schemas/wellboretrajectory.dtd
. 
We have a new tutorial
        
DeviatedCompressedWellboreMechanicalShapeTutorial
that
        shows how to use deviated schematics. 
Example data files with trajectories are provided in
        
tutorial/JWellSchematic/wellschematic
files
        
wellbore_with_trajectory.xml
,
        
wellbore_with_left_U_trajectory.xml
, and
        
wellbore_with_right_U_trajectory.xml
.
The demo, 
WellboreMechanicalShapeDemo
, will show
        deviated schematics if the input file contains a trajectory. Deviated
        schematics are only supported with compression; the linear view is
        not supported.
Some of the new classes are 
TransformedShape
,
        
DeviatedCompressedWellboreMechanicalShapeBuilder
, and
        
DeviatedNormalizedDepthIntervalCompressionStrategy
from
        the Well Schematic Visualization Toolkit.
Modified class the WellboreTrajectory: removed old method convert that
    returned a TVD, replaced it with a new method that returns a
  Trajectory3D.
Improved layout of labels when being used with JWellLog.
To clarify, the WITSML examples currently in the toolkit are using an
    unreleased draft of the spec. If you have interest in the released WITSML
    spec, contact sales@int.com regarding our WellBore Viewer product and any
    plans for the J/WellSchematic toolkit.
The API changed for 3.1 somewhat for Schematic To Symbol Map, Well Schematic, and XML Parser. A few deprecated classes and
methods were removed.

3.0.2 Release Notes

This release added new svg parsing abilities based on the Apache Batik
library. The new parsing ability is found in the J/CarnacPro package
com.interactive.jcarnac2d.util.svg. The old parser in
J/CarnacPro com.interactive.jcarnac2d.model.svg is now
deprecated and will be removed. J/WellSchemactic is now using this new Batik
based parser.

3.0.0 Release Notes

The 3.0.0 release shows lots of changes and improvements. J/WellSchematic
is now integrated in the the J/GeoToolkit. J/WellSchematic now allows the
user to add smart scaled symbols such as casing shoes and perforation
symbols. The user can now have more than one completion string, and have a
completion element that is not associated with a completion string. Here are
the API changes to
wellschematic.jar. Here are the API
changes to wellboredata.jar.

Q: These classes in the new release are missing:
WellSchematicTrack, TrackWellboreMechanicalShapeBuilder,
TrackWellboreMechanicalShape. Which classes should I need to use to replace
these ones ?

A: These classes were a poor design choice since they tightly
coupled a wellschematic shape instance with a particular view, in this case,
a J/WellLog track. In the new design, you can just drop a wellschematic shape
into a track, with some minor tweaking to properly scale the shape along the
horizontal axis ( J/WellLog tracks have a horizontal range from 0 to 1 ).
Take a look a WelllogTrackTutorial.java (in the wellschematic's tutorial
directory) for an example of how to do this. The important thing to not here
is that we are no longer using a specialized builder for welllog track to
display a well schematic shape.

Q: Methods like getName() and getDescription() for
SubsurfaceSchematicShape are missing. So what should I do for these?

A: In the 2.7 implementation SubsurfaceSchematicShape copied many
of the properties from the corresponding data model
SubsurfaceDepthIntervalObject instance that it represents. We all know
duplicating data is a bad thing, so now you can just get the properties from
the underlying data model object via SubSurfaceSchematicShape's
getSubsurfaceObject() method. So to get the name and description of the given
SubsurfaceSchematicShape instance foo, you would do the following:

```xml
SubsurfaceSchematicShape foo = .....
   String name = foo.getSubsurfaceObject().getName();
   String desc = foo.getSubsurfaceObject().getDescription();
```

<h3>Features

Schematic Views

Linear (scaled)
Non-linear (compressed)
Multiple completion string display
Dynamically rendered, view scale independent components (e.g. Casing
    Shoes, Packers ) 
(NEW!) 
"Rich Text" component labeling based on HTML markup 
(NEW!)
Shape factory plugin architecture to allow for custom wellbore shape
    implementations 
(NEW!)
User definable schematic component symbols and mapping
WITSML Wellbore data object support

Selectable schematic view components via mouse events

<h3>Added Functionality

Rich Text Labeling
Pluggable shape creating architecture
Dynamically rendered, view scale independent shapes

<h3>Changed Functionality

com.interactive.jgeo.jwellschematic.view
components have been removed and replaced with builders that create standard
J/CarnacPro shapes, views, and containers.

<h3>Change Log 

July 2007

Major refactoring to support migration to JGeoToolkit v. 3.0 and to
support dynamically rendered shapes, rich text labels, and pluggable shape
implementations.

Oct 2006 

Refactored to cleanly decouple the data and visualization packages.

Changes to com.interactive.jgeo.jwellschematic.shapes.WellboreMechanicalShape:

The constructor now requires a 
com.interactive.jgeo.wellbore.model.Wellbore
instance.
Added support for selection of components via a
    registered 
java.awt.event.MouseListener
( via
    
addMouseListener( MouseListener )
) 
Changes to com.interactive.jgeo.jwellschematic.view.WellborePlot:

No longer accepts a com.interactive.jgeo.wellbore.model.Wellbore or a com.interactive.jgeo.jwellschematic.shapes.WellboreMechanicalShapeBuilder
to indirectly construct a WellboreMechanicalShape instance. This is now
accomplished by assigning a WellboreMechanicalShape directly.

2.7.1 Release Notes

J/WellSchematic was first released in 2.7.1.