public void AddScriptBrick(ModelBase scriptBrick, int firstViewIndex, int lastViewIndex)
{
//if (this.Count == lastViewIndex + 1 && GetAtIndex(lastViewIndex) is Script && )
//{
// lastViewIndex++;
//}
if (scriptBrick is Brick) // Add brick at last visible end of a Script
{
var brick = scriptBrick as Brick;
var scriptEndIndex = -1;
Script lastFullScript = null;
foreach (var script in Scripts)
{
var scriptBeginIndex = scriptEndIndex + 1;
scriptEndIndex += script.Bricks.Count + 1;
// what does that do?
//if (scriptEndIndex > lastViewIndex && scriptBeginIndex >= firstViewIndex)
//{
// break;
//}
lastFullScript = script;
}
if (lastFullScript == null)
{
var startScript = new StartScript();
Scripts.Add(startScript);
lastFullScript = startScript;
OnScriptAdded(startScript, IndexOf(startScript));
}
lastFullScript.Bricks.Add(brick);
//OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); // TODO: make faster and use method below instead
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, scriptBrick, IndexOf(scriptBrick)));
}
else if (scriptBrick is Script) // Add Script at end of all
{
var script = scriptBrick as Script;
Scripts.Add(script);
//OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); // TODO: make faster and use method below instead
OnScriptAdded((Script) scriptBrick, IndexOf(scriptBrick));
}
}