private void AddNewScriptBrickAction(ModelBase model)
{
lock (_actionsCollection)
{
if (model is EmptyDummyBrick)
return;
if (model == null || _isAdding)
return;
_isAdding = true;
if (model is Brick)
_selectedBrick = (model as Brick).Clone();
else if (model is Script)
_selectedBrick = (model as Script).Clone();
List<Type> multiBrickBricks = new List<Type> {typeof(ForeverBrick), typeof(RepeatBrick), typeof(IfBrick)};
if (!multiBrickBricks.Contains(_selectedBrick.GetType()) && _selectedBrick is Brick)
{
(_selectedBrick as Brick).IsNewAdded = true;
}
_actionsCollection.AddScriptBrick(_selectedBrick, _firstVisibleScriptBrickIndex, _lastVisibleScriptBrickIndex);
var foreverBrick = _selectedBrick as ForeverBrick;
if (foreverBrick != null)
{
var endBrick = new EndForeverBrick
{
Begin = (ForeverBrick) _selectedBrick
};
foreverBrick.End = endBrick;
_actionsCollection.AddScriptBrick(endBrick, _firstVisibleScriptBrickIndex, _lastVisibleScriptBrickIndex + 1);
}
var repeatBrick = _selectedBrick as RepeatBrick;
if (repeatBrick != null)
{
var endBrick = new EndRepeatBrick
{
Begin = (RepeatBrick)_selectedBrick
};
repeatBrick.End = endBrick;
_actionsCollection.AddScriptBrick(endBrick, _firstVisibleScriptBrickIndex, _lastVisibleScriptBrickIndex + 1);
}
var ifBrick = _selectedBrick as IfBrick;
if (ifBrick != null)
{
var elseBrick = new ElseBrick();
var endBrick = new EndIfBrick();
elseBrick.Begin = ifBrick;
elseBrick.End = endBrick;
endBrick.Begin = ifBrick;
endBrick.Else = elseBrick;
ifBrick.Else = elseBrick;
ifBrick.End = endBrick;
_actionsCollection.AddScriptBrick(elseBrick, _firstVisibleScriptBrickIndex, _lastVisibleScriptBrickIndex + 1);
_actionsCollection.AddScriptBrick(endBrick, _firstVisibleScriptBrickIndex, _lastVisibleScriptBrickIndex + 2);
}
var message = new GenericMessage<ModelBase>(_selectedBrick);
Messenger.Default.Send(message, ViewModelMessagingToken.SelectedBrickListener);
ServiceLocator.NavigationService.RemoveBackEntry();
base.GoBackAction();
_isAdding = false;
}
}