Unplanned
Last Updated: 15 Mar 2017 17:07 by ADMIN
Joshua
Created on: 27 Jan 2017 03:47
Category: BreadCrumb
Type: Feature Request
1
Breadcrumb: Implement search mechanism that allows you to get item by custom string
Implement search functionality. Allow the user to type in the edit box of the breadcrumb and search for a custom path. Currently, you can type only paths constructed strictly from the path property of each item model.

Original Title: RadBreadcrumb needs non-path text editing

Original description: I built a full Explorer clone using the Telerik WPF controls so I am in a solid position to say how close the controls actually live up to the claims that they can give you Explorer-like functionality (minor screenshot attached for proof).

RadBreadcrumb has problems with the string path. The Explorer shell namespace uses binary paths that don't always have an exact translation to a string file system path, for the simple reason that it doesn't navigate the file system exclusively. This means any file system delimiters can be part of each shell item name and over-interpreted by RadBreadcrumb's parser. One immediate example is the child items in Recycle Bin, which use the full original file path as each deleted item name (Explorer seems to special-case this).

What the control actually needs is a free-edit text mode without any automatic "path" functionality, where you do nothing more than bind to a viewmodel string and let the viewmodel decide what to do with the string. Maybe the user types "Recycle Bin" so I have to know to jump there. Or maybe the user types a full filesystem path. Or maybe they even want to treat it as a handy Run window. Either way, I should be able to turn off all automatic "path" functionality.

Unfortunately in the meantime, I have to disable the text edit mode entirely because the path parsing completely interferes with the viewmodel tree that builds the breadcrumb items, and this will cause the red error outline to display.
Attached Files:
3 comments
ADMIN
Martin
Posted on: 15 Mar 2017 17:07
Hello Joshua,

Thank you for the additional information. We've approved this feature request. You can follow the item in order to get notification when there is some change in its status.

Regards,
Martin Ivanov
Techincal Support Engineer
Joshua
Posted on: 06 Mar 2017 13:21
This is how paths are defined in the Windows shell. They aren't string like "C:\Windows" instead they are binary because they can refer to whatever the Explorer plugin wants. Each component in the binary path is a SHITEMID (shell item ID):

typedef struct _SHITEMID {
  USHORT cb;
  BYTE   abID[1];
} SHITEMID;

An absolute path is a PIDL (aka LPITEMIDLIST) which is a bunch of SHITEMIDs connected end-to-end. You can't type a SHITEMID into an edit box because it's a BYTE[] not a string. Windows COM interfaces like IShellFolder and IShellItem use PIDLs to identify each other. SHParseDisplayName() converts strings to the PIDL that most closely matches. "C:\Windows" will return a PIDL and so will "Control Panel". You should be able to type both in the address bar.

https://msdn.microsoft.com/en-us/library/windows/desktop/bb773321(v=vs.85).aspx

I have also been writing a Registry Editor which will also use the breadcrumb in the same way. But with the registry path, I have to be able to custom-convert "HKLM" and "HKCU" address strings to their exact tree nodes which won't have the same name.

 I hope this helps.
ADMIN
Martin
Posted on: 06 Mar 2017 08:25
Hello Joshua,

Thank you for the detailed description. The feature request sounds as something good that could be included in the breadcrumb control, but we are not sure that we fully understand it. Can you please elaborate a bit more on this by answering the following question?

- Can you clarify what you mean by Explorer shell namespaces and binary paths? Can you give us few examples of such namespaces? Can you also compare them to a string file system path with couple examples?
- Can you gives us another example in which this search feature will be useful?

Thank you for any additional information you can provide.

Regards,
Martin Ivanov
Technical Support Engineer