How to grey out non-interested Actors in Outliner and make them unselectable in LevelEditor Viewport?

In Landscape editor mode, only ALandscape actors are selectable in Outliner and Viewport. Actors of other types are greyed out in Outliner and also unselectable in Viewport, this is good since it avoid user selecting wrong thing when editing landscape.

Now I am writing a new editor mode and I want to do just like landscape does, which is only my custom/interested actors can be selected in outliner and viewport and others will be greyed out and unselectable.
I want to know how landscape mode achieve this. Search engine doesn’t help anything and I investigate some landscape C++ code and fail to find what I want.

Does anyone know how to implement this or where the relevant code is?