BreadCrumbs.java
package org.andromda.taglibs.breadcrumbs;
import java.util.Collection;
import java.util.LinkedList;
/**
*
*/
public class BreadCrumbs extends LinkedList
{
private static final long serialVersionUID = 34L;
/** org.andromda.bpm4struts.breadcrumbs */
public static final String SESSION_KEY = "org.andromda.bpm4struts.breadcrumbs";
/** 6 */
public static final int DEFAULT_SIZE = 6;
private int maxSize = -1;
/**
*
*/
public BreadCrumbs()
{
this(DEFAULT_SIZE);
}
/**
* @param maxSize
*/
public BreadCrumbs(int maxSize)
{
this.maxSize = maxSize;
}
/**
* @return maxSize
*/
public int getMaxSize()
{
return maxSize;
}
/**
* @param maxSize
*/
public void setMaxSize(int maxSize)
{
this.maxSize = maxSize;
}
/**
* @param collection
*/
public BreadCrumbs(Collection<Object> collection)
{
super(collection);
maxSize = collection.size();
}
private boolean isOverflowed()
{
return size() > maxSize;
}
private void trimToSize()
{
if (isOverflowed() && !isEmpty())
{
int difference = size() - maxSize;
this.removeRange(0, difference);
}
}
/**
* @see LinkedList#add(int, Object)
*/
public void add(int index, Object element)
{
super.add(index, element);
trimToSize();
}
/**
* @see LinkedList#add(Object)
*/
public boolean add(Object element)
{
boolean added = super.add(element);
trimToSize();
return added;
}
/**
* @see LinkedList#addFirst(Object)
*/
public void addFirst(Object element)
{
super.addFirst(element);
trimToSize();
}
/**
* @see LinkedList#addLast(Object)
*/
public void addLast(Object element)
{
super.addLast(element);
trimToSize();
}
/**
* @see LinkedList#addAll(int, java.util.Collection)
*/
public boolean addAll(int index, Collection collection)
{
boolean added = super.addAll(index, collection);
trimToSize();
return added;
}
/**
* @see LinkedList#addAll(java.util.Collection)
*/
public boolean addAll(Collection collection)
{
boolean added = super.addAll(collection);
trimToSize();
return added;
}
}