/*******************************************************************************
* Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) 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:
* Soyatec - initial API and implementation
*******************************************************************************/
package org.eclipse.papyrus.xwt.collection;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
import org.eclipse.papyrus.xwt.core.ICollectionView;
/**
* Represents a view for grouping, sorting, filtering, and navigating a data
* collection.`
*
* @author yyang
*/
public class CollectionView<T> implements ICollectionView<T> {
private T currentItem;
private int currentPosition = 0;
private Collection<T> sourceCollection = Collections.emptyList();
private GroupDescription[] groupDescription = GroupDescription.EMPTY_ARRAY;
private Collection<T> groups = Collections.emptyList();
private Locale locale = Locale.getDefault();
private SortDescription[] sortDescription = SortDescription.EMPTY_ARRAY;
public GroupDescription[] getGroupDescription() {
return groupDescription;
}
public void setGroupDescription(GroupDescription[] groupDescription) {
this.groupDescription = groupDescription;
}
public Collection<T> getGroups() {
return groups;
}
public void setGroups(Collection<T> groups) {
this.groups = groups;
}
public Locale getLocale() {
return locale;
}
public void setLocale(Locale locale) {
this.locale = locale;
}
public SortDescription[] getSortDescription() {
return sortDescription;
}
public void setSortDescription(SortDescription[] sortDescription) {
this.sortDescription = sortDescription;
}
public void setCurrentPosition(int currentPosition) {
this.currentPosition = currentPosition;
}
public void setSourceCollection(Collection<T> sourceCollection) {
this.sourceCollection = sourceCollection;
}
public boolean canFilter() {
return false;
}
public boolean canGroup() {
return groupDescription.length > 0;
}
public boolean canSort() {
return sortDescription.length > 0;
}
public T getCurrentItem() {
return currentItem;
}
public void setCurrentItem(T currentItem) {
this.currentItem = currentItem;
}
public int getCurrentPosition() {
return currentPosition;
}
public Collection<T> getSourceCollection() {
return sourceCollection;
}
public boolean isEmpty() {
if(canGroup()) {
return groups.isEmpty();
}
return sourceCollection.isEmpty();
}
}