Changeset 25667 in osm for applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java
- Timestamp:
- 2011-03-22T15:53:58+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java
r25649 r25667 2 2 3 3 import java.awt.event.MouseEvent; 4 import java.util.Collection; 4 5 import org.openstreetmap.josm.data.osm.OsmPrimitive; 6 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 5 7 import static org.openstreetmap.josm.tools.I18n.tr; 6 8 … … 9 11 import java.awt.event.KeyEvent; 10 12 import java.awt.event.MouseAdapter; 13 import java.util.Collections; 14 import java.util.HashSet; 15 import java.util.Set; 16 import javax.swing.DefaultListModel; 17 import javax.swing.JButton; 11 18 12 19 import javax.swing.JList; … … 15 22 import javax.swing.ListSelectionModel; 16 23 import org.openstreetmap.josm.Main; 24 import org.openstreetmap.josm.data.SelectionChangedListener; 17 25 import org.openstreetmap.josm.data.osm.Relation; 26 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode; 27 import org.openstreetmap.josm.data.osm.event.SelectionEventManager; 18 28 19 29 import org.openstreetmap.josm.gui.MapView; 30 import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener; 20 31 import org.openstreetmap.josm.gui.MapView.LayerChangeListener; 21 32 import org.openstreetmap.josm.gui.OsmPrimitivRenderer; … … 23 34 import org.openstreetmap.josm.gui.layer.Layer; 24 35 import org.openstreetmap.josm.tools.Shortcut; 36 import relcontext.actions.AddRemoveMemberAction; 37 import relcontext.actions.ClearChosenRelationAction; 38 import relcontext.actions.CreateRelationAction; 39 import relcontext.actions.DownloadChosenRelationAction; 40 import relcontext.actions.EditChosenRelationAction; 25 41 26 42 /** … … 29 45 * @author Zverik 30 46 */ 31 public class RelContextDialog extends ToggleDialog implements LayerChangeListener, ChosenRelationListener { 47 public class RelContextDialog extends ToggleDialog implements EditLayerChangeListener, ChosenRelationListener, SelectionChangedListener { 32 48 private JList relationsList; 49 private final DefaultListModel relationsData; 33 50 private ChosenRelation chosenRelation; 34 51 35 52 public RelContextDialog() { 36 super(tr(" OpenRelation Editor"), "icon_relcontext",53 super(tr("Advanced Relation Editor"), "icon_relcontext", 37 54 tr("Opens advanced relation/multipolygon editor panel"), 38 55 Shortcut.registerShortcut("view:relcontext", tr("Toggle: {0}", tr("Open Relation Editor")), 39 56 KeyEvent.VK_R, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150); 57 58 JPanel rcPanel = new JPanel(new BorderLayout()); 40 59 41 60 chosenRelation = new ChosenRelation(); … … 43 62 MapView.addEditLayerChangeListener(chosenRelation); 44 63 45 relationsList = new JList(); 64 relationsData = new DefaultListModel(); 65 relationsList = new JList(relationsData); 46 66 relationsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 47 67 relationsList.setCellRenderer(new OsmPrimitivRenderer() { … … 58 78 } 59 79 chosenRelation.set((Relation)relationsList.getSelectedValue()); 80 relationsList.clearSelection(); 60 81 } 61 82 }); 62 add(new JScrollPane(relationsList), BorderLayout.CENTER); 83 rcPanel.add(new JScrollPane(relationsList), BorderLayout.CENTER); 63 84 64 85 // [±][X] relation U [AZ][Down][Edit] 65 86 JPanel topLine = new JPanel(new BorderLayout()); 66 87 JPanel topLeftButtons = new JPanel(new FlowLayout(FlowLayout.LEFT)); 88 topLeftButtons.add(new JButton(new AddRemoveMemberAction(chosenRelation))); 89 topLeftButtons.add(new JButton(new ClearChosenRelationAction(chosenRelation))); 90 topLine.add(topLeftButtons, BorderLayout.WEST); 91 topLine.add(new ChosenRelationComponent(chosenRelation), BorderLayout.CENTER); 67 92 JPanel topRightButtons = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 68 topLine.add(topLeftButtons, BorderLayout.WEST); 93 topRightButtons.add(new JButton(new DownloadChosenRelationAction(chosenRelation))); 94 topRightButtons.add(new JButton(new EditChosenRelationAction(chosenRelation))); 69 95 topLine.add(topRightButtons, BorderLayout.EAST); 70 add(topLine, BorderLayout.NORTH); 96 rcPanel.add(topLine, BorderLayout.NORTH); 71 97 72 98 // [+][Multi] [X]Adm [X]Tags [X]1 73 99 JPanel bottomLine = new JPanel(new FlowLayout(FlowLayout.LEFT)); 74 add(bottomLine, BorderLayout.SOUTH); 100 bottomLine.add(new JButton(new CreateRelationAction(chosenRelation))); 101 rcPanel.add(bottomLine, BorderLayout.SOUTH); 75 102 76 MapView.addLayerChangeListener(this);103 add(rcPanel, BorderLayout.CENTER); 77 104 } 105 106 @Override 107 public void hideNotify() { 108 SelectionEventManager.getInstance().removeSelectionListener(this); 109 MapView.removeEditLayerChangeListener(this); 110 } 111 112 @Override 113 public void showNotify() { 114 SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED); 115 MapView.addEditLayerChangeListener(this); 116 } 117 118 78 119 79 120 public ChosenRelation getChosenRelation() { … … 85 126 } 86 127 87 @Override 88 public void activeLayerChange( Layer arg0, Layer arg1 ) { 89 // TODO Auto-generated method stub 128 public void selectionChanged( Collection<? extends OsmPrimitive> newSelection ) { 129 if( !isVisible() || relationsData == null ) 130 return; 131 // repopulate relations table 132 relationsData.clear(); 133 if( newSelection == null ) 134 return; 135 Set<Relation> rels = new HashSet<Relation>(); 136 for( OsmPrimitive element : newSelection ) { 137 for( OsmPrimitive ref : element.getReferrers() ) { 138 if( ref instanceof Relation && !ref.isIncomplete() && !ref.isDeleted() ) { 139 rels.add((Relation) ref); 140 } 141 } 142 } 143 for( Relation rel : rels ) 144 relationsData.addElement(rel); 90 145 } 91 146 92 @Override 93 public void layerAdded( Layer arg0 ) { 94 // TODO Auto-generated method stub 147 private void updateSelection() { 148 if (Main.main.getCurrentDataSet() == null) { 149 selectionChanged(Collections.<OsmPrimitive>emptyList()); 150 } else { 151 selectionChanged(Main.main.getCurrentDataSet().getSelected()); 152 } 95 153 } 96 154 97 @Override 98 public void layerRemoved( Layer arg0 ) { 99 // TODO Auto-generated method stub 155 public void editLayerChanged( OsmDataLayer oldLayer, OsmDataLayer newLayer ) { 156 updateSelection(); 100 157 } 101 158 }
Note:
See TracChangeset
for help on using the changeset viewer.