Reorder a subfolder in folder

Reorder a subfolder in folder

m_baczewski
Advocate Advocate
268 Views
2 Replies
Message 1 of 3

Reorder a subfolder in folder

m_baczewski
Advocate
Advocate

Hi,

Is it possible to have the subfolders in a folder sorted? Or to go through all the subfolders while adding and check the name to insert it in the appropriate place?

 

Dim oDoc As AssemblyDocument = ThisApplication.ActiveDocument
Dim oModelBrowser As BrowserPane = oDoc.BrowserPanes.Item("Model")
Dim oModelBrowserFolderNodes As BrowserNode = oModelBrowser.TopNode
Dim oModelBrowserChildFolder As BrowserFoldersEnumerator = oModelBrowserFolderNodes.BrowserFolders
Dim folderExists = False
Dim parentFolder As BrowserFolder
Dim oConfigurationFolder As BrowserFolder

For Each folder As BrowserFolder In oModelBrowserChildFolder
	If folder.Name = "_KONFIGURACJA_"
		folderExists = True
		oConfigurationFolder = folder
	End If
Next
If folderExists = False
	oConfigurationFolder = oModelBrowser.AddBrowserFolder("_KONFIGURACJA_")
End If

folderName = "03"
parentFolder = oModelBrowser.AddBrowserFolder(folderName)

For Each browserNode1 As BrowserNode In oConfigurationFolder.BrowserNode.BrowserNodes
	nodeName = browserNode1.NativeObject.Name
	Try
		folderName1 = CInt(folderName)
		folderName2 = CInt(nodeName)
	Catch
	
	End Try

	If folderName1 < folderName2
		oConfigurationFolder.Add(parentFolder.BrowserNode, , True)
	Else
		oConfigurationFolder.Add(parentFolder.BrowserNode, , False)
	End If
Next

 

I`m trying this and it isnt working 

If folderName1 < folderName2
		oConfigurationFolder.Add(parentFolder.BrowserNode, , True)
	Else
		oConfigurationFolder.Add(parentFolder.BrowserNode, , False)
	End If

 

I would like it to work like this:

 

m_baczewski_1-1718781383455.png

 

0 Likes
269 Views
2 Replies
Replies (2)
Message 2 of 3

_dscholtes_
Advocate
Advocate

As I understand from your code that the folders already exist, I think you need the BrowserPane.ReOrder method instead of the BrowserFolder.Add method. Here's a link to a related post, moving folders to top of model browser, which I used to create my own sorting macro. My macro stores the folder names (BrowserNode.BrowserNodeDefinition.Label) in an ArrayList and sorts them (ArrayList.Sort), then it reorders the browsernodes accordingly using the abovementioned ReOrder method and retrieval of the BrowserNodes by name (using the ArrayList).

We don't use subfolders here, but the help file is general enough to expect the method to work on subfolders as well.

Message 3 of 3

m_baczewski
Advocate
Advocate

Thank you for the little tip. The code I posted is just a part of the code that adds folders with the appropriate structure. Some folders are already placed in the "KONFIGURACJA" folder when creating a new one, and I add others. But I managed to create a rule that sorts the list of folders and then adds them in the correct order.

 

Function ReorderFolder()
	Dim oDoc As AssemblyDocument = ThisApplication.ActiveDocument
	Dim oModelBrowser As BrowserPane = oDoc.BrowserPanes.Item("Model")
	Dim oModelBrowserFolderNodes As BrowserNode = oModelBrowser.TopNode
	Dim oModelBrowserChildFolder As BrowserFoldersEnumerator = oModelBrowserFolderNodes.BrowserFolders
	Dim parentFolder As BrowserFolder
	Dim oConfigurationFolder As BrowserFolder 

	For Each folder As BrowserFolder In oModelBrowserChildFolder
		If folder.Name = "_KONFIGURACJA_"
			oConfigurationFolder = folder
		End If 
	Next
	
	Dim nameList As New List(Of String)

	For Each folderInConfiguration As BrowserNode In  oConfigurationFolder.BrowserNode.BrowserNodes
		nameList.Add(folderInConfiguration.NativeObject.Name)
	Next
	nameList.Sort
	For countOfItems As Integer = nameList.Count - 1 To 0 Step - 1
		For Each folderInConfiguration1 As BrowserFolder In oConfigurationFolder.BrowserNode.BrowserFolders
			If nameList(countOfItems) = folderInConfiguration1.Name
				oConfigurationFolder.Add(folderInConfiguration1.BrowserNode)
				oDoc.Update
			End If
		Next
	Next
End Function
0 Likes