Howdy Greeenhorn! Welcome to the ranch. And that's a great question - not an uncommon one.
How are you going to do it? Well, as you mentioned, many JSF extensions like IceFaces provide that type of functionality. But you don't want to use IceFaces, which is understandable. But, you still need that functionality! Well, you're going to have to write it yourself, and perhaps put the code in your own custom tag - essentially, you'll write your own component that is very similar to the IceFaces one. I mean, how else could you really do it.
You can get the source for IceFaces. If you're looking to roll your own, you may as well leverage what people much better looking than you and me have already coded and tested. But really, if you're not going to use a third-pary library, well, then you'll have to write one on your own.
Keep posting question! And if I said something you disagree with, please challenge it. That way we all get the very best out of this message forum.
Funny you should ask. I'm looking at the source code of the RichFaces tree control right now.
Let's put it this way. I've done custom JSF controls before. I'm subclassing a control that's mostly already complete - it's mainly just a matter of changing the look and feel.
I doubt I'll get it "Dun" in less than a week.
Unless there's a really compelling reason, Don't Reinvent it Yourself (DRY).
An IDE is no substitute for an Intelligent Developer.