/*
* 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.news.internal.ui;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipsetrader.core.instruments.ISecurity;
import org.eclipsetrader.news.core.IHeadLine;
public class HeadLineLabelProvider extends LabelProvider implements ITableLabelProvider, IColorProvider, IFontProvider {
private DateFormat formatter = DateFormat.getDateTimeInstance(SimpleDateFormat.MEDIUM, SimpleDateFormat.SHORT);
private Color addedBackground;
private Color addedForeground;
private Font addedFont;
private Color readedBackground;
private Color readedForeground;
private Font readedFont;
public HeadLineLabelProvider() {
addedForeground = Display.getCurrent().getSystemColor(SWT.COLOR_LIST_SELECTION);
readedForeground = Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
*/
@Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
@Override
public String getColumnText(Object element, int columnIndex) {
IHeadLine newsItem = (IHeadLine) element;
switch (columnIndex) {
case 0:
return formatter.format(newsItem.getDate());
case 1:
return getSafeString(newsItem.getText());
case 2: {
String text = ""; //$NON-NLS-1$
ISecurity[] o = newsItem.getMembers();
for (int i = 0; i < o.length; i++) {
if (!text.equals("")) {
text += ", "; //$NON-NLS-1$
}
text += o[i].getName();
}
return text;
}
case 3:
return newsItem.getSource();
}
return ""; //$NON-NLS-1$
}
protected String getSafeString(String title) {
title = title.replaceAll("à", "à"); //$NON-NLS-1$ //$NON-NLS-2$
title = title.replaceAll("è", "è"); //$NON-NLS-1$ //$NON-NLS-2$
title = title.replaceAll("é", "é"); //$NON-NLS-1$ //$NON-NLS-2$
title = title.replaceAll("ì", "ì"); //$NON-NLS-1$ //$NON-NLS-2$
title = title.replaceAll("ò", "ò"); //$NON-NLS-1$ //$NON-NLS-2$
title = title.replaceAll("&pgrave;", "ù"); //$NON-NLS-1$ //$NON-NLS-2$
return title;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object)
*/
@Override
public Color getBackground(Object element) {
IHeadLine newsItem = (IHeadLine) element;
if (newsItem.isReaded()) {
return readedBackground;
}
else if (newsItem.isRecent()) {
return addedBackground;
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object)
*/
@Override
public Color getForeground(Object element) {
IHeadLine newsItem = (IHeadLine) element;
if (newsItem.isReaded()) {
return readedForeground;
}
else if (newsItem.isRecent()) {
return addedForeground;
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
*/
@Override
public Font getFont(Object element) {
IHeadLine newsItem = (IHeadLine) element;
if (newsItem.isReaded()) {
return readedFont;
}
else if (newsItem.isRecent()) {
return addedFont;
}
return null;
}
public void setAddedBackground(Color addedBackground) {
this.addedBackground = addedBackground;
}
public void setAddedFont(Font addedFont) {
this.addedFont = addedFont;
}
public void setAddedForeground(Color addedForeground) {
this.addedForeground = addedForeground;
}
public void setReadedBackground(Color readedBackground) {
this.readedBackground = readedBackground;
}
public void setReadedFont(Font readedFont) {
this.readedFont = readedFont;
}
public void setReadedForeground(Color readedForeground) {
this.readedForeground = readedForeground;
}
}