/**
* Դ�������ƣ�MetadataOverviewContentProvider.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.viewer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.metadata.ui.model.MetadataOverviewElement;
import com.hundsun.ares.studio.jres.model.metadata.MetadataItem;
import com.hundsun.ares.studio.model.reference.ReferenceInfo;
import com.hundsun.ares.studio.reference.ReferenceManager;
/**
* @author wangxh
*
*/
public class MetadataOverviewContentProvider implements ITreeContentProvider {
private IARESResource resource;
private String type;
/**
*
*/
public MetadataOverviewContentProvider(IARESResource resource, String type) {
this.resource = resource;
this.type = type;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override
public void dispose() {
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
*/
@Override
public Object[] getElements(Object inputElement) {
IARESProject curPrj = resource.getARESProject();
List<ReferenceInfo> infoList = ReferenceManager.getInstance().getReferenceInfos(curPrj, type, true);
List< MetadataOverviewElement > elementList = new ArrayList<MetadataOverviewElement>();
for (ReferenceInfo referenceInfo : infoList) {
IARESResource res = referenceInfo.getResource();
MetadataItem owner = (MetadataItem) referenceInfo.getObject();
// FIXME: ��Ӳ��DZ����̵���Ϣ����������Ϣʹ�õ�ǰ�༭ģ�͵�����
elementList.add(new MetadataOverviewElement(res, owner));
}
// ����ͬ����ͻ����Ŀ
{
Map<String, MetadataOverviewElement> nameSet = new HashMap<String, MetadataOverviewElement>();
Set<String> errNameSet = new HashSet<String>();
for (MetadataOverviewElement element : elementList) {
String name = element.getItem().getName();
if (errNameSet.contains(name)) {
// ���Ѿ��ظ�������
element.setConflict(true);
} else if (nameSet.containsKey(name)) {
// ͬ���������Ѿ����Ǽǣ���������������������ƶ������������б���
element.setConflict(true);
MetadataOverviewElement firstElement = nameSet.get(name);
firstElement.setConflict(true);
nameSet.remove(name);
errNameSet.add(name);
} else {
element.setConflict(false);
nameSet.put(name, element);
}
}
}
return elementList.toArray();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
@Override
public Object[] getChildren(Object parentElement) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override
public Object getParent(Object element) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override
public boolean hasChildren(Object element) {
return false;
}
}