public static string CalculateReferenceValueForComponentItem(Component from, ContentBrowserItem_Component item) { CalculateReferenceValueForComponentItem(from, item, out string referenceValue, out char addSeparator); return(referenceValue); //Component to = item.Component; //if( from.ParentRoot == to.ParentRoot ) //{ // var referenceSelectionMode = GetReferenceSelectionModeInHierarchy( item ); // if( referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.This ) // return ReferenceUtils.CalculateThisReference( from, to ); // else if( referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.Root ) // return ReferenceUtils.CalculateRootReference( to ); //} //CalculateReferenceValueForComponentItem( item, out string referenceValue, out char addSeparator ); //return referenceValue; }
//!!!!! public void SelectObjects(Component[] objs) { //!!!!!slowly ESet <Component> objsSet = new ESet <Component>(objs); List <ContentBrowser.Item> items = new List <ContentBrowser.Item>(); foreach (var item in componentsBrowser.GetAllItems()) { ContentBrowserItem_Component item2 = item as ContentBrowserItem_Component; if (item2 != null) { if (objsSet.Contains(item2.Component)) { items.Add(item); } } } componentsBrowser.SelectItems(items.ToArray()); }
public static void CalculateReferenceValueForComponentItem(Component from, ContentBrowserItem_Component item, out string referenceValue, out char addSeparator) { Component to = item.Component; //different hierarchy if (from == null || from.ParentRoot != to.ParentRoot) { //if( canMakeRelativeFilePath && from != null ) // ReferenceUtility.CalculateCurrentFolderReference( from, to, "", out referenceValue, out addSeparator ); //else ReferenceUtility.CalculateResourceReference(to, "", out referenceValue, out addSeparator); return; } //root:, this: { var referenceSelectionMode = GetReferenceSelectionModeInHierarchy(item); if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.This) { ReferenceUtility.CalculateThisReference(from, to, "", out referenceValue, out addSeparator); return; } else if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.Root) { ReferenceUtility.CalculateRootReference(to, "", out referenceValue, out addSeparator); return; } } //default { //_File //_Type //_Component var componentItemsStack = new List <ContentBrowserItem_Component>(); ContentBrowser.Item firstTypeOrFileItem = null; { ContentBrowser.Item current = item; do { if (current is ContentBrowserItem_Component) { if (current.Parent != null) { componentItemsStack.Add((ContentBrowserItem_Component)current); } } else if (current is ContentBrowserItem_Type || current is ContentBrowserItem_File) { firstTypeOrFileItem = current; break; } else { Log.Fatal("ContentBrowserUtils: CalculateReferenceValueForComponentItem: Internal error."); } current = current.Parent; } while(current != null); componentItemsStack.Reverse(); } var result = new StringBuilder(); //start item if (firstTypeOrFileItem != null) { //_File, _Type var fileItem = firstTypeOrFileItem as ContentBrowserItem_File; if (fileItem != null) { result.Append(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath)); } var typeItem = firstTypeOrFileItem as ContentBrowserItem_Type; if (typeItem != null) { result.Append(typeItem.Type.Name); } addSeparator = '|'; } else { //_Component result.Append("root:"); addSeparator = '\0'; } //add path of components foreach (var componentItem in componentItemsStack) { if (addSeparator != '\0') { result.Append(addSeparator); } result.Append(componentItem.Component.GetPathFromParent()); addSeparator = '\\'; } referenceValue = result.ToString(); } }
//static string _CalculateReferenceValue( bool allowThisFormat, Metadata.Property property, ContentBrowser.Item item ) ////, out ContentBrowserItem_Component.ReferenceSelectionModeEnum topItemMode ) //{ // //!!!!multiselection // List<string> result = new List<string>(); // var topItemMode = ContentBrowserItem_Component.ReferenceSelectionModeEnum.None; // ContentBrowser.Item firstTypeOrFileItem = null; // ContentBrowser.Item topItem = null; // ContentBrowser.Item current = item; // do // { // var componentItem = current as ContentBrowserItem_Component; // if( componentItem != null ) // { // //_Component // if( componentItem.Parent != null ) // { // if( componentItem.ReferenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.This ) // result.Add( ".." ); // else // result.Add( componentItem.Component.GetNameWithIndexFromParent() ); // } // if( componentItem.Parent == null ) // topItemMode = componentItem.ReferenceSelectionMode; // } // else // { // //_Member // var memberItem = current as ContentBrowserItem_Member; // if( memberItem != null ) // { // var member = memberItem.Member; // if( member != null ) // { // xx xx; // //!!!!так? // //!!!!new // if( item.Owner.Mode == ContentBrowser.ModeEnum.SetReference && MetadataManager.GetTypeOfNetType( typeof( ReferenceValueType_Member ) ).IsAssignableFrom( item.Owner.SetReferenceModeData.property.TypeUnreferenced ) ) // { // result.Add( member.Signature ); // } // else if( member is Metadata.Property || member is Metadata.Method ) // { // result.Add( member.Name ); // } // else // { // //!!!! // } // } // } // } // if( firstTypeOrFileItem == null ) // firstTypeOrFileItem = current as ContentBrowserItem_Type; // if( firstTypeOrFileItem == null ) // firstTypeOrFileItem = current as ContentBrowserItem_File; // topItem = current; // current = current.Parent; // } // while( current != null ); // StringBuilder builder = new StringBuilder(); // switch( topItemMode ) // { // case ContentBrowserItem_Component.ReferenceSelectionModeEnum.None: // { // if( firstTypeOrFileItem != null ) // { // var fileItem = firstTypeOrFileItem as ContentBrowserItem_File; // if( fileItem != null ) // builder.Append( VirtualPathUtils.GetVirtualPathByReal( fileItem.FullPath ) + "|" ); // var typeItem = firstTypeOrFileItem as ContentBrowserItem_Type; // if( typeItem != null ) // builder.Append( typeItem.Type.Name + "|" ); // } // else // { // var componentTopItem = topItem as ContentBrowserItem_Component; // if( componentTopItem != null ) // { // builder.Append( "root:" ); // var path = componentTopItem.Component.GetNamePathToAccessFromRoot(); // if( path != "" ) // result.Add( path ); // } // } // } // break; // case ContentBrowserItem_Component.ReferenceSelectionModeEnum.Root: // builder.Append( "root:" ); // break; // case ContentBrowserItem_Component.ReferenceSelectionModeEnum.This: // builder.Append( "this:" ); // break; // } // bool first = true; // for( int n = result.Count - 1; n >= 0; n-- ) // { // if( !first ) // builder.Append( '\\' ); // builder.Append( result[ n ] ); // first = false; // } // return builder.ToString(); //} static ContentBrowserItem_Component.ReferenceSelectionModeEnum GetReferenceSelectionModeInHierarchy(ContentBrowserItem_Component item) { var current = item; do { if (current.ReferenceSelectionMode != ContentBrowserItem_Component.ReferenceSelectionModeEnum.None) { return(current.ReferenceSelectionMode); } current = current.Parent as ContentBrowserItem_Component; } while(current != null); return(ContentBrowserItem_Component.ReferenceSelectionModeEnum.None); }