# Package jv.project

Major classes related with projects and JavaView interfaces.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  PgGeometryIf | This interface must be implemented by all geometries to allow registration and rendering in a display of JavaView.
  PjWorkshopIf | This interface for workshops allows the loading of workshops from PvViewer.
  PvCameraIf | This interface must be implemented by all cameras.
  PvCameraListenerIf | Interface for a listener to receive events of camera in display.
  PvDisplayHandlerIf | Interface for several types of render canvas objects to serve as render windows inside a JavaView display panel.
  PvDisplayIf | This interface must be implemented by all displays to be registered in JavaView, and which want to display any of the geometries implementing the interface PgGeometryIf.
  PvDisplayOverlayIf | Interface for canvas-type widgets to be displayed inside resp. overlaid on a JavaView display.
  PvGeometryIf | Interface to container geometry used in JavaView displays.
  PvGeometryListenerIf | Interface for a listener to receive events of geometries in the display.
  PvLightIf | Interface for lights used in the JavaView display.
  PvPickListenerIf | Interface for a listener to receive pick events from display.
  PvViewerIf | Interface for a viewer which manages the 3d-display, control window, and list of projects.

- Class Summary
  Class | Description
  --- | ---
  PgGeometry | Abstract class for all geometry classes in JavaView, and implementation of `PgGeometryIf`.
  PgGeometry_Menu | Add specific menu items to 'method' menu in control panel to invoke methods from menu.
  PgJvxSrc | Container of very diverse geometry data of points, curves, surfaces, and volumes.
  PjProject | Central control class whose subclasses are application specific user projects.
  PjProject_IP | Default info panel of PjProject urging a programmer to create subclass.
  PvApplet | Base class for JavaView application applets which includes a JavaView display and optionally an inspector panel.
  PvCameraEvent | Information about camera whenever mouse position has changed to be sent to a listener from a display.
  PvPickEvent | Pick events on geometries sent to a pick listener from a display.

## Package jv.project Description

Major classes related with projects and JavaView interfaces.

Projects cover the functionality of a specific user problem. Projects might compute surfaces, load geometries from file, or solve differential equations. They are specialized classes making use of most of the functionality available in JavaView. Projects can be used as building blocks in other projects. In some sense, a project is similar to an applet, which targets a specific problem. In JavaView a lot of functionality exists in a set of projects. Projects may be loaded from an applet or interactively via the menu of the control window.

The advantage of distinguishing between applets and projects is reusability. An applet is a final thing while projects may be used as building blocks to create larger networks of projects where each project solves a specified task. A project is similar to a class with all object-oriented benefits.

The class `PjProject` is the root class of projects, and user projects should subclass from it. A project may have an info panel and contain a set of instances of other classes. Currently, a project may contain only a single geometry. A project is registered with its name in `PvViewer` via PvViewer.addProject. A projected is selected, i.e. activated, via PvViewer.selectProject. This call registers the geometry of the project in the display and invokes the start() method of PjProject.

### Adding and Selecting a Project from HTML Page

A project may be added and selected via HTML parameters, and additional project parameters may be specified in the HTML page. PvViewer reads these information and loads the corresponding project. An example of the HTML parameters is the following:

    <applet code="PgViewerApplet.class" name="PgViewerApplet Main" width="480" height="360">
      <param name="Select"   value="Curve as Bezier">
      <param name="Project1" value="Animated Torus as PointSet; jv.appl.PjAnimPointSet">
      <param name="Project2" value="Curve as Bezier;            jv.appl.PjBezierCurve_Test">
      <param name="Project3" value="Domain Test;                jv.appl.PjDomain_Test">

      <param name="Console" value="Show">     <!Show/Hide VGP-console for debugging>
      <param name="Control" value="Hide">     <!Show/Hide control panel>
      <param name="Frame"   value="Show">     <!Show/Hide frame around applet>
      <param name="Panel"   value="Project">  <!Name of initial panel if control panel is showing>
    </applet>

The parameter Project1 etc denote names and classes of projects to be added to the project list of the PvViewer. The appended number must start run from 1 to the number of projects. The total number need not be specified. One of theses projects may be selected and activiated by name with the parameter Select.

"

The software JavaView? is copyright protected. All Rights Reserved.
"