// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.turnrestrictions.list;
import java.awt.BorderLayout;
import java.util.Collections;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.SelectionChangedListener;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
/**
* This is the view for the list of turn restrictions related to objects in the
* current selection.
*
*/
public class TurnRestrictionsInSelectionView extends AbstractTurnRestrictionsListView {
protected void build() {
DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
model = new TurnRestrictionsInSelectionListModel(selectionModel);
lstTurnRestrictions = new JList<>(model);
lstTurnRestrictions.setSelectionModel(selectionModel);
lstTurnRestrictions.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
lstTurnRestrictions.setCellRenderer(new TurnRestrictionCellRenderer());
setLayout(new BorderLayout());
add(new JScrollPane(lstTurnRestrictions), BorderLayout.CENTER);
}
protected void registerAsListener() {
Main.getLayerManager().addActiveLayerChangeListener((ActiveLayerChangeListener) model);
SelectionEventManager.getInstance().addSelectionListener((SelectionChangedListener) model, FireMode.IN_EDT_CONSOLIDATED);
TurnRestrictionsInSelectionListModel m = (TurnRestrictionsInSelectionListModel) model;
if (Main.getLayerManager().getEditLayer() != null) {
m.initFromSelection(Main.getLayerManager().getEditLayer().data.getSelected());
} else {
m.initFromSelection(Collections.<OsmPrimitive>emptyList());
}
}
protected void unregisterAsListener() {
Main.getLayerManager().removeActiveLayerChangeListener((ActiveLayerChangeListener) model);
SelectionEventManager.getInstance().removeSelectionListener((SelectionChangedListener) model);
}
public TurnRestrictionsInSelectionView() {
build();
}
}