Package org.freeplane.features.filter.condition

Source Code of org.freeplane.features.filter.condition.ASelectableCondition

package org.freeplane.features.filter.condition;

import java.lang.reflect.Method;

import javax.swing.JComponent;
import javax.swing.JLabel;

import org.freeplane.n3.nanoxml.XMLElement;


public abstract class ASelectableCondition  implements ICondition{
  public static final float STRING_MIN_MATCH_PROB = 0.7F;
  transient private String description;
  transient private JComponent renderer;
  private String userName;
  private static Method EQUALS;
  private static Method HASH;
  static{
    try{
      final ClassLoader classLoader = ASelectableCondition.class.getClassLoader();
      EQUALS = classLoader.loadClass("org.apache.commons.lang.builder.EqualsBuilder").getMethod("reflectionEquals", Object.class, Object.class);
      HASH = classLoader.loadClass("org.apache.commons.lang.builder.HashCodeBuilder").getMethod("reflectionHashCode", Object.class);
    }
    catch(Exception e){
     
    }
  }

  public ASelectableCondition() {
    super();
  }
 
  @Override
    public int hashCode() {
    if(HASH == null){
      return super.hashCode();
    }
    try {
          return (Integer) HASH.invoke(null, this);
        }
        catch (Exception e) {
          e.printStackTrace();
          return super.hashCode();
        }
    }

  @Override
    public boolean equals(Object obj) {
    if(EQUALS == null){
      return super.equals(obj);
    }
    try {
          return (Boolean) EQUALS.invoke(null, this, obj);
        }
        catch (Exception e) {
          e.printStackTrace();
          return super.equals(obj);
        }
    }
  protected abstract String createDescription();
 
  final public JComponent getListCellRendererComponent() {
    if (renderer == null) {
      renderer = createRendererComponent();
      if(userName != null){
        final JCondition jCondition = new JCondition();
        jCondition.add(new JLabel(userName + " : "));
        jCondition.add(renderer);
        renderer = jCondition;
      }
    }
    return renderer;
  }

  protected JComponent createRendererComponent() {
      return ConditionFactory.createCellRendererComponent(toString());
    }

  @Override
    final public String toString() {
      if (description == null) {
        description = createDescription();
      }
      return description;
    }
 
  public void toXml(final XMLElement element) {
    final XMLElement child = new XMLElement();
    child.setName(getName());
    if(userName != null){
      child.setAttribute("user_name", userName);
    }
    fillXML(child);
    element.addChild(child);
  }

  protected void fillXML(XMLElement element){}

  abstract protected String getName();


  public void setUserName(String userName) {
    if(userName == this.userName || userName != null && userName.equals(this.userName))
      return;
      this.userName = userName;
      renderer = null;
    }


  public String getUserName() {
      return userName;
    }


  protected JComponent createShortRendererComponent() {
    if(userName == null){
      return createRendererComponent();
    }
    final JLabel label = new JLabel('"' + userName + '"');
    return label;
    }

}
TOP

Related Classes of org.freeplane.features.filter.condition.ASelectableCondition

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.