Package jadx.gui.treemodel

Source Code of jadx.gui.treemodel.JMethod

package jadx.gui.treemodel;

import jadx.api.JavaMethod;
import jadx.core.dex.info.AccessInfo;
import jadx.core.dex.instructions.args.ArgType;
import jadx.gui.utils.OverlayIcon;
import jadx.gui.utils.Utils;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import java.util.Iterator;

public class JMethod extends JNode {
  private static final long serialVersionUID = 3834526867464663751L;

  private static final ImageIcon ICON_MTH_DEF = Utils.openIcon("methdef_obj");
  private static final ImageIcon ICON_MTH_PRI = Utils.openIcon("methpri_obj");
  private static final ImageIcon ICON_MTH_PRO = Utils.openIcon("methpro_obj");
  private static final ImageIcon ICON_MTH_PUB = Utils.openIcon("methpub_obj");

  private static final ImageIcon ICON_CONSTRUCTOR = Utils.openIcon("constr_ovr");
  private static final ImageIcon ICON_SYNC = Utils.openIcon("synch_co");

  private final JavaMethod mth;
  private final JClass jParent;

  public JMethod(JavaMethod javaMethod, JClass jClass) {
    this.mth = javaMethod;
    this.jParent = jClass;
  }

  @Override
  public JClass getJParent() {
    return jParent;
  }

  @Override
  public JClass getRootClass() {
    return jParent.getRootClass();
  }

  @Override
  public int getLine() {
    return mth.getDecompiledLine();
  }

  @Override
  public Icon getIcon() {
    AccessInfo accessFlags = mth.getAccessFlags();
    OverlayIcon icon = Utils.makeIcon(accessFlags, ICON_MTH_PUB, ICON_MTH_PRI, ICON_MTH_PRO, ICON_MTH_DEF);
    if (accessFlags.isConstructor()) {
      icon.add(ICON_CONSTRUCTOR);
    }
    if (accessFlags.isSynchronized()) {
      icon.add(ICON_SYNC);
    }
    return icon;
  }

  private String makeBaseString() {
    if (mth.isClassInit()) {
      return "{...}";
    }
    StringBuilder base = new StringBuilder();
    if (mth.isConstructor()) {
      base.append(mth.getDeclaringClass().getName());
    } else {
      base.append(mth.getName());
    }
    base.append('(');
    for (Iterator<ArgType> it = mth.getArguments().iterator(); it.hasNext(); ) {
      base.append(Utils.typeStr(it.next()));
      if (it.hasNext()) {
        base.append(", ");
      }
    }
    base.append(')');
    return base.toString();
  }

  @Override
  public String makeString() {
    return Utils.typeFormat(makeBaseString(), mth.getReturnType());
  }

  @Override
  public String makeLongString() {
    String name = mth.getDeclaringClass().getFullName() + "." + makeBaseString();
    return Utils.typeFormat(name, mth.getReturnType());
  }
}
TOP

Related Classes of jadx.gui.treemodel.JMethod

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.