Incompatible API changes in INTViewer 5.1

A/ The types U and V of ILayerFactory and IObject3DFactory now match the type of data and window each layer type is supposed to use.

This change introduced to improve type safety was announced when INTViewer 4.5.2 was released.

Because of this change, your INTViewer 5.0 plugins are most likely not binary compatible with 5.1 and need to be recompiled.

Example:

The factory for ISeismicLayer was defined in INTViewer 5.0 as:

ILayerFactory<ISeismicLayer, IData, ILayeredWindow> factory = ...

and is defined in INTViewer 5.1 as:

ILayerFactory<ISeismicLayer, ISeismicData, IXSectionWindow> factory = ...

As a result, the following lines that used to compile no longer compile in INTViewer 5.1:

ILayeredWindow window = ...
IData data = ....
ISeismicLayer layer = ISeismicLayer.factory.createLayer(window, data, new NamedProps(), false)

and should be changed to:

IXSectionWindow window = ...
ISeismicData data = ....
ISeismicLayer layer = ISeismicLayer.factory.createLayer(window, data, new NamedProps(), false)

Also, the methods IVisual.setData and AbstractLayer2D.onSetData previously defined as:

    public void setData(IData data) throws Exception;
    protected void onSetData(IData data) throws Exception;

are now defined as:

    public void setData(U data) throws Exception;
    protected void onSetData(U data) throws Exception;

U being the type of IData returned by the IVisual.getData() method.

As a result, the following lines that compiled before INTViewer 5.1 no longer compile:

ISeismicLayer layer = ...
IData data = ...
layer.setData(data)

and should be changed to:

ISeismicLayer layer = ...
ISeismicData data = ...
layer.setData(data)

B/ The com.interactive.intviewerapi.windows.PlotService.IPlotServiceProvider interface has been modified

The create method of this interface has been changed from:

        PlotService<V> create();

to

        PlotService<V> create(V window);

C/ The com.interactive.intviewerapi.data.IXpMember interface has been modified

The getValues method of this interface has been changed from:

public KeyRange getValues(float values[], String attributeName) throws IllegalArgumentException;

to

public KeyRange getValues(float values[], String attributeName, ILongTaskProgressMonitor monitor) throws IllegalArgumentException;

D/ The com.interactive.intviewerapi.crs.ICoordinateSystemChooserService interface has been modified

    public void addAliasEPSGCode(String uniqueProjectionName, String aliasEPSGCode);
    public String getAliasEPSGCode(String uniqueProjectionName);

became

    public void addAliasEPSGCode(String uniqueProjectionName, String aliasEPSGCode, cgRect areaOfUse);
    public String getAliasEPSGCode(String uniqueProjectionName, cgRect areaOfUse);

E/ The look and feel of INTViewer has been modified.

This will affect the aspect of most of your Swing panels, buttons, etc. The default J/Carnac font has been changed to Arial. This could cause a few pixels shift in your J/Carnac displays.

F/ Crossplot layers display a histogram by default

To hide histograms when creating a cross-plot layer, use the IXpLayer.HISTOGRAM_X_VISIBLE and IXpLayer.HISTOGRAM_Y_VISIBLE properties

Example:

IXpWindow window = ...
IXpData data = ...
NamedProps props = ...
props.putProperty(IXpLayer.HISTOGRAM_X_VISIBLE, false);
props.putProperty(IXpLayer.HISTOGRAM_Y_VISIBLE, false);
IXpLayer xpLayer = IXpLayer.factory.createLayer(window, data, props, false);