/*
 * Copyright 1998, University Corporation for Atmospheric Research
 * All Rights Reserved.
 * See file LICENSE for copying and redistribution conditions.
 *
 * $Id: InputPathnameEditor.java,v 1.5 2001-11-27 22:29:31 dglo Exp $
 */

package visad.data.netcdf;

import java.awt.Component;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.beans.PropertyEditorSupport;


/**
 * A JavaBean property editor for input pathnames.
 */
public abstract class
InputPathnameEditor
    extends	PropertyEditorSupport
{
    private FileDialogPanel	fileDialog;

    /**
     * Construct.
     */
    public
    InputPathnameEditor(String filterPattern, String initialPathname)
    {
	fileDialog = new FileDialogPanel(filterPattern, initialPathname);
    }


    /**
     * Indicate support for a custom editor.
     */
    public boolean
    supportsCustomEditor()
    {
	return true;
    }


    /**
     * Indicate support for painting the property value.
     */
    public boolean
    isPaintable()
    {
	return true;
    }


    /**
     * Paint a representation of the pathname in the given box.
     */
    public void
    paintValue(Graphics graphics, Rectangle box)
    {
	FontMetrics	fm = graphics.getFontMetrics();

	/*
	 * Make the position of the reference point in the box congruent
	 * to the position of the reference point in the font (i.e. same
	 * proportional position).
	 */
	graphics.drawString(getAsText(), box.x,
	    box.y +
	    Math.round(box.height*fm.getAscent()/(float)fm.getHeight()));
    }


    /**
     * Get the property as a text string.
     */
    public String
    getAsText()
    {
	return fileDialog.getFile();
    }


    /**
     * Set the property given a text string.
     */
    public void
    setAsText(String pathname)
    {
	fileDialog.setFile(pathname);
    }


    /**
     * Return the custom editor.
     */
    public Component
    getCustomEditor()
    {
	return fileDialog;
    }


    /**
     * Set the object to be edited.
     */
    public void
    setValue(Object value)
    {
	if (value instanceof String)
	    setAsText((String)value);
    }
}

 

Ads help maintain this website.