package fr.opensagres.nosql.ide.mongodb.ui.internal.viewers.document; import java.util.Collection; import java.util.Map.Entry; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.widgets.TreeItem; import com.mongodb.BasicDBObject; public class DBObjectKeyColumnLabelProvider extends ColumnLabelProvider { private static DBObjectKeyColumnLabelProvider instance; public static DBObjectKeyColumnLabelProvider getInstance() { synchronized (DBObjectKeyColumnLabelProvider.class) { if (instance == null) { instance = new DBObjectKeyColumnLabelProvider(); } return instance; } } @Override public String getText(Object element) { if (element instanceof Entry) { Entry entry = (Entry) element; Object key = entry.getKey(); Object value = entry.getValue(); if (value instanceof Collection) { StringBuilder keyText = new StringBuilder( key != null ? key.toString() : ""); keyText.append(" ["); keyText.append(((Collection) value).size()); keyText.append("]"); return keyText.toString(); } return (key != null) ? key.toString() : ""; } return ""; } @Override public void update(ViewerCell cell) { super.update(cell); Object element = cell.getElement(); if (element instanceof BasicDBObject) { // Label for root item is like '(0) {...}' TreeItem item = (TreeItem) cell.getViewerRow().getItem(); int index = item.getParent().indexOf(item); cell.setText("(" + index + ") {...}"); } } }