Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/28/11 15:16:25 (13 years ago)
Author:
mkommend
Message:

#1479: added functional improvements to SymbolicExpressionGrammar editor.

Location:
branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionGrammarBase.cs

    r6415 r6493  
    426426      symbol.NameChanging += new EventHandler<CancelEventArgs<string>>(Symbol_NameChanging);
    427427      symbol.NameChanged += new EventHandler(Symbol_NameChanged);
    428       symbol.Changed += new EventHandler(Symbol_Changed);
     428
    429429      var groupSymbol = symbol as GroupSymbol;
    430430      if (groupSymbol != null) RegisterGroupSymbolEvents(groupSymbol);
     431      else symbol.Changed += new EventHandler(Symbol_Changed);
    431432    }
    432433    private void DeregisterSymbolEvents(ISymbol symbol) {
    433434      symbol.NameChanging -= new EventHandler<CancelEventArgs<string>>(Symbol_NameChanging);
    434435      symbol.NameChanged -= new EventHandler(Symbol_NameChanged);
    435       symbol.Changed -= new EventHandler(Symbol_Changed);
     436
    436437      var groupSymbol = symbol as GroupSymbol;
    437438      if (groupSymbol != null) DeregisterGroupSymbolEvents(groupSymbol);
     439      else symbol.Changed -= new EventHandler(Symbol_Changed);
    438440    }
    439441
    440442    private void RegisterGroupSymbolEvents(GroupSymbol groupSymbol) {
     443      groupSymbol.Changed += new EventHandler(GroupSymbol_Changed);
    441444      groupSymbol.SymbolsCollection.ItemsAdded += new Collections.CollectionItemsChangedEventHandler<ISymbol>(GroupSymbol_ItemsAdded);
    442445      groupSymbol.SymbolsCollection.ItemsRemoved += new Collections.CollectionItemsChangedEventHandler<ISymbol>(GroupSymbol_ItemsRemoved);
     
    444447    }
    445448    private void DeregisterGroupSymbolEvents(GroupSymbol groupSymbol) {
     449      groupSymbol.Changed -= new EventHandler(GroupSymbol_Changed);
    446450      groupSymbol.SymbolsCollection.ItemsAdded -= new Collections.CollectionItemsChangedEventHandler<ISymbol>(GroupSymbol_ItemsAdded);
    447451      groupSymbol.SymbolsCollection.ItemsRemoved -= new Collections.CollectionItemsChangedEventHandler<ISymbol>(GroupSymbol_ItemsRemoved);
     
    492496    }
    493497
    494     private void Symbol_Changed(object sende, EventArgs e) {
     498    private void Symbol_Changed(object sender, EventArgs e) {
     499      if (suppressEvents) return;
     500      ClearCaches();
     501      OnChanged();
     502    }
     503
     504    private void GroupSymbol_Changed(object sender, EventArgs e) {
     505      if (suppressEvents) return;
     506      suppressEvents = true;
     507      GroupSymbol groupSymbol = (GroupSymbol)sender;
     508      foreach (ISymbol symbol in groupSymbol.Flatten())
     509        symbol.Enabled = groupSymbol.Enabled;
     510      suppressEvents = false;
    495511      ClearCaches();
    496512      OnChanged();
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Symbols/GroupSymbol.cs

    r6409 r6493  
    5151    public override bool Enabled {
    5252      get { return base.Enabled; }
    53       set {
    54         if (value != Enabled) {
    55           base.Enabled = value;
    56           foreach (ISymbol symbol in symbols)
    57             symbol.Enabled = value;
    58         }
    59       }
     53      set { base.Enabled = value; }
    6054    }
    6155
Note: See TracChangeset for help on using the changeset viewer.