Changeset 1169 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
- Timestamp:
- 2008-12-23T15:07:05+01:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
r1084 r1169 45 45 public class RelationListDialog extends ToggleDialog implements LayerChangeListener, DataChangeListener { 46 46 47 48 49 50 47 /** 48 * The selection's list data. 49 */ 50 private final DefaultListModel list = new DefaultListModel(); 51 51 52 53 54 55 52 /** 53 * The display list. 54 */ 55 private JList displaylist = new JList(list); 56 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 57 public RelationListDialog() { 58 super(tr("Relations"), "relationlist", tr("Open a list of all relations."), 59 Shortcut.registerShortcut("subwindow:relations", tr("Toggle: {0}", tr("Relations")), KeyEvent.VK_R, Shortcut.GROUP_LAYER), 150); 60 displaylist.setCellRenderer(new OsmPrimitivRenderer()); 61 displaylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 62 displaylist.addMouseListener(new MouseAdapter(){ 63 @Override public void mouseClicked(MouseEvent e) { 64 if (e.getClickCount() < 2) 65 return; 66 Relation toEdit = (Relation) displaylist.getSelectedValue(); 67 if (toEdit != null) 68 new RelationEditor(toEdit).setVisible(true); 69 } 70 }); 71 71 72 72 add(new JScrollPane(displaylist), BorderLayout.CENTER); 73 73 74 74 JPanel buttonPanel = new JPanel(new GridLayout(1,4)); 75 75 76 77 78 79 80 81 76 buttonPanel.add(new SideButton(marktr("New"), "addrelation", "Selection", tr("Create a new relation"), new ActionListener() { 77 public void actionPerformed(ActionEvent e) { 78 // call relation editor with null argument to create new relation 79 new RelationEditor(null).setVisible(true); 80 } 81 }), GBC.std()); 82 82 83 84 85 86 87 88 83 buttonPanel.add(new SideButton(marktr("Select"), "select", "Selection", tr("Select this relation"), new ActionListener() { 84 public void actionPerformed(ActionEvent e) { 85 // replace selection with the relation from the list 86 Main.ds.setSelected((Relation)displaylist.getSelectedValue()); 87 } 88 }), GBC.std()); 89 89 90 91 92 93 94 95 96 90 buttonPanel.add(new SideButton(marktr("Edit"), "edit", "Selection", tr( "Open an editor for the selected relation"), new ActionListener() { 91 public void actionPerformed(ActionEvent e) { 92 Relation toEdit = (Relation) displaylist.getSelectedValue(); 93 if (toEdit != null) 94 new RelationEditor(toEdit).setVisible(true); 95 } 96 }), GBC.std()); 97 97 98 99 100 101 102 103 104 105 106 107 108 109 98 buttonPanel.add(new SideButton(marktr("Delete"), "delete", "Selection", tr("Delete the selected relation"), new ActionListener() { 99 public void actionPerformed(ActionEvent e) { 100 Relation toDelete = (Relation) displaylist.getSelectedValue(); 101 if (toDelete != null) { 102 Main.main.undoRedo.add( 103 new DeleteCommand(Collections.singleton(toDelete))); 104 } 105 } 106 }), GBC.eol()); 107 Layer.listeners.add(this); 108 add(buttonPanel, BorderLayout.SOUTH); 109 } 110 110 111 112 113 114 111 @Override public void setVisible(boolean b) { 112 super.setVisible(b); 113 if (b) updateList(); 114 } 115 115 116 117 118 119 120 121 122 123 124 116 public void updateList() { 117 list.setSize(Main.ds.relations.size()); 118 int i = 0; 119 for (OsmPrimitive e : DataSet.sort(Main.ds.relations)) { 120 if (!e.deleted && !e.incomplete) 121 list.setElementAt(e, i++); 122 } 123 list.setSize(i); 124 } 125 125 126 127 128 129 130 131 132 133 126 public void activeLayerChange(Layer a, Layer b) { 127 if ((a == null || a instanceof OsmDataLayer) && b instanceof OsmDataLayer) { 128 if (a != null) ((OsmDataLayer)a).listenerDataChanged.remove(this); 129 ((OsmDataLayer)b).listenerDataChanged.add(this); 130 updateList(); 131 repaint(); 132 } 133 } 134 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 135 public void layerRemoved(Layer a) { 136 if (a instanceof OsmDataLayer) { 137 ((OsmDataLayer)a).listenerDataChanged.remove(this); 138 } 139 } 140 public void layerAdded(Layer a) { 141 if (a instanceof OsmDataLayer) { 142 ((OsmDataLayer)a).listenerDataChanged.add(this); 143 } 144 } 145 public void dataChanged(OsmDataLayer l) { 146 updateList(); 147 repaint(); 148 } 149 149 150 151 152 153 154 155 156 157 150 /** 151 * Returns the currently selected relation, or null. 152 * 153 * @return the currently selected relation, or null 154 */ 155 public Relation getCurrentRelation() { 156 return (Relation) displaylist.getSelectedValue(); 157 } 158 158 159 160 161 162 163 164 165 166 159 /** 160 * Adds a selection listener to the relation list. 161 * 162 * @param listener the listener to add 163 */ 164 public void addListSelectionListener(ListSelectionListener listener) { 165 displaylist.addListSelectionListener(listener); 166 } 167 167 168 169 170 171 172 173 174 175 168 /** 169 * Removes a selection listener from the relation list. 170 * 171 * @param listener the listener to remove 172 */ 173 public void removeListSelectionListener(ListSelectionListener listener) { 174 displaylist.removeListSelectionListener(listener); 175 } 176 176 }
Note:
See TracChangeset
for help on using the changeset viewer.