/**
*
*/
package com.hundsun.ares.studio.ui.editor.extend;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.ui.forms.IMessageManager;
import com.hundsun.ares.studio.core.model.Constants;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.ui.editor.FormControlProblemView;
import com.hundsun.ares.studio.ui.validate.IProblemView;
import com.hundsun.ares.studio.ui.validate.KeyParameter;
import com.hundsun.ares.studio.ui.validate.ProblemPoolChangeEvent;
/**
* @author gongyf
*
*/
public class ExtensibleModelProblemView implements IProblemView {
private ExtensibleModel model;
private EObject userExtensibleModel;
/**
* @param model
*/
public ExtensibleModelProblemView(ExtensibleModel model) {
super();
this.model = model;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.validate.IProblemView#refresh(com.hundsun.ares.studio.jres.ui.validate.IProblemPool, java.util.Map)
*/
@Override
public void refresh(ProblemPoolChangeEvent event) {
userExtensibleModel = model.getData2().get(Constants.USER_DATA2_KEY);
IMessageManager manager = (IMessageManager) event.getContext().get(FormControlProblemView.KEY_MESSAGEMANAGER);
if (manager != null) {
for (Object problem : event.getRemoveedProblems()) {
if (problem instanceof Diagnostic) {
EObject owner = (EObject) ((Diagnostic) problem).getData().get(0);
// if (EcoreUtil.isAncestor(model.getData2(), owner)) {
if(userExtensibleModel != null && EcoreUtil.isAncestor(userExtensibleModel, owner)){
manager.removeMessage(new KeyParameter(((Diagnostic) problem).getData().toArray()) );
}
}
}
for (Object problem : event.getAddProblems()) {
if (problem instanceof Diagnostic) {
if (problem instanceof Diagnostic) {
EObject owner = (EObject) ((Diagnostic) problem).getData().get(0);
// if (EcoreUtil.isAncestor(model.getData2(), owner)) {
if(userExtensibleModel != null && EcoreUtil.isAncestor(userExtensibleModel, owner)){
manager.addMessage(new KeyParameter(((Diagnostic) problem).getData().toArray()),
((Diagnostic) problem).getMessage(), problem, FormControlProblemView.convertDiagnosticSeverity(((Diagnostic) problem).getSeverity()));
}
}
}
}
}
}
}