Changeset 32398 in osm for applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java
- Timestamp:
- 2016-06-25T11:56:57+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java
r32395 r32398 70 70 import org.openstreetmap.josm.data.osm.event.SelectionEventManager; 71 71 import org.openstreetmap.josm.gui.DefaultNameFormatter; 72 import org.openstreetmap.josm.gui.MapView;73 import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;74 72 import org.openstreetmap.josm.gui.OsmPrimitivRenderer; 75 73 import org.openstreetmap.josm.gui.dialogs.ToggleDialog; 76 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 74 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent; 75 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener; 77 76 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox; 78 77 import org.openstreetmap.josm.tools.GBC; … … 102 101 * @author Zverik 103 102 */ 104 public class RelContextDialog extends ToggleDialog implements EditLayerChangeListener, ChosenRelationListener, SelectionChangedListener {103 public class RelContextDialog extends ToggleDialog implements ActiveLayerChangeListener, ChosenRelationListener, SelectionChangedListener { 105 104 106 105 public static final String PREF_PREFIX = "reltoolbox"; … … 136 135 final JTable relationsTable = new JTable(relationsData); 137 136 configureRelationsTable(relationsTable); 138 rcPanel.add(new JScrollPane(relationsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), BorderLayout.CENTER); 137 rcPanel.add(new JScrollPane(relationsTable, 138 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), BorderLayout.CENTER); 139 139 140 140 final MouseListener relationMouseAdapter = new ChosenRelationMouseAdapter(); … … 146 146 @Override 147 147 public void itemStateChanged(ItemEvent e) { 148 if (e.getStateChange() == ItemEvent.DESELECTED ) return;148 if (e.getStateChange() == ItemEvent.DESELECTED) return; 149 149 String memberRole = roleBoxModel.getSelectedMembersRole(); 150 150 String selectedRole = roleBoxModel.isAnotherRoleSelected() ? askForRoleName() : roleBoxModel.getSelectedRole(); … … 200 200 }); 201 201 downloadButton.setVisible(false); 202 if (Main.pref.getBoolean(PREF_PREFIX + ".hidetopline", false) ) {202 if (Main.pref.getBoolean(PREF_PREFIX + ".hidetopline", false)) { 203 203 chosenRelationPanel.setVisible(false); 204 204 } … … 229 229 230 230 private void checkPopup(MouseEvent e) { 231 if (e.isPopupTrigger() ) {231 if (e.isPopupTrigger()) { 232 232 multiPopupMenu.show(e.getComponent(), e.getX(), e.getY()); 233 233 } … … 249 249 int row = relationsTable.rowAtPoint(p); 250 250 if (SwingUtilities.isLeftMouseButton(e) && row >= 0) { 251 Relation relation = (Relation)relationsData.getValueAt(row, 0); 251 Relation relation = (Relation) relationsData.getValueAt(row, 0); 252 252 if (e.getClickCount() > 1) { 253 Main. main.getEditLayer().data.setSelected(relation);253 Main.getLayerManager().getEditLayer().data.setSelected(relation); 254 254 } 255 255 } … … 271 271 int row = relationsTable.rowAtPoint(p); 272 272 if (row > -1) { 273 Relation relation = (Relation)relationsData.getValueAt(row, 0); 273 Relation relation = (Relation) relationsData.getValueAt(row, 0); 274 274 JPopupMenu menu = chosenRelation.isSame(relation) ? popupMenu 275 275 : new ChosenRelationPopupMenu(new StaticChosenRelation(relation)); … … 288 288 289 289 @Override 290 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 290 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 291 int row, int column) { 291 292 Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 292 if (!isSelected && value instanceof Relation && chosenRelation.isSame(value) ) {293 if (!isSelected && value instanceof Relation && chosenRelation.isSame(value)) { 293 294 c.setBackground(CHOSEN_RELATION_COLOR); 294 295 } else { … … 301 302 columns.getColumn(1).setCellRenderer(new DefaultTableCellRenderer() { 302 303 @Override 303 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 304 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 305 int row, int column) { 304 306 Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 305 if (!isSelected && chosenRelation.isSame(table.getValueAt(row, 0)) ) {307 if (!isSelected && chosenRelation.isSame(table.getValueAt(row, 0))) { 306 308 c.setBackground(CHOSEN_RELATION_COLOR); 307 309 } else { … … 318 320 int selectedRow = relationsTable.getSelectedRow(); 319 321 if (selectedRow >= 0) { 320 chosenRelation.set((Relation)relationsData.getValueAt(selectedRow, 0)); 322 chosenRelation.set((Relation) relationsData.getValueAt(selectedRow, 0)); 321 323 relationsTable.clearSelection(); 322 324 } … … 334 336 public void hideNotify() { 335 337 SelectionEventManager.getInstance().removeSelectionListener(this); 336 Ma pView.removeEditLayerChangeListener(this);338 Main.getLayerManager().removeActiveLayerChangeListener(this); 337 339 DatasetEventManager.getInstance().removeDatasetListener(chosenRelation); 338 340 chosenRelation.clear(); … … 342 344 public void showNotify() { 343 345 SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED); 344 Ma pView.addEditLayerChangeListener(this);346 Main.getLayerManager().addActiveLayerChangeListener(this); 345 347 DatasetEventManager.getInstance().addDatasetListener(chosenRelation, FireMode.IN_EDT); 346 348 } … … 352 354 @Override 353 355 public void chosenRelationChanged(Relation oldRelation, Relation newRelation) { 354 if (chosenRelationPanel != null && Main.pref.getBoolean(PREF_PREFIX + ".hidetopline", false) ) {356 if (chosenRelationPanel != null && Main.pref.getBoolean(PREF_PREFIX + ".hidetopline", false)) { 355 357 chosenRelationPanel.setVisible(newRelation != null); 356 358 } 357 if (Main. main.getCurrentDataSet() != null) {358 selectionChanged(Main. main.getCurrentDataSet().getSelected());359 if (Main.getLayerManager().getEditDataSet() != null) { 360 selectionChanged(Main.getLayerManager().getEditDataSet().getSelected()); 359 361 } 360 362 roleBoxModel.update(); 361 // ?362 363 } 363 364 364 365 @Override 365 366 public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { 366 if (!isVisible() || relationsData == null )367 if (!isVisible() || relationsData == null) 367 368 return; 368 369 roleBoxModel.update(); … … 370 371 relationsData.setRowCount(0); 371 372 sortAndFixAction.chosenRelationChanged(chosenRelation.get(), chosenRelation.get()); 372 if (newSelection == null )373 if (newSelection == null) 373 374 return; 374 375 … … 388 389 for (OsmPrimitive element : newSelection) { 389 390 if (m.getMember().equals(element)) { 390 if (role == null ) {391 if (role == null) { 391 392 role = m.getRole(); 392 393 } else if (!role.equals(m.getRole())) { … … 399 400 relationsData.addRow(new Object[] {rel, role == null ? "" : role}); 400 401 } 401 for (OsmPrimitive element : newSelection )402 if (element instanceof Relation && !chosenRelation.isSame(element) ) {402 for (OsmPrimitive element : newSelection) { 403 if (element instanceof Relation && !chosenRelation.isSame(element)) { 403 404 relationsData.addRow(new Object[] {element, ""}); 404 405 } 406 } 405 407 } 406 408 407 409 private void updateSelection() { 408 if (Main. main.getCurrentDataSet() == null) {410 if (Main.getLayerManager().getEditDataSet() == null) { 409 411 selectionChanged(Collections.<OsmPrimitive>emptyList()); 410 412 } else { 411 selectionChanged(Main. main.getCurrentDataSet().getSelected());413 selectionChanged(Main.getLayerManager().getEditDataSet().getSelected()); 412 414 } 413 415 } 414 416 415 417 @Override 416 public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {418 public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) { 417 419 updateSelection(); 418 420 } … … 435 437 436 438 ClassLoader classLoader = RelContextDialog.class.getClassLoader(); 437 try ( 438 InputStream possibleRolesStream = classLoader.getResourceAsStream(POSSIBLE_ROLES_FILE); 439 try (InputStream possibleRolesStream = classLoader.getResourceAsStream(POSSIBLE_ROLES_FILE); 439 440 BufferedReader r = new BufferedReader(new InputStreamReader(possibleRolesStream)); 440 441 ) { 441 while(r.ready()) { 442 while (r.ready()) { 442 443 String line = r.readLine(); 443 444 StringTokenizer t = new StringTokenizer(line, " ,;:\""); … … 445 446 String type = t.nextToken(); 446 447 List<String> roles = new ArrayList<>(); 447 while(t.hasMoreTokens() ) {448 while (t.hasMoreTokens()) { 448 449 roles.add(t.nextToken()); 449 450 } … … 451 452 } 452 453 } 453 } catch(Exception e) { 454 } catch (Exception e) { 454 455 Main.error("[RelToolbox] Error reading possible roles file."); 455 456 Main.error(e); … … 463 464 List<String> items = new ArrayList<>(); 464 465 for (String role : roleBoxModel.getRoles()) { 465 if (role.length() > 1 ) {466 if (role.length() > 1) { 466 467 items.add(role); 467 468 } … … 497 498 Object answer = optionPane.getValue(); 498 499 if (answer == null || answer == JOptionPane.UNINITIALIZED_VALUE 499 || (answer instanceof Integer && (Integer)answer != JOptionPane.OK_OPTION)) 500 || (answer instanceof Integer && (Integer) answer != JOptionPane.OK_OPTION)) 500 501 return null; 501 502 … … 506 507 @Override 507 508 public void mouseClicked(MouseEvent e) { 508 if (e.isControlDown() || !(e.getComponent() instanceof JComboBox )) // do not use left click handler on combo box509 if (SwingUtilities.isLeftMouseButton(e) && chosenRelation.get() != null && Main. main.getEditLayer() != null) {510 Main. main.getEditLayer().data.setSelected(chosenRelation.get());509 if (e.isControlDown() || !(e.getComponent() instanceof JComboBox)) // do not use left click handler on combo box 510 if (SwingUtilities.isLeftMouseButton(e) && chosenRelation.get() != null && Main.getLayerManager().getEditLayer() != null) { 511 Main.getLayerManager().getEditLayer().data.setSelected(chosenRelation.get()); 511 512 } 512 513 } … … 530 531 531 532 private class ChosenRelationPopupMenu extends JPopupMenu { 532 publicChosenRelationPopupMenu(ChosenRelation chosenRelation) {533 ChosenRelationPopupMenu(ChosenRelation chosenRelation) { 533 534 add(new SelectMembersAction(chosenRelation)); 534 535 add(new SelectRelationAction(chosenRelation)); … … 545 546 546 547 protected void applyRoleToSelection(String role) { 547 if (chosenRelation != null && chosenRelation.get() != null && Main.main.getCurrentDataSet() != null && !Main.main.getCurrentDataSet().selectionEmpty()) { 548 Collection<OsmPrimitive> selected = Main.main.getCurrentDataSet().getSelected(); 548 if (chosenRelation != null && chosenRelation.get() != null 549 && Main.getLayerManager().getEditDataSet() != null && !Main.getLayerManager().getEditDataSet().selectionEmpty()) { 550 Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getSelected(); 549 551 Relation r = chosenRelation.get(); 550 552 List<Command> commands = new ArrayList<>(); … … 553 555 if (selected.contains(m.getMember())) { 554 556 if (!role.equals(m.getRole())) { 555 // r.setMember(i, new RelationMember(role, m.getMember()));556 557 commands.add(new ChangeRelationMemberRoleCommand(r, i, role)); 557 558 } … … 576 577 } 577 578 } 578 /*579 private class MultipolygonSettingsAction extends AbstractAction {580 public MultipolygonSettingsAction() {581 super();582 putValue(SMALL_ICON, ImageProvider.get("svpRight"));583 putValue(SHORT_DESCRIPTION, tr("Change multipolygon creation settings"));584 }585 586 public void actionPerformed(ActionEvent e) {587 Component c = e.getSource() instanceof Component ? (Component)e.getSource() : Main.parent;588 multiPopupMenu.show(c, 0, 0);589 }590 }*/591 579 592 580 private class MultipolygonSettingsPopup extends JPopupMenu implements ActionListener { 593 public MultipolygonSettingsPopup() { 594 super(); 581 MultipolygonSettingsPopup() { 595 582 addMenuItem("boundary", tr("Create administrative boundary relations")); 596 583 addMenuItem("boundaryways", tr("Add tags boundary and admin_level to boundary relation ways")); … … 614 601 String property = e.getActionCommand(); 615 602 if (property != null && property.length() > 0 && e.getSource() instanceof JCheckBoxMenuItem) { 616 boolean value = ((JCheckBoxMenuItem)e.getSource()).isSelected(); 603 boolean value = ((JCheckBoxMenuItem) e.getSource()).isSelected(); 617 604 Main.pref.put(property, value); 618 605 show(getInvoker(), getX(), getY()); … … 623 610 private class EnterRoleAction extends JosmAction implements ChosenRelationListener { 624 611 625 publicEnterRoleAction() {626 super(tr("Change role"), (String)null, tr("Enter role for selected members"), 612 EnterRoleAction() { 613 super(tr("Change role"), (String) null, tr("Enter role for selected members"), 627 614 Shortcut.registerShortcut("reltoolbox:changerole", tr("Relation Toolbox: {0}", tr("Enter role for selected members")), 628 615 KeyEvent.VK_R, Shortcut.ALT_CTRL), false, "relcontext/enterrole", true); … … 635 622 if (roleBoxModel.membersRole != null) { 636 623 String role = askForRoleName(); 637 if (role != null ) {624 if (role != null) { 638 625 applyRoleToSelection(role); 639 626 } … … 655 642 private final String ANOTHER_ROLE = tr("another..."); 656 643 657 publicRoleComboBoxModel(JComboBox<String> combobox) {644 RoleComboBoxModel(JComboBox<String> combobox) { 658 645 super(); 659 646 this.combobox = combobox; … … 664 651 membersRole = getSelectedMembersRoleIntl(); 665 652 if (membersRole == null) { 666 if (combobox.isEnabled() ) {653 if (combobox.isEnabled()) { 667 654 combobox.setEnabled(false); 668 655 } 669 656 return; 670 657 } 671 if (!combobox.isEnabled() ) {658 if (!combobox.isEnabled()) { 672 659 combobox.setEnabled(true); 673 660 } … … 681 668 if (chosenRelation.get().get("type") != null) { 682 669 List<String> values = possibleRoles.get(chosenRelation.get().get("type")); 683 if (values != null ) {670 if (values != null) { 684 671 items.addAll(values); 685 672 } 686 673 } 687 for (RelationMember m : chosenRelation.get().getMembers() )688 if (m.getRole().length() > 0 && !items.contains(m.getRole()) ) {674 for (RelationMember m : chosenRelation.get().getMembers()) { 675 if (m.getRole().length() > 0 && !items.contains(m.getRole())) { 689 676 items.add(m.getRole()); 690 677 } 678 } 691 679 } 692 680 items.add(EMPTY_ROLE); 693 if (!items.contains(membersRole) ) {681 if (!items.contains(membersRole)) { 694 682 items.add(0, membersRole); 695 683 } … … 697 685 roles = Collections.unmodifiableList(items); 698 686 699 if (membersRole != null ) {687 if (membersRole != null) { 700 688 setSelectedItem(membersRole); 701 689 } else { … … 715 703 private String getSelectedMembersRoleIntl() { 716 704 String role = null; 717 if (chosenRelation != null && chosenRelation.get() != null && Main.main.getCurrentDataSet() != null && !Main.main.getCurrentDataSet().selectionEmpty()) { 718 Collection<OsmPrimitive> selected = Main.main.getCurrentDataSet().getSelected(); 705 if (chosenRelation != null && chosenRelation.get() != null 706 && Main.getLayerManager().getEditDataSet() != null && !Main.getLayerManager().getEditDataSet().selectionEmpty()) { 707 Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getSelected(); 719 708 for (RelationMember m : chosenRelation.get().getMembers()) { 720 709 if (selected.contains(m.getMember())) { 721 if (role == null ) {710 if (role == null) { 722 711 role = m.getRole(); 723 712 } else if (m.getRole() != null && !role.equals(m.getRole())) {
Note:
See TracChangeset
for help on using the changeset viewer.
