/** * Դ�������ƣ�ExtensibleModelColumnViewerProblemView.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.ui * ����˵����$desc * ����ĵ��� * ���ߣ���Ҷ�� */ package com.hundsun.ares.studio.ui.editor.extend; import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.ArrayUtils; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.ColumnViewer; import com.hundsun.ares.studio.core.model.ExtensibleModel; import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnViewerProblemView; import com.hundsun.ares.studio.ui.editor.viewers.RefreshViewerJob; import com.hundsun.ares.studio.ui.validate.ProblemPoolChangeEvent; /** * @author gongyf * */ public class ExtensibleModelColumnViewerProblemView extends EObjectColumnViewerProblemView { /** * @param viewer */ public ExtensibleModelColumnViewerProblemView(ColumnViewer viewer) { super(viewer); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.viewers.EObjectColumnViewerProblemView#doRefresh(com.hundsun.ares.studio.jres.ui.validate.ProblemPoolChangeEvent) */ @Override protected void doRefresh(ProblemPoolChangeEvent event) { // �������ӻ�ɾ��������BasicDiagnostic Object[] problems = ArrayUtils.addAll(event.getAddProblems(), event.getRemoveedProblems()); Set<Object> objects = new HashSet<Object>(); for (Object problem : problems) { EObject eObj = (EObject) ((Diagnostic)problem).getData().get(0); objects.add(eObj); // �ٶ���չֻ����һ�㣬Ҳ����˵�����ж������ExtensibleModel // ��Ҫע����ǣ�����Ķ�����ܱ�ɾ�������������κ�ExtensibleModel���� while (!(eObj instanceof ExtensibleModel) && eObj != null) { eObj = eObj.eContainer(); } if (eObj != null) { objects.add(eObj); } } RefreshViewerJob.refresh(getViewer(), objects.toArray(), true); } }