comparison src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 13:c8601b0fa8a3

added Predicate and PredicateList
author shoshi
date Wed, 11 May 2011 22:08:20 +0900
parents fbbb7e414346
children 8bf59f161b23
comparison
equal deleted inserted replaced
12:fbbb7e414346 13:c8601b0fa8a3
117 m_node.clear(); 117 m_node.clear();
118 } 118 }
119 119
120 /** 120 /**
121 * このMonotonicNodeに変更が加えられたら,こちらのメソッドが呼び出されます. 121 * このMonotonicNodeに変更が加えられたら,こちらのメソッドが呼び出されます.
122 * このメソッドでは非破壊的に変更するために,SingleLinkedNodeのクローンを作成し, 122 * 非破壊的に変更するために,SingleLinkedNodeのクローンを作成し,親にも複製を依頼します.
123 * 親にも複製を依頼します.
124 * 123 *
125 * RootNodeまで伝搬すると親のNodeはnullとなる.親Nodeは担当するMonotonicTreeのオブジェクトを保持しており,そこにRootNodeが変更されたことを通知する. 124 * RootNodeまで伝搬すると親のNodeはnullとなる.親Nodeは担当するMonotonicTreeのオブジェクトを保持しており,そこにRootNodeが変更されたことを通知する.
126 * 通知が終わり,処理が戻ってきた時に自身のOnMemoryNodeをクローンした新しいものに書き換えます. 125 * 通知が終わり,処理が戻ってきた時に自身のOnMemoryNodeをクローンした新しいものに書き換えます.
127 * 126 *
128 * _fromがnullの場合は,自身が編集元であることを示します. 127 * _fromがnullの場合は,自身が編集元であることを示します.
129 * @param _from 編集元のOnMemoryMonotonicTreeNode 128 * @param _from 編集元のOnMemoryMonotonicTreeNode
130 */ 129 */
131 public void cloneAndTransmit(OnMemoryNode _from) 130 public void transmit(OnMemoryNode _from)
132 { 131 {
133 OnMemoryNode clone = m_node.cloneNode(); 132 Node clone = m_node.cloneNode(null);
134 if(m_parent != null){ 133 m_node.removeChild(_from);
135 //親が存在する,親に変更があったことを伝搬する.
136 m_parent.cloneAndTransmit(clone);
137 }else{
138 //何かすることはないかな
139 }
140
141 //編集終了
142 m_node = clone;
143 } 134 }
144 135
145 /* 136 /*
146 * 子供関連のメソッド 137 * 子供関連のメソッド
147 */ 138 */