コード例 #1
0
 /**
  * indexで指定した{@link RgtProxy}とそれに対応する{@link Collection}を削除します。
  *
  * @param index
  * @throws IllegalArgumentException indexがコレクションの範囲外の場合
  */
 public void remove(int index) {
   if ((index < 0) || (collection_.size() <= index)) {
     throw new IllegalArgumentException("Bad index:" + index); // $NON-NLS-1$
   }
   collection_.remove(index);
   isRgtEdited_ = true;
 }
コード例 #2
0
 /**
  * gameIndexで指定したゲームをアクティブにします。
  *
  * @param activeRgtIndex アクティブにする{@link RgtProxy}のインデックス(0オリジン)
  * @throws IllegalArgumentException gameIndexがコレクションの範囲を超えた場合
  */
 public void setActive(int activeRgtIndex) {
   if ((activeRgtIndex < 0) || (collection_.size() <= activeRgtIndex)) {
     throw new IllegalArgumentException(
         "Parameter gameIndex is out of bounds. Game size is "
             + collection_.size() // $NON-NLS-1$
             + ". Parameter gameIndex is "
             + activeRgtIndex); //$NON-NLS-1$
   }
   activeRgtIndex_ = activeRgtIndex;
 }
コード例 #3
0
 /**
  * どのゲームが編集されているかを示す配列を返します。<br>
  * 戻り値は長さが{@link Collection#size()}で各要素がtrueの場合は そのRootGameTreeから始まるゲームが編集されていることを示します。
  *
  * @return {@link RootGameTree}が編集されている場合にtrueを返す配列。
  */
 public boolean[] getChangedFlags() {
   boolean[] ret = new boolean[collection_.size()];
   for (int i = 0; i < ret.length; ++i) {
     RgtProxy gm = games_.get(i);
     ret[i] = (gm != null) && gm.isChanged();
   }
   return ret;
 }
コード例 #4
0
 public void dispose() {
   games_.clear();
   collection_.removeListener(listener_);
   // コンテキストを全て破棄する。
   for (RootGameTree rgt : collection_) {
     Yukinoshita.context(rgt).clearCurrent();
   }
   Yukinoshita.context(collection_).clearCurrent();
 }
コード例 #5
0
  /**
   * このクラスのプライムコンストラクタです。
   *
   * @param collection
   * @param setChangedFlag
   * @throws org.unitarou.lang.NullArgumentException collectionがnullの場合。
   */
  public CollectionProxy(Collection collection, boolean setChangedFlag) {
    super();
    ArgumentChecker.throwIfNull(collection);
    collection_ = collection;
    listener_ = new CollectionListenerImpl();
    collection_.addListener(listener_);
    games_ = new ArrayList<RgtProxy>(collection_.size());
    for (int i = 0; i < collection_.size(); ++i) {
      games_.add(null);
    }
    activeRgtIndex_ = 0;

    if (setChangedFlag) { // 最初から編集済み扱いにする時のみ、全てを読み出す。
      for (int i = 0; i < collection_.size(); ++i) {
        initializeGame(i, true);
      }
    }
    isRgtEdited_ = false;
  }
コード例 #6
0
 /**
  * indexで指定されたGameMediatorを必要であれば作成して返します。
  *
  * @param index
  * @return indexで指定されたGameMediator
  * @throws IllegalArgumentException indexがコレクションの範囲外の場合
  */
 private RgtProxy get(int index) {
   if ((index < 0) || (collection_.size() <= index)) {
     throw new IllegalArgumentException("Bad index:" + index); // $NON-NLS-1$
   }
   RgtProxy ret = games_.get(index);
   if (ret == null) {
     ret = initializeGame(index, false);
   }
   return ret;
 }
コード例 #7
0
  /**
   * index1とindex2の{@link RgtProxy}を入れ替えます。<br>
   * なお、index1とindex2が等しい場合は何もしません。
   *
   * @param index1
   * @param index2
   * @throws IllegalArgumentException index1およびindex2の値がコレクションの範囲を超えた場合
   */
  public void swap(int index1, int index2) {
    if (index1 < 0 || collection_.size() <= index1 || index2 < 0 || collection_.size() <= index2) {
      throw new IllegalArgumentException(
          "Parameter is out of range. index1:"
              + index1 //$NON-NLS-1$
              + ", index2:"
              + index2); //$NON-NLS-1$
    }
    if (index1 == index2) {
      return;
    }
    collection_.swap(index1, index2);
    RgtProxy gm1 = games_.get(index1);
    games_.set(index1, games_.get(index2));
    games_.set(index2, gm1);

    if (activeRgtIndex_ == index1) {
      activeRgtIndex_ = index2;
    } else if (activeRgtIndex_ == index2) {
      activeRgtIndex_ = index1;
    }
    isRgtEdited_ = true;
  }
コード例 #8
0
 /**
  * rgtをこのCollectionに組み込んでそのコントローラである {@link RgtProxy}を返します。
  *
  * @param rgt
  * @return 引数をラップした{@link RgtProxy}。NOT NULL
  */
 public RgtProxy createGame(RootGameTree rgt) {
   ArgumentChecker.throwIfNull(rgt);
   collection_.addLast(rgt);
   RgtProxy gm = initializeGame(collection_.size() - 1, true);
   return gm;
 }
コード例 #9
0
 /**
  * GameMediatorの総数を返します。 <code>getCollection().size()</code>と等価です。
  *
  * @return GameMediatorの総数
  */
 public int size() {
   return collection_.size();
 }
コード例 #10
0
 /**
  * indexに該当する{@link RgtProxy}を初期化します。
  *
  * @param index
  * @param setChangedFlag
  * @return indexに該当する{@link RgtProxy}
  */
 private RgtProxy initializeGame(int index, boolean setChangedFlag) {
   RootGameTree rootGameTree = collection_.get(index);
   RgtProxy ret = new RgtProxy(rootGameTree, setChangedFlag);
   games_.set(index, ret);
   return ret;
 }