2012-03-08 5 views
0

TreeSelectionDialog에 대한 ContentProvider가 있습니다. 해당 노드 중 하나가 선택되어있는 경우 트리의 루트를 선택하려면 getParent 메서드를 구현해야합니다.ContentProvider의 getParent 메소드 구현 방법

@SuppressWarnings("unchecked") 
protected Node<T> getAdapter(Object element) { 
    if(element instanceof Tree) 
     return ((Tree<T>)element).getRootElement(); 
    else 
     return (Node<T>)element; 
} 

@Override 
public void dispose() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { 
    // TODO Auto-generated method stub 

} 

@Override 
public Object[] getElements(Object inputElement) { 
    return getChildren(inputElement); 
} 

@Override 
public Object[] getChildren(Object parentElement) { 

    if(parentElement instanceof org.db.normalization.Table) { 
     if(((org.db.normalization.Table)parentElement).getStatus() == Status.DELETED) 
      return new Object[0]; 
     List<org.db.normalization.Attribute> atts = new ArrayList<org.db.normalization.Attribute>(); 

     for(Attribute a:((org.db.normalization.Table)parentElement).getAttributes().getAttributes()) 
      if(a.getStatus() != Status.UNMODIFIED) 
       atts.add(a); 


     for(Attribute a:((org.db.normalization.Table)parentElement).getPrimaryKey().getAttributes()) 
      if(a.getStatus() != Status.UNMODIFIED) 
       atts.add(a); 

     return atts.toArray(); 
    } else if (parentElement instanceof org.db.normalization.Attribute) { 
     return new Object[0]; 
    } else { 
     @SuppressWarnings("unchecked") 
     List<org.db.normalization.Table> n = (ArrayList<org.db.normalization.Table>)parentElement; 
     if (n.size() > 0) { 

      return n.toArray() ; 
     } 
    } 
    return new Object[0]; 
} 

@Override 
public Object getParent(Object element) { 
    // TODO Auto-generated method stub 

    return null; 
} 

@Override 
public boolean hasChildren(Object element) { 
    // TODO Auto-generated method stub 
    return getChildren(element).length > 0; 
} 

정말 혼자 요소가 매개 변수로받은 것보다 다른 정보와이 요소가 없기 때문에, 자신을 알지 못한다는의 getParent 방법에 작성하는 것에 아무 생각이 코드입니다 부모의.

감사합니다.

+0

'org.db.normalization.Table'이 무엇인지 확실하지 않지만 그것이 '요소'유형이라면 부모를 반환하는 메소드가 있어야합니다. 그렇지 않다면, 운이 없어. –

답변

1

트리 구현의 대부분 인스턴스는 부모를 알고 있으므로 부모는 설정 메소드 또는 생성자에 의해 설정됩니다. 부모가 누군지 전혀 모르기 때문에 최악의 경우를 제시하고 있습니다. 기본적으로 모든 노드를 가져와야하며, 각 노드의 하위 노드가 포함되어 있는지 확인하십시오.

관련 문제