package com.robonobo.gui.model;
import java.util.List;
import javax.swing.table.TableModel;
import com.robonobo.core.api.model.Track;
public interface TrackListTableModel extends TableModel {
public int getColumnCount();
public String getColumnName(int column);
public int getRowCount();
public Class<?> getColumnClass(int columnIndex);
public Object getValueAt(int rowIndex, int columnIndex);
// By default we hide the track num and stream id
public int[] hiddenCols();
/** Return true in a subclass to have onScroll() called every time the track list is scrolled (as long as
* wantScrollEventsNow() returns true) */
public boolean wantScrollEventsEver();
/** Return true in a subclass to have onScroll() called with the in-view indexen (wantScrollEventsEver() must also
* return true) */
public boolean wantScrollEventsNow();
/** @param indexen
* The items currently in-viewport (model indexes, not view). Note this is called on the UI thread, so be
* thrifty with your cycles! */
public void onScroll(int[] indexen);
public Track getTrack(int index);
public String getStreamId(int index);
/** Are we allowed to delete tracks from this tracklist? */
public boolean allowDelete();
public void deleteTracks(List<String> streamIds);
/** This might have to iterate the tracklist, so call it sparingly! */
public int getTrackIndex(String sid);
/** The description attached to UI elements that delete tracks from this tracklist */
public String deleteTracksTooltipDesc();
public String longDeleteTracksDesc();
}