Changeset 2749


Ignore:
Timestamp:
Feb 19, 2011, 10:30:14 PM (11 years ago)
Author:
kopal
Message:

started creating operations classes which enable the developer to modify the Model

Location:
trunk/WorkspaceManagerModel
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WorkspaceManagerModel/Model/Elements/PluginModel.cs

    r2747 r2749  
    3030using System.ComponentModel;
    3131using WorkspaceManager.Model.Tools;
     32using WorkspaceManagerModel.Model.Operations;
    3233
    3334namespace WorkspaceManager.Model
     
    187188                        if(!this.WorkspaceModel.UndoRedoManager.Working)
    188189                        {
    189                             this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel) { SingleOperation = false });
     190                            this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    190191                        }
    191192                    }
     
    206207                        if(!this.WorkspaceModel.UndoRedoManager.Working)
    207208                        {
    208                             this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel){SingleOperation=false});
     209                            this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    209210                        }
    210211                    }
     
    226227                        if(!this.WorkspaceModel.UndoRedoManager.Working)
    227228                        {
    228                             this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel){SingleOperation=false});
     229                            this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    229230                        }
    230231                    }
     
    246247                        if(!this.WorkspaceModel.UndoRedoManager.Working)
    247248                        {
    248                             this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel){SingleOperation=false});
     249                            this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    249250                        }
    250251                    }
     
    278279                            if(!this.WorkspaceModel.UndoRedoManager.Working)
    279280                            {
    280                                 this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel){SingleOperation=false});
     281                                this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    281282                            }
    282283                        }
     
    302303                            if(!this.WorkspaceModel.UndoRedoManager.Working)
    303304                            {
    304                                 this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel){SingleOperation=false});
     305                                this.WorkspaceModel.UndoRedoManager.DidOperation(new NewModelElementOperation(connectorModel));
    305306                            }
    306307                        }
  • trunk/WorkspaceManagerModel/Model/Elements/WorkspaceModel.cs

    r2747 r2749  
    2727using WorkspaceManager.Model.Tools;
    2828using Cryptool.PluginBase.Editor;
     29using WorkspaceManagerModel.Model.Operations;
    2930
    3031namespace WorkspaceManager.Model
     
    137138            if (!this.UndoRedoManager.Working)
    138139            {
    139                 this.UndoRedoManager.DidOperation(new NewModelElementOperation(pluginModel) { SingleOperation = true });
     140                this.UndoRedoManager.DidOperation(new NewModelElementOperation(pluginModel));
    140141            }
    141142            return pluginModel;
     
    202203            if (!this.UndoRedoManager.Working)
    203204            {
    204                 this.UndoRedoManager.DidOperation(new NewModelElementOperation(connectionModel) { SingleOperation = true });
     205                this.UndoRedoManager.DidOperation(new NewModelElementOperation(connectionModel));
    205206            }
    206207            return connectionModel;
     
    219220            if (!this.UndoRedoManager.Working)
    220221            {
    221                 this.UndoRedoManager.DidOperation(new NewModelElementOperation(imageModel) { SingleOperation = true });
     222                this.UndoRedoManager.DidOperation(new NewModelElementOperation(imageModel));
    222223            }
    223224            return imageModel;
     
    236237            if (!this.UndoRedoManager.Working)
    237238            {
    238                 this.UndoRedoManager.DidOperation(new NewModelElementOperation(textModel) { SingleOperation = true });
     239                this.UndoRedoManager.DidOperation(new NewModelElementOperation(textModel));
    239240            }
    240241            return textModel;
     
    250251            if (!this.UndoRedoManager.Working)
    251252            {
    252                 this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(imageModel) { SingleOperation = true });
     253                this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(imageModel));
    253254            }
    254255            return this.AllImageModels.Remove(imageModel);
     
    264265            if (!this.UndoRedoManager.Working)
    265266            {
    266                 this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(textModel) { SingleOperation = true });
     267                this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(textModel));
    267268            }
    268269            return this.AllTextModels.Remove(textModel);
     
    295296                if (!this.UndoRedoManager.Working)
    296297                {
    297                     this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(pluginModel) { SingleOperation = true });
     298                    this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(pluginModel));
    298299                }
    299300
     
    328329                if (!this.UndoRedoManager.Working)
    329330                {
    330                     this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(connectorModel) { SingleOperation = false });
     331                    this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(connectorModel));
    331332                }
    332333
     
    351352            if (!this.UndoRedoManager.Working)
    352353            {
    353                 this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(connectionModel) { SingleOperation = true });
     354                this.UndoRedoManager.DidOperation(new DeleteModelElementOperation(connectionModel));
    354355            }
    355356
  • trunk/WorkspaceManagerModel/Model/Tools/UndoRedoManager.cs

    r2747 r2749  
    2323using System.Windows.Input;
    2424using System.Windows;
     25using WorkspaceManagerModel.Model.Operations;
    2526
    2627namespace WorkspaceManager.Model.Tools
     
    6263            if (UndoStack.Count > 0)
    6364            {
    64                 object lastModelElement = null;
     65                object lastModelModel = null;
    6566                Operation op = UndoStack.Pop();
    66                 lastModelElement = op.Element;
     67                lastModelModel = op.Model;
    6768                op.Undo();
    6869                RedoStack.Push(op);
    6970
    70                 if (UndoStack.Count > 0 && (!UndoStack.First().SingleOperation ||
     71                if (UndoStack.Count > 0 && //(!UndoStack.First().SingleOperation ||
    7172                    (UndoStack.First() is MoveModelElementOperation &&
    72                     UndoStack.First().Element == lastModelElement)))
     73                    UndoStack.First().Model == lastModelModel))//)
    7374                {
    7475                    do
    7576                    {
    76                         lastModelElement = op.Element;
     77                        lastModelModel = op.Model;
    7778                        op = UndoStack.Pop();
    7879                        op.Undo();
    7980                        RedoStack.Push(op);
    80                     } while (UndoStack.Count > 0 && (!UndoStack.First().SingleOperation || (UndoStack.First() is MoveModelElementOperation &&
    81                     UndoStack.First().Element == lastModelElement)));
     81                    } while (UndoStack.Count > 0 && //(!UndoStack.First().SingleOperation || (UndoStack.First() is MoveModelModelOperation &&
     82                    UndoStack.First().Model == lastModelModel)/*))*/;
    8283                }
    8384            }
     
    9495            {               
    9596                Operation op = null;
    96                 object lastModelElement = null;
     97                object lastModelModel = null;
    9798                do
    9899                {
    99100                    op = RedoStack.Pop();                   
    100                     lastModelElement = op.Element;
     101                    lastModelModel = op.Model;
    101102                    op.Redo();
    102103                    UndoStack.Push(op);
    103                 } while (RedoStack.Count > 0 && (!RedoStack.First().SingleOperation || (RedoStack.First() is MoveModelElementOperation &&
    104                     RedoStack.First().Element == lastModelElement)));
     104                } while (RedoStack.Count > 0 && //(!RedoStack.First().SingleOperation || (RedoStack.First() is MoveModelModelOperation &&
     105                    RedoStack.First().Model == lastModelModel)/*))*/;
    105106
    106107            }
     
    136137        }
    137138    }
    138 
    139     public interface Operation
    140     {
    141         object Element{get;}
    142         void Undo();
    143         void Redo();
    144         bool SingleOperation { get; set; }
    145     }
    146 
    147     public class NewModelElementOperation : Operation{
    148 
    149         VisualElementModel model = null;
    150 
    151         public NewModelElementOperation(VisualElementModel model)
    152         {
    153             this.model = model;
    154         }
    155 
    156         #region Operation Members
    157 
    158         public object Element { get { return this.model; } }
    159 
    160         public void Undo()
    161         {
    162             if (model is PluginModel)
    163             {
    164                
    165             }
    166             else if (model is ConnectorModel)
    167             {
    168                
    169             }
    170             else if (model is ConnectionModel)
    171             {
    172                
    173             }
    174             else if (model is TextModel)
    175             {
    176                
    177             }
    178             else if (model is ImageModel)
    179             {
    180 
    181             }
    182             else
    183             {
    184                 throw new NotImplementedException("Can not undo NewModelElement: " + model.GetType().Name);
    185             }
    186         }
    187 
    188         public void Redo()
    189         {
    190             if (model is PluginModel)
    191             {
    192              
    193             }
    194             else if (model is ConnectorModel)
    195             {
    196                
    197             }
    198             else if (model is ConnectionModel)
    199             {
    200                
    201             }
    202             else if (model is TextModel)
    203             {
    204             }
    205             else if (model is ImageModel)
    206             {               
    207 
    208             }
    209             else
    210             {
    211                 throw new NotImplementedException("Can not redo NewModelElement: " + model.GetType().Name);
    212             }
    213         }
    214 
    215         public bool SingleOperation
    216         {
    217             get;
    218             set;
    219         }
    220         #endregion       
    221     }
    222 
    223     public class DeleteModelElementOperation : Operation
    224     {
    225 
    226         VisualElementModel model = null;
    227 
    228         public DeleteModelElementOperation(VisualElementModel model)
    229         {
    230             this.model = model;
    231         }
    232 
    233         #region Operation Members
    234 
    235         public object Element { get { return this.model; } }
    236 
    237         public void Undo()
    238         {
    239             if (model is PluginModel)
    240             {
    241                
    242             }
    243             else if (model is ConnectorModel)
    244             {
    245                
    246             }
    247             else if (model is ConnectionModel)
    248             {
    249                
    250             }
    251             else if (model is TextModel)
    252             {
    253                
    254             }
    255             else if (model is ImageModel)
    256             {
    257                
    258             }
    259             else
    260             {
    261                 throw new NotImplementedException("Can not undo DeleteModelElement: " + model.GetType().Name);
    262             }
    263         }
    264 
    265         public void Redo()
    266         {
    267             if (model is PluginModel)
    268             {
    269                
    270             }
    271             else if (model is ConnectorModel)
    272             {
    273                
    274             }
    275             else if (model is ConnectionModel)
    276             {
    277                
    278             }
    279             else if (model is TextModel)
    280             {
    281                
    282             }
    283             else if (model is ImageModel)
    284             {
    285              
    286             }
    287             else
    288             {
    289                 throw new NotImplementedException("Can not redo DeleteModelElement: " + model.GetType().Name);
    290             }
    291         }
    292 
    293         public bool SingleOperation
    294         {
    295             get;
    296             set;
    297         }
    298 
    299         #endregion
    300     }
    301 
    302     public class MoveModelElementOperation : Operation
    303     {
    304 
    305         VisualElementModel model = null;
    306 
    307         public MoveModelElementOperation(VisualElementModel model)
    308         {
    309             this.model = model;
    310         }
    311 
    312         #region Operation Members
    313 
    314         public object Element { get { return this.model; } }
    315 
    316         public void Undo()
    317         {
    318             if (model is PluginModel)
    319             {
    320                
    321             }
    322             else if (model is ConnectorModel)
    323             {
    324                
    325             }
    326             else if (model is ConnectionModel)
    327             {
    328                
    329             }
    330             else if (model is TextModel)
    331             {
    332                
    333             }
    334             else if (model is ImageModel)
    335             {
    336                
    337             }
    338             else
    339             {
    340                 throw new NotImplementedException("Can not undo DeleteModelElement: " + model.GetType().Name);
    341             }
    342         }
    343 
    344         public void Redo()
    345         {
    346             if (model is PluginModel)
    347             {
    348                
    349             }
    350             else if (model is ConnectorModel)
    351             {
    352 
    353             }
    354             else if (model is ConnectionModel)
    355             {
    356 
    357             }
    358             else if (model is TextModel)
    359             {
    360 
    361             }
    362             else if (model is ImageModel)
    363             {
    364 
    365             }
    366             else
    367             {
    368                 throw new NotImplementedException("Can not redo DeleteModelElement: " + model.GetType().Name);
    369             }
    370         }
    371 
    372         public bool SingleOperation
    373         {
    374             get;
    375             set;
    376         }
    377 
    378         public Point OldPosition
    379         {
    380             get;
    381             set;
    382         }
    383 
    384         public Point NewPosition
    385         {
    386             get;
    387             set;
    388         }
    389 
    390         #endregion
    391     }
    392139}
  • trunk/WorkspaceManagerModel/WorkspaceManagerModel.csproj

    r2693 r2749  
    6464    <Compile Include="Model\Elements\WorkspaceModel.cs" />
    6565    <Compile Include="Model\Interfaces\IUpdateableViewElement.cs" />
     66    <Compile Include="Model\Operations\Operations.cs" />
    6667    <Compile Include="Model\Tools\ColorHelper.cs" />
    6768    <Compile Include="Model\Tools\ModelPersistance.cs" />
Note: See TracChangeset for help on using the changeset viewer.