Reload the visad applet of html but can't show
monica
monica at cwb.gov.tw
Tue Dec 19 02:29:35 MST 2006
Hello ~
I have some trouble to reload the visad applet html.
First step : I open the html which has visad applet. The picture
like no problem and show "Relative humidity(%)" data is correct.(like
p1.jpg)
Second step : But when I press "Reload" button in html, the
"Relative humidity(%)" data is hidden. The scales seem right, and
I still can get data in visad.(Although data can't show, like
p2.jpg)
Third step : I try again "Reload" the html, but terrible thing has
happen. Not only the "Relative humidity(%)" data is hidden,
but also other scales disappear.(like p3.jpg)
I sort the email visad-list email, I find many ways, but just the
"open java plugin Console and perss 'x' -- clear classloader cache" way
can solve my problem. Is other way to solve the problem somebody
know?Please tell me....
(I try to code "clear classloader cache" in stop() method, but I
don't know to use which class control it ? and nobody seem not do..)
help me please, thanks a lot ~~
monica
[code]
package auto3DVisad;
import java.applet.Applet;
import java.awt.*;
import java.net.URL;
import java.util.*;
import javax.swing.*;
import visad.*;
import ucar.*;
public class Auto3DVisad extends Applet
{
DataImpl image_sequence = null;
DisplayImpl display = null;
BaseMapAdapter baseMapAdapter;
NetcdfFile nc_File;
String url = "";
String varname = "";
String mapFile = "";
public void init()// throws VisADException, RemoteException,
IOException
{
System.out.println("Auto3DVisad.java Replaced on 2006/12/15");
try
{
url = getParameter("HTTPNetcdfFile");
varname = getParameter("VariableName");
mapFile = getParameter("OUTLFile");
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void start()
{
getData();
drawData();
}
public void getData()
{
try
{
Plain plain = new Plain();
// open netcdf file
if (url.indexOf("://") > 0)
image_sequence = plain.open(new URL(url));
else
image_sequence = plain.open(url);
// open OUTL* file
if (mapFile.indexOf("://") > 0)
baseMapAdapter = new BaseMapAdapter(new URL(mapFile));
else
baseMapAdapter = new BaseMapAdapter(mapFile);
if(image_sequence == null)
System.out.println("image_sequence is null");
if(baseMapAdapter == null)
System.out.println("baseMapAdapter is null");
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void drawData()
{
try
{
debugMap(display);
// create a Display using Java3D
display = MyDataUtility.makeSimpleDisplay(image_sequence);
GraphicsModeControl dispGMC = (GraphicsModeControl)
display.getGraphicsModeControl();
dispGMC.setScaleEnable(true);
// create reference
DataReference image_ref = new
DataReferenceImpl("NetcdfData");
image_ref.setData(image_sequence);
display.addReference(image_ref);
display.reDisplayAll();
ScalarMap latMap = null, lonMap = null, varMap = null,
altMap = null;
Vector mapList = display.getMapVector();
for(int idx = 0 ; idx < mapList.size() ; idx++)
{
ScalarMap tempMap = (ScalarMap)mapList.get(idx);
if(tempMap.getScalarName().equals("Latitude"))
latMap = tempMap;
else if(tempMap.getScalarName().equals("Longitude"))
lonMap = tempMap;
else if(tempMap.getScalarName().equals(varname))
varMap = tempMap;
else if(tempMap.getDisplayScalar() == Display.ZAxis)
altMap = tempMap;
else if(tempMap.getScalarName().indexOf("_") != -1)
display.removeMap(tempMap);//because ScalarMap name
not support "_"(ex.level_200)
}
// we reset range : Latitude : -90 ~ 90, Longitude : 0.0 ~
357.5
double lonRange[] = new double[2];
double latRange[] = new double[2];
FieldImpl temp_field = (FieldImpl) image_sequence;
FlatField image_field =
(FlatField)temp_field.getSample(0);
Gridded3DSet set = (Gridded3DSet)
image_field.getDomainSet();
float[] hi = set.getHi();
float[] low = set.getLow();
lonRange[0] = low[0];
lonRange[1] = hi[0];
latRange[0] = low[1];
latRange[1] = hi[1];
lonMap.setRange(lonRange[0], lonRange[1]);
latMap.setRange(latRange[0], latRange[1]);
if(altMap != null)
{
float[][] altSamples = set.getSamples();
for(int idx = 2 ; idx < altSamples.length ; idx++)
{
for(int jdx = 1 ; jdx < altSamples[idx].length ;
jdx++)
{
if(altSamples[idx][jdx -1] >
altSamples[idx][jdx])
{
double altRange[] = altMap.getRange();
altMap.setRange(altRange[1], altRange[0]);
break;
}
}
}
}
// link OUTL* file data to display with a data reference
// set the attributes of the map lines (color, location)
DataReference maplinesRef = new
DataReferenceImpl("MapLines");
enableClipping(display, dispGMC, true);
maplinesRef.setData(baseMapAdapter.getData());
ConstantMap[] maplinesConstantMap = new ConstantMap[5];
maplinesConstantMap[0] = new ConstantMap(1.,
Display.Blue);
maplinesConstantMap[1] = new ConstantMap(1., Display.Red);
maplinesConstantMap[2] = new ConstantMap(1.,
Display.Green);
maplinesConstantMap[3] = new ConstantMap(1.001,
Display.Radius); // just above the image
maplinesConstantMap[4] = new ConstantMap(-0.999f,
Display.ZAxis);
display.addReference(maplinesRef, maplinesConstantMap);
display.reDisplayAll();
// change Display.XAxis and Display.YAxis ratio
ProjectionControl projCont =
display.getProjectionControl();
double[] latvalue = latMap.getRange();
double[] lonvalue = lonMap.getRange();
double latStart = latvalue[0];
double latEnd = latvalue[latvalue.length - 1];
double lonStart = lonvalue[0];
double lonEnd = lonvalue[lonvalue.length - 1];
if(!Double.isNaN(latStart) && !Double.isNaN(latEnd) &&
!Double.isNaN(lonStart) && !Double.isNaN(lonEnd))
{
if(latStart != Double.NaN && latEnd != Double.NaN &&
lonStart != Double.NaN &&lonEnd != Double.NaN)
{
if((latEnd - latStart) <= (lonEnd - lonStart))
{
double[] aspect = new double[]{1, (latEnd -
latStart) / (lonEnd - lonStart), 1};
projCont.setAspect(aspect);
}
else
{
double[] aspect = new double[]{(lonEnd -
lonStart) / (latEnd - latStart), 1, 1};
projCont.setAspect(aspect);
}
}
}
// init ContourWidget
ContourWidget contourWid = null;
if(varMap.getDisplayScalar() == Display.IsoContour)
contourWid = new ContourWidget(varMap);
// start animation
final AnimationControl animationControl =
(AnimationControl) display.getControl(AnimationControl.class);
// Create Button control Animation
JPanel northPanel = new JPanel();
JPanel btnPanel = new JPanel();
northPanel.setLayout(new BorderLayout());
btnPanel.setLayout(new FlowLayout());
//Title
if (url.indexOf("://") > 0)
nc_File = new NetcdfFile(new URL(url));
else
nc_File = new NetcdfFile(url, true);
Variable nc_var = nc_File.get(varname);
JLabel titleLabel = new
JLabel((nc_var.getAttribute("long_name")).getStringValue(),
SwingConstants.CENTER);
titleLabel.setFont(new Font("Times New Roman", Font.BOLD,
18));
JPanel titlePanel = new JPanel();
titlePanel.add(titleLabel);
northPanel.add(titlePanel, BorderLayout.WEST);
northPanel.add(btnPanel, BorderLayout.CENTER);
debugMap(display);
//Button
JButton btnPlay = new JButton(" Play ");
btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
animationControl.setOn(true);
}
catch(Exception ex)
{
}
}
});
btnPanel.add(btnPlay);
JButton btnStop = new JButton(" Stop ");
btnStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
animationControl.setOn(false);
}
catch(Exception ex)
{
}
}
});
btnPanel.add(btnStop);
JButton btnNext = new JButton(" Next ");//previous
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
if(animationControl.getOn())
animationControl.setOn(false);
animationControl.setCurrent(animationControl.getCurrent() + 1);
}
catch(Exception ex)
{
}
}
});
btnPanel.add(btnNext);
JButton btnPrevious = new JButton("Previous");
btnPrevious.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
if(animationControl.getOn())
animationControl.setOn(false);
animationControl.setCurrent(animationControl.getCurrent() - 1);
}
catch(Exception ex)
{
}
}
});
btnPanel.add(btnPrevious);
setLayout(new BorderLayout());
add(display.getComponent(), BorderLayout.CENTER);
add(northPanel, BorderLayout.NORTH);
if(varMap.getDisplayScalar() == Display.IsoContour)
add(contourWid, BorderLayout.SOUTH);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void enableClipping(DisplayImpl display, GraphicsModeControl
dispGMC, boolean clip)
{
DisplayRendererJ3D dr = (DisplayRendererJ3D)
display.getDisplayRenderer();
try
{
dr.setClip(0, clip, 1.0f, 0.0f, 0.0f, -1.001f);
dr.setClip(1, clip, -1.0f, 0.0f, 0.0f, -1.001f);
dr.setClip(2, clip, 0.0f, 1.0f, 0.0f, -1.001f);
dr.setClip(3, clip, 0.0f, -1.0f, 0.0f, -1.001f);
}
catch (Exception e)
{
System.err.println("Couldn't set clipping " + e);
}
}
public void stop()
{
Vector mapList = display.getMapVector();
try
{
display.removeAllReferences();
for(int idx = 0 ; idx < mapList.size() ; idx++)
{
ScalarMap tempMap = (ScalarMap)mapList.get(idx);
display.removeMap(tempMap);
}
}
catch(Exception ex)
{
}
}
}
[/code]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: p1.JPG
Type: image/jpeg
Size: 91140 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment.jpe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: p2.JPG
Type: image/jpeg
Size: 123512 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment-0001.jpe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Auto3DVisad.java
Type: application/octet-stream
Size: 22235 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: BaseMapAdapter.java
Type: application/octet-stream
Size: 22767 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MyDataUtility.java
Type: application/octet-stream
Size: 53823 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment-0002.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: p3.JPG
Type: image/jpeg
Size: 102908 bytes
Desc: not available
Url : http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20061219/87ca4e79/attachment-0002.jpe
More information about the visad
mailing list