<?xml version="1.0" encoding="Windows-1255" ?><Class name="ChangeStrategy" inherit="core.gml:Object" alias="strategy" hierarchy="GMLDOM" id="core.gml:ChangeStrategy" sort="21" urn="core.gml:changemanager.ChangeStrategy.gs" toc="\Change Manager"><Summary>The ChangeStrategy is an abstract class that serves as a base for all classes
   that store.</Summary><Inherit>&lt;q ref=&quot;core.gml:Object&quot;&gt;Object&lt;/q&gt;</Inherit><Remarks>Each strategy class represets one adjustment that should be done to keep the model consistent after a change.
   needToHandleChange method determines when this strategy should be invoked.
   collectObjectsForChange method collects all objects in the model that should be adjusted as a result of the change that happened.
   adjustObject method is the code that modifies each of the object that were collected, to adjust the model to its consistent state.

   &lt;h2&gt;How to add a new strategy class&lt;/h2&gt;
   &lt;ul&gt;
   &lt;li&gt;inherit the ChangeStrategy class&lt;/li&gt;
   &lt;li&gt;implement the abstract methods&lt;/li&gt;
   &lt;li&gt;add the new strategy's class name to property &lt;code&gt;change_strategy_names&lt;/code&gt; in &lt;q ref=&quot;core.gml:ChangeManager&quot;&gt;ChangeManager&lt;/q&gt;.
   (Note: this should be done hard-coded, there is no API for that.)&lt;/li&gt;
   &lt;/ul&gt;</Remarks><Copyright>(c) SAP AG 2003-2006. All rights reserved.</Copyright>
<Topics>
<Method name="adjustObject" abstract="Yes" modifier="abstract" sortGroup="true" scope="public" id="core.gml:ChangeStrategy!adjustObject" sort="35" group="Methods" seq="0000"><Summary>Modify one object in the model, to adjust to the event that occured.
This object is one of the objects returned by !collectObjectsForChange.</Summary><Parameters signature="method:: &lt;i&gt;strategy&lt;/i&gt;.&lt;b&gt;adjustObject&lt;/b&gt;(&lt;i&gt;obj_list&lt;/i&gt;, &lt;i&gt;evt&lt;/i&gt;) &amp;rarr; void&lt;i&gt;Abstract=&quot;Yes&quot;&lt;/i&gt;"><Param name="obj_list" type="Element!" typeRef="&lt;q ref=&quot;core.gml:Element&quot;&gt;Element&lt;/q&gt;">An object that the strategy should be invoked on to modify this object according to the event.</Param><Param name="evt" type="Object">The event object that represents a model change.</Param></Parameters><Return></Return></Method>
<Method name="collectObjectsForChange" abstract="Yes" modifier="abstract" sortGroup="true" scope="public" id="core.gml:ChangeStrategy!collectObjectsForChange" sort="35" group="Methods" seq="0001"><Summary>Collects all objects in the model that are influenced by the handled event.</Summary><Parameters signature="method:: &lt;i&gt;strategy&lt;/i&gt;.&lt;b&gt;collectObjectsForChange&lt;/b&gt;(&lt;i&gt;evt&lt;/i&gt;) &amp;rarr; &lt;q ref=&quot;core.gml:Element&quot;&gt;Element&lt;/q&gt;[]&lt;i&gt;Abstract=&quot;Yes&quot;&lt;/i&gt;"><Param name="evt" type="Object">An event object that represents a model change.</Param></Parameters><Return type="Element![]" typeRef="&lt;q ref=&quot;core.gml:Element&quot;&gt;Element&lt;/q&gt;[]">An array of objects that the strategy should be invoked on.</Return></Method>
<Method name="invoke" sortGroup="true" scope="public" id="core.gml:ChangeStrategy!invoke" sort="35" group="Methods" seq="0002"><Summary>invoke the strategy logic on the array of objects that were calculated by !collectObjectsForChange.</Summary><Parameters signature="method:: &lt;i&gt;strategy&lt;/i&gt;.&lt;b&gt;invoke&lt;/b&gt;(&lt;i&gt;obj_list&lt;/i&gt;, &lt;i&gt;evt&lt;/i&gt;) &amp;rarr; void"><Param name="obj_list" type="Element![]" typeRef="&lt;q ref=&quot;core.gml:Element&quot;&gt;Element&lt;/q&gt;[]">An array of objects that the strategy should be invoked on.</Param><Param name="evt" type="Object">The event object that represents a model change.</Param></Parameters><Return></Return></Method>
<Method name="needToHandleChange" abstract="Yes" modifier="abstract" sortGroup="true" scope="public" id="core.gml:ChangeStrategy!needToHandleChange" sort="35" group="Methods" seq="0003"><Summary>determine whether this strategy should be invoked to handle the specified event.</Summary><Parameters signature="method:: &lt;i&gt;strategy&lt;/i&gt;.&lt;b&gt;needToHandleChange&lt;/b&gt;(&lt;i&gt;evt&lt;/i&gt;) &amp;rarr; Boolean&lt;i&gt;Abstract=&quot;Yes&quot;&lt;/i&gt;"><Param name="evt" type="Object">An event object that represents a model change.</Param></Parameters><Return type="Boolean">&lt;code&gt;true&lt;/code&gt; if this Strategy object should handle this event, &lt;code&gt;false&lt;/code&gt; otherwise.</Return></Method>
</Topics>
</Class>