Ejemplo n.º 1
0
 public void setRoot(AbstractEntity e) {
   if (e != null) {
     game = e;
     game.addEntityListener(this);
     setEntityListener(game);
     AbstractEntity arr[] = {e};
     fireTreeStructureChanged(new TreeModelEvent(e, arr));
   }
 }
Ejemplo n.º 2
0
  // TODO: throw ClassCastException?
  public AbstractEntity insertNewEntity(Object parent) {
    // wenn das übergebene Objekt null ist muss eine neue Armeeliste
    // angelegt werden
    EntityType type;
    if (parent == null) {
      type = EntityType.ARMYLIST;
      parent = game;
    } else type = EntityType.UPGRADE;
    // create new ArmyListEntity with the given Name from language-file
    AbstractEntity newEntity = new ArmyListEntity(type, TextWrapper.getString("ArmyListModel.0"));
    newEntity.addEntityListener(this);

    Tatoo.cmdMgr.execute(new CmdInsertEntityChild((AbstractEntity) parent, newEntity));
    return newEntity;
  }
Ejemplo n.º 3
0
 private void setEntityListener(AbstractEntity entity) {
   for (AbstractEntity ae : entity.getChilds()) {
     ae.addEntityListener(this);
     setEntityListener(ae);
   }
 }
Ejemplo n.º 4
0
  @Override
  public AbstractEntity insertCopyOf(Object[] treePath) {

    AbstractEntity orignalRoot = game;
    // Wenn der Root in der Armeeliste noch keine Kinder hat, handelt es
    // sich um den Standardmäßig eingefügten Knoten, welcher
    // nur eingefügt wurde weil es sonst in der Anzeige zu Exceptions kommt.
    // Er muss also ersetzt
    // werden durch den ersten Knoten im TreePath als neue Wurzel.
    if (((AbstractEntity) getRoot()).getChildCount() == 0 && treePath.length > 0) {
      // Kopie erzeugen:
      try {
        game = ((AbstractEntity) treePath[0]).cloneFor(null);
        game.addEntityListener(this);
      } catch (CloneNotSupportedException e) {
        e.printStackTrace();
        game = orignalRoot;
        return null;
      }
    }
    if (game == null) return null;
    // das erste Object im Array MUSS der root-Knoten sein, sonst ist es
    // kein gültiger Pfad!
    // TODO: hier eventuell Exception schmeißen bei ungültigem Pfad.
    if (treePath[0].equals(getRoot()) && treePath.length > 1) {
      boolean found = false;
      AbstractEntity treeNode = game;
      AbstractEntity parent = treeNode;
      // den Pfad vom Knoten eins bis Ende durchlaufen
      for (int i = 1; i < treePath.length - 1; i++) {
        // prüfen ob der Knoten schon enthalten ist
        // aber nur wenn es sich nicht um das Pfadblatt handelt.
        // wenn der Knoten nicht enthalten ist: anlegen
        found = false;
        for (int j = 0; j < treeNode.getChildCount() && !found; j++) {
          if (treeNode.getEntityAt(j).equals((AbstractEntity) treePath[i])) {
            found = true;
            parent = treeNode;
            treeNode = treeNode.getEntityAt(j);
          }
        }
        if (!found) {
          AbstractEntity newNode;
          try {
            newNode = ((AbstractEntity) treePath[i]).cloneFor(parent);
          } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            game = orignalRoot;
            return null;
          }
          newNode.addEntityListener(this);
          newNode.setParent(parent);
          Tatoo.cmdMgr.add(new CmdInsertEntityChild(treeNode, newNode));
          parent = treeNode;
          treeNode = newNode;
        }
      }
      // den letzten Knoten auf jeden Fall hinzufügen
      // (hier darf nicht mehr auf equals getestet werden)
      AbstractEntity newNode;
      try {
        newNode = ((AbstractEntity) treePath[treePath.length - 1]).cloneFor(parent);
      } catch (CloneNotSupportedException e) {
        e.printStackTrace();
        game = orignalRoot;
        return null;
      }
      newNode.addEntityListener(this);
      newNode.setParent(parent);
      Tatoo.cmdMgr.add(new CmdInsertEntityChild(treeNode, newNode));
      Tatoo.cmdMgr.execute();
      return newNode;
    }
    return null;
  }