/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.ui.internal.charts.views; import java.text.DateFormat; import java.text.NumberFormat; import java.util.Date; import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; public class DataViewerLabelProvider extends ObservableMapLabelProvider { private DateFormat dateFormat; private NumberFormat decimalNumberFormat = NumberFormat.getInstance(); private NumberFormat integerNumberFormat = NumberFormat.getInstance(); public DataViewerLabelProvider(IObservableMap attributeMap) { this(new IObservableMap[] { attributeMap }); } public DataViewerLabelProvider(IObservableMap[] attributeMaps) { super(attributeMaps); decimalNumberFormat.setGroupingUsed(true); decimalNumberFormat.setMinimumIntegerDigits(1); decimalNumberFormat.setMinimumFractionDigits(1); decimalNumberFormat.setMaximumFractionDigits(4); integerNumberFormat.setGroupingUsed(true); integerNumberFormat.setMinimumIntegerDigits(1); integerNumberFormat.setMinimumFractionDigits(0); integerNumberFormat.setMaximumFractionDigits(0); } public void setDateFormat(DateFormat dateFormat) { this.dateFormat = dateFormat; } /* (non-Javadoc) * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int) */ @Override public String getColumnText(Object element, int columnIndex) { String text = ""; if (columnIndex < attributeMaps.length) { Object result = attributeMaps[columnIndex].get(element); if (result instanceof Date) { text = dateFormat.format(result); } else if ((result instanceof Long) || (result instanceof Integer)) { text = integerNumberFormat.format(result); } else if (result instanceof Number) { text = decimalNumberFormat.format(result); } else if (result != null) { text = result.toString(); } } return text; } }