Package tv.porst.swfretools.dissector.gui.main.flashtree.nodes

Source Code of tv.porst.swfretools.dissector.gui.main.flashtree.nodes.FlashMultinameNode

package tv.porst.swfretools.dissector.gui.main.flashtree.nodes;

import tv.porst.swfretools.parser.structures.GenericVector;
import tv.porst.swfretools.parser.structures.IMultiname;
import tv.porst.swfretools.parser.structures.Multiname;
import tv.porst.swfretools.parser.structures.MultinameA;
import tv.porst.swfretools.parser.structures.MultinameL;
import tv.porst.swfretools.parser.structures.MultinameLA;
import tv.porst.swfretools.parser.structures.QName;
import tv.porst.swfretools.parser.structures.QNameA;
import tv.porst.swfretools.parser.structures.RTQName;
import tv.porst.swfretools.parser.structures.RTQNameA;
import tv.porst.swfretools.parser.structures.RTQNameL;
import tv.porst.swfretools.parser.structures.RTQNameLA;

/**
* Node that represents a Multiname object in the Flash tree.
*/
public final class FlashMultinameNode extends FlashTreeNode<IMultiname> {

  /**
   * Creates a new node object
   *
   * @param name Name of the node.
   * @param value Flash structure represented by the node.
   */
  public FlashMultinameNode(final String name, final IMultiname value) {
    super(name, value);

    createChildren();
  }

  /**
   * Creates the child nodes of the node.
   */
  private void createChildren() {
    if (getUserObject() instanceof Multiname) {
      final Multiname cname = (Multiname) getUserObject();
      addNode("name", cname.getName());
      addNode("ns_set", cname.getNsSet());
    }
    else if (getUserObject() instanceof MultinameA) {
      final MultinameA cname = (MultinameA) getUserObject();
      addNode("name", cname.getName());
      addNode("ns_set", cname.getNsSet());
    }
    else if (getUserObject() instanceof MultinameL) {
      final MultinameL cname = (MultinameL) getUserObject();
      addNode("ns_set", cname.getNsSet());
    }
    else if (getUserObject() instanceof MultinameLA) {
      final MultinameLA cname = (MultinameLA) getUserObject();
      addNode("ns_set", cname.getNsSet());
    }
    else if (getUserObject() instanceof QName) {
      final QName cname = (QName) getUserObject();
      addNode("ns", cname.getNs());
      addNode("name", cname.getName());
    }
    else if (getUserObject() instanceof QNameA) {
      final QNameA cname = (QNameA) getUserObject();
      addNode("ns", cname.getNs());
      addNode("name", cname.getName());
    }
    else if (getUserObject() instanceof RTQName) {
      final RTQName cname = (RTQName) getUserObject();
      addNode("name", cname.getName());
    }
    else if (getUserObject() instanceof RTQNameA) {
      final RTQNameA cname = (RTQNameA) getUserObject();
      addNode("name", cname.getName());
    }
    else if (getUserObject() instanceof RTQNameL) {
      // Nothing to do
    }
    else if (getUserObject() instanceof RTQNameLA) {
      // Nothing to do
    }
    else if (getUserObject() instanceof GenericVector) {
      final GenericVector cname = (GenericVector) getUserObject();
      addNode("type_definition", cname.getTypeDefinition());
      addNode("param_count", cname.getParamCount());
      addNode("params", cname.getParams());
    }
    else {
      throw new IllegalStateException("Error: Unknown multiname");
    }
  }

  /**
   * Returns the correct name for the multiname represented by this
   * node.
   *
   * @return The name for the multiname object.
   */
  private String getGradientName() {

    if (getUserObject() instanceof Multiname) {
      return "Multiname";
    }
    else if (getUserObject() instanceof MultinameA) {
      return "MultinameA";
    }
    else if (getUserObject() instanceof MultinameL) {
      return "MultinameL";
    }
    else if (getUserObject() instanceof MultinameLA) {
      return "MultinameLA";
    }
    else if (getUserObject() instanceof QName) {
      return "QName";
    }
    else if (getUserObject() instanceof QNameA) {
      return "QNameA";
    }
    else if (getUserObject() instanceof RTQName) {
      return "RTQName";
    }
    else if (getUserObject() instanceof RTQNameA) {
      return "RTQNameA";
    }
    else if (getUserObject() instanceof RTQNameL) {
      return "RTQNameL";
    }
    else if (getUserObject() instanceof RTQNameLA) {
      return "RTQNameLA";
    }
    else {
      throw new IllegalStateException("Error: Unknown multiname");
    }
  }

  @Override
  public String toString() {
    return String.format("%s : %s", getName(), getGradientName());
  }
}
TOP

Related Classes of tv.porst.swfretools.dissector.gui.main.flashtree.nodes.FlashMultinameNode

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.