package com.yoursway.ide.application.view.impl;
import org.eclipse.jface.internal.databinding.provisional.swt.ControlUpdater;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.widgets.Composite;
import com.yoursway.ide.application.view.mainwindow.EditorWindow;
import com.yoursway.ide.application.view.mainwindow.EditorWindowCallback;
import com.yoursway.ide.application.view.mainwindow.EditorWindowModel;
public class EditorWindowImpl implements EditorWindow {
private final EditorWindowCallback callback;
private final EditorWindowModel model;
private CTabItem item;
private Composite composite;
private final CTabFolder tabFolder;
public EditorWindowImpl(EditorWindowModel model, EditorWindowCallback callback, CTabFolder tabFolder) {
if (model == null)
throw new NullPointerException("model is null");
if (callback == null)
throw new NullPointerException("callback is null");
if (tabFolder == null)
throw new NullPointerException("tabFolder is null");
this.model = model;
this.callback = callback;
this.tabFolder = tabFolder;
item = new CTabItem(tabFolder, SWT.NONE);
composite = new Composite(tabFolder, SWT.NONE);
item.setControl(composite);
update(tabFolder);
activateEditor();
}
private void update(CTabFolder tabFolder) {
new ControlUpdater(tabFolder) {
protected void updateControl() {
item.setText(model.title().getValue());
}
};
}
public Composite composite() {
return composite;
}
public void activateEditor() {
tabFolder.setSelection(item);
}
}