dynamic widgets and material thumbnails

This will be somewhat difficult to create depending on your experience with Unreal Engine. (I guess it all depends on your level of experiencing when it comes to programming.)

You will want to create this in the UMG Widget using a suitable container. The less you have to spend aligning buttons the better. In any case, you would want one container for the buttons like, Floors, Wood, Walls, etc., and a separate one for the other material buttons.

You can create a database of buttons or if you want to separate them you can simply create smaller arrays for each category. You also might want to preload the menu so that the player doesn’t have to regenerate the button images over and over again.

You can use the Construct event to trigger the population of the menu. Simply take the array of textures that you have setup and use a for loop to add the buttons with the correct material and texture assigned.

The best solution in my opinion would however be to find a free project that has a tool similar to this already implemented. This will save you a lot of time, as well as have something to reference back to.