package com.yoursway.ide.application.controllers; import static com.google.common.collect.Lists.newArrayList; import java.util.Collection; import com.yoursway.ide.application.controllers.mainwindow.EditorComponent; import com.yoursway.ide.application.model.Document; import com.yoursway.ide.application.view.mainwindow.EditorWindow; import com.yoursway.ide.application.view.mainwindow.EditorWindowFactory; public class EditorRegistry { private Collection<EditorComponentFactory> types = newArrayList(); public void add(EditorComponentFactory type) { if (type == null) throw new NullPointerException("type is null"); types.add(type); } public EditorComponent createComponentFor(Document document, EditorWindow editor) { for (EditorComponentFactory type : types) { EditorComponent result = type.createFor(document, editor); if (result != null) return result; } return null; } }