package rtt.ui.editors;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.MasterDetailsBlock;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import rtt.core.manager.data.history.OutputDataManager.OutputDataType;
import rtt.ui.utils.RttPluginUtil;
public class ReferenceEditorPage extends FormPage {
protected FormToolkit toolkit;
protected MasterDetailsBlock block;
protected String title;
protected Resource resource;
private ITreeContentProvider contentProvider;
private ITableLabelProvider labelProvider;
private ComposedAdapterFactory adapterFactory;
public ReferenceEditorPage(FormEditor editor, OutputDataType type, String id, String tabTitle) {
super(editor, id, tabTitle);
this.title = type.getText() + " Output Data";
adapterFactory = RttPluginUtil.createFactory();
contentProvider = new AdapterFactoryContentProvider(adapterFactory);
labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
block = createMasterDetails();
}
public void setResource(Resource resource) {
this.resource = resource;
}
public Resource getResource() {
return resource;
}
private MasterDetailsBlock createMasterDetails() {
return new ReferenceMasterDetailsBlock(this);
}
@Override
protected void createFormContent(IManagedForm managedForm) {
final ScrolledForm form = managedForm.getForm();
form.setText(title);
block.createContent(managedForm);
}
public String getMasterSectionTitle() {
return title;
}
public ITreeContentProvider getContentProvider() {
return contentProvider;
}
public ITableLabelProvider getLabelProvider() {
return labelProvider;
}
@Override
public void dispose() {
if (contentProvider != null) {
contentProvider.dispose();
contentProvider = null;
}
if (labelProvider != null) {
labelProvider.dispose();
labelProvider = null;
}
if (adapterFactory != null) {
adapterFactory.dispose();
adapterFactory = null;
}
super.dispose();
}
}