C# Class SIL.FieldWorks.Common.Framework.DetailControls.Slice.Slice

Inheritance: System.Windows.Forms.UserControl, IxCoreColleague, IFWDisposable
Show file Open project: sillsdev/FieldWorks

Protected Properties

Property Type Description
m_cache FdoCache
m_callerNode XmlNode
m_configurationNode XmlNode
m_expansion DataTree.TreeItemState
m_fontLabel Font
m_indent int
m_isHighlighted bool
m_key object[]
m_location Point
m_mediator Mediator
m_obj ICmObject
m_parentSlice Slice
m_persistenceProvider IPersistenceProvider
m_smallImages ImageCollection
m_strAbbr string
m_strLabel string
m_stringTable StringTable
m_weight ObjectWeight
m_widthHasBeenSetByDataTree bool

Private Properties

Property Type Description
CheckVisibilityItem void
Collapse void
ExtraIndent int
FocusSliceOrChild Slice
GenerateHelpTopicId string
GetAtomicContext bool
GetCloseSlices List
GetGeneratedHelpTopicId string
GetHelpTopicID String
GetObjectForMenusToOperateOn ICmObject
GetSeqContext bool
InsertObject int
InsertObjectIfPossible bool
InsertObjectIntoVirtualBackref int
IsDescendant bool
IsOrInheritsFrom bool
LayoutSplitter void
PartRef XmlNode
SetCurrentState void
SetSplitPosition void
SetViewStylesheet void
Slice System
StartsWith bool
getAlphaNumeric string
helpTopicIsValid bool
mySplitterMoved void
treeNode_MouseEnter void
treeNode_MouseLeave void

Public Methods

Method Description
AboutToDiscard ( ) : void

This is called when clearing the slice collection, or otherwise about to remove a slice from its parent and discard it. It allows us to put views into a state where they won't waste time if they get an OnLoad message somewhere in the course of clearing them from the collection. (LT-3118 is one problem this helped with.)

BecomeReal ( int index ) : Slice

In some contexts we insert into the slice array

BecomeRealInPlace ( ) : bool

Some 'unreal' slices can become 'real' (ready to actually display) without actually replacing themselves with a different object. Such slices override this method to do whatever is needed and then answer true. If a slice answers false to IsRealSlice, this is tried, and if it returns false, then BecomeReal is called.

CanDeleteReferenceNow ( Command cmd ) : bool

Check whether a "Delete Reference" command can be executed. Currently implemented only for the VariantEntryBackRefs / LexEntry/EntryRefs/ComponentLexemes references.

CheckDisposed ( ) : void

Collapse ( ) : void

CreateIndentedNodes ( XmlNode caller, ICmObject obj, int indent, int &insPos, ArrayList path, ObjSeqHashMap reuseMap, XmlNode node ) : void

DrawLabel ( int y, Graphics gr, int clipWidth ) : void

Draws the label in the containing SilTreeControl's Graphics object at the specified position. Override if you have a more complex type of label, e.g., if the field contains interlinear data and you want to label each line.

DrawLabel ( int x, int y, Graphics gr, int clipWidth ) : void

Expand ( ) : void

Expand ( int iSlice ) : void

Expand this node, which is at position iSlice in its parent.

I (JH) don't know why this was written to take the index of the slice. It's just as easy for this class to find its own index. JohnT: for performance; finding its own index is a linear search, and the caller often has the info already, especially in loops expanding many children.

ExpandSubItem ( int hvo ) : Slice

Find a slice nested below this one whose object is hvo and expand it if it is collapsed.

FinishInit ( ) : void

This method should be called once the various properties of the slice have been set, particularly the Cache, Object, Key, and Spec. The slice may create its Control in this method, so don't assume it exists before this is called. It should be called before installing the slice.

GenerateChildren ( XmlNode node, XmlNode caller, ICmObject obj, int indent, int &insPos, ArrayList path, ObjSeqHashMap reuseMap, bool fUsePersistentExpansion ) : void

GetBranchHeight ( ) : int

Returns the height, from the top of the item, at which to draw the line across towards it. Typically this is the center of where DrawLabel will draw the label, but it might not be (e.g., if DrawLabel actually draws two labels and a bit of tree diagram).

GetCanDeleteNow ( ) : bool

is it possible to do a deletion menu command on this slice right now?

GetCanEditNow ( ) : bool

GetCanMergeNow ( ) : bool

Is it possible to do a merge menu command on this slice right now?

GetCanSplitNow ( ) : bool

Is it possible to do a split menu command on this slice right now?

GetChooserHelpTopicID ( ) : String

GetChooserHelpTopicID ( string ChooserDlgHelpTopicID ) : String
GetMessageTargets ( ) : IxCoreColleague[]

GetSliceHelpTopicID ( ) : String

HandleCopyCommand ( Slice newSlice, string label ) : void

HandleDeleteCommand ( Command cmd ) : bool

Main work of deleting an object; answer true if it was actually deleted.

HandleDeleteReferenceCommand ( Command cmd ) : void

Handle a "Delete Reference" command. Currently implemented only for the VariantEntryBackRefs / LexEntry/EntryRefs/ComponentLexemes references.

HandleEditCommand ( ) : void

HandleInsertCommand ( string fieldName, string className ) : void

do an insertion

called by the containing environment in response to a user command.

HandleInsertCommand ( string fieldName, string className, string ownerClassName, string recomputeVirtual ) : void

do an insertion

called by the containing environment in response to a user command.

HandleLaunchChooser ( ) : void

This was added for Lexical Relation slices which now have the Add/Replace Reference menu item in the dropdown menu.

HandleMergeCommand ( bool fLoseNoTextData ) : void

HandleMouseDown ( Point p ) : bool

HandleSplitCommand ( ) : void

Init ( Mediator mediator, XmlNode configurationParameters ) : void

Install ( DataTree parent ) : void

LabelIndent ( ) : int

OnDisplayShowFieldAlwaysVisible ( object commandObject, UIItemDisplayProperties &display ) : bool

OnDisplayShowFieldIfData ( object commandObject, UIItemDisplayProperties &display ) : bool

OnDisplayShowFieldNormallyHidden ( object commandObject, UIItemDisplayProperties &display ) : bool

OnShowFieldAlwaysVisible ( object args ) : bool

OnShowFieldIfData ( object args ) : bool

OnShowFieldNormallyHidden ( object args ) : bool

OnTreeNodeClick ( object sender, EventArgs args ) : void

OverrideBackColor ( String backColorName ) : void

This is passed the color that the XDE specified, if any, otherwise null. The default is to use the normal window color for editable text. Subclasses which know they should have a different default should override this method, but normally should use the specified color if not null.

RegisterWithContextHelper ( ) : void

RetrieveContextMenuForHotlinks ( ) : ContextMenu

ShowContextMenuIconInTreeNode ( ) : bool

ShowSubControls ( ) : void

We tend to get a visual stuttering effect if sub-controls are made visible before the main slice is correctly positioned. This method is called after the slice is positioned to give it a chance to make embedded controls visible. This default implementation does nothing.

Slice ( Control ctrlT ) : System

TakeFocus ( bool fOkToFocusTreeNode ) : bool

The slice should become the focus slice (and return true). If the fOkToFocusTreeNode argument is false, this should happen iff it has a control which is appropriate to focus. Note: JohnT: recently I noticed that trying to focus the tree node doesn't seem to do anything; I'm not sure passing true is useful.

TakeFocus ( ) : void

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.

GetFieldType ( int flid ) : int
GetFlid ( string fieldName ) : int

Get the flid for the specified field name of this slice's object. May return zero if the object does not have that field.

IsVisibilityItemChecked ( string visibility ) : bool
OnEnter ( EventArgs e ) : void
OnGotFocus ( EventArgs e ) : void

Focus the main child control, if possible.

OnLayout ( LayoutEventArgs levent ) : void

If we don't have a splitter (because no label), set the width of the tree node directly; the other node's size is set by being docked 'fill'.

OnSizeChanged ( EventArgs e ) : void
OnValidating ( System e ) : void
PartRef ( ) : XmlNode

extract the "part ref" node from the slice.Key

ReplacePartWithNewAttribute ( string attr, string attrValueNew ) : void
SetFieldVisibility ( string visibility ) : void
SetWidthForDataTreeLayout ( int width ) : void

This is used to control the width of the slice when the data tree is being laid out. Any earlier width set is meaningless. Some slices can avoid doing a lot of work by ignoring earlier OnSizeChanged messages.

UpdateDisplayIfNeeded ( int hvo, int tag ) : bool

Updates the display of a slice, if an hvo and tag it cares about has changed in some way.

Private Methods

Method Description
CheckVisibilityItem ( XCore.UIItemDisplayProperties display, string visibility ) : void
Collapse ( int iSlice ) : void
ExtraIndent ( XmlNode indentNode ) : int

This method determines how much we should indent nodes produced from "part ref" elements embedded inside an "indent" element in another "part ref" element. Currently, by default we in fact do NOT add any indent, unless there is also an attribute indent="true".

FocusSliceOrChild ( ) : Slice
GenerateHelpTopicId ( string helpTopicPrefix ) : string
GetAtomicContext ( int &hvoOwner, int &flid ) : bool
GetCloseSlices ( ) : List
GetGeneratedHelpTopicId ( string helpTopicPrefix, String fieldName ) : string
GetHelpTopicID ( String xmlHelpTopicID, String generatedIDPrefix ) : String
GetObjectForMenusToOperateOn ( ) : ICmObject
GetSeqContext ( int &hvoOwner, int &flid, int &ihvoPosition ) : bool
InsertObject ( int flid, int newObjectClassId ) : int

Insert a new object of the specified class into the specified property of your object.

InsertObjectIfPossible ( int newObjectClassId, int ownerClassId, string fieldName, Slice slice, string recomputeVirtual ) : bool
InsertObjectIntoVirtualBackref ( FdoCache cache, Mediator mediator, int hvoSlice, int clidNewObj, int flid ) : int
IsDescendant ( Slice slice ) : bool
IsOrInheritsFrom ( int clidTest, int clidSig ) : bool

Answer whether clidTest is, or is a subclass of, clidSig. That is, either clidTest is the same as clidSig, or one of the base classes of clidTest is clidSig. As a special case, if clidSig is 0, all classes are considered to match

LayoutSplitter ( object sender, EventArgs e ) : void
PartRef ( int &indexInKey ) : XmlNode
SetCurrentState ( bool isCurrent ) : void
SetSplitPosition ( ) : void

Attempt to set the split position, but do NOT modify the global setting for the data tree if unsuccessful. This occurs during window initialization, since (I think) slices are created before the proper width is set for the containing data pane, and the constraints on the width of the splitter may not allow it to take on the persisted position.

SetViewStylesheet ( Control control, DataTree tc ) : void
Slice ( ) : System
StartsWith ( object target, object match ) : bool

Return true if the target array starts with the objects in the match array.

getAlphaNumeric ( string fromStr ) : string

Generates a possible help topic id from the field name, but does NOT check it for validity!

helpTopicIsValid ( String helpStr ) : bool

Is m_helpTopic a valid help topic?

mySplitterMoved ( object sender, SplitterEventArgs e ) : void

Note: There are two SplitterDistance event handlers on a Slice. This one handles the side effects of redrawing the tree node, when needed. Another one on DataTree takes care of updating the SplitterDisance on all the other slices.

treeNode_MouseEnter ( object sender, EventArgs e ) : void
treeNode_MouseLeave ( object sender, EventArgs e ) : void

Method Details

AboutToDiscard() public method

This is called when clearing the slice collection, or otherwise about to remove a slice from its parent and discard it. It allows us to put views into a state where they won't waste time if they get an OnLoad message somewhere in the course of clearing them from the collection. (LT-3118 is one problem this helped with.)
public AboutToDiscard ( ) : void
return void

BecomeReal() public method

In some contexts we insert into the slice array
public BecomeReal ( int index ) : Slice
index int
return Slice

BecomeRealInPlace() public method

Some 'unreal' slices can become 'real' (ready to actually display) without actually replacing themselves with a different object. Such slices override this method to do whatever is needed and then answer true. If a slice answers false to IsRealSlice, this is tried, and if it returns false, then BecomeReal is called.
public BecomeRealInPlace ( ) : bool
return bool

CanDeleteReferenceNow() public method

Check whether a "Delete Reference" command can be executed. Currently implemented only for the VariantEntryBackRefs / LexEntry/EntryRefs/ComponentLexemes references.
public CanDeleteReferenceNow ( Command cmd ) : bool
cmd Command
return bool

CheckDisposed() public method

public CheckDisposed ( ) : void
return void

Collapse() public method

public Collapse ( ) : void
return void

CreateIndentedNodes() public method

public CreateIndentedNodes ( XmlNode caller, ICmObject obj, int indent, int &insPos, ArrayList path, ObjSeqHashMap reuseMap, XmlNode node ) : void
caller System.Xml.XmlNode
obj ICmObject
indent int
insPos int
path System.Collections.ArrayList
reuseMap ObjSeqHashMap
node System.Xml.XmlNode
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

DrawLabel() public method

Draws the label in the containing SilTreeControl's Graphics object at the specified position. Override if you have a more complex type of label, e.g., if the field contains interlinear data and you want to label each line.
public DrawLabel ( int y, Graphics gr, int clipWidth ) : void
y int
gr System.Drawing.Graphics
clipWidth int
return void

DrawLabel() public method

public DrawLabel ( int x, int y, Graphics gr, int clipWidth ) : void
x int
y int
gr System.Drawing.Graphics
clipWidth int
return void

Expand() public method

public Expand ( ) : void
return void

Expand() public method

Expand this node, which is at position iSlice in its parent.
I (JH) don't know why this was written to take the index of the slice. It's just as easy for this class to find its own index. JohnT: for performance; finding its own index is a linear search, and the caller often has the info already, especially in loops expanding many children.
public Expand ( int iSlice ) : void
iSlice int
return void

ExpandSubItem() public method

Find a slice nested below this one whose object is hvo and expand it if it is collapsed.
public ExpandSubItem ( int hvo ) : Slice
hvo int
return Slice

FinishInit() public method

This method should be called once the various properties of the slice have been set, particularly the Cache, Object, Key, and Spec. The slice may create its Control in this method, so don't assume it exists before this is called. It should be called before installing the slice.
public FinishInit ( ) : void
return void

GenerateChildren() public method

public GenerateChildren ( XmlNode node, XmlNode caller, ICmObject obj, int indent, int &insPos, ArrayList path, ObjSeqHashMap reuseMap, bool fUsePersistentExpansion ) : void
node System.Xml.XmlNode
caller System.Xml.XmlNode
obj ICmObject
indent int
insPos int
path System.Collections.ArrayList
reuseMap ObjSeqHashMap
fUsePersistentExpansion bool
return void

GetBranchHeight() public method

Returns the height, from the top of the item, at which to draw the line across towards it. Typically this is the center of where DrawLabel will draw the label, but it might not be (e.g., if DrawLabel actually draws two labels and a bit of tree diagram).
public GetBranchHeight ( ) : int
return int

GetCanDeleteNow() public method

is it possible to do a deletion menu command on this slice right now?
public GetCanDeleteNow ( ) : bool
return bool

GetCanEditNow() public method

public GetCanEditNow ( ) : bool
return bool

GetCanMergeNow() public method

Is it possible to do a merge menu command on this slice right now?
public GetCanMergeNow ( ) : bool
return bool

GetCanSplitNow() public method

Is it possible to do a split menu command on this slice right now?
public GetCanSplitNow ( ) : bool
return bool

GetChooserHelpTopicID() public method

public GetChooserHelpTopicID ( ) : String
return String

GetChooserHelpTopicID() public method

public GetChooserHelpTopicID ( string ChooserDlgHelpTopicID ) : String
ChooserDlgHelpTopicID string
return String

GetFieldType() protected method

protected GetFieldType ( int flid ) : int
flid int
return int

GetFlid() protected method

Get the flid for the specified field name of this slice's object. May return zero if the object does not have that field.
protected GetFlid ( string fieldName ) : int
fieldName string
return int

GetMessageTargets() public method

public GetMessageTargets ( ) : IxCoreColleague[]
return IxCoreColleague[]

GetSliceHelpTopicID() public method

public GetSliceHelpTopicID ( ) : String
return String

HandleCopyCommand() public method

public HandleCopyCommand ( Slice newSlice, string label ) : void
newSlice Slice
label string
return void

HandleDeleteCommand() public method

Main work of deleting an object; answer true if it was actually deleted.
public HandleDeleteCommand ( Command cmd ) : bool
cmd Command
return bool

HandleDeleteReferenceCommand() public method

Handle a "Delete Reference" command. Currently implemented only for the VariantEntryBackRefs / LexEntry/EntryRefs/ComponentLexemes references.
public HandleDeleteReferenceCommand ( Command cmd ) : void
cmd Command
return void

HandleEditCommand() public method

public HandleEditCommand ( ) : void
return void

HandleInsertCommand() public method

do an insertion
called by the containing environment in response to a user command.
public HandleInsertCommand ( string fieldName, string className ) : void
fieldName string
className string
return void

HandleInsertCommand() public method

do an insertion
called by the containing environment in response to a user command.
public HandleInsertCommand ( string fieldName, string className, string ownerClassName, string recomputeVirtual ) : void
fieldName string name of field to create in
className string class of object to create
ownerClassName string class of expected owner. If the current slice's object is not /// this class (or a subclass), look for a containing object that is.
recomputeVirtual string if non-null, this is a virtual property that should be updated for all /// moved objects and their descendents of the specified class (string has form class.property)
return void

HandleLaunchChooser() public method

This was added for Lexical Relation slices which now have the Add/Replace Reference menu item in the dropdown menu.
public HandleLaunchChooser ( ) : void
return void

HandleMergeCommand() public method

public HandleMergeCommand ( bool fLoseNoTextData ) : void
fLoseNoTextData bool
return void

HandleMouseDown() public method

public HandleMouseDown ( Point p ) : bool
p Point
return bool

HandleSplitCommand() public method

public HandleSplitCommand ( ) : void
return void

Init() public method

public Init ( Mediator mediator, XmlNode configurationParameters ) : void
mediator Mediator
configurationParameters XmlNode
return void

Install() public method

public Install ( DataTree parent ) : void
parent DataTree
return void

IsVisibilityItemChecked() protected method

protected IsVisibilityItemChecked ( string visibility ) : bool
visibility string
return bool

LabelIndent() public method

public LabelIndent ( ) : int
return int

OnDisplayShowFieldAlwaysVisible() public method

public OnDisplayShowFieldAlwaysVisible ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
return bool

OnDisplayShowFieldIfData() public method

public OnDisplayShowFieldIfData ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
return bool

OnDisplayShowFieldNormallyHidden() public method

public OnDisplayShowFieldNormallyHidden ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
return bool

OnEnter() protected method

protected OnEnter ( EventArgs e ) : void
e EventArgs
return void

OnGotFocus() protected method

Focus the main child control, if possible.
protected OnGotFocus ( EventArgs e ) : void
e EventArgs
return void

OnLayout() protected method

If we don't have a splitter (because no label), set the width of the tree node directly; the other node's size is set by being docked 'fill'.
protected OnLayout ( LayoutEventArgs levent ) : void
levent LayoutEventArgs
return void

OnShowFieldAlwaysVisible() public method

public OnShowFieldAlwaysVisible ( object args ) : bool
args object
return bool

OnShowFieldIfData() public method

public OnShowFieldIfData ( object args ) : bool
args object
return bool

OnShowFieldNormallyHidden() public method

public OnShowFieldNormallyHidden ( object args ) : bool
args object
return bool

OnSizeChanged() protected method

protected OnSizeChanged ( EventArgs e ) : void
e EventArgs
return void

OnTreeNodeClick() public method

public OnTreeNodeClick ( object sender, EventArgs args ) : void
sender object
args EventArgs
return void

OnValidating() protected method

protected OnValidating ( System e ) : void
e System
return void

OverrideBackColor() public method

This is passed the color that the XDE specified, if any, otherwise null. The default is to use the normal window color for editable text. Subclasses which know they should have a different default should override this method, but normally should use the specified color if not null.
public OverrideBackColor ( String backColorName ) : void
backColorName String Name of the back color.
return void

PartRef() protected method

extract the "part ref" node from the slice.Key
protected PartRef ( ) : XmlNode
return XmlNode

RegisterWithContextHelper() public method

public RegisterWithContextHelper ( ) : void
return void

ReplacePartWithNewAttribute() protected method

protected ReplacePartWithNewAttribute ( string attr, string attrValueNew ) : void
attr string
attrValueNew string
return void

RetrieveContextMenuForHotlinks() public method

public RetrieveContextMenuForHotlinks ( ) : ContextMenu
return ContextMenu

SetFieldVisibility() protected method

protected SetFieldVisibility ( string visibility ) : void
visibility string
return void

SetWidthForDataTreeLayout() protected method

This is used to control the width of the slice when the data tree is being laid out. Any earlier width set is meaningless. Some slices can avoid doing a lot of work by ignoring earlier OnSizeChanged messages.
protected SetWidthForDataTreeLayout ( int width ) : void
width int
return void

ShowContextMenuIconInTreeNode() public method

public ShowContextMenuIconInTreeNode ( ) : bool
return bool

ShowSubControls() public method

We tend to get a visual stuttering effect if sub-controls are made visible before the main slice is correctly positioned. This method is called after the slice is positioned to give it a chance to make embedded controls visible. This default implementation does nothing.
public ShowSubControls ( ) : void
return void

Slice() public method

public Slice ( Control ctrlT ) : System
ctrlT Control
return System

TakeFocus() public method

The slice should become the focus slice (and return true). If the fOkToFocusTreeNode argument is false, this should happen iff it has a control which is appropriate to focus. Note: JohnT: recently I noticed that trying to focus the tree node doesn't seem to do anything; I'm not sure passing true is useful.
public TakeFocus ( bool fOkToFocusTreeNode ) : bool
fOkToFocusTreeNode bool
return bool

TakeFocus() public method

public TakeFocus ( ) : void
return void

UpdateDisplayIfNeeded() protected method

Updates the display of a slice, if an hvo and tag it cares about has changed in some way.
protected UpdateDisplayIfNeeded ( int hvo, int tag ) : bool
hvo int
tag int
return bool

Property Details

m_cache protected property

protected FdoCache m_cache
return FdoCache

m_callerNode protected property

protected XmlNode m_callerNode
return XmlNode

m_configurationNode protected property

protected XmlNode m_configurationNode
return XmlNode

m_expansion protected property

protected DataTree.TreeItemState m_expansion
return DataTree.TreeItemState

m_fontLabel protected property

protected Font m_fontLabel
return Font

m_indent protected property

protected int m_indent
return int

m_isHighlighted protected property

protected bool m_isHighlighted
return bool

m_key protected property

protected object[] m_key
return object[]

m_location protected property

protected Point m_location
return Point

m_mediator protected property

protected Mediator m_mediator
return Mediator

m_obj protected property

protected ICmObject m_obj
return ICmObject

m_parentSlice protected property

protected Slice m_parentSlice
return Slice

m_persistenceProvider protected property

protected IPersistenceProvider m_persistenceProvider
return IPersistenceProvider

m_smallImages protected property

protected ImageCollection m_smallImages
return ImageCollection

m_strAbbr protected property

protected string m_strAbbr
return string

m_strLabel protected property

protected string m_strLabel
return string

m_stringTable protected property

protected StringTable m_stringTable
return StringTable

m_weight protected property

protected ObjectWeight m_weight
return ObjectWeight

m_widthHasBeenSetByDataTree protected property

protected bool m_widthHasBeenSetByDataTree
return bool