package com.hundsun.ares.studio.jres.metadata.ui.editors;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.transaction.ResourceSetChangeEvent;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.hundsun.ares.studio.jres.metadata.ui.block.FunctionViewerBlock;
import com.hundsun.ares.studio.jres.model.metadata.Function;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.ui.editor.EMFFormEditor;
import com.hundsun.ares.studio.ui.editor.EMFFormPage;
import com.hundsun.ares.studio.ui.editor.validate.EReferenceValidateUnit;
import com.hundsun.ares.studio.validate.ValidateUtil;
public class FunctionPage extends EMFFormPage {
private FunctionViewerBlock functionViewerBlock;
/**
* @param editor
* @param id
* @param title
*/
public FunctionPage(EMFFormEditor editor,String id, String title) {
super(editor, id, title);
}
@Override
public void infoChange() {
functionViewerBlock.setInput(getInfo());
super.infoChange();
}
public ColumnViewer getColumnViewer() {
return functionViewerBlock.getColumnViewer();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#configureValidateControl()
*/
@Override
protected void configureValidateControl() {
getValidateControl().addValidateUnit(new EReferenceValidateUnit(getInfo(), MetadataPackage.Literals.MENU_LIST__FUNCTIONS));
getValidateControl().setContext(ValidateUtil.getValidateContext(getEditor().getARESResource()));
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.form.EMFFormPage#isNeedValidate(org.eclipse.emf.transaction.ResourceSetChangeEvent)
*/
@Override
protected boolean isNeedValidate(ResourceSetChangeEvent event) {
for (Notification notification : event.getNotifications()) {
if (notification.getFeature() == MetadataPackage.Literals.MENU_LIST__FUNCTIONS
|| notification.getNotifier() instanceof Function) {
return true;
}
}
return false;
}
@Override
public void setFocus() {
super.setFocus();
functionViewerBlock.getColumnViewer().getControl().setFocus();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.form.EMFFormPage#doCreateFormContent(org.eclipse.ui.forms.IManagedForm)
*/
@Override
protected void doCreateFormContent(IManagedForm managedForm) {
Composite body = managedForm.getForm().getBody();
FormToolkit toolkit = managedForm.getToolkit();
createRevisionComposite(body, toolkit);
body.setLayout(new FillLayout());
}
/**
* @param body
* @param toolkit
*/
private void createRevisionComposite(Composite body, FormToolkit toolkit) {
functionViewerBlock = new FunctionViewerBlock(this, getEditingDomain(), getSite(), getEditor().getARESResource(), getProblemPool());
functionViewerBlock.setEditableControl(getEditableControl());
functionViewerBlock.createControl(body, toolkit);
getEditor().getActionBarContributor().addGlobalActionHandlerProvider(functionViewerBlock);
addPropertyListener(functionViewerBlock);
getEditingDomain().getCommandStack().addCommandStackListener(functionViewerBlock);
}
@Override
public void setActive(boolean active) {
super.setActive(active);
if (active) {
ColumnViewer viewer = functionViewerBlock == null ? null : functionViewerBlock.getColumnViewer();
if (viewer != null) {
getSite().setSelectionProvider(viewer);
}
}
}
}