I would like to create a notebook element that can replace itself.
Here's an example to illustrate:
Panel[Column[
{Style["This is a panel", Bold],
Button["Press me!",
SelectionMove[EvaluationNotebook[], All, EvaluationCell];
NotebookWrite[EvaluationNotebook[],
"\"Now I'm just a piece of static text.\""]]}]]
This code will create a little panel:

If we press the button, the panel will get replaced by a piece of static text (i.e. not a dynamic expression that's shown as text, but just plain old non-dynamic text).

Well, in this implementation actually it's not the panel that gets replaced, but the complete cell containing the panel, and that's my problem: I need only the panel to be replaced, so this will work even if the panel is just a subexpression in a larger expression.
How can we create an UI control that is able to replace itself with an arbitrary expression in the notebook?
