All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgap.gp.impl.JGAPTreeNodeRenderer Maven / Gradle / Ivy

/*
 * This file is part of JGAP.
 *
 * JGAP offers a dual license model containing the LGPL as well as the MPL.
 *
 * For licensing information please see the file license.txt included with JGAP
 * or have a look at the top of class org.jgap.Chromosome which representatively
 * includes the JGAP license policy applicable for any file delivered with JGAP.
 */
package org.jgap.gp.impl;

import java.awt.*;
import org.jgap.util.tree.*;
import org.jgap.gp.terminal.*;

/**
 * Renders the nodes' colors of a tree to display.
 * Created by Brian Risk of Geneffects on March 19, 2004.
 * Last Modified on March 19, 2004.
 * www.geneffects.com
 *
 * Modified by Klaus Meffert
 *
 * @author Klaus Meffert
 * @since 3.0
 */
public class JGAPTreeNodeRenderer
    implements TreeNodeRenderer {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.3 $";

  //This implementation basis the shade of the node on the level
  //but you may employ any property of your node.
  public Color getNodeColor(Object a_node, int a_level) {
    String name = ( (JGAPTreeNode) a_node).getName();
    Color out;
    if (name.equals(Constant.class.getName())) {
      out = Color.orange;
    }
    else if (name.equals(Variable.class.getName())) {
      out = Color.green;
    }
    else if (name.equals(Terminal.class.getName())) {
      out = Color.yellow;
    }
    else if (name.equals(NOP.class.getName())) {
      out = new Color(255, 255, 255);
    }
    else if (name.equals(True.class.getName())) {
      out = Color.blue;
    }
    else if (name.equals(False.class.getName())) {
      out = Color.gray;
    }
    else {
      switch (a_level) {
        case 0:
          out = Color.orange;
          break;
        case 1:
          out = new Color(240, 200, 100);
          break;
        case 2:
          out = new Color(200, 140, 80);
          break;
        case 3:
          out = new Color(140, 240, 180);
          break;
        case 4:
          out = new Color(140, 180, 220);
          break;
        default:
          if (a_level <= 7) {
            int amt = (8 - a_level) * 32;
            if (amt >= 256) {
              amt = 255;
            }
            out = new Color(amt, amt, amt);
          }
          else {
            out = Color.black;
          }
      }
    }
    return out;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy