Package org.gjt.sp.jedit.gui
Class FilteredListModel<E extends javax.swing.ListModel<?>>
- java.lang.Object
-
- javax.swing.AbstractListModel
-
- org.gjt.sp.jedit.gui.FilteredListModel<E>
-
- All Implemented Interfaces:
java.io.Serializable
,java.util.EventListener
,javax.swing.event.ListDataListener
,javax.swing.ListModel
public abstract class FilteredListModel<E extends javax.swing.ListModel<?>> extends javax.swing.AbstractListModel implements javax.swing.event.ListDataListener
This ListModel delegates another model to add some filtering features to any JList. To use it you must implement the abstract method passFilter(). This method is called for each row, and must return true if the row should be visible, and false otherwise. It is also possible to override the method prepareFilter() that allow you to transform the filter String. Usually you can return it as lowercase It is not mandatory but highly recommended to give the JList instance to the model in order to keep the selection after the filter has been updated- Since:
- jEdit 4.3pre11
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
FilteredListModel(E delegated)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
contentsChanged(javax.swing.event.ListDataEvent e)
E
getDelegated()
java.lang.Object
getElementAt(int index)
int
getInternal2ExternalRow(int internalRowIndex)
Converts a row index from the delegated table model into a row index of the JTable.int
getSize()
int
getTrueRow(int rowIndex)
Converts a row index from the JTable to an internal row index from the delegated model.void
intervalAdded(javax.swing.event.ListDataEvent e)
void
intervalRemoved(javax.swing.event.ListDataEvent e)
abstract boolean
passFilter(int row, java.lang.String filter)
This callback indicates if a row passes the filter.java.lang.String
prepareFilter(java.lang.String filter)
protected void
restoreSelection(java.util.Set<java.lang.Integer> selectedIndices)
protected java.util.Set<java.lang.Integer>
saveSelection()
void
setDelegated(E delegated)
void
setFilter(java.lang.String filter)
void
setList(javax.swing.JList<?> list)
Set the JList that uses this model.
-
-
-
Field Detail
-
delegated
protected E extends javax.swing.ListModel<?> delegated
The delegated table model.
-
-
Constructor Detail
-
FilteredListModel
protected FilteredListModel(E delegated)
-
-
Method Detail
-
setList
public void setList(javax.swing.JList<?> list)
Set the JList that uses this model. It is used to restore the selection after the filter has been applied If it is null,- Parameters:
list
- the list that uses the model
-
getDelegated
public E getDelegated()
-
setDelegated
public void setDelegated(E delegated)
-
setFilter
public void setFilter(@Nullable java.lang.String filter)
-
prepareFilter
@Nullable public java.lang.String prepareFilter(@Nullable java.lang.String filter)
-
passFilter
public abstract boolean passFilter(int row, @Nullable java.lang.String filter)
This callback indicates if a row passes the filter.- Parameters:
row
- the row number the delegate row countfilter
- the filter string- Returns:
- true if the row must be visible
-
saveSelection
protected java.util.Set<java.lang.Integer> saveSelection()
-
restoreSelection
protected void restoreSelection(java.util.Set<java.lang.Integer> selectedIndices)
-
getTrueRow
public int getTrueRow(int rowIndex)
Converts a row index from the JTable to an internal row index from the delegated model.- Parameters:
rowIndex
- the row index- Returns:
- the row index in the delegated model
-
getInternal2ExternalRow
public int getInternal2ExternalRow(int internalRowIndex)
Converts a row index from the delegated table model into a row index of the JTable.- Parameters:
internalRowIndex
- the internal row index- Returns:
- the table row index or -1 if this row is not visible
-
getElementAt
public java.lang.Object getElementAt(int index)
- Specified by:
getElementAt
in interfacejavax.swing.ListModel<E extends javax.swing.ListModel<?>>
-
getSize
public int getSize()
- Specified by:
getSize
in interfacejavax.swing.ListModel<E extends javax.swing.ListModel<?>>
-
contentsChanged
public void contentsChanged(javax.swing.event.ListDataEvent e)
- Specified by:
contentsChanged
in interfacejavax.swing.event.ListDataListener
-
intervalAdded
public void intervalAdded(javax.swing.event.ListDataEvent e)
- Specified by:
intervalAdded
in interfacejavax.swing.event.ListDataListener
-
intervalRemoved
public void intervalRemoved(javax.swing.event.ListDataEvent e)
- Specified by:
intervalRemoved
in interfacejavax.swing.event.ListDataListener
-
-