/**
* @version $Id: LabelDicContentProvider.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/09/01 12:10:38
* @author kousuke-morishima
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.ui.editors;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import com.tida_okinawa.corona.io.model.dic.ICoronaDic;
import com.tida_okinawa.corona.io.model.dic.ILabel;
import com.tida_okinawa.corona.io.model.dic.ILabelDic;
import com.tida_okinawa.corona.ui.editors.LabelDicEditor.LabelRecords;
/**
* @author kousuke-morishima
*/
public class LabelDicContentProvider implements ITreeContentProvider {
private static final Object[] EMPTY_ARRAY = new Object[0];
@Override
public Object[] getElements(Object input) {
/* #765 ラベルのリストの場合 */
if (input instanceof LabelRecords) {
return ((LabelRecords) input).toArray();
}
/* ラベル辞書(最上位)の場合 */
if (input instanceof DicEditorInput) {
/* 辞書から子要素を抜き出して返す */
ICoronaDic dic = ((DicEditorInput) input).getDictionary();
return ((ILabelDic) dic).getItems().toArray();
}
return getChildren(input);
}
@Override
public Object[] getChildren(Object parent) {
/* 辞書アイテムの場合 */
if (parent instanceof ILabel) {
/* 辞書アイテムから子要素を抜き出して返す */
return ((ILabel) parent).getChildren().toArray();
}
return EMPTY_ARRAY;/* 空の配列を返す */
}
@Override
public boolean hasChildren(Object element) {
if (element instanceof ILabel) {
return !((ILabel) element).getChildren().isEmpty();
}
return true;
}
@Override
/* 親要素を取得する処理 */
public Object getParent(Object element) {
if (element instanceof ILabel)/* 辞書アイテムの場合 */
{
/* 選択された要素の親要素を取得する処理 */
return ((ILabel) element).getParent();
}
return null;/* 親が存在しない場合、nullを返す */
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}