コード例 #1
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
 // TODO: hmmm wieso existiert hier levelCount?? so viel schneller wird die
 // Methode dadurch nicht.
 private ArrayList<Object> getNodePath(AbstractEntity e, int levelCount) {
   ArrayList<Object> o;
   AbstractEntity ent = (AbstractEntity) e;
   if (ent.getParent() == null) o = new ArrayList<Object>(levelCount);
   else o = getNodePath(ent.getParent(), ++levelCount);
   o.add(e);
   return o;
 }
コード例 #2
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
  @Override
  public void valueForPathChanged(TreePath path, Object newValue) {
    AbstractEntity changedEntity = (AbstractEntity) path.getLastPathComponent();
    changedEntity.setName(newValue.toString());

    int[] idx = {getIndexOfChild(((AbstractEntity) changedEntity).getParent(), changedEntity)};
    Object[] o = {changedEntity};

    TreeModelEvent e = new TreeModelEvent(this, path, idx, o);
    fireTreeNodesChanged(e);
  }
コード例 #3
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
  // 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;
  }
コード例 #4
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
 public void setRoot(AbstractEntity e) {
   if (e != null) {
     game = e;
     game.addEntityListener(this);
     setEntityListener(game);
     AbstractEntity arr[] = {e};
     fireTreeStructureChanged(new TreeModelEvent(e, arr));
   }
 }
コード例 #5
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
 private void setEntityListener(AbstractEntity entity) {
   for (AbstractEntity ae : entity.getChilds()) {
     ae.addEntityListener(this);
     setEntityListener(ae);
   }
 }
コード例 #6
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
 /**
  * Entfernt den übergebenen Knoten aus dem Baum.
  *
  * @param node Der Knoten der entfernt werden soll
  */
 public void removeNodeFromParent(Object node) {
   AbstractEntity delEntity = (AbstractEntity) node;
   AbstractEntity parent = delEntity.getParent();
   Tatoo.cmdMgr.execute(new CmdRemoveEntityChild(parent, delEntity));
 }
コード例 #7
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
  @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;
  }
コード例 #8
0
ファイル: ArmyListModel.java プロジェクト: michaltd/tatoo
 public EntityType getTypeOfNode(Object node) {
   AbstractEntity ae = (AbstractEntity) node;
   return ae.getType();
 }