C# Class SIL.FieldWorks.FdoUi.CmObjectUi

Inheritance: IxCoreColleague, IFWDisposable
Mostra file Open project: sillsdev/FieldWorks Class Usage Examples

Protected Properties

Property Type Description
m_cache SIL.FieldWorks.FDO.FdoCache
m_hostControl System.Windows.Forms.Control
m_hvo int
m_mediator XCore.Mediator
m_obj ICmObject
m_vc IVwViewConstructor

Public Methods

Method Description
CanDelete ( string &cannotDeleteMsg ) : bool
CheckDisposed ( ) : void

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

CmObjectUi ( ICmObject obj ) : System

If you KNOW for SURE the right subclass of CmObjectUi, you can just make one directly. Most clients should use MakeUi.

ConsiderDeletingRelatedFile ( ICmFile file, XCore.Mediator mediator ) : void
CreateNewUiObject ( XCore.Mediator mediator, int classId, int hvoOwner, int flid, int insertionPosition ) : CmObjectUi

Create a new FDO object.

DeleteUnderlyingObject ( ) : bool

Delete the object, after showing a confirmation dialog. Return true if deleted, false, if cancelled.

Dispose ( ) : void

Must not be virtual.

GetMessageTargets ( ) : IxCoreColleague[]

return an array of all of the objects which should 1) be queried when looking for someone to deliver a message to 2) be potential recipients of a broadcast

GetSelfOrParentOfClass ( ICmObject cmo, int classIdToSearchFor ) : ICmObject

Return either the object or an owner ("parent") up the ownership chain that is of the desired class. Being a subclass of the desired class also matches, unlike ICmObject.OwnerOfClass() where the class must match exactly.

GuidForJumping ( object commandObject ) : System.Guid

gives the guid of the object to use in the URL we construct when doing a jump

HandleCtrlClick ( XCore.Mediator mediator, Control hostControl ) : bool

Handle a control-click by invoking the first active JumpToTool menu item. Note that the item selected here should be the same one that is selected by Mark

HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed ) : bool

Handle a right click by popping up the implied context menu.

HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, Action adjustMenu ) : bool

Handle a right click by popping up the implied context menu.

HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, string sMenuId ) : bool

Handle the right click by popping up an explicit context menu id.

HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, string sMenuId, Action adjustMenu ) : bool

Handle the right click by popping up an explicit context menu id.

Init ( XCore.Mediator mediator, XmlNode configurationParameters ) : void
LaunchGuiControl ( Command command ) : void
MakeUi ( SIL.FieldWorks.FDO.FdoCache cache, int hvo ) : CmObjectUi

In many cases we don't really need the FDO object, which can be relatively expensive to create. This version saves the information, and creates it when needed.

MakeUi ( ICmObject obj ) : CmObjectUi

This is the main class factory that makes a corresponding CmObjectUi for any given CmObject.

MarkCtrlClickItem ( ContextMenuStrip menu ) : void

Given a populated choice group, mark the one that will be invoked by a ctrl-click. This method is typically used as the menuAdjuster argument in calling HandleRightClick. It's important that it marks the same menu item as selected by HandlCtrlClick.

MergeUnderlyingObject ( bool fLoseNoTextData ) : void

Merge the underling objects. This method handles the confirm dialog, then delegates the actual merge to ReallyMergeUnderlyingObject. If the flag is true, we merge strings and owned atomic objects; otherwise, we don't change any that aren't null to begin with.

MoveUnderlyingObjectToCopyOfOwner ( ) : void

OnDeleteSelectedItem ( object commandObject ) : void
OnDisplayDeleteSelectedItem ( object commandObject, XCore.UIItemDisplayProperties &display ) : bool

Hack to "remove" the delete menu from the popup menu.

OnDisplayJumpToTool ( object commandObject, XCore.UIItemDisplayProperties &display ) : bool

called by the mediator to decide how/if a MenuItem or toolbar button should be displayed

OnJumpToTool ( object commandObject ) : bool

This method CALLED BY REFLECTION is required to make various right-click menu commands like Show Entry in Lexicon work in browse views. FWR-3695.

ParseSinglePropertySequenceValueIntoHvos ( string singlePropertySequenceValue, SIL.FieldWorks.FDO.FdoCache cacheForCheckingValidity, int expectedClassId ) : List

RGB ( Color c ) : uint

Convert a .NET color to the type understood by Views code and other Win32 stuff.

RGB ( int r, int g, int b ) : uint

Make a standard Win32 color from three components.

ToStatusBar ( ) : string

Get a string suitable for use in the left panel of the LexText status bar. It will show the created and modified dates, if the object has them.

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.

DoRelatedCleanupForDeleteObject ( ) : void

Do any cleanup that involves interacting with the user, after the user has confirmed that our object should be deleted.

GetMergeinfo ( SIL.FieldWorks.LexText.Controls.WindowParams wp, List mergeCandidates, string &guiControl, string &helpTopic ) : DummyCmObject
IsAcceptableContextToJump ( string toolCurrent, string toolTarget ) : bool
ReallyDeleteUnderlyingObject ( ) : void
ReallyMergeUnderlyingObject ( int survivorHvo, bool fLoseNoTextData ) : void

Merge the underling objects. This method handles the transaction, then delegates the actual merge to MergeObject. If the flag is true, we merge strings and owned atomic objects; otherwise, we don't change any that aren't null to begin with.

ShouldDisplayMenuForClass ( int specifiedClsid, XCore.UIItemDisplayProperties display ) : bool

Private Methods

Method Description
CmObjectUi ( ) : System

This should only be used by MakeUi.

DefaultCreateNewUiObject ( int classId, int hvoOwner, int flid, int insertionPosition, SIL.FieldWorks.FDO.FdoCache cache ) : CmObjectUi
GetCurrentCmObject ( ) : ICmObject
IsCtrlClickItem ( object item ) : bool
MakeUi ( SIL.FieldWorks.FDO.FdoCache cache, int hvo, int clsid ) : CmObjectUi

Method Details

CanDelete() public method

public CanDelete ( string &cannotDeleteMsg ) : bool
cannotDeleteMsg string
return bool

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

CmObjectUi() public method

If you KNOW for SURE the right subclass of CmObjectUi, you can just make one directly. Most clients should use MakeUi.
public CmObjectUi ( ICmObject obj ) : System
obj ICmObject
return System

ConsiderDeletingRelatedFile() public static method

public static ConsiderDeletingRelatedFile ( ICmFile file, XCore.Mediator mediator ) : void
file ICmFile
mediator XCore.Mediator
return void

CreateNewUiObject() public static method

Create a new FDO object.
public static CreateNewUiObject ( XCore.Mediator mediator, int classId, int hvoOwner, int flid, int insertionPosition ) : CmObjectUi
mediator XCore.Mediator
classId int
hvoOwner int
flid int
insertionPosition int
return CmObjectUi

DeleteUnderlyingObject() public method

Delete the object, after showing a confirmation dialog. Return true if deleted, false, if cancelled.
public DeleteUnderlyingObject ( ) : bool
return bool

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

DoRelatedCleanupForDeleteObject() protected method

Do any cleanup that involves interacting with the user, after the user has confirmed that our object should be deleted.
protected DoRelatedCleanupForDeleteObject ( ) : void
return void

GetMergeinfo() protected method

protected GetMergeinfo ( SIL.FieldWorks.LexText.Controls.WindowParams wp, List mergeCandidates, string &guiControl, string &helpTopic ) : DummyCmObject
wp SIL.FieldWorks.LexText.Controls.WindowParams
mergeCandidates List
guiControl string
helpTopic string
return DummyCmObject

GetMessageTargets() public method

return an array of all of the objects which should 1) be queried when looking for someone to deliver a message to 2) be potential recipients of a broadcast
public GetMessageTargets ( ) : IxCoreColleague[]
return IxCoreColleague[]

GetSelfOrParentOfClass() public static method

Return either the object or an owner ("parent") up the ownership chain that is of the desired class. Being a subclass of the desired class also matches, unlike ICmObject.OwnerOfClass() where the class must match exactly.
public static GetSelfOrParentOfClass ( ICmObject cmo, int classIdToSearchFor ) : ICmObject
cmo ICmObject
classIdToSearchFor int
return ICmObject

GuidForJumping() public method

gives the guid of the object to use in the URL we construct when doing a jump
public GuidForJumping ( object commandObject ) : System.Guid
commandObject object
return System.Guid

HandleCtrlClick() public method

Handle a control-click by invoking the first active JumpToTool menu item. Note that the item selected here should be the same one that is selected by Mark
public HandleCtrlClick ( XCore.Mediator mediator, Control hostControl ) : bool
mediator XCore.Mediator
hostControl System.Windows.Forms.Control
return bool

HandleRightClick() public method

Handle a right click by popping up the implied context menu.
public HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed ) : bool
mediator XCore.Mediator
hostControl System.Windows.Forms.Control
shouldDisposeThisWhenClosed bool True, if the menu handler is to dispose of the CmObjectUi after menu closing
return bool

HandleRightClick() public method

Handle a right click by popping up the implied context menu.
public HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, Action adjustMenu ) : bool
mediator XCore.Mediator
hostControl System.Windows.Forms.Control
shouldDisposeThisWhenClosed bool True, if the menu handler is to dispose of the CmObjectUi after menu closing
adjustMenu Action
return bool

HandleRightClick() public method

Handle the right click by popping up an explicit context menu id.
public HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, string sMenuId ) : bool
mediator XCore.Mediator
hostControl System.Windows.Forms.Control
shouldDisposeThisWhenClosed bool True, if the menu handler is to dispose of the CmObjectUi after menu closing
sMenuId string
return bool

HandleRightClick() public method

Handle the right click by popping up an explicit context menu id.
public HandleRightClick ( XCore.Mediator mediator, Control hostControl, bool shouldDisposeThisWhenClosed, string sMenuId, Action adjustMenu ) : bool
mediator XCore.Mediator
hostControl System.Windows.Forms.Control
shouldDisposeThisWhenClosed bool True, if the menu handler is to dispose of the CmObjectUi after menu closing
sMenuId string
adjustMenu Action
return bool

Init() public method

public Init ( XCore.Mediator mediator, XmlNode configurationParameters ) : void
mediator XCore.Mediator
configurationParameters System.Xml.XmlNode
return void

IsAcceptableContextToJump() protected method

protected IsAcceptableContextToJump ( string toolCurrent, string toolTarget ) : bool
toolCurrent string
toolTarget string
return bool

LaunchGuiControl() public method

public LaunchGuiControl ( Command command ) : void
command Command
return void

MakeUi() public static method

In many cases we don't really need the FDO object, which can be relatively expensive to create. This version saves the information, and creates it when needed.
public static MakeUi ( SIL.FieldWorks.FDO.FdoCache cache, int hvo ) : CmObjectUi
cache SIL.FieldWorks.FDO.FdoCache
hvo int
return CmObjectUi

MakeUi() public static method

This is the main class factory that makes a corresponding CmObjectUi for any given CmObject.
public static MakeUi ( ICmObject obj ) : CmObjectUi
obj ICmObject
return CmObjectUi

MarkCtrlClickItem() public static method

Given a populated choice group, mark the one that will be invoked by a ctrl-click. This method is typically used as the menuAdjuster argument in calling HandleRightClick. It's important that it marks the same menu item as selected by HandlCtrlClick.
public static MarkCtrlClickItem ( ContextMenuStrip menu ) : void
menu System.Windows.Forms.ContextMenuStrip
return void

MergeUnderlyingObject() public method

Merge the underling objects. This method handles the confirm dialog, then delegates the actual merge to ReallyMergeUnderlyingObject. If the flag is true, we merge strings and owned atomic objects; otherwise, we don't change any that aren't null to begin with.
public MergeUnderlyingObject ( bool fLoseNoTextData ) : void
fLoseNoTextData bool
return void

MoveUnderlyingObjectToCopyOfOwner() public method

public MoveUnderlyingObjectToCopyOfOwner ( ) : void
return void

OnDeleteSelectedItem() public method

public OnDeleteSelectedItem ( object commandObject ) : void
commandObject object
return void

OnDisplayDeleteSelectedItem() public method

Hack to "remove" the delete menu from the popup menu.
public OnDisplayDeleteSelectedItem ( object commandObject, XCore.UIItemDisplayProperties &display ) : bool
commandObject object
display XCore.UIItemDisplayProperties
return bool

OnDisplayJumpToTool() public method

called by the mediator to decide how/if a MenuItem or toolbar button should be displayed
public OnDisplayJumpToTool ( object commandObject, XCore.UIItemDisplayProperties &display ) : bool
commandObject object
display XCore.UIItemDisplayProperties
return bool

OnJumpToTool() public method

This method CALLED BY REFLECTION is required to make various right-click menu commands like Show Entry in Lexicon work in browse views. FWR-3695.
public OnJumpToTool ( object commandObject ) : bool
commandObject object
return bool

ParseSinglePropertySequenceValueIntoHvos() static public method

static public ParseSinglePropertySequenceValueIntoHvos ( string singlePropertySequenceValue, SIL.FieldWorks.FDO.FdoCache cacheForCheckingValidity, int expectedClassId ) : List
singlePropertySequenceValue string
cacheForCheckingValidity SIL.FieldWorks.FDO.FdoCache null, if you don't care about checking the validity of the items in singlePropertySequenceValue, /// otherwise, pass in a cache to check validity.
expectedClassId int if you pass a cache, you can also use this too make sure the object matches an expected class, /// otherwise it just checks that the object exists in the database (or is a valid virtual object)
return List

RGB() static public method

Convert a .NET color to the type understood by Views code and other Win32 stuff.
static public RGB ( Color c ) : uint
c Color
return uint

RGB() static public method

Make a standard Win32 color from three components.
static public RGB ( int r, int g, int b ) : uint
r int
g int
b int
return uint

ReallyDeleteUnderlyingObject() protected method

protected ReallyDeleteUnderlyingObject ( ) : void
return void

ReallyMergeUnderlyingObject() protected method

Merge the underling objects. This method handles the transaction, then delegates the actual merge to MergeObject. If the flag is true, we merge strings and owned atomic objects; otherwise, we don't change any that aren't null to begin with.
protected ReallyMergeUnderlyingObject ( int survivorHvo, bool fLoseNoTextData ) : void
survivorHvo int
fLoseNoTextData bool
return void

ShouldDisplayMenuForClass() protected method

protected ShouldDisplayMenuForClass ( int specifiedClsid, XCore.UIItemDisplayProperties display ) : bool
specifiedClsid int
display XCore.UIItemDisplayProperties
return bool

ToStatusBar() public method

Get a string suitable for use in the left panel of the LexText status bar. It will show the created and modified dates, if the object has them.
public ToStatusBar ( ) : string
return string

Property Details

m_cache protected_oe property

protected FdoCache,SIL.FieldWorks.FDO m_cache
return SIL.FieldWorks.FDO.FdoCache

m_hostControl protected_oe property

protected Control,System.Windows.Forms m_hostControl
return System.Windows.Forms.Control

m_hvo protected_oe property

protected int m_hvo
return int

m_mediator protected_oe property

protected Mediator,XCore m_mediator
return XCore.Mediator

m_obj protected_oe property

protected ICmObject m_obj
return ICmObject

m_vc protected_oe property

protected IVwViewConstructor m_vc
return IVwViewConstructor