org.salespointframework.desktop.models
Class StoringStockListModel

java.lang.Object
  extended by javax.swing.AbstractListModel
      extended by org.salespointframework.desktop.models.StoringStockListModel
All Implemented Interfaces:
java.io.Serializable, java.util.EventListener, javax.swing.ListModel, DatasourceChangeListener, StockChangeListener, HelpableListener, FilterableModel

public class StoringStockListModel
extends javax.swing.AbstractListModel
implements StockChangeListener, HelpableListener, FilterableModel

ListModel for StoringStocks

Since:
4.0
Author:
Thomas Kissinger
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.salespointframework.desktop.models.FilterableModel
FilterableModel.DefaultModelFilter, FilterableModel.ModelFilter, FilterableModel.ResultCountListener
 
Field Summary
protected  boolean categorize
          true, if categories should be displayed.
protected  java.util.Comparator<StockItem> cmp
          comparator for sorting
protected  DataBasket db
          databasket used for visibility
protected  Category defaultCategory
          category used for items without category
protected  java.util.List<java.lang.Object> items
          list items
protected  FilterableModel.ModelFilter modelFilter
          model filter
protected  java.util.List<FilterableModel.ResultCountListener> resultCountListener
          ResultCountListener list
protected  Stock stock
          StoringStock source
 
Fields inherited from class javax.swing.AbstractListModel
listenerList
 
Constructor Summary
StoringStockListModel(Stock stock, DataBasket db, java.util.Comparator<StockItem> cmp)
          default constructor
StoringStockListModel(Stock stock, DataBasket db, java.util.Comparator<StockItem> cmp, boolean categorize, Category defaultCategory)
          constructor
 
Method Summary
 void addedStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 boolean addResultCountListener(FilterableModel.ResultCountListener rcs)
          add a ResultCountListener
 void canEditStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void canRemoveStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
protected  void checkAdd(StockChangeEvent e)
          Internal helper method.
protected  void checkRemove(StockChangeEvent e)
          Internal helper method.
protected  void checkUpdate(StockChangeEvent e)
          Internal helper method.
 void commitAddStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void commitEditStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void commitRemoveStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void DatasourceChanged(boolean pumpUp)
          The datasource changed. force the model to invalidate its internal structures and pump up the event
 void editingStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void filterPropertyChanged()
          apply filter and reload items
private  void fireResultCountChanged(int count)
          trigger result count changed event
 java.lang.Object getElementAt(int index)
          get elemnt at index
 int getSize()
          get list size
protected  boolean isFirstInCategory(int index)
          returns true if index is first of its category
 void noEditStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void noRemoveStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void removedStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void removeResultCountListener(FilterableModel.ResultCountListener rcs)
          remove ResultCountListener
 void rollbackAddStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void rollbackEditStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void rollbackRemoveStockItems(StockChangeEvent e)
          Update the internal model and inform any listeners according to the received event.
 void setModelFilter(FilterableModel.ModelFilter modelFilter)
          set nre model filter and reload items
 void subscribe()
          Subscribe as a listener to the model.
 void unsubscribe()
          Un-Subscribe as a listener from the model.
 void updateModel()
          Update the internal model based on the modeled Stock.
 
Methods inherited from class javax.swing.AbstractListModel
addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stock

protected Stock stock
StoringStock source


db

protected DataBasket db
databasket used for visibility


cmp

protected java.util.Comparator<StockItem> cmp
comparator for sorting


items

protected java.util.List<java.lang.Object> items
list items


resultCountListener

protected java.util.List<FilterableModel.ResultCountListener> resultCountListener
ResultCountListener list


modelFilter

protected FilterableModel.ModelFilter modelFilter
model filter


categorize

protected boolean categorize
true, if categories should be displayed.


defaultCategory

protected Category defaultCategory
category used for items without category

Constructor Detail

StoringStockListModel

public StoringStockListModel(Stock stock,
                             DataBasket db,
                             java.util.Comparator<StockItem> cmp)
default constructor

Parameters:
stock - stock
db - db
cmp - cmp. null for default.

StoringStockListModel

public StoringStockListModel(Stock stock,
                             DataBasket db,
                             java.util.Comparator<StockItem> cmp,
                             boolean categorize,
                             Category defaultCategory)
constructor

Parameters:
stock - stock
db - db
cmp - cmp. null for default.
categorize - categorize
defaultCategory - defaultCategory. null for default.
Method Detail

getElementAt

public java.lang.Object getElementAt(int index)
get elemnt at index

Specified by:
getElementAt in interface javax.swing.ListModel

getSize

public int getSize()
get list size

Specified by:
getSize in interface javax.swing.ListModel

subscribe

public void subscribe()
Subscribe as a listener to the model. If the modeled Stock is a ListenableStock, subscribe as a listener.

Specified by:
subscribe in interface HelpableListener

unsubscribe

public void unsubscribe()
Un-Subscribe as a listener from the model. If the modeled Stock is a ListenableStock, un-subscribe as a listener.

Specified by:
unsubscribe in interface HelpableListener

isFirstInCategory

protected boolean isFirstInCategory(int index)
returns true if index is first of its category

Parameters:
index -
Returns:
true, if is first

updateModel

public void updateModel()
Update the internal model based on the modeled Stock.

Specified by:
updateModel in interface HelpableListener

addedStockItems

public void addedStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
addedStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

commitAddStockItems

public void commitAddStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
commitAddStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

rollbackAddStockItems

public void rollbackAddStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
rollbackAddStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

canRemoveStockItems

public void canRemoveStockItems(StockChangeEvent e)
                         throws VetoException
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
canRemoveStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.
Throws:
VetoException - if the listener wants to veto the removal.

noRemoveStockItems

public void noRemoveStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
noRemoveStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

removedStockItems

public void removedStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
removedStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

commitRemoveStockItems

public void commitRemoveStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
commitRemoveStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

rollbackRemoveStockItems

public void rollbackRemoveStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
rollbackRemoveStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

canEditStockItems

public void canEditStockItems(StockChangeEvent e)
                       throws VetoException
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
canEditStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.
Throws:
VetoException - if the listener wants to veto the editing.

noEditStockItems

public void noEditStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
noEditStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

editingStockItems

public void editingStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
editingStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

commitEditStockItems

public void commitEditStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
commitEditStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

rollbackEditStockItems

public void rollbackEditStockItems(StockChangeEvent e)
Update the internal model and inform any listeners according to the received event.

This method is public as an implementation detail and must not be called directly.

Specified by:
rollbackEditStockItems in interface StockChangeListener
Parameters:
e - an event object describing the event.

checkAdd

protected void checkAdd(StockChangeEvent e)
Internal helper method. Check where, if at all, the indicated StockItems have been added with respect to the internal model.


checkRemove

protected void checkRemove(StockChangeEvent e)
Internal helper method. Check from where, if at all, the indicated StockItems have been removed with respect to the internal model.


checkUpdate

protected void checkUpdate(StockChangeEvent e)
Internal helper method. Check for an update in the indicated StockItems.


DatasourceChanged

public void DatasourceChanged(boolean pumpUp)
The datasource changed. force the model to invalidate its internal structures and pump up the event

Specified by:
DatasourceChanged in interface DatasourceChangeListener
Parameters:
pumpUp - true if the event should be pumped up to hosts, because this event is mostly triggered twice. first time to invalidate caches. second time for load new data

fireResultCountChanged

private void fireResultCountChanged(int count)
trigger result count changed event

Parameters:
count - new count

addResultCountListener

public boolean addResultCountListener(FilterableModel.ResultCountListener rcs)
add a ResultCountListener

Specified by:
addResultCountListener in interface FilterableModel
Returns:
true, on success

filterPropertyChanged

public void filterPropertyChanged()
apply filter and reload items

Specified by:
filterPropertyChanged in interface FilterableModel

removeResultCountListener

public void removeResultCountListener(FilterableModel.ResultCountListener rcs)
remove ResultCountListener

Specified by:
removeResultCountListener in interface FilterableModel

setModelFilter

public void setModelFilter(FilterableModel.ModelFilter modelFilter)
set nre model filter and reload items

Specified by:
setModelFilter in interface FilterableModel
Parameters:
modelFilter - new model filter