// XMLTreeRenderer.java
//
// Created: February 2006
//
// This file is a component of the BioMoby project.
// Copyright Martin Senger (martin.senger@gmail.com).
//

package org.biomoby.service.dashboard.renderers;

import org.biomoby.shared.MobyException;
import org.biomoby.service.dashboard.data.DataContainer;

import javax.swing.JComponent;
import javax.swing.JScrollPane;

/**
 * Render XML data using {@link
 * org.biomoby.service.dashboard.renderers.XMLTree XMLTree}. <p>
 *
 * @author <A HREF="mailto:martin.senger@gmail.com">Martin Senger</A>
 * @version $Id: XMLTreeRenderer.java,v 1.2 2006/02/20 05:51:11 senger Exp $
 */

public class XMLTreeRenderer
    extends AbstractRenderer {

//    private static org.apache.commons.logging.Log log =
//	org.apache.commons.logging.LogFactory.getLog (XMLTreeRenderer.class);

    /*********************************************************************
     *
     ********************************************************************/
    public XMLTreeRenderer() {
        super ("XML Tree", "images/xmltree.gif");
    }

    /*********************************************************************
     * It can handle XML strings. Ask for MIME_TYPE criterion with
     * value "text/xml".
     ********************************************************************/
    public boolean canHandle (String criterion, Object value) {

	return (
		criterion.equals (MIME_TYPE) &&
		value.toString().equals ("text/xml")
		);
    }

    /*********************************************************************
     *
     ********************************************************************/
    public JComponent getComponent (DataContainer data)
	throws MobyException {

	if (! (data.getData() instanceof String) ||
	    ! ((String)data.getData()).startsWith ("<?xml") )
	    return null;

	return new JScrollPane ( new XMLTree ((String)data.getData()) );
    }

}
