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; } }
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; } }