editor component : separate the ui display from the logic