## 11.5 Limitations/Bugs

Java Explorer is the latest major feature added to Data Explorer. Some may say that this is more a proof of concept than an actual working product. The OpenDX community welcomes everybodies help in extending this feature and making Java Explorer a more robust solution.

#### Limitations

- Java Explorer applets primarily only work with UN*X and Windows Netscape 4.x clients.
- Data driven selector interactors don't work in the following circumstances:
  1. The selector interactor style was set to 'Option Menu' in the Data Explorer control panel, AND
  2. The browser is Netscape 4.05 or earlier.
  This is very unfortunate since 'Option Menu' style selector interactors account for a large fraction of all data driven interactors. Some factors which make the problem a little less serious:
  1. The latest version of the Data Explorer user interface offers a new style - 'Scrolled List' - of selector interactor.
  2. The interactors do work using Internet Explorer 4.0 or later.
  The symptom you will see if you use a data driven selector in a Netscape browser is that the menu gets larger and larger with each execution of the visual program. The root cause of the problem is that Netscape's version of Java supports only the Java 1.0 api for handling the Java Choice gui object. It was only with Java 1.1 that the possibility of implementing such a beast was provided.
- All browsers used in testing this software exhibit certain cranky behavior when redrawing screen contents during a scrolling operations. The symptom is incorrectly drawn images or applets. Sometimes an applet is left completely blank. The workaround with Netscape 4.04, 4.05 and Internet Explorer 4.0 seems to be to select 'Reload' or 'Refresh'.
- There are some beginnings for the ability to use a gui builder such as VisualAge to combine Java Explorer's machine generated java code with customized gui interfaces for your web pages. Future releases will include examples of such applets. Combining the capabilites of Java Explorer with VisualAge involves importing Java Explorer's jar file, making an applet which subclasses dx.net.DXLinkApplication, and setting some of Java Explorer's properties. The documentation you would need for this is missing, so it's virtually impossible to do.

#### Bugs

- There are inputs of some interactors whose data driven-ness is not handled. This is simply a matter of the software being incomplete. Those that are handled:
  - Reset
  - Scalar, Integer, Vector
    - min, max, delta, value, decimals
  - Selector, SelectorList
    - stringdata, valuelist, index
  - Toggle
    - setvalue, unsetvalue
- Data Explorer generates incorrect java code if an interactor in your visual program has multiple interactors in control panels.
- Pan mode does not work if the image tool is using a perspective camera.
- Scalar and Integer interactor nodes may have associated with them only stepper interactors in control panels. Any other interactor types will cause runtime errors.
- Data Explorer's ui provides no way for the visual program author or the web page author to enter certain values:
  - Locations of class files in the generated makefile needed for compiling.
  - Destination directory in the generated makefile needed for installing.
  - Ordering of control panels within the generated applet.
  - The contents of the 'Select an Image Tool' menu in the 'Execution' panel of the generated applet are based only on which Images were named in the original .net file. (See 'Edit/Change Image Name' on the menubar of a DX Image window.)
- Differences in width and height requirements between the java and OSF/Motif versions of interactors can lead to overlapping interactors. As a workaround make the OSF/Motif interactors in the original visual program about a 1/4 of an inch larger than they need to be.
- Although your visual program may contain many Image tools, execution of the program in web page mode will update only those images which actually change as a result of an execution. (That's a good thing.) However if an image tool's defaultCamera input param in wired in then a new image will be transmitted to the browser with each execution. This is currently a problem even if resetCamera remains 0.
- The distributed execution mechanism works badly on AIX4.1. Because of an apparent limitation on the use of popen to run remote programs via rsh, DXServer can not run multiple simultaneous sessions. In other words if you point more than browsers at pages served by a DXServer spawning remote dx sessions, the DXServer will hang. You'll have to use $ kill -9 <pid> to clean up after it. This mechanism does work on AIX4.2.

## 11.6 Java Interfaces

    package dx.net;

    public interface DXLinkHandler {
        public void outputHandler(String key, String msg, Object data);
        public boolean hasHandler(String key);
    };

outputHandler() will be called once each time a value is received from Data Explorer for the corresponding DXLOutput tool. The name of the tool will be in key.

hasHandler() will be called by Java Explorer to determine if the applet intends to handle messages produced the the DXLOutput tool named in key.

[ OpenDX Home at IBM | OpenDX.org ]