// License: GPL. For details, see LICENSE file. package com.innovant.josm.plugin.routing.gui; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.ComponentOrientation; import java.awt.event.KeyEvent; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.JScrollPane; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.gui.dialogs.ToggleDialog; import org.openstreetmap.josm.tools.Shortcut; import com.innovant.josm.plugin.routing.RoutingLayer; import com.innovant.josm.plugin.routing.RoutingModel; /** * @author jose * */ public class RoutingDialog extends ToggleDialog { private final DefaultListModel<String> model; private JList<String> jList = null; private JScrollPane jScrollPane = null; /** * Serial UID */ private static final long serialVersionUID = 8625615652900341987L; public RoutingDialog() { super(tr("Routing"), "routing", tr("Open a list of routing nodes"), Shortcut.registerShortcut("subwindow:routing", tr("Toggle: {0}", tr("Routing")), KeyEvent.VK_R, Shortcut.ALT_CTRL_SHIFT), 150); model = new DefaultListModel<>(); createLayout(getJScrollPane(), false, null); } /** * This method initializes jScrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getJScrollPane() { if (jScrollPane == null) { jScrollPane = new JScrollPane(); jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); jScrollPane.setViewportView(getJList()); } return jScrollPane; } /** * This method initializes jList * * @return javax.swing.JList */ private JList<String> getJList() { if (jList == null) { jList = new JList<>(); jList.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); jList.setModel(model); } return jList; } /** * Remove item from the list of nodes */ public void removeNode(int index) { model.remove(index); } /** * Add item to the list of nodes */ public void addNode(Node n) { model.addElement(n.getId()+" ["+n.getCoor().toDisplayString()+"]"); } /** * Insert item to the list of nodes */ public void insertNode(int index, Node n) { model.insertElementAt(n.getId()+" ["+n.getCoor().toDisplayString()+"]", index); } /** * Clear list of nodes */ public void clearNodes() { model.clear(); } public void refresh() { clearNodes(); if (Main.getLayerManager().getActiveLayer() instanceof RoutingLayer) { RoutingLayer routingLayer = (RoutingLayer) Main.getLayerManager().getActiveLayer(); RoutingModel routingModel = routingLayer.getRoutingModel(); for (Node n : routingModel.getSelectedNodes()) { addNode(n); } } } }