C# Class SIL.FieldWorks.FdoUi.InflectionClassEditor

InflectionClassEditor is the spec/display component of the Bulk Edit bar used to set the Inflection class of a LexSense (which must already have an MoStemMsa with POS set). It is used for BulkEditBar, which is part of XmlViews, but it needs to use the POSPopupTreeManager class, and since FdoUi references XmlViews, XmlViews can't reference FdoUi. Also, it sort of makes sense to put it here as a class that is quite specific to a particular part of the model.
Inheritance: IBulkEditSpecControl, IFWDisposable
Show file Open project: sillsdev/FieldWorks

Protected Properties

Property Type Description
m_sda SIL.FieldWorks.Common.Controls.XMLViewsDataCache

Public Methods

Method Description
CheckDisposed ( ) : void

Check to see if the object has been disposed. All public Properties and Methods should call this before doing anything else.

Dispose ( ) : void

Must not be virtual.

DoIt ( IEnumerable itemsToChange, SIL.FieldWorks.Common.Controls.ProgressState state ) : void

Execute the change requested by the current selection in the combo. Basically we want the MoInflClass indicated by m_selectedHvo, (even if 0?? not yet possible), to become the InflectionClass of each record that is appropriate to change. We do nothing to records where the check box is turned off, and nothing to ones that currently have an MSA other than an MoStemMsa, and nothing to ones that currently have an MSA with the wrong POS. (a) If the owning entry has an MoStemMsa with the right inflection class (and presumably POS), set the sense to use it. (b) If all senses using the current MoStemMsa are to be changed, just update the inflection class of that MoStemMsa. We could add this...but very probably unused MSAs would have been taken over when setting the POS. --(c) If the entry has an MoStemMsa which is not being used at all, change it to --the required POS and inflection class and use it. (d) Make a new MoStemMsa in the LexEntry with the required POS and inflection class and point the sense at it.

FakeDoit ( IEnumerable itemsToChange, int tagFakeFlid, int tagEnable, SIL.FieldWorks.Common.Controls.ProgressState state ) : void

Fake doing the change by setting the specified property to the appropriate value for each item in the list. Disable items that can't be set.

FilterType ( ) : Type

Get a type we can use to create a compatible filter.

InflectionClassEditor ( ) : System
InflectionClassEditor ( XmlNode configurationNode ) : System
MakeSuggestions ( IEnumerable itemsToChange, int tagFakeFlid, int tagEnabled, SIL.FieldWorks.Common.Controls.ProgressState state ) : void

Used by SemanticDomainChooserBEditControl to make suggestions and then call FakeDoIt

SetClearField ( ) : void

Not needed since we said we can't do it.

Protected Methods

Method Description
Dispose ( bool disposing ) : void

Executes in two distinct scenarios. 1. If disposing is true, the method has been called directly or indirectly by a user's code via the Dispose method. Both managed and unmanaged resources can be disposed. 2. If disposing is false, the method has been called by the runtime from inside the finalizer and you should not reference (access) other managed objects, as they already have been garbage collected. Only unmanaged resources can be disposed.

If any exceptions are thrown, that is fine. If the method is being done in a finalizer, it will be ignored. If it is thrown by client code calling Dispose, it needs to be handled by fixing the bug. If subclasses override this method, they should call the base implementation.

Private Methods

Method Description
AddChildPos ( ISilDataAccess sda, int hvoPos, Set possiblePOS ) : void

Add to possiblePOS all the children (recursively) of hvoPos

GetPOS ( ) : IPartOfSpeech
GetPossiblePartsOfSpeech ( ) : Set
IsItemEligible ( ISilDataAccess sda, int hvo, Set possiblePOS ) : bool
m_pOSPopupTreeManager_AfterSelect ( object sender, System e ) : void
m_tree_TreeLoad ( object sender, EventArgs e ) : void

Method Details

CheckDisposed() public method

Check to see if the object has been disposed. All public Properties and Methods should call this before doing anything else.
public CheckDisposed ( ) : void
return void

Dispose() public method

Must not be virtual.
public Dispose ( ) : void
return void

Dispose() protected method

Executes in two distinct scenarios. 1. If disposing is true, the method has been called directly or indirectly by a user's code via the Dispose method. Both managed and unmanaged resources can be disposed. 2. If disposing is false, the method has been called by the runtime from inside the finalizer and you should not reference (access) other managed objects, as they already have been garbage collected. Only unmanaged resources can be disposed.
If any exceptions are thrown, that is fine. If the method is being done in a finalizer, it will be ignored. If it is thrown by client code calling Dispose, it needs to be handled by fixing the bug. If subclasses override this method, they should call the base implementation.
protected Dispose ( bool disposing ) : void
disposing bool
return void

DoIt() public method

Execute the change requested by the current selection in the combo. Basically we want the MoInflClass indicated by m_selectedHvo, (even if 0?? not yet possible), to become the InflectionClass of each record that is appropriate to change. We do nothing to records where the check box is turned off, and nothing to ones that currently have an MSA other than an MoStemMsa, and nothing to ones that currently have an MSA with the wrong POS. (a) If the owning entry has an MoStemMsa with the right inflection class (and presumably POS), set the sense to use it. (b) If all senses using the current MoStemMsa are to be changed, just update the inflection class of that MoStemMsa. We could add this...but very probably unused MSAs would have been taken over when setting the POS. --(c) If the entry has an MoStemMsa which is not being used at all, change it to --the required POS and inflection class and use it. (d) Make a new MoStemMsa in the LexEntry with the required POS and inflection class and point the sense at it.
public DoIt ( IEnumerable itemsToChange, SIL.FieldWorks.Common.Controls.ProgressState state ) : void
itemsToChange IEnumerable
state SIL.FieldWorks.Common.Controls.ProgressState
return void

FakeDoit() public method

Fake doing the change by setting the specified property to the appropriate value for each item in the list. Disable items that can't be set.
public FakeDoit ( IEnumerable itemsToChange, int tagFakeFlid, int tagEnable, SIL.FieldWorks.Common.Controls.ProgressState state ) : void
itemsToChange IEnumerable
tagFakeFlid int
tagEnable int
state SIL.FieldWorks.Common.Controls.ProgressState
return void

FilterType() public static method

Get a type we can use to create a compatible filter.
public static FilterType ( ) : Type
return System.Type

InflectionClassEditor() public method

public InflectionClassEditor ( ) : System
return System

InflectionClassEditor() public method

public InflectionClassEditor ( XmlNode configurationNode ) : System
configurationNode System.Xml.XmlNode
return System

MakeSuggestions() public method

Used by SemanticDomainChooserBEditControl to make suggestions and then call FakeDoIt
public MakeSuggestions ( IEnumerable itemsToChange, int tagFakeFlid, int tagEnabled, SIL.FieldWorks.Common.Controls.ProgressState state ) : void
itemsToChange IEnumerable
tagFakeFlid int
tagEnabled int
state SIL.FieldWorks.Common.Controls.ProgressState
return void

SetClearField() public method

Not needed since we said we can't do it.
public SetClearField ( ) : void
return void

Property Details

m_sda protected property

protected XMLViewsDataCache,SIL.FieldWorks.Common.Controls m_sda
return SIL.FieldWorks.Common.Controls.XMLViewsDataCache