Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsOntology_Toolssrcgatecreoleontologyocat 〉 ComboRenderer.java
 
/*
 *  CheckRenderer.java
 *
 *  Niraj Aswani, 12/March/07
 *
 *  $Id: ComboRenderer.java 10618 2009-07-14 17:52:47Z nirajaswani $
 */
package gate.creole.ontology.ocat;

import gate.creole.ontology.OClass;
import gate.creole.ontology.OInstance;
import gate.gui.MainFrame;

import java.awt.*;
import javax.swing.*;

import com.ontotext.gate.vr.ClassNode;
import com.ontotext.gate.vr.IFolder;

/**
 * Description: This class provides the renderer for the Ontology Tree Nodes.
 * 
 * @author Niraj Aswani
 * @version 1.0
 */
public class ComboRenderer extends JPanel implements ListCellRenderer {

  /**
   * Serial Version ID
   */
  private static final long serialVersionUID = 3257004371551204912L;

  /**
   * Class label is shown using this label
   */
  private JLabel label;

  /**
   * ICon label
   */
  private JLabel iconLabel;

  /**
   * Label Panel
   */
  private JPanel labelPanel;

  /**
   * The instance of ontologyTreePanel
   */
  private OntologyTreePanel ontologyTreePanel;

  /**
   * Constructor
   * 
   * @param owner
   */
  public ComboRenderer(OntologyTreePanel owner) {
    this.ontologyTreePanel = owner;
    label = new JLabel();
    iconLabel = new JLabel();

    labelPanel = new JPanel(new BorderLayout(5, 10));
    ((BorderLayout)labelPanel.getLayout()).setHgap(0);
    labelPanel.add(label);

    setLayout(new BorderLayout(5, 10));
    ((BorderLayout)getLayout()).setHgap(1);
    add(iconLabel, BorderLayout.WEST);
    add(labelPanel, BorderLayout.CENTER);
    this.setOpaque(true);
  }

  /**
   * Renderer method
   */
  public Component getListCellRendererComponent(JList list, Object value,
    int row, boolean isSelected, boolean hasFocus) {

    Object userObject = value;
    ClassNode item = (ClassNode)userObject;

    if(!(item instanceof IFolder)) {
      label.setBackground(Color.white);
      return this;
    }

    String conceptName = item.getSource().toString();
    iconLabel.setVisible(true);

    if(item.getSource() instanceof OClass) {
      iconLabel.setIcon(MainFrame.getIcon("ontology-class"));
    }
    else if(item.getSource() instanceof OInstance) {
      iconLabel.setIcon(MainFrame.getIcon("ontology-instance"));
    }
    else {
      iconLabel.setIcon(null);
    }

    label.setText(conceptName);
    label.setFont(list.getFont());

    // We assign the automatically generated random colors to the concept,
    // but randomly generation of colors for different classes takes place
    // only once when that ontology is loaded for the first time
    if(ontologyTreePanel.currentOResource2ColorMap.containsKey(conceptName)) {
      Color color =
        (Color)ontologyTreePanel.currentOResource2ColorMap.get(conceptName);
      labelPanel.setBackground(color);
      iconLabel.setBackground(Color.WHITE);
    }
    return this;
  }
}