package com.yoursway.ide.application.controllers.mainwindow;
import com.google.common.base.Function;
import com.yoursway.ide.application.controllers.EditorRegistry;
import com.yoursway.ide.application.model.Document;
import com.yoursway.ide.application.view.mainwindow.EditorWindow;
import com.yoursway.ide.application.view.mainwindow.EditorWindowCallback;
import com.yoursway.ide.application.view.mainwindow.EditorWindowFactory;
public class DocumentController implements EditorWindowCallback {
private EditorWindowModelImpl viewModel;
private EditorWindow editor;
private final Document document;
public DocumentController(Document document, EditorWindowFactory factory, EditorRegistry editorRegistry) {
if (document == null)
throw new NullPointerException("document is null");
this.document = document;
viewModel = new EditorWindowModelImpl();
editor = factory.createEditorWindow(viewModel, this);
editorRegistry.createComponentFor(document, editor);
viewModel.title.setValue(document.file().getName());
}
public Document document() {
return document;
}
public static final Function<DocumentController, Document> GET_DOCUMENT = new Function<DocumentController, Document>() {
public Document apply(DocumentController from) {
return from.document();
}
};
public void activateEditor() {
editor.activateEditor();
}
}