/**************************************************************************************************
* Copyright (c) 2010 Fabian Steeg. 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
* <p/>
* Contributors: Fabian Steeg - initial API and implementation
*************************************************************************************************/
package de.uni_koeln.ub.drc.ui.views;
import java.util.Date;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
import scala.collection.JavaConversions;
import de.uni_koeln.ub.drc.data.Index;
import de.uni_koeln.ub.drc.data.Modification;
import de.uni_koeln.ub.drc.data.User;
import de.uni_koeln.ub.drc.data.Word;
import de.uni_koeln.ub.drc.ui.DrcUiActivator;
import de.uni_koeln.ub.drc.ui.Messages;
/**
* Model, content and label providers for the {@link WordView}.
*
* @author Fabian Steeg (fsteeg), Mihail Atanassov (matana)
*/
final class WordViewModel {
public static final WordViewModel CONTENT = new WordViewModel();
public Modification[] getDetails(final Word word) {
return JavaConversions.asJavaCollection(word.history()).toArray(
new Modification[] {});
}
static final class WordViewContentProvider implements
IStructuredContentProvider {
@Override
public Object[] getElements(final Object inputElement) {
Object[] elements = (Object[]) inputElement;
return elements;
}
@Override
public void dispose() {
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput,
final Object newInput) {
if (newInput != null) {
Modification[] newMods = (Modification[]) newInput;
for (int i = 0; i < newMods.length; i++) {
viewer.setData(i + "", newMods[i]); //$NON-NLS-1$
}
}
}
}
static final class WordViewLabelProvider extends LabelProvider implements
ITableLabelProvider {
@Override
public String getColumnText(final Object element, final int columnIndex) {
Modification modification = (Modification) element;
switch (columnIndex) {
case 0:
return modification.form();
case 1:
return userDetails(modification.author());
case 2:
return new Date(modification.date()).toString();
case 3:
return modification.score() + ""; //$NON-NLS-1$
default:
return null;
}
}
static String userDetails(String id) {
if (id.equals("OCR"))return "--"; //$NON-NLS-1$ //$NON-NLS-2$
User user = User.withId(Index.DefaultCollection(), DrcUiActivator
.getDefault().userDb(), id);
return String
.format("%s " + Messages.get().From + " %s (%s, %s)", user.name(), user.region(), user.id(), //$NON-NLS-1$ //$NON-NLS-2$
user.reputation());
}
@Override
public Image getColumnImage(final Object element, final int columnIndex) {
return null;
}
}
}