add dynamic compoment impl, fix #2 file dialog cancellation