public static final class LayerListDialog.LayerListModel extends javax.swing.table.AbstractTableModel implements LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener, java.beans.PropertyChangeListener, ReorderableTableModel<Layer>
TableModel
and it provides a ListSelectionModel
. It expects
to be configured with a DefaultListSelectionModel
. The selection model is used
to update the selection state of views depending on messages sent to the model.
The model manages a list of LayerListDialog.LayerListModelListener
which are mainly notified if
the model requires views to make a specific list entry visible.
It also listens to PropertyChangeEvent
s of every Layer
it manages, in particular to
the properties Layer.VISIBLE_PROP
and Layer.NAME_PROP
.Modifier and Type | Field and Description |
---|---|
private LayerListDialog.LayerList |
layerList |
private MainLayerManager |
layerManager |
private java.util.concurrent.CopyOnWriteArrayList<LayerListDialog.LayerListModelListener> |
listeners |
private javax.swing.DefaultListSelectionModel |
selectionModel
manages list selection state
|
Constructor and Description |
---|
LayerListModel(MainLayerManager layerManager,
javax.swing.DefaultListSelectionModel selectionModel)
constructor
|
Modifier and Type | Method and Description |
---|---|
void |
activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
Called whenever the active or edit layer changed.
|
void |
addLayerListModelListener(LayerListDialog.LayerListModelListener listener)
Adds a listener to this model
|
boolean |
doMove(int delta,
int... selectedRows)
Performs the move operation, without any check nor selection handling.
|
private void |
ensureActiveSelected()
Ensures that at least one layer is selected in the layer dialog
|
private void |
ensureSelectedIsVisible()
Make sure the first of the selected layers is visible in the views of this model.
|
private void |
fireMakeVisible(int index,
Layer layer)
Fires a make visible event to listeners
|
private void |
fireRefresh()
Fires a refresh event to listeners of this model
|
private Layer |
getActiveLayer()
Replies the active layer.
|
int |
getColumnCount() |
Layer |
getFirstLayer()
Replies the first layer.
|
Layer |
getLayer(int index)
Replies the layer at position
index |
MainLayerManager |
getLayerManager()
The layer manager this model is for.
|
java.util.List<Layer> |
getLayers()
Replies the list of layers currently managed by
MapView . |
java.util.List<Layer> |
getPossibleMergeTargets(Layer source)
Replies a list of layers which are possible merge targets for
source |
int |
getRowCount() |
java.util.List<Layer> |
getSelectedLayers()
Replies the list of currently selected layers.
|
java.util.List<java.lang.Integer> |
getSelectedRows()
Replies a the list of indices of the selected rows.
|
javax.swing.DefaultListSelectionModel |
getSelectionModel()
Returns the selection model.
|
Layer |
getValue(int index)
Get object value at given index.
|
java.lang.Object |
getValueAt(int row,
int col) |
boolean |
isCellEditable(int row,
int col) |
void |
layerAdded(LayerManager.LayerAddEvent e)
Notifies this listener that a layer has been added.
|
void |
layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
Notifies this listener that the order of layers was changed.
|
void |
layerRemoving(LayerManager.LayerRemoveEvent e)
Notifies this listener that a alayer was just removed.
|
boolean |
move(int delta,
int... selectedRows)
Move selected rows by any number of positions, if possible.
|
private void |
onAddLayer(Layer layer)
Invoked when a layer managed by
MapView is added |
private void |
onRemoveLayer(Layer layer)
Invoked if a layer managed by
MapView is removed |
void |
populate()
Populates the model with the current layers managed by
MapView . |
void |
propertyChange(java.beans.PropertyChangeEvent evt) |
void |
removeLayerListModelListener(LayerListDialog.LayerListModelListener listener)
removes a listener from this model
|
(package private) void |
setLayerList(LayerListDialog.LayerList layerList) |
void |
setSelectedLayer(Layer layer)
Marks
layer as selected layer. |
Layer |
setValue(int index,
Layer value)
Set object value at given index.
|
void |
setValueAt(java.lang.Object value,
int row,
int col) |
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getColumnName, getListeners, getTableModelListeners, removeTableModelListener
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
canMove, canMoveDown, canMoveDown, canMoveUp, canMoveUp, getSelectedIndices, moveDown, moveDown, moveUp, moveUp
addTableModelListener, getColumnClass, getColumnName, removeTableModelListener
canMove, canMoveDown, canMoveUp
private final javax.swing.DefaultListSelectionModel selectionModel
private final java.util.concurrent.CopyOnWriteArrayList<LayerListDialog.LayerListModelListener> listeners
private LayerListDialog.LayerList layerList
private final MainLayerManager layerManager
LayerListModel(MainLayerManager layerManager, javax.swing.DefaultListSelectionModel selectionModel)
layerManager
- The layer manager to use for the list.selectionModel
- the list selection modelvoid setLayerList(LayerListDialog.LayerList layerList)
public MainLayerManager getLayerManager()
public void addLayerListModelListener(LayerListDialog.LayerListModelListener listener)
listener
- the listenerpublic void removeLayerListModelListener(LayerListDialog.LayerListModelListener listener)
listener
- the listenerprivate void fireMakeVisible(int index, Layer layer)
index
- the index of the row to make visiblelayer
- the layer at this indexLayerListDialog.LayerListModelListener.makeVisible(int, Layer)
private void fireRefresh()
public void setSelectedLayer(Layer layer)
layer
as selected layer. Ignored, if layer is null.layer
- the layer.public java.util.List<Layer> getSelectedLayers()
public java.util.List<java.lang.Integer> getSelectedRows()
private void onRemoveLayer(Layer layer)
MapView
is removedlayer
- the layer which is removedprivate void onAddLayer(Layer layer)
MapView
is addedlayer
- the layerpublic Layer getFirstLayer()
public Layer getLayer(int index)
index
index
- the indexindex
. Null,
if index is out of range.public javax.swing.DefaultListSelectionModel getSelectionModel()
ReorderableTableModel
getSelectionModel
in interface ReorderableTableModel<Layer>
public Layer getValue(int index)
ReorderableModel
getValue
in interface ReorderableModel<Layer>
index
- indexpublic Layer setValue(int index, Layer value)
ReorderableModel
setValue
in interface ReorderableModel<Layer>
index
- indexvalue
- new valuepublic boolean doMove(int delta, int... selectedRows)
ReorderableModel
doMove
in interface ReorderableModel<Layer>
delta
- negative or positive deltaselectedRows
- rows to movetrue
if rows have been movedpublic boolean move(int delta, int... selectedRows)
ReorderableTableModel
move
in interface ReorderableTableModel<Layer>
delta
- negative or positive deltaselectedRows
- rows to movetrue
if the move was performedReorderableTableModel.canMove(int)
private void ensureSelectedIsVisible()
public java.util.List<Layer> getPossibleMergeTargets(Layer source)
source
source
- the source layersource
. Never null, but can be empty.public java.util.List<Layer> getLayers()
MapView
.
Never null, but can be empty.MapView
.
Never null, but can be empty.private void ensureActiveSelected()
private Layer getActiveLayer()
public int getRowCount()
getRowCount
in interface javax.swing.table.TableModel
public int getColumnCount()
getColumnCount
in interface javax.swing.table.TableModel
public java.lang.Object getValueAt(int row, int col)
getValueAt
in interface javax.swing.table.TableModel
public boolean isCellEditable(int row, int col)
isCellEditable
in interface javax.swing.table.TableModel
isCellEditable
in class javax.swing.table.AbstractTableModel
public void setValueAt(java.lang.Object value, int row, int col)
setValueAt
in interface javax.swing.table.TableModel
setValueAt
in class javax.swing.table.AbstractTableModel
public void activeOrEditLayerChanged(MainLayerManager.ActiveLayerChangeEvent e)
MainLayerManager.ActiveLayerChangeListener
You can be sure that this layer is still contained in this set.
Listeners are called in the EDT thread and you can manipulate the layer manager in the current thread.
activeOrEditLayerChanged
in interface MainLayerManager.ActiveLayerChangeListener
e
- The change event.public void layerAdded(LayerManager.LayerAddEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerAdded
in interface LayerManager.LayerChangeListener
e
- The new added layer eventpublic void layerRemoving(LayerManager.LayerRemoveEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread after the layer was removed.
Use LayerManager.LayerRemoveEvent.scheduleRemoval(Collection)
to remove more layers.
You should not do blocking or long-running tasks in this method.
layerRemoving
in interface LayerManager.LayerChangeListener
e
- The layer to be removed (as event)public void layerOrderChanged(LayerManager.LayerOrderChangeEvent e)
LayerManager.LayerChangeListener
Listeners are called in the EDT thread. You should not do blocking or long-running tasks in this method.
layerOrderChanged
in interface LayerManager.LayerChangeListener
e
- The order change event.public void propertyChange(java.beans.PropertyChangeEvent evt)
propertyChange
in interface java.beans.PropertyChangeListener