Yeah, a real dialog is a very good option. $input is useful for really minor things, but using a real dialog gives you far greater control and customization. And dialogs can be used anywhere. $input halts everything that follows it, which is why it cannot be used in an event. Dialogs don't halt anything, so they can be used in events without a problem.