# INTViewer Platform And Modules

### INTViewer Platform

To gain access to INTViewer modules in NetBeans, you need to load the INTViewer platform:

Start NetBeans and select option **Tools->NetBeans Platforms**. Select option **Add Plaform ...** and point to the top folder of your INTViewer distribution (this folder should be named **INTViewer**).

### INTViewer Modules

To build your own modules, you need to add dependencies to INTViewer modules that are included in the distribution. The [INTViewer Basics](/solutions/intviewer/intviewer-basics) section lists the modules that are almost always needed. Consult this [article](/solutions/intviewer/intviewer-platform-and-modules/module-dependencies) to manage module dependencies.

The following INTViewer modules are available:

**IntviewerCore**: for all core functions of INTViewer (ex: [IData](/solutions/intviewer/api-reference), always needed)

**AllDeps**:gathers all external libraries used by INTViewer (almost always needed)

The following modules provide data processing capabilities:

**SeismicData**: for all seismic data processing (ex: [ISeismicData](/solutions/intviewer/api-reference)) - almost always needed

**HorizonData**: for all horizon data processing (ex: [IHorizonData](/solutions/intviewer/api-reference))

**GridSurfaceData**: for all grid surface data processing (ex: [IGridSurfaceData](/solutions/intviewer/api-reference))

**PointSetData**: for all pointset data processing (ex: [IPointSetData](/solutions/intviewer/api-reference))

**GISData**: for all GIS data processing (ex: [IGisData](/solutions/intviewer/api-reference))

**GocadData**: for all gocad/triangle mesh data processing (ex: [ITriangleMeshData](/solutions/intviewer/api-reference))

**WellData**: for all well data processing (ex: [IWellData](/solutions/intviewer/api-reference))

**FaultData:** for all fault data processing (ex: [IFaultData](/solutions/intviewer/api-reference))

The following modules are specific to 2D visualization:

**Viewer2D**: for all 2D visualizations (ex: [ILayeredWindow](/solutions/intviewer/api-reference)) - almost always needed

**Seismic2D**: for seismic 2D visualization (ex: [IXSectionWindow](/solutions/intviewer/api-reference), [IMapWindow](/solutions/intviewer/api-reference)) - almost always needed

**Horizon2D**: for horizon 2D visualization (ex: [IHorizonLayer](/solutions/intviewer/api-reference), [IMapHorizonLayer](/solutions/intviewer/api-reference))

**GridSurface2D**: for grid surface 2D visualization (ex: [IGridSurfaceLayer](/solutions/intviewer/api-reference), [IMapGridSurfaceLayer](/solutions/intviewer/api-reference))

**PointSet2D**: for pointset 2D visualization (ex: [IPointSetLayer](/solutions/intviewer/api-reference), [IMapPointSetLayer](/solutions/intviewer/api-reference))

**GIS2D**: for all GIS (geographic information system) 2D visualizations (ex: [IGisLayer](/solutions/intviewer/api-reference))

**Gocad2D**: for all Gocad/TriangleMesh 2D visualizations (ex: [ITriangleMeshLayer](/solutions/intviewer/api-reference), [IMapTriangleMeshLayer](/solutions/intviewer/api-reference))

**WellTrack2D:** for all well log window visualizations (ex: [IWellLogWindow](/solutions/intviewer/api-reference), [IWellLogVisual](/solutions/intviewer/api-reference))

**Well2D:** for all well 2D visualizations (ex: [IWellLayer](/solutions/intviewer/api-reference), [IMapWellLayer](/solutions/intviewer/api-reference))

**Fault2D:** for all fault 2D visualizations (ex: [IFaultLayer](/solutions/intviewer/api-reference), [IMapFaultLayer](/solutions/intviewer/api-reference))

The following modules are specific to 3D visualization:

**Viewer3D**: for all 3D visualizations (ex: [IWindow3D](/solutions/intviewer/api-reference))

**Seismic3D**: for all seismic 3D visualizations (ex: [ISeismicVolumeObject3D](/solutions/intviewer/api-reference))

**Horizon3D**: for all horizon 3D visualizations (ex: [IHorizonObject3D](/solutions/intviewer/api-reference))

**GridSurface3D**: for all grid surface 3D visualizations (ex: [IGridSurfaceObject3D](/solutions/intviewer/api-reference))

**PointSet3D**: for all pointset 3D visualizations (ex: [IPointSetObject3D](/solutions/intviewer/api-reference))

**Gocad3D**: for all Gocad/Triangle Mesh 3D visualizations (ex: [ITriangleMeshObject3D](/solutions/intviewer/api-reference))

**Well3D**: for all well 3D visualizations (ex: [IWellObject3D](/solutions/intviewer/api-reference))

**Fault3D:** for all fault 3D visualizations (ex: [IFaultObject3D](/solutions/intviewer/api-reference))

The following modules provide specific features:

**Crossplot**: for the crossplot window (ex: [IXpWindow](/solutions/intviewer/api-reference), [IXpLayer](/solutions/intviewer/api-reference))

**Calculator**: for all seismic calculator data and 2D visualizations (ex: [ICalculatorSeismicData](/solutions/intviewer/api-reference), [ICalculatorLayer](/solutions/intviewer/api-reference), [IMapCalculatorLayer](/solutions/intviewer/api-reference))

**FKDisplay**: for the F-K display window (ex: [IFKWindow](/solutions/intviewer/api-reference), [IFKLayer](/solutions/intviewer/api-reference))

**F-T Analysis**: for the FT analysis window (ex: [IFTWindow](/solutions/intviewer/api-reference), [IFTLayer](/solutions/intviewer/api-reference))

**SpectrumAnalysis**: for the spectrum analysis window (ex: [ISpectrumWindow](/solutions/intviewer/api-reference), [ISpectrumLayer](/solutions/intviewer/api-reference))

**FileExplorer**: for the file explorer window, no public API exposed

**HeaderMap**: for the Tools->Create Header Map menu item, no public API exposed

**Histogram**: for histogram capabilities, common to SeismicHistogram and WellHistogram, no public API exposed

**SeismicHistogram**: for seismic histogram windows and layers (ex: [ISeismicHistogramWindow](/solutions/intviewer/api-reference), [ISeismicHistogramLayer](/solutions/intviewer/api-reference))

**WellHistogram**: for well histogram windows and layers (ex: [IWellHistogramWindow](/solutions/intviewer/api-reference), [IWellHistogramLayer](/solutions/intviewer/api-reference))

**TraceFilters**: for the seismic trace filters, no public API exposed

**SeismicGenerators**: for the seismic generators (ex: [IDataGenerator](/solutions/intviewer/api-reference))

**TraceHeaderDisplay**: for the seismic trace header window, no public API exposed

**Data:** for the data window, no public API exposed

**KmzExport**: for the File -> Export to KMZ menu item

**ScreenCapture:** for the movie and snapshot features, no public API exposed

**EditTraceHeader:** for the Tools->Create Trace Header menu item, no public API exposed

**RMSMap:** for the Tools->Create RMS Map menu item, no public API exposed

**PythonCore:** for the Python capabilities

**MatlabCore:** for the MATLAB capabilities (ex: [IMatlabConnector](/solutions/intviewer/api-reference))

**IntviewerHelp:** for the help content, no public API exposed

**IntviewerUpdateCenters:** for the update centers registration, no public API exposed

The following modules are [GeoToolkit](http://www.int.com/products/geotoolkit) libraries managed by INT:

**JCarnacProWrapper**: for all 2D drawing components (J/CarnacPro, see [Drawing Shapes](/solutions/intviewer/intviewer-api-for-layers/drawing-shapes))

**JSeismicWrapper**: for all seismic display components (J/Seismic)

**JChartWrapper**: for all charting components, including histograms (J/Chart)

**JWellLogWrapper**: for all well log display components (J/WellLog)

**JCarnacGisWrapper**: for all GIS format processing and display components (J/CarnacGIS)

**JContourWrapper**: for all JContour display components (J/Contour)

The following modules provide other features that are not accessible as public API:

**SeismicDataAdapterWrapper**: for all seismic format processing components, no public API exposed

**CgmOutputWrapper**: includes libraries for CGM ouput, no public API exposed

**IntUtil**: for various internal utilities, mainly the cgColorMap API

**IntviewerUpdateCenters**: defines all update centers managed by INT for INTViewer, no public API exposed

**LicenseService**: for all licensing validation services, no public API exposed

### NetBeans Modules

Other NetBeans modules are sometimes needed. The most common modules are listed below:

**Utilities API**: Various helper methods and basic concept definitions including actions, image handling, parallel execution and branding support.

**UI Utilities API**: Various awt helper methods, including org.openide.awt.Mnemonics used by all panels created by NetBeans

**DialogsAPI**: Various dialog helper methods

**File System API**: Various file system helper methods

**Lookup API**: Various helper methods to manage lookups and objects that are lookup providers (almost always needed)

### JUnit

Go to the [JUnit](/solutions/intviewer/intviewer-platform-and-modules/using-junit) section to learn how to add unit tests to your project.

### Platform Versioning

The version number of the INTViewer platform is displayed in the "NetBeans Platform" field of the project properties screen.

### Class Loaders

The INTViewer/NetBeans platform has its own class loading mechanism. To use the Java ClassLoader.loadClass and ClassLoader.getResourceAsStream methods, obtain the current class loader using Thread.currentThread().getContextClassLoader(). Do not use Class.getClassLoader().

The following code will work:

```
        Class klass = Thread.currentThread().getContextClassLoader().loadClass(fullyQualifiedClassName);
        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/mycompany/myfile.txt");
```

The following code will **not always** work:

```
        Class myClass = ...
        Class klass = myClass.getClassLoader().loadClass(fullyQualifiedClassName);
        klass.getConstructor(paramKlasses).newInstance(params);
        Class myClass = ...
        InputStream is = myClass.getResourceAsStream("com/mycompany/myfile.txt");
```

### Error Logging

There are several ways to log errors in a project based upon the INTViewer platform:

- using System.out.println
- using a logger
- using Exception.printStackTrace


The following code will generate 4 logs in the build\testuserdir\var\log\messages.log file of your project.

```
    private static final Logger logger = Logger.getLogger(TestSystemOut.class.getName());
    @Override
    public void actionPerformed(ActionEvent e) {
        new Exception("TEST PRINT STACK TRACE").printStackTrace();
        System.out.println("TEST SYSTEM OUT");
        logger.log(Level.SEVERE, "TEST LOGGER SEVERE");
        logger.log(Level.INFO, "TEST LOGGER INFO");
    }
```

This example was tested with INTViewer 4.5, NetBeans 7.1.2 and Java 1.7.0_03 (64 bit)

For debugging, you can also use the Netbeans debug options, accessible from the "Debug" menu.

### Configuration

When you a develop plugins that require OpenGL rendering, please read these [configuration notes](/solutions/intviewer/intviewer-platform-and-modules/3d-plugin-configuration) for your module suite.

### API Changes

INTViewer [2019](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-2019) (current version)

INTViewer [2018](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-2018)

INTViewer [5.2](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-5-2)

INTViewer [5.1.1](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-5-1-1)

INTViewer [5.1](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-5-1)

INTViewer [5.0](/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-5-0)