Changeset 1631 in josm for trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagMerger.java
- Timestamp:
- 2009-06-01T22:20:03+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/conflict/tags/TagMerger.java
r1626 r1631 7 7 import java.awt.GridBagConstraints; 8 8 import java.awt.GridBagLayout; 9 import java.awt.Insets; 9 10 import java.awt.event.ActionEvent; 10 11 import java.awt.event.AdjustmentEvent; … … 29 30 30 31 private JTable mineTable; 31 private JTable undecidedTable;32 private JTable mergedTable; 32 33 private JTable theirTable; 33 private TagMergeModel model;34 private final TagMergeModel model; 34 35 private JButton btnKeepMine; 35 36 private JButton btnKeepTheir; … … 40 41 pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 41 42 pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 42 43 43 44 adjustmentSynchronizer.synchronizeAdjustment(pane.getVerticalScrollBar()); 44 45 return pane; 45 46 } 46 47 47 48 protected JScrollPane buildMineTagTable() { 48 49 mineTable = new JTable( 49 model,50 new TagMergeColumnModel(51 new MineTableCellRenderer()52 )50 model, 51 new TagMergeColumnModel( 52 new MineTableCellRenderer() 53 ) 53 54 ); 55 mineTable.setName("table.my"); 54 56 return embeddInScrollPane(mineTable); 55 57 } … … 57 59 protected JScrollPane buildTheirTable() { 58 60 theirTable = new JTable( 59 model, 60 new TagMergeColumnModel( 61 new TheirTableCellRenderer() 62 ) 63 ); 64 return embeddInScrollPane(theirTable); 65 } 66 61 model, 62 new TagMergeColumnModel( 63 new TheirTableCellRenderer() 64 ) 65 ); 66 theirTable.setName("table.their"); 67 return embeddInScrollPane(theirTable); 68 } 69 67 70 protected JScrollPane buildUndecidedTable() { 68 undecidedTable = new JTable( 69 model, 70 new TagMergeColumnModel( 71 new UndecidedTableCellRenderer() 72 ) 73 ); 74 return embeddInScrollPane(undecidedTable); 75 } 76 71 mergedTable = new JTable( 72 model, 73 new TagMergeColumnModel( 74 new UndecidedTableCellRenderer() 75 ) 76 ); 77 mergedTable.setName("table.merged"); 78 return embeddInScrollPane(mergedTable); 79 } 80 77 81 protected void build() { 78 82 GridBagConstraints gc = new GridBagConstraints(); 79 83 setLayout(new GridBagLayout()); 80 84 81 85 adjustmentSynchronizer = new AdjustmentSynchronizer(); 82 86 83 87 gc.gridx = 0; 84 88 gc.gridy = 0; … … 86 90 gc.gridheight = 1; 87 91 gc.fill = GridBagConstraints.NONE; 88 gc.anchor = GridBagConstraints.CENTER; 89 gc.weightx = 0.0; 90 gc.weighty = 0.0; 92 gc.anchor = GridBagConstraints.CENTER; 93 gc.weightx = 0.0; 94 gc.weighty = 0.0; 95 gc.insets = new Insets(10,0,10,0); 91 96 JLabel lbl = new JLabel(tr("My version (local dataset)")); 92 97 add(lbl, gc); … … 111 116 gc.weightx = 0.0; 112 117 gc.weighty = 0.0; 118 gc.insets = new Insets(0,0,0,0); 113 119 lbl = new JLabel(tr("Their version (server dataset)")); 114 120 add(lbl, gc); … … 123 129 gc.weighty = 1.0; 124 130 add(buildMineTagTable(), gc); 125 131 126 132 gc.gridx = 1; 127 133 gc.gridy = 1; … … 135 141 mineTable.getSelectionModel().addListSelectionListener(keepMineAction); 136 142 btnKeepMine = new JButton(keepMineAction); 143 btnKeepMine.setName("button.keepmine"); 137 144 add(btnKeepMine, gc); 138 145 139 146 gc.gridx = 2; 140 147 gc.gridy = 1; … … 146 153 gc.weighty = 1.0; 147 154 add(buildUndecidedTable(), gc); 148 155 149 156 gc.gridx = 3; 150 157 gc.gridy = 1; … … 157 164 KeepTheirAction keepTheirAction = new KeepTheirAction(); 158 165 btnKeepTheir = new JButton(keepTheirAction); 166 btnKeepTheir.setName("button.keeptheir"); 159 167 add(btnKeepTheir, gc); 160 168 161 169 gc.gridx = 4; 162 170 gc.gridy = 1; … … 169 177 add(buildTheirTable(), gc); 170 178 theirTable.getSelectionModel().addListSelectionListener(keepTheirAction); 171 172 179 180 173 181 DoubleClickAdapter dblClickAdapter = new DoubleClickAdapter(); 174 182 mineTable.addMouseListener(dblClickAdapter); 175 183 theirTable.addMouseListener(dblClickAdapter); 176 177 184 185 178 186 gc.gridx = 2; 179 187 gc.gridy = 2; … … 185 193 gc.weighty = 0.0; 186 194 UndecideAction undecidedAction = new UndecideAction(); 187 undecidedTable.getSelectionModel().addListSelectionListener(undecidedAction);195 mergedTable.getSelectionModel().addListSelectionListener(undecidedAction); 188 196 JButton btnUndecide = new JButton(undecidedAction); 197 btnUndecide.setName("button.undecide"); 189 198 add(btnUndecide, gc); 190 191 } 192 199 200 } 201 193 202 public TagMerger() { 194 203 model = new TagMergeModel(); 195 204 build(); 196 205 } 197 198 206 199 207 public TagMergeModel getModel() { 200 208 return model; 201 209 } 202 210 203 211 protected ImageIcon loadIcon(String name) { 204 String path = "/images/dialogs/conflict/" + name;205 URL url = this.getClass().getResource(path);206 if (url == null) {207 System.out.println(tr("WARNING: failed to load resource {0}", path));208 return null;209 }210 return new ImageIcon(url);211 } 212 212 String path = "/images/dialogs/conflict/" + name; 213 URL url = this.getClass().getResource(path); 214 if (url == null) { 215 System.out.println(tr("WARNING: failed to load resource {0}", path)); 216 return null; 217 } 218 return new ImageIcon(url); 219 } 220 213 221 class KeepMineAction extends AbstractAction implements ListSelectionListener { 214 222 215 223 216 224 public KeepMineAction() { 217 225 ImageIcon icon = loadIcon("tagkeepmine.png"); … … 225 233 setEnabled(false); 226 234 } 227 235 228 236 public void actionPerformed(ActionEvent arg0) { 229 237 int rows[] = mineTable.getSelectedRows(); 230 if (rows == null || rows.length == 0) { 231 return; 232 } 233 model.decide(rows, MergeDecisionType.KEEP_MINE); 238 if (rows == null || rows.length == 0) 239 return; 240 model.decide(rows, MergeDecisionType.KEEP_MINE); 234 241 } 235 242 236 243 public void valueChanged(ListSelectionEvent e) { 237 setEnabled(mineTable.getSelectedRowCount() > 0);238 } 239 } 240 244 setEnabled(mineTable.getSelectedRowCount() > 0); 245 } 246 } 247 241 248 class KeepTheirAction extends AbstractAction implements ListSelectionListener { 242 249 243 250 public KeepTheirAction() { 244 251 ImageIcon icon = loadIcon("tagkeeptheir.png"); … … 252 259 setEnabled(false); 253 260 } 254 261 255 262 public void actionPerformed(ActionEvent arg0) { 256 263 int rows[] = theirTable.getSelectedRows(); 257 if (rows == null || rows.length == 0) { 258 return; 259 } 260 model.decide(rows, MergeDecisionType.KEEP_THEIR); 264 if (rows == null || rows.length == 0) 265 return; 266 model.decide(rows, MergeDecisionType.KEEP_THEIR); 261 267 } 262 268 263 269 public void valueChanged(ListSelectionEvent e) { 264 setEnabled(theirTable.getSelectedRowCount() > 0);265 } 266 } 267 270 setEnabled(theirTable.getSelectedRowCount() > 0); 271 } 272 } 273 268 274 class AdjustmentSynchronizer implements AdjustmentListener { 269 private ArrayList<Adjustable> synchronizedAdjustables;270 275 private final ArrayList<Adjustable> synchronizedAdjustables; 276 271 277 public AdjustmentSynchronizer() { 272 278 synchronizedAdjustables = new ArrayList<Adjustable>(); 273 279 } 274 280 275 281 public void synchronizeAdjustment(Adjustable adjustable) { 276 if (adjustable == null) { 277 return; 278 } 279 if (synchronizedAdjustables.contains(adjustable)) { 280 return; 281 } 282 if (adjustable == null) 283 return; 284 if (synchronizedAdjustables.contains(adjustable)) 285 return; 282 286 synchronizedAdjustables.add(adjustable); 283 287 adjustable.addAdjustmentListener(this); … … 292 296 } 293 297 } 294 298 295 299 class DoubleClickAdapter extends MouseAdapter { 296 300 301 @Override 297 302 public void mouseClicked(MouseEvent e) { 298 if (e.getClickCount() != 2) { 299 return; 300 } 303 if (e.getClickCount() != 2) 304 return; 301 305 JTable table = null; 302 306 MergeDecisionType mergeDecision; 303 307 304 308 if (e.getSource() == mineTable) { 305 table = (JTable)mineTable;309 table = mineTable; 306 310 mergeDecision = MergeDecisionType.KEEP_MINE; 307 311 } else if (e.getSource() == theirTable) { 308 table = (JTable)theirTable;312 table = theirTable; 309 313 mergeDecision = MergeDecisionType.KEEP_THEIR; 310 } else if (e.getSource() == undecidedTable) {311 table = (JTable)undecidedTable;314 } else if (e.getSource() == mergedTable) { 315 table = mergedTable; 312 316 mergeDecision = MergeDecisionType.UNDECIDED; 313 } else {317 } else 314 318 // double click in another component; shouldn't happen, 315 // but just in case 316 return; 317 } 319 // but just in case 320 return; 318 321 int row = table.rowAtPoint(e.getPoint()); 319 322 model.decide(row, mergeDecision); 320 323 } 321 } 322 324 } 325 323 326 class UndecideAction extends AbstractAction implements ListSelectionListener { 324 327 … … 334 337 setEnabled(false); 335 338 } 336 339 337 340 public void actionPerformed(ActionEvent arg0) { 338 int rows[] = undecidedTable.getSelectedRows(); 339 if (rows == null || rows.length == 0) { 340 return; 341 } 342 model.decide(rows, MergeDecisionType.UNDECIDED); 341 int rows[] = mergedTable.getSelectedRows(); 342 if (rows == null || rows.length == 0) 343 return; 344 model.decide(rows, MergeDecisionType.UNDECIDED); 343 345 } 344 346 345 347 public void valueChanged(ListSelectionEvent e) { 346 setEnabled(undecidedTable.getSelectedRowCount() > 0);347 } 348 setEnabled(mergedTable.getSelectedRowCount() > 0); 349 } 348 350 } 349 351 }
Note:
See TracChangeset
for help on using the changeset viewer.