Catrobat.IDE.Core.UI.ActionsCollection.AddScriptBrick C# (CSharp) Method

AddScriptBrick() public method

public AddScriptBrick ( ModelBase scriptBrick, int firstViewIndex, int lastViewIndex ) : void
scriptBrick ModelBase
firstViewIndex int
lastViewIndex int
return void
        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));
            }
        }