C# 클래스 SIL.FieldWorks.Common.Framework.DetailControls.DataTree

A DataTree displays a tree diagram alongside a collection of controls. Each control is represented as a Slice, and typically contains and actual .NET control of some sort (most often, in FieldWorks, a subclass of SIL.FieldWorks.Common.Framework.RootSite). The controls are arranged vertically, one under the other, and the tree diagram is aligned with the controls. The creator of a DataTree is responsible to add items to it, though DataTree provide helpful methods for adding certain commonly useful controls. Additional items may be added as a result of user actions, typically expanding and contracting nodes. Much of the standard behavior of the DataTree is achieved by delegating it to virtual methods of Slice, which can be subclassed to specialize this behavior. Review JohnT: do I have the right superclass? This choice allows the window to have a scroll bar and to contain other controls, and seems to be the intended superclass for stuff developed by application programmers.
상속: System.Windows.Forms.UserControl, IFWDisposable, IVwNotifyChange, IxCoreColleague
파일 보기 프로젝트 열기: sillsdev/FieldWorks 1 사용 예제들

보호된 프로퍼티들

프로퍼티 타입 설명
m_autoCustomFieldNodesDocRoot XmlNode
m_autoCustomFieldNodesDocument XmlDocument
m_cDeepSuspendLayoutCount int
m_cache FdoCache
m_currentSlice Slice
m_descendant ICmObject
m_dxpLastRightPaneWidth int
m_fHasSplitter bool
m_fShowAllFields bool
m_layoutChoiceField string
m_layoutInventory Inventory
m_layoutState LayoutStates
m_listName string
m_mdc IFwMetaDataCache
m_mediator Mediator
m_monitoredProps int>>.HashSet
m_partInventory Inventory
m_persistenceProvider IPersistenceProvider
m_rch IRecordChangeHandler
m_rlu IRecordListUpdater
m_root ICmObject
m_rootLayoutName string
m_sliceFilter SliceFilter
m_sliceSplitPositionBase int
m_smallImages ImageCollection
m_stringTable StringTable
m_styleSheet FwStyleSheet
m_tooltip ToolTip
m_traceSwitch TraceSwitch

Private Properties

프로퍼티 타입 설명
AboutToCreateField void
AddAtomicNode NodeTestResult
AddAttribute void
AddSeqNode NodeTestResult
AddSimpleNode NodeTestResult
AdjustSliceSplitPosition void
CheckCustomFieldsSibling bool
ChooseNewOwner IRnGenericRec
ClearCurrentObjectFlids void
ConvertHvoListToString string
CreateAndAssociateNotebookRecord IRnGenericRec
CreateSlices void
DescendantForSlice ICmObject
DisplayJumpToToolAndFilterAnthroItem bool
DoPostponedFocusSlice bool
EnsureCustomFields void
EnsureValidIndexForReusedSlice void
EquivalentKeys bool
FieldAt Slice
FixRecordList void
FocusFirstPossibleSlice bool
ForceSliceIndex void
GetFlidFromNode int
GetFlidIfPossible int
GetGuidForJumpToTool Guid
GetLabel string
GetLabelAbbr string
GetMatchingSlice Slice
GetTemplateForObjLayout XmlNode
GotoNextSliceAfterIndex bool
HandlePaintLinesBetweenSlices void
HandleShowHiddenFields void
HeightOfSliceOrNullAt int
InsertSlice void
InsertSliceAndRegisterWithContextHelp void
InstallSlice void
InterpretLabelAttribute string
IsChildSlice bool
MakeSliceRealAt void
MakeSliceVisible void
MonoIgnoreUpdates void
MonoResumeUpdates void
NextFieldAtIndent int
NotebookRecordRefersToThisText bool
OnJumpToToolAndFilterAnthroItem void
OnShowContextMenu void
PersistPreferences void
PrevFieldAtIndent int
ProcessPartChildren NodeTestResult
ProcessPartRefNode NodeTestResult
ProcessSubpartNode NodeTestResult
RawSetSlice void
RefreshList void
RemoveDisposedSlice void
RemoveSlice void
RemoveSlice void
RemoveSlice void
RemoveSliceAt void
ResetRecordListUpdater void
ResetTabIndices void
RestorePreferences void
SameSourceObject bool
SelectFirstPossibleSlice void
SetCurrentObjectFlids void
SetCurrentSliceNewFromObject void
SetCurrentSlicePropertyNames void
SetNodeWeight void
SetTabIndex void
SetToolTip void
SetupContents int[]

공개 메소드들

메소드 설명
ApplyChildren ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap ) : int

Calls ApplyLayout for each child of the argument node.

ApplyLayout ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap ) : int

Apply a layout to an object, producing the specified slices.

BeginSequentialBlock ( ) : void

Begin a block of code which, even though it is not itself a message handler, should not be interrupted by other messages that need to be sequential. This may be called from within a message handler. EndSequentialBlock must be called without fail (use try...finally) at the end of the block that needs protection.

CheckDisposed ( ) : void

Throw if the IsDisposed property is true

ContainingXWindow ( ) : IxWindow
CreateSlicesFor ( ICmObject obj, Slice parentSlice, string layoutName, string layoutChoiceField, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap, XmlNode unifyWith ) : int

Create slices for the specified object by finding a relevant template in the spec.

DataTree ( ) : System
DeepResumeLayout ( ) : void

Resume the layout of this window and its immediate children. This version also maintains a count, and does not resume until the number of resume calls balances the number of suspend calls.

DeepSuspendLayout ( ) : void

Suspend the layout of this window and its immediate children. This version also maintains a count, and does not resume until the number of resume calls balances the number of suspend calls.

EndSequentialBlock ( ) : void

See BeginSequentialBlock.

FieldOrDummyAt ( int i ) : Slice

This version expands nulls but not dummy slices. Dummy slices should know their indent.

FindMatchingSlices ( ICmObject obj, object key, Type type, Slice &newCopy ) : Slice

Try to find a slice that matches the information gleaned from another slice, probably one that has been disposed since the information was obtained. If there's a following slice that matches except for the object id, return that slice as well.

This is used by DTMenuHandler.OnDataTreeCopy() whenever creating the copy causes the data tree to be rebuilt. See FWR-2123 for motivation.

GetClassId ( IFwMetaDataCache mdc, string stClassName ) : int

A rather inefficient way of finding the ID of the class that has a particular name. IFwMetaDataCache should be enhanced to provide this efficiently.

GetMessageTargets ( ) : IxCoreColleague[]
GetMinFieldHeight ( ) : int
GetSliceContextMenu ( Slice slice, bool fHotLinkOnly ) : ContextMenu

Get the context menu that would be displayed for a right click on the slice.

GotoFirstSlice ( ) : void

Moves the focus to the first visible slice in the tree

GotoNextSlice ( ) : void

Moves the focus to the next visible slice in the tree

GotoPreviousSliceBeforeIndex ( int index ) : bool

Moves the focus to the previous visible slice in the tree

IndexOfSliceAtY ( int yp ) : int

Return the index of the slice which contains the given y position.

Init ( Mediator mediator, XmlNode configurationParameters ) : void
Initialize ( FdoCache cache, bool fHasSplitter, Inventory layouts, Inventory parts ) : void

This is the initialize that is normally used. Others may not be extensively tested.

MakeEditorAt ( int i ) : Slice
MakeGhostSlice ( ArrayList path, XmlNode node, ObjSeqHashMap reuseMap, ICmObject obj, Slice parentSlice, int flidEmptyProp, XmlNode caller, int indent, int &insertPosition ) : void
MonitorProp ( int hvo, int flid ) : void

Set up monitoring, so that a change to this property will trigger reconstructing the current set of slices.

OnDelayedRefreshList ( object sentValue ) : void

Respond to a broadcast message. This is needed to fix LT-9713 and LT-9714.

OnDemoteItemInVector ( object argument ) : bool

Implement the "Demote..." command.

OnDisplayDemoteItemInVector ( object commandObject, UIItemDisplayProperties &display ) : bool

See if it makes sense to provide the "Demote..." command.

OnDisplayInsertItemViaBackrefVector ( object commandObject, UIItemDisplayProperties &display ) : bool

Influence the display of a particular command by giving an opinion on whether we are prepared to handle the corresponding "InsertItemViaBackrefVector" message.

OnDisplayJumpToLexiconEditFilterAnthroItems ( object commandObject, UIItemDisplayProperties &display ) : bool

Enable/Disable menu items for jumping to the Lexicon Edit tool and applying a column filter on the Anthropology Category the user has right clicked on.

OnDisplayJumpToNotebookEditFilterAnthroItems ( object commandObject, UIItemDisplayProperties &display ) : bool

Enable/Disable menu items for jumping to the Notebook Edit tool and applying a column filter on the Anthropology Category the user has right clicked on.

OnDisplayJumpToTool ( object commandObject, UIItemDisplayProperties &display ) : bool

Enable menu items for jumping to the concordance (or lexiconEdit) tool.

OnDisplayShowHiddenFields ( object commandObject, UIItemDisplayProperties &display ) : bool

This property may be turned on and off any time a DataTree is an active colleague.

OnFocusFirstPossibleSlice ( object arg ) : void

Called by reflection when a new object is inserted into the list. A change of current object should not ALWAYS make the data tree take focus, since that can be annoying when editing in the browse view (cf LT-8211). But we do want it for a new top-level list object (LT-8564). Also useful when we refresh the list after a major change to make sure something gets focused.

OnInsertItemViaBackrefVector ( object argument ) : bool

This is triggered by any command whose message attribute is "InsertItemViaBackrefVector"

OnJumpToLexiconEditFilterAnthroItems ( object commandObject ) : bool

Handle jumping to the lexiconEdit tool and filtering on the Anthropology Category the user has right clicked on.

OnJumpToNotebookEditFilterAnthroItems ( object commandObject ) : bool

Handle jumping to the NotebookEdit tool and filtering on the Anthropology Category the user has right clicked on.

OnJumpToTool ( object commandObject ) : bool

Handle enabled menu items for jumping to another tool, or another location in the current tool.

OnPropertyChanged ( string name ) : void

Receives the broadcast message "PropertyChanged"

OnReadyToSetCurrentSlice ( object parameter ) : bool

Process the message to allow setting/focusing CurrentSlice.

PrepareToGoAway ( ) : bool
PropChanged ( int hvo, int tag, int ivMin, int cvIns, int cvDel ) : void
RefreshDisplay ( ) : bool

This method is the implementation of IRefreshableRoot, which FwXWindow calls on all children to implement Refresh. The DataTree needs to reconstruct the list of controls, and returns true to indicate that children need not be refreshed.

RefreshList ( bool differentObject ) : void

Refresh your contents. We try to re-use as many slices as possible, both to improve performance, and so as to preserve expansion state as much as possible.

If the DataTree's slices call this method, they should use 'false', or they will be disposed when this call returns to them.

Reset ( ) : void
ScrollCurrentAndIfPossibleSectionIntoView ( ) : void

For sure make the CurrentSlice if any visible. If possible also make the prececing summary slice visible. Then make as many as possible of the slices which are children of that summary visible.

SetContextMenuHandler ( SliceShowMenuRequestHandler handler ) : void

Set the handler which will be invoked when the user right-clicks on the TreeNode portion of a slice, or for some other reason we need the context menu.

ShowObject ( ICmObject root, string layoutName, string layoutChoiceField, ICmObject descendant, bool suppressFocusChange ) : void

Shows the specified object and makes the slices for the descendant object visible.

m_rch_Disposed ( object sender, EventArgs e ) : void
slice_SplitterMoved ( object sender, SplitterEventArgs e ) : void

보호된 메소드들

메소드 설명
ApplyLayout ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap, bool isTestOnly, NodeTestResult &testResult ) : int

This is the guts of ApplyLayout, but it has extra arguments to allow it to be used both to actually produce slices, and just to query whether any slices will be produced.

Dispose ( bool disposing ) : void

Clean up any resources being used.

HandleLayout1 ( bool fFull, Rectangle clipRect ) : int

Used both by main layout routine and also by OnPaint to make sure all visible slices are real. For full layout, clipRect is meaningless.

InitializeBasic ( FdoCache cache, bool fHasSplitter ) : void

initialization for when you don't actually know what you want to show yet (and aren't going to use XML)

InitializeComponent ( ) : void

InitializeComponentBasic ( ) : void
InsertSliceRange ( int insertPosition, Set slices ) : void
OnControlAdded ( ControlEventArgs e ) : void
OnControlRemoved ( ControlEventArgs e ) : void
OnLayout ( LayoutEventArgs levent ) : void
OnPaint ( PaintEventArgs e ) : void
OnSizeChanged ( EventArgs e ) : void
SetDefaultCurrentSlice ( bool suppressFocusChange ) : void

subclasses override for setting a default current slice.

TraceInfoLine ( string s ) : void
TraceVerbose ( string s ) : void
TraceVerboseLine ( string s ) : void

비공개 메소드들

메소드 설명
AboutToCreateField ( ) : void

Intended to be called by Datatree.FieldAt just before it creates a new slice.

AddAtomicNode ( ArrayList path, XmlNode node, ObjSeqHashMap reuseMap, int flid, ICmObject obj, Slice parentSlice, int indent, int &insertPosition, bool fTestOnly, string layoutName, bool fVisIfData, XmlNode caller ) : NodeTestResult
AddAttribute ( XmlNode node, string name, string value ) : void
AddSeqNode ( ArrayList path, XmlNode node, ObjSeqHashMap reuseMap, int flid, ICmObject obj, Slice parentSlice, int indent, int &insertPosition, bool fTestOnly, string layoutName, bool fVisIfData, XmlNode caller ) : NodeTestResult
AddSimpleNode ( ArrayList path, XmlNode node, ObjSeqHashMap reuseMap, string editor, int flid, ICmObject obj, Slice parentSlice, int indent, int &insPos, bool fTestOnly, bool fVisIfData, XmlNode caller ) : NodeTestResult

Tests to see if it should add the field (IfData), then adds the field.

AdjustSliceSplitPosition ( Slice otherSlice ) : void
CheckCustomFieldsSibling ( XmlNode sibling, string target ) : bool
ChooseNewOwner ( IRnGenericRec records, string sTitle ) : IRnGenericRec
ClearCurrentObjectFlids ( ) : void
ConvertHvoListToString ( List hvoList ) : string

Converts a List of integers into a comma-delimited string of numbers.

CreateAndAssociateNotebookRecord ( ) : IRnGenericRec
CreateSlices ( bool differentObject ) : void

Create slices appropriate for current root object and layout, reusing any existing slices, and clearing out any that remain unused. If it is for a different object, reuse is more limited.

DescendantForSlice ( Slice slice ) : ICmObject
DisplayJumpToToolAndFilterAnthroItem ( UIItemDisplayProperties display, object commandObject, string cmd ) : bool
DoPostponedFocusSlice ( object parameter ) : bool
EnsureCustomFields ( ICmObject obj, XmlNode template, XmlNode insertAfter ) : void

Append to the part refs of template a suitable one for each custom field of the class of obj.

EnsureValidIndexForReusedSlice ( Slice slice, int insertPosition ) : void

Ensure that the reused slice is in the re-generated position. if not, it may have shifted position as a result of changing its sequence order in the database (e.g. via OnMoveUpObjectInSequence).

EquivalentKeys ( object newKey, object oldKey, bool fCheckInts ) : bool
FieldAt ( int i ) : Slice
FixRecordList ( ) : void

Fixes the record list to cope with operations in detail pane that radically changes the current record.

FocusFirstPossibleSlice ( ) : bool
ForceSliceIndex ( Slice slice, int index ) : void

For some strange reason, the first Controls.SetChildIndex doesn't always put it in the specified index. The second time seems to work okay though.

GetFlidFromNode ( XmlNode node, ICmObject obj ) : int
GetFlidIfPossible ( int clid, string fieldName, IFwMetaDataCacheManaged mdc ) : int

This seems a bit clumsy, but the metadata cache now throws an exception if the class id/field name pair isn't valid for GetFieldId2(). Limiting this to only one throw per class/field pair seems a reasonable compromise. To avoid all throws would require duplicating much of the metadata cache locally.

GetGuidForJumpToTool ( Command cmd, bool forEnableOnly, string &tool ) : Guid

Common logic shared between OnDisplayJumpToTool and OnJumpToTool. forEnableOnly is true when called from OnDisplayJumpToTool.

GetLabel ( XmlNode caller, XmlNode node, ICmObject obj, string attr ) : string

Get a label-like attribute for the slice.

GetLabelAbbr ( XmlNode caller, XmlNode node, ICmObject obj, string label, string attr ) : string

Find a suitable abbreviation for the given label.

GetMatchingSlice ( ArrayList path, ObjSeqHashMap reuseMap ) : Slice

Look for a reusable slice that matches the current path. If found, remove from map and return; otherwise, return null.

GetTemplateForObjLayout ( ICmObject obj, string layoutName, string layoutChoiceField ) : XmlNode

Get the template that should be used to display the specified object using the specified layout.

GotoNextSliceAfterIndex ( int index ) : bool
HandlePaintLinesBetweenSlices ( PaintEventArgs pea ) : void
HandleShowHiddenFields ( bool newShowValue ) : void
HeightOfSliceOrNullAt ( int iSlice ) : int

Answer the height that the slice at index ind is considered to have. If it is null return the default size.

InsertSlice ( int index, Slice slice ) : void
InsertSliceAndRegisterWithContextHelp ( int index, Slice slice ) : void
InstallSlice ( Slice slice, int index ) : void
InterpretLabelAttribute ( string label, ICmObject obj ) : string

This parses the label attribute in order to return a label from a specified field name. Currently only recognizes "$owner" to recognize the owning object, this could be expanded to include $obj or other references.

IsChildSlice ( Slice first, Slice second ) : bool

Answer true if the second slice is a 'child' of the first (common key)

MakeSliceRealAt ( int i ) : void
MakeSliceVisible ( Slice tci ) : void

Make a slice visible, either because it needs to be drawn, or because it needs to be focused.

MonoIgnoreUpdates ( ) : void
MonoResumeUpdates ( ) : void
NextFieldAtIndent ( int nInd, int iStart ) : int
NotebookRecordRefersToThisText ( IText text, IRnGenericRec &referringRecord ) : bool
OnJumpToToolAndFilterAnthroItem ( string linkSetupInfo, string toolToJumpTo ) : void
OnShowContextMenu ( object sender, TreeNodeEventArgs e ) : void
PersistPreferences ( ) : void
PrevFieldAtIndent ( int nInd, int iStart ) : int
ProcessPartChildren ( XmlNode part, ArrayList path, ObjSeqHashMap reuseMap, ICmObject obj, Slice parentSlice, int indent, int &insPos, bool isTestOnly, string parameter, bool fVisIfData, XmlNode caller ) : NodeTestResult
ProcessPartRefNode ( XmlNode partRef, ArrayList path, ObjSeqHashMap reuseMap, ICmObject obj, Slice parentSlice, int indent, int &insPos, bool isTestOnly ) : NodeTestResult

Process a top-level child of a layout (other than a comment). Currently these are part nodes (with ref= indicating the part to use) and sublayout nodes.

ProcessSubpartNode ( XmlNode node, ArrayList path, ObjSeqHashMap reuseMap, ICmObject obj, Slice parentSlice, int indent, int &insertPosition, bool fTestOnly, string parameter, bool fVisIfData, XmlNode caller ) : NodeTestResult

Handle one (non-comment) child node of a template (or other node) being used to create slices. Update insertPosition to indicate how many were added (it also specifies where to add). If fTestOnly is true, do not update insertPosition, just return true if any slices would be created. Note that this method is recursive indirectly through ProcessPartChildren().

RawSetSlice ( int index, Slice slice ) : void

Use with care...if it's a real slice, or a real one being replaced, there are other things to do like adding to or removing from container. This is mainly for messing with dummy slices.

RefreshList ( int hvo, int tag ) : void

Go through each slice until we find one that needs to update its display. Helpful for reusable slices that don't get updated through RefreshList();

RemoveDisposedSlice ( Slice gonner ) : void

this should ONLY be called from slice.Dispose(). It makes sure that when a slice is removed by disposing it directly it gets removed from the Slices collection.

RemoveSlice ( Slice gonner ) : void

Removes a slice but does NOT clean up tooltips; caller should do that.

RemoveSlice ( Slice gonner, int index ) : void
RemoveSlice ( Slice gonner, int index, bool fixToolTips ) : void
RemoveSliceAt ( int index ) : void
ResetRecordListUpdater ( ) : void
ResetTabIndices ( int startingIndex ) : void

Resets the TabIndex for all slices that are located at, or above, the startingIndex.

RestorePreferences ( ) : void
SameSourceObject ( Slice first, Slice second ) : bool

Answer true if the two slices are displaying fields of the same object. Review: should we require more strictly, that the full path of objects in their keys are the same?

SelectFirstPossibleSlice ( List closeSlices ) : void

Find the first slice in the list which is (still) one of your current, valid slices and which is able to take focus, and give it the focus.

SetCurrentObjectFlids ( int hvoOwner, int flidOwning ) : void

Build a list of flids needed to expand to the slice displaying hvoOwner.

Owning Flids may not be enough. We may need reference flids as well. This is tricky, since this is called where the slice itself isn't known.

SetCurrentSliceNewFromObject ( ICmObject obj ) : void
SetCurrentSlicePropertyNames ( ) : void
SetNodeWeight ( XmlNode node, Slice slice ) : void
SetTabIndex ( int index ) : void
SetToolTip ( Slice slice ) : void
SetupContents ( int flid, ICmObject obj ) : int[]

메소드 상세

ApplyChildren() 공개 메소드

Calls ApplyLayout for each child of the argument node.
public ApplyChildren ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap ) : int
obj ICmObject The obj.
parentSlice Slice The parent slice.
template XmlNode The template.
indent int The indent.
insertPosition int The insert position.
path ArrayList The path.
reuseMap ObjSeqHashMap The reuse map.
리턴 int

ApplyLayout() 공개 메소드

Apply a layout to an object, producing the specified slices.
public ApplyLayout ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap ) : int
obj ICmObject The object we want a detai view of
parentSlice Slice The parent slice.
template XmlNode the 'layout' element
indent int How deeply indented the tree is at this point.
insertPosition int index in slices where we should insert nodes
path ArrayList sequence of nodes and HVOs inside which this is nested
reuseMap ObjSeqHashMap map of key/slice combinations from a DataTree being refreshed. Exact matches may be /// reused, and also, the expansion state of exact matches is preserved.
리턴 int

ApplyLayout() 보호된 메소드

This is the guts of ApplyLayout, but it has extra arguments to allow it to be used both to actually produce slices, and just to query whether any slices will be produced.
protected ApplyLayout ( ICmObject obj, Slice parentSlice, XmlNode template, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap, bool isTestOnly, NodeTestResult &testResult ) : int
obj ICmObject The obj.
parentSlice Slice The parent slice.
template XmlNode The template.
indent int The indent.
insertPosition int The insert position.
path ArrayList The path.
reuseMap ObjSeqHashMap The reuse map.
isTestOnly bool if set to true [is test only].
testResult NodeTestResult The test result.
리턴 int

BeginSequentialBlock() 공개 메소드

Begin a block of code which, even though it is not itself a message handler, should not be interrupted by other messages that need to be sequential. This may be called from within a message handler. EndSequentialBlock must be called without fail (use try...finally) at the end of the block that needs protection.
public BeginSequentialBlock ( ) : void
리턴 void

CheckDisposed() 공개 메소드

Throw if the IsDisposed property is true
public CheckDisposed ( ) : void
리턴 void

ContainingXWindow() 공개 메소드

public ContainingXWindow ( ) : IxWindow
리턴 IxWindow

CreateSlicesFor() 공개 메소드

Create slices for the specified object by finding a relevant template in the spec.
public CreateSlicesFor ( ICmObject obj, Slice parentSlice, string layoutName, string layoutChoiceField, int indent, int insertPosition, ArrayList path, ObjSeqHashMap reuseMap, XmlNode unifyWith ) : int
obj ICmObject The object to make slices for.
parentSlice Slice The parent slice.
layoutName string Name of the layout.
layoutChoiceField string The layout choice field.
indent int The indent.
insertPosition int The insert position.
path ArrayList sequence of nodes and HVOs inside which this is nested
reuseMap ObjSeqHashMap map of key/slice combinations from a DataTree being refreshed. Exact matches may be /// reused, and also, the expansion state of exact matches is preserved.
unifyWith XmlNode If not null, this is a node to be 'unified' with the one looked up /// using the layout name.
리턴 int

DataTree() 공개 메소드

public DataTree ( ) : System
리턴 System

DeepResumeLayout() 공개 메소드

Resume the layout of this window and its immediate children. This version also maintains a count, and does not resume until the number of resume calls balances the number of suspend calls.
public DeepResumeLayout ( ) : void
리턴 void

DeepSuspendLayout() 공개 메소드

Suspend the layout of this window and its immediate children. This version also maintains a count, and does not resume until the number of resume calls balances the number of suspend calls.
public DeepSuspendLayout ( ) : void
리턴 void

Dispose() 보호된 메소드

Clean up any resources being used.
protected Dispose ( bool disposing ) : void
disposing bool true to release both managed and unmanaged /// resources; false to release only unmanaged resources. ///
리턴 void

EndSequentialBlock() 공개 메소드

See BeginSequentialBlock.
public EndSequentialBlock ( ) : void
리턴 void

FieldOrDummyAt() 공개 메소드

This version expands nulls but not dummy slices. Dummy slices should know their indent.
public FieldOrDummyAt ( int i ) : Slice
i int
리턴 Slice

FindMatchingSlices() 공개 메소드

Try to find a slice that matches the information gleaned from another slice, probably one that has been disposed since the information was obtained. If there's a following slice that matches except for the object id, return that slice as well.
This is used by DTMenuHandler.OnDataTreeCopy() whenever creating the copy causes the data tree to be rebuilt. See FWR-2123 for motivation.
public FindMatchingSlices ( ICmObject obj, object key, Type type, Slice &newCopy ) : Slice
obj ICmObject
key object
type Type
newCopy Slice
리턴 Slice

GetClassId() 공개 정적인 메소드

A rather inefficient way of finding the ID of the class that has a particular name. IFwMetaDataCache should be enhanced to provide this efficiently.
public static GetClassId ( IFwMetaDataCache mdc, string stClassName ) : int
mdc IFwMetaDataCache
stClassName string
리턴 int

GetMessageTargets() 공개 메소드

public GetMessageTargets ( ) : IxCoreColleague[]
리턴 IxCoreColleague[]

GetMinFieldHeight() 공개 메소드

public GetMinFieldHeight ( ) : int
리턴 int

GetSliceContextMenu() 공개 메소드

Get the context menu that would be displayed for a right click on the slice.
public GetSliceContextMenu ( Slice slice, bool fHotLinkOnly ) : ContextMenu
slice Slice The slice.
fHotLinkOnly bool if set to true [f hot link only].
리턴 ContextMenu

GotoFirstSlice() 공개 메소드

Moves the focus to the first visible slice in the tree
public GotoFirstSlice ( ) : void
리턴 void

GotoNextSlice() 공개 메소드

Moves the focus to the next visible slice in the tree
public GotoNextSlice ( ) : void
리턴 void

GotoPreviousSliceBeforeIndex() 공개 메소드

Moves the focus to the previous visible slice in the tree
public GotoPreviousSliceBeforeIndex ( int index ) : bool
index int
리턴 bool

HandleLayout1() 보호된 메소드

Used both by main layout routine and also by OnPaint to make sure all visible slices are real. For full layout, clipRect is meaningless.
protected HandleLayout1 ( bool fFull, Rectangle clipRect ) : int
fFull bool if set to true [f full].
clipRect Rectangle The clip rect.
리턴 int

IndexOfSliceAtY() 공개 메소드

Return the index of the slice which contains the given y position.
public IndexOfSliceAtY ( int yp ) : int
yp int Measured from top of whole area scrolled over.
리턴 int

Init() 공개 메소드

public Init ( Mediator mediator, XmlNode configurationParameters ) : void
mediator Mediator
configurationParameters XmlNode
리턴 void

Initialize() 공개 메소드

This is the initialize that is normally used. Others may not be extensively tested.
public Initialize ( FdoCache cache, bool fHasSplitter, Inventory layouts, Inventory parts ) : void
cache FdoCache The cache.
fHasSplitter bool if set to true [f has splitter].
layouts Inventory The layouts.
parts Inventory The parts.
리턴 void

InitializeBasic() 보호된 메소드

initialization for when you don't actually know what you want to show yet (and aren't going to use XML)
protected InitializeBasic ( FdoCache cache, bool fHasSplitter ) : void
cache FdoCache
fHasSplitter bool
리턴 void

InitializeComponent() 보호된 메소드

protected InitializeComponent ( ) : void
리턴 void

InitializeComponentBasic() 보호된 메소드

protected InitializeComponentBasic ( ) : void
리턴 void

InsertSliceRange() 보호된 메소드

protected InsertSliceRange ( int insertPosition, Set slices ) : void
insertPosition int
slices Set
리턴 void

MakeEditorAt() 공개 메소드

public MakeEditorAt ( int i ) : Slice
i int
리턴 Slice

MakeGhostSlice() 공개 메소드

public MakeGhostSlice ( ArrayList path, XmlNode node, ObjSeqHashMap reuseMap, ICmObject obj, Slice parentSlice, int flidEmptyProp, XmlNode caller, int indent, int &insertPosition ) : void
path ArrayList
node XmlNode
reuseMap ObjSeqHashMap
obj ICmObject
parentSlice Slice
flidEmptyProp int
caller XmlNode
indent int
insertPosition int
리턴 void

MonitorProp() 공개 메소드

Set up monitoring, so that a change to this property will trigger reconstructing the current set of slices.
public MonitorProp ( int hvo, int flid ) : void
hvo int
flid int
리턴 void

OnControlAdded() 보호된 메소드

protected OnControlAdded ( ControlEventArgs e ) : void
e ControlEventArgs
리턴 void

OnControlRemoved() 보호된 메소드

protected OnControlRemoved ( ControlEventArgs e ) : void
e ControlEventArgs
리턴 void

OnDelayedRefreshList() 공개 메소드

Respond to a broadcast message. This is needed to fix LT-9713 and LT-9714.
public OnDelayedRefreshList ( object sentValue ) : void
sentValue object
리턴 void

OnDemoteItemInVector() 공개 메소드

Implement the "Demote..." command.
public OnDemoteItemInVector ( object argument ) : bool
argument object
리턴 bool

OnDisplayDemoteItemInVector() 공개 메소드

See if it makes sense to provide the "Demote..." command.
public OnDisplayDemoteItemInVector ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnDisplayInsertItemViaBackrefVector() 공개 메소드

Influence the display of a particular command by giving an opinion on whether we are prepared to handle the corresponding "InsertItemViaBackrefVector" message.
public OnDisplayInsertItemViaBackrefVector ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnDisplayJumpToLexiconEditFilterAnthroItems() 공개 메소드

Enable/Disable menu items for jumping to the Lexicon Edit tool and applying a column filter on the Anthropology Category the user has right clicked on.
public OnDisplayJumpToLexiconEditFilterAnthroItems ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnDisplayJumpToNotebookEditFilterAnthroItems() 공개 메소드

Enable/Disable menu items for jumping to the Notebook Edit tool and applying a column filter on the Anthropology Category the user has right clicked on.
public OnDisplayJumpToNotebookEditFilterAnthroItems ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnDisplayJumpToTool() 공개 메소드

Enable menu items for jumping to the concordance (or lexiconEdit) tool.
public OnDisplayJumpToTool ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnDisplayShowHiddenFields() 공개 메소드

This property may be turned on and off any time a DataTree is an active colleague.
public OnDisplayShowHiddenFields ( object commandObject, UIItemDisplayProperties &display ) : bool
commandObject object
display UIItemDisplayProperties
리턴 bool

OnFocusFirstPossibleSlice() 공개 메소드

Called by reflection when a new object is inserted into the list. A change of current object should not ALWAYS make the data tree take focus, since that can be annoying when editing in the browse view (cf LT-8211). But we do want it for a new top-level list object (LT-8564). Also useful when we refresh the list after a major change to make sure something gets focused.
public OnFocusFirstPossibleSlice ( object arg ) : void
arg object
리턴 void

OnInsertItemViaBackrefVector() 공개 메소드

This is triggered by any command whose message attribute is "InsertItemViaBackrefVector"
public OnInsertItemViaBackrefVector ( object argument ) : bool
argument object
리턴 bool

OnJumpToLexiconEditFilterAnthroItems() 공개 메소드

Handle jumping to the lexiconEdit tool and filtering on the Anthropology Category the user has right clicked on.
public OnJumpToLexiconEditFilterAnthroItems ( object commandObject ) : bool
commandObject object
리턴 bool

OnJumpToNotebookEditFilterAnthroItems() 공개 메소드

Handle jumping to the NotebookEdit tool and filtering on the Anthropology Category the user has right clicked on.
public OnJumpToNotebookEditFilterAnthroItems ( object commandObject ) : bool
commandObject object
리턴 bool

OnJumpToTool() 공개 메소드

Handle enabled menu items for jumping to another tool, or another location in the current tool.
public OnJumpToTool ( object commandObject ) : bool
commandObject object
리턴 bool

OnLayout() 보호된 메소드

protected OnLayout ( LayoutEventArgs levent ) : void
levent LayoutEventArgs
리턴 void

OnPaint() 보호된 메소드

protected OnPaint ( PaintEventArgs e ) : void
e PaintEventArgs
리턴 void

OnPropertyChanged() 공개 메소드

Receives the broadcast message "PropertyChanged"
public OnPropertyChanged ( string name ) : void
name string
리턴 void

OnReadyToSetCurrentSlice() 공개 메소드

Process the message to allow setting/focusing CurrentSlice.
public OnReadyToSetCurrentSlice ( object parameter ) : bool
parameter object The parameter.
리턴 bool

OnSizeChanged() 보호된 메소드

protected OnSizeChanged ( EventArgs e ) : void
e EventArgs
리턴 void

PrepareToGoAway() 공개 메소드

public PrepareToGoAway ( ) : bool
리턴 bool

PropChanged() 공개 메소드

public PropChanged ( int hvo, int tag, int ivMin, int cvIns, int cvDel ) : void
hvo int
tag int
ivMin int
cvIns int
cvDel int
리턴 void

RefreshDisplay() 공개 메소드

This method is the implementation of IRefreshableRoot, which FwXWindow calls on all children to implement Refresh. The DataTree needs to reconstruct the list of controls, and returns true to indicate that children need not be refreshed.
public RefreshDisplay ( ) : bool
리턴 bool

RefreshList() 공개 메소드

Refresh your contents. We try to re-use as many slices as possible, both to improve performance, and so as to preserve expansion state as much as possible.
If the DataTree's slices call this method, they should use 'false', or they will be disposed when this call returns to them.
public RefreshList ( bool differentObject ) : void
differentObject bool /// True to not recycle any slices. /// False to try and recycle them. ///
리턴 void

Reset() 공개 메소드

public Reset ( ) : void
리턴 void

ScrollCurrentAndIfPossibleSectionIntoView() 공개 메소드

For sure make the CurrentSlice if any visible. If possible also make the prececing summary slice visible. Then make as many as possible of the slices which are children of that summary visible.
public ScrollCurrentAndIfPossibleSectionIntoView ( ) : void
리턴 void

SetContextMenuHandler() 공개 메소드

Set the handler which will be invoked when the user right-clicks on the TreeNode portion of a slice, or for some other reason we need the context menu.
public SetContextMenuHandler ( SliceShowMenuRequestHandler handler ) : void
handler SliceShowMenuRequestHandler
리턴 void

SetDefaultCurrentSlice() 보호된 메소드

subclasses override for setting a default current slice.
protected SetDefaultCurrentSlice ( bool suppressFocusChange ) : void
suppressFocusChange bool
리턴 void

ShowObject() 공개 메소드

Shows the specified object and makes the slices for the descendant object visible.
public ShowObject ( ICmObject root, string layoutName, string layoutChoiceField, ICmObject descendant, bool suppressFocusChange ) : void
root ICmObject The root.
layoutName string Name of the layout.
layoutChoiceField string The layout choice field.
descendant ICmObject The descendant.
suppressFocusChange bool if set to true focus changes will be suppressed.
리턴 void

TraceInfoLine() 보호된 메소드

protected TraceInfoLine ( string s ) : void
s string
리턴 void

TraceVerbose() 보호된 메소드

protected TraceVerbose ( string s ) : void
s string
리턴 void

TraceVerboseLine() 보호된 메소드

protected TraceVerboseLine ( string s ) : void
s string
리턴 void

m_rch_Disposed() 공개 메소드

public m_rch_Disposed ( object sender, EventArgs e ) : void
sender object
e EventArgs
리턴 void

slice_SplitterMoved() 공개 메소드

public slice_SplitterMoved ( object sender, SplitterEventArgs e ) : void
sender object
e SplitterEventArgs
리턴 void

프로퍼티 상세

m_autoCustomFieldNodesDocRoot 보호되어 있는 프로퍼티

protected XmlNode m_autoCustomFieldNodesDocRoot
리턴 XmlNode

m_autoCustomFieldNodesDocument 보호되어 있는 프로퍼티

This XML document object holds the nodes that we create on-the-fly to represent custom fields.
protected XmlDocument m_autoCustomFieldNodesDocument
리턴 XmlDocument

m_cDeepSuspendLayoutCount 보호되어 있는 프로퍼티

protected int m_cDeepSuspendLayoutCount
리턴 int

m_cache 보호되어 있는 프로퍼티

protected FdoCache m_cache
리턴 FdoCache

m_currentSlice 보호되어 있는 프로퍼티

protected Slice m_currentSlice
리턴 Slice

m_descendant 보호되어 있는 프로퍼티

the descendent object that is being displayed
protected ICmObject m_descendant
리턴 ICmObject

m_dxpLastRightPaneWidth 보호되어 있는 프로퍼티

protected int m_dxpLastRightPaneWidth
리턴 int

m_fHasSplitter 보호되어 있는 프로퍼티

protected bool m_fHasSplitter
리턴 bool

m_fShowAllFields 보호되어 있는 프로퍼티

protected bool m_fShowAllFields
리턴 bool

m_layoutChoiceField 보호되어 있는 프로퍼티

protected string m_layoutChoiceField
리턴 string

m_layoutInventory 보호되어 있는 프로퍼티

protected Inventory m_layoutInventory
리턴 Inventory

m_layoutState 보호되어 있는 프로퍼티

protected LayoutStates m_layoutState
리턴 LayoutStates

m_listName 보호되어 있는 프로퍼티

protected string m_listName
리턴 string

m_mdc 보호되어 있는 프로퍼티

protected IFwMetaDataCache m_mdc
리턴 IFwMetaDataCache

m_mediator 보호되어 있는 프로퍼티

protected Mediator m_mediator
리턴 Mediator

m_monitoredProps 보호되어 있는 프로퍼티

Set of KeyValuePair objects (hvo, flid), properties for which we must refresh if altered.
protected HashSet> m_monitoredProps
리턴 int>>.HashSet

m_partInventory 보호되어 있는 프로퍼티

protected Inventory m_partInventory
리턴 Inventory

m_persistenceProvider 보호되어 있는 프로퍼티

protected IPersistenceProvider m_persistenceProvider
리턴 IPersistenceProvider

m_rch 보호되어 있는 프로퍼티

protected IRecordChangeHandler m_rch
리턴 IRecordChangeHandler

m_rlu 보호되어 있는 프로퍼티

protected IRecordListUpdater m_rlu
리턴 IRecordListUpdater

m_root 보호되어 있는 프로퍼티

protected ICmObject m_root
리턴 ICmObject

m_rootLayoutName 보호되어 있는 프로퍼티

protected string m_rootLayoutName
리턴 string

m_sliceFilter 보호되어 있는 프로퍼티

protected SliceFilter m_sliceFilter
리턴 SliceFilter

m_sliceSplitPositionBase 보호되어 있는 프로퍼티

This is the position a splitter would be if we had a single one, the actual position of the splitter in a zero-indent slice. This is persisted, and can also be controlled by the XML file; the value here is a last-resort default.
protected int m_sliceSplitPositionBase
리턴 int

m_smallImages 보호되어 있는 프로퍼티

protected ImageCollection m_smallImages
리턴 ImageCollection

m_stringTable 보호되어 있는 프로퍼티

protected StringTable m_stringTable
리턴 StringTable

m_styleSheet 보호되어 있는 프로퍼티

protected FwStyleSheet m_styleSheet
리턴 FwStyleSheet

m_tooltip 보호되어 있는 프로퍼티

protected ToolTip m_tooltip
리턴 ToolTip

m_traceSwitch 보호되어 있는 프로퍼티

Control how much output we send to the application's listeners (e.g. visual studio output window)
protected TraceSwitch m_traceSwitch
리턴 TraceSwitch