package org.jactr.eclipse.runtime.ui.selection;
/*
* default logging
*/
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.jactr.eclipse.runtime.session.ISession;
/**
* structured selection for a session/time pair.
*
* @author harrison
*/
public class SessionTimeSelection implements IStructuredSelection
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(SessionTimeSelection.class);
static public final SessionTimeSelection EMPTY = new SessionTimeSelection(
null, null, Double.NaN);
private ISession _session;
private String _model;
private double _time = Double.NaN;
public SessionTimeSelection(ISession session, String modelName,
double time)
{
_session = session;
_model = modelName;
_time = time;
}
public boolean isEmpty()
{
return _session == null && _model == null && Double.isNaN(_time);
}
/**
* returns the session
*/
public Object getFirstElement()
{
return _session;
}
public ISession getSession()
{
return _session;
}
public String getModelName()
{
return _model;
}
public double getTime()
{
return _time;
}
public Iterator iterator()
{
return toList().iterator();
}
public int size()
{
if (isEmpty()) return 0;
return 2;
}
public Object[] toArray()
{
if (isEmpty()) return new Object[0];
return new Object[] { _session, _model, _time };
}
public List toList()
{
return Arrays.asList(toArray());
}
}