Changeset 4577 in josm
- Timestamp:
- 2011-11-05T18:31:05+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java
r4551 r4577 70 70 import org.openstreetmap.josm.data.imagery.ImageryInfo; 71 71 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryBounds; 72 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;73 72 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo; 74 73 import org.openstreetmap.josm.data.imagery.OffsetBookmark; … … 91 90 } 92 91 } 93 ImageryProvidersPanel imageryProviders; 94 ImageryLayerInfo layerInfo; 92 private ImageryProvidersPanel imageryProviders; 93 private ImageryLayerInfo layerInfo; 95 94 96 95 // Common settings … … 104 103 // WMS Settings 105 104 private JComboBox browser; 106 JCheckBox overlapCheckBox; 107 JSpinner spinEast; 108 JSpinner spinNorth; 109 JSpinner spinSimConn; 105 private JCheckBox overlapCheckBox; 106 private JSpinner spinEast; 107 private JSpinner spinNorth; 108 private JSpinner spinSimConn; 110 109 111 110 //TMS settings controls … … 283 282 p.add(pane,GBC.std().fill(GBC.BOTH)); 284 283 } 284 285 public ImageryProvidersPanel getProvidersPanel() { 286 return imageryProviders; 287 } 285 288 286 289 private void loadSettings() { … … 355 358 */ 356 359 public void setServerUrl(String server, String url) { 357 for (int i = 0; i < imageryProviders. model.getRowCount(); i++) {358 if (server.equals(imageryProviders. model.getValueAt(i, 0).toString())) {359 imageryProviders. model.setValueAt(url, i, 1);360 for (int i = 0; i < imageryProviders.activeModel.getRowCount(); i++) { 361 if (server.equals(imageryProviders.activeModel.getValueAt(i, 0).toString())) { 362 imageryProviders.activeModel.setValueAt(url, i, 1); 360 363 return; 361 364 } 362 365 } 363 imageryProviders. model.addRow(new String[] { server, url });366 imageryProviders.activeModel.addRow(new String[] { server, url }); 364 367 } 365 368 … … 372 375 */ 373 376 public String getServerUrl(String server) { 374 for (int i = 0; i < imageryProviders. model.getRowCount(); i++) {375 if (server.equals(imageryProviders. model.getValueAt(i, 0).toString()))376 return imageryProviders. model.getValueAt(i, 1).toString();377 for (int i = 0; i < imageryProviders.activeModel.getRowCount(); i++) { 378 if (server.equals(imageryProviders.activeModel.getValueAt(i, 0).toString())) 379 return imageryProviders.activeModel.getValueAt(i, 1).toString(); 377 380 } 378 381 return null; 379 382 } 380 383 381 static class ImageryProvidersPanel extends JPanel { 382 final ImageryLayerTableModel model; 383 final ImageryDefaultLayerTableModel modeldef; 384 public static class ImageryProvidersPanel extends JPanel { 385 // Public JTables and JMapViewer 386 public final JTable activeTable; 387 public final JTable defaultTable; 388 public final JMapViewer defaultMap; 389 390 // Public models 391 public final ImageryLayerTableModel activeModel; 392 public final ImageryDefaultLayerTableModel defaultModel; 393 394 // Public JToolbars 395 public final JToolBar activeToolbar; 396 public final JToolBar middleToolbar; 397 public final JToolBar defaultToolbar; 398 399 // Private members 400 private final PreferenceTabbedPane gui; 384 401 private final ImageryLayerInfo layerInfo; 385 private JTable listActive;386 final JTable listdef;387 final JMapViewer map;388 final PreferenceTabbedPane gui;389 402 390 403 private class ImageryTableCellRenderer extends DefaultTableCellRenderer { … … 423 436 this.gui = gui; 424 437 this.layerInfo = layerInfoArg; 425 this. model = new ImageryLayerTableModel();426 427 listActive = new JTable(model) {438 this.activeModel = new ImageryLayerTableModel(); 439 440 activeTable = new JTable(activeModel) { 428 441 @Override 429 442 public String getToolTipText(MouseEvent e) { 430 443 java.awt.Point p = e.getPoint(); 431 return model.getValueAt(rowAtPoint(p), columnAtPoint(p)).toString();444 return activeModel.getValueAt(rowAtPoint(p), columnAtPoint(p)).toString(); 432 445 } 433 446 }; 434 447 435 modeldef= new ImageryDefaultLayerTableModel();436 listdef= new JTable(modeldef) {448 defaultModel = new ImageryDefaultLayerTableModel(); 449 defaultTable = new JTable(defaultModel) { 437 450 @Override 438 451 public String getToolTipText(MouseEvent e) { 439 452 java.awt.Point p = e.getPoint(); 440 return (String) modeldef.getValueAt(rowAtPoint(p), columnAtPoint(p));453 return (String) defaultModel.getValueAt(rowAtPoint(p), columnAtPoint(p)); 441 454 } 442 455 }; 443 456 444 modeldef.addTableModelListener(457 defaultModel.addTableModelListener( 445 458 new TableModelListener() { 446 459 @Override 447 460 public void tableChanged(TableModelEvent e) { 448 listActive.repaint();461 activeTable.repaint(); 449 462 } 450 463 } 451 464 ); 452 465 453 model.addTableModelListener(466 activeModel.addTableModelListener( 454 467 new TableModelListener() { 455 468 @Override 456 469 public void tableChanged(TableModelEvent e) { 457 listdef.repaint();470 defaultTable.repaint(); 458 471 } 459 472 } 460 473 ); 461 474 462 TableColumnModel mod = listdef.getColumnModel();475 TableColumnModel mod = defaultTable.getColumnModel(); 463 476 mod.getColumn(2).setPreferredWidth(800); 464 477 mod.getColumn(2).setCellRenderer(new ImageryTableCellRenderer(layerInfo.getLayers())); … … 466 479 mod.getColumn(0).setPreferredWidth(50); 467 480 468 mod = listActive.getColumnModel();481 mod = activeTable.getColumnModel(); 469 482 mod.getColumn(1).setPreferredWidth(800); 470 483 mod.getColumn(1).setCellRenderer(new ImageryTableCellRenderer(layerInfo.getDefaultLayers())); … … 472 485 473 486 RemoveEntryAction remove = new RemoveEntryAction(); 474 listActive.getSelectionModel().addListSelectionListener(remove);487 activeTable.getSelectionModel().addListSelectionListener(remove); 475 488 476 489 add(new JLabel(tr("Available default entries:")), GBC.eol().insets(5, 5, 0, 0)); 477 490 // Add default item list 478 JScrollPane scrolldef = new JScrollPane( listdef);491 JScrollPane scrolldef = new JScrollPane(defaultTable); 479 492 scrolldef.setPreferredSize(new Dimension(200, 200)); 480 493 add(scrolldef, GBC.std().insets(0, 5, 0, 0).fill(GridBagConstraints.BOTH).weight(1.0, 0.6).insets(5, 0, 0, 0)); 481 494 482 495 // Add default item map 483 map = new JMapViewer();484 map.setZoomContolsVisible(false);485 map.setMinimumSize(new Dimension(100, 200));486 add( map, GBC.std().insets(5, 5, 0, 0).fill(GridBagConstraints.BOTH).weight(0.33, 0.6).insets(5, 0, 0, 0));487 488 listdef.getSelectionModel().addListSelectionListener(new DefListSelectionListener());489 490 JToolBar tb= new JToolBar(JToolBar.VERTICAL);491 tb.setFloatable(false);492 tb.setBorderPainted(false);493 tb.setOpaque(false);494 tb.add(new ReloadAction());495 add( tb, GBC.eol().anchor(GBC.SOUTH).insets(0, 0, 5, 0));496 defaultMap = new JMapViewer(); 497 defaultMap.setZoomContolsVisible(false); 498 defaultMap.setMinimumSize(new Dimension(100, 200)); 499 add(defaultMap, GBC.std().insets(5, 5, 0, 0).fill(GridBagConstraints.BOTH).weight(0.33, 0.6).insets(5, 0, 0, 0)); 500 501 defaultTable.getSelectionModel().addListSelectionListener(new DefListSelectionListener()); 502 503 defaultToolbar = new JToolBar(JToolBar.VERTICAL); 504 defaultToolbar.setFloatable(false); 505 defaultToolbar.setBorderPainted(false); 506 defaultToolbar.setOpaque(false); 507 defaultToolbar.add(new ReloadAction()); 508 add(defaultToolbar, GBC.eol().anchor(GBC.SOUTH).insets(0, 0, 5, 0)); 496 509 497 510 ActivateAction activate = new ActivateAction(); 498 listdef.getSelectionModel().addListSelectionListener(activate);511 defaultTable.getSelectionModel().addListSelectionListener(activate); 499 512 JButton btnActivate = new JButton(activate); 500 513 501 JToolBar tb2= new JToolBar(JToolBar.VERTICAL);502 tb2.setFloatable(false);503 tb2.setBorderPainted(false);504 tb2.setOpaque(false);505 tb2.add(btnActivate);506 add( tb2, GBC.eol().anchor(GBC.CENTER).insets(5, 15, 5, 0));514 middleToolbar = new JToolBar(JToolBar.HORIZONTAL); 515 middleToolbar.setFloatable(false); 516 middleToolbar.setBorderPainted(false); 517 middleToolbar.setOpaque(false); 518 middleToolbar.add(btnActivate); 519 add(middleToolbar, GBC.eol().anchor(GBC.CENTER).insets(5, 15, 5, 0)); 507 520 508 521 add(Box.createHorizontalGlue(), GBC.eol().fill(GridBagConstraints.HORIZONTAL)); 509 522 510 523 add(new JLabel(tr("Selected entries:")), GBC.eol().insets(5, 0, 0, 0)); 511 JScrollPane scroll = new JScrollPane( listActive);524 JScrollPane scroll = new JScrollPane(activeTable); 512 525 add(scroll, GBC.std().fill(GridBagConstraints.BOTH).span(GridBagConstraints.RELATIVE).weight(1.0, 0.4).insets(5, 0, 0, 5)); 513 526 scroll.setPreferredSize(new Dimension(200, 200)); 514 527 515 JToolBar sideButtonTB= new JToolBar(JToolBar.VERTICAL);516 sideButtonTB.setFloatable(false);517 sideButtonTB.setBorderPainted(false);518 sideButtonTB.setOpaque(false);519 sideButtonTB.add(new NewEntryAction());520 // sideButtonTB.add(edit); TODO521 sideButtonTB.add(remove);522 add( sideButtonTB, GBC.eol().anchor(GBC.NORTH).insets(0, 0, 5, 5));528 activeToolbar = new JToolBar(JToolBar.VERTICAL); 529 activeToolbar.setFloatable(false); 530 activeToolbar.setBorderPainted(false); 531 activeToolbar.setOpaque(false); 532 activeToolbar.add(new NewEntryAction()); 533 //activeToolbar.add(edit); TODO 534 activeToolbar.add(remove); 535 add(activeToolbar, GBC.eol().anchor(GBC.NORTH).insets(0, 0, 5, 5)); 523 536 524 537 } … … 539 552 // First index is set to -1 when the list is refreshed, so discard all map rectangles and polygons 540 553 if (e.getFirstIndex() == -1) { 541 map.removeAllMapRectangles();542 map.removeAllMapPolygons();554 defaultMap.removeAllMapRectangles(); 555 defaultMap.removeAllMapPolygons(); 543 556 mapRectangles.clear(); 544 557 mapPolygons.clear(); … … 550 563 // If needed, adjust map to show all map rectangles and polygons 551 564 if (!mapRectangles.isEmpty() || !mapPolygons.isEmpty()) { 552 map.setDisplayToFitMapElements(false, true, true);553 map.zoomOut();565 defaultMap.setDisplayToFitMapElements(false, true, true); 566 defaultMap.zoomOut(); 554 567 } 555 568 } … … 557 570 558 571 private void updateBoundsAndShapes(int i) { 559 ImageryBounds bounds = modeldef.getRow(i).getBounds();572 ImageryBounds bounds = defaultModel.getRow(i).getBounds(); 560 573 if (bounds != null) { 561 574 List<Shape> shapes = bounds.getShapes(); 562 575 if (shapes != null && !shapes.isEmpty()) { 563 if ( listdef.getSelectionModel().isSelectedIndex(i)) {576 if (defaultTable.getSelectionModel().isSelectedIndex(i)) { 564 577 if (!mapPolygons.containsKey(i)) { 565 578 List<MapPolygon> list = new ArrayList<MapPolygon>(); … … 569 582 MapPolygon polygon = new MapPolygonImpl(shape.getPoints()); 570 583 list.add(polygon); 571 map.addMapPolygon(polygon);584 defaultMap.addMapPolygon(polygon); 572 585 } 573 586 } … … 575 588 // Remove previously drawn map polygons 576 589 for (MapPolygon polygon : mapPolygons.get(i)) { 577 map.removeMapPolygon(polygon);590 defaultMap.removeMapPolygon(polygon); 578 591 } 579 592 mapPolygons.remove(i); … … 581 594 // Only display bounds when no polygons (shapes) are defined for this provider 582 595 } else { 583 if ( listdef.getSelectionModel().isSelectedIndex(i)) {596 if (defaultTable.getSelectionModel().isSelectedIndex(i)) { 584 597 if (!mapRectangles.containsKey(i)) { 585 598 // Add new map rectangle … … 588 601 MapRectangle rectangle = new MapRectangleImpl(topLeft, bottomRight); 589 602 mapRectangles.put(i, rectangle); 590 map.addMapRectangle(rectangle);603 defaultMap.addMapRectangle(rectangle); 591 604 } 592 605 } else if (mapRectangles.containsKey(i)) { 593 606 // Remove previously drawn map rectangle 594 map.removeMapRectangle(mapRectangles.get(i));607 defaultMap.removeMapRectangle(mapRectangles.get(i)); 595 608 mapRectangles.remove(i); 596 609 } … … 600 613 } 601 614 602 class NewEntryAction extends AbstractAction { 615 private class NewEntryAction extends AbstractAction { 603 616 public NewEntryAction() { 604 617 putValue(NAME, tr("New")); … … 628 641 if (answer == JOptionPane.OK_OPTION) { 629 642 try { 630 model.addRow(p.getImageryInfo());643 activeModel.addRow(p.getImageryInfo()); 631 644 } catch (IllegalArgumentException ex) { 632 645 if (ex.getMessage() == null || ex.getMessage().isEmpty()) { … … 642 655 } 643 656 644 class RemoveEntryAction extends AbstractAction implements ListSelectionListener { 657 private class RemoveEntryAction extends AbstractAction implements ListSelectionListener { 645 658 646 659 public RemoveEntryAction() { … … 652 665 653 666 protected void updateEnabledState() { 654 setEnabled( listActive.getSelectedRowCount() > 0);667 setEnabled(activeTable.getSelectedRowCount() > 0); 655 668 } 656 669 … … 663 676 public void actionPerformed(ActionEvent e) { 664 677 Integer i; 665 while ((i = listActive.getSelectedRow()) != -1) {666 model.removeRow(i);667 } 668 } 669 } 670 671 class ActivateAction extends AbstractAction implements ListSelectionListener { 678 while ((i = activeTable.getSelectedRow()) != -1) { 679 activeModel.removeRow(i); 680 } 681 } 682 } 683 684 private class ActivateAction extends AbstractAction implements ListSelectionListener { 672 685 public ActivateAction() { 673 686 putValue(NAME, tr("Activate")); … … 677 690 678 691 protected void updateEnabledState() { 679 setEnabled( listdef.getSelectedRowCount() > 0);692 setEnabled(defaultTable.getSelectedRowCount() > 0); 680 693 } 681 694 … … 687 700 @Override 688 701 public void actionPerformed(ActionEvent e) { 689 int[] lines = listdef.getSelectedRows();702 int[] lines = defaultTable.getSelectedRows(); 690 703 if (lines.length == 0) { 691 704 JOptionPane.showMessageDialog( … … 700 713 701 714 outer: for (int i = 0; i < lines.length; i++) { 702 ImageryInfo info = modeldef.getRow(lines[i]);715 ImageryInfo info = defaultModel.getRow(lines[i]); 703 716 704 717 // Check if an entry with exactly the same values already 705 718 // exists 706 for (int j = 0; j < model.getRowCount(); j++) {707 if (info.equalsBaseValues( model.getRow(j))) {719 for (int j = 0; j < activeModel.getRowCount(); j++) { 720 if (info.equalsBaseValues(activeModel.getRow(j))) { 708 721 // Select the already existing row so the user has 709 722 // some feedback in case an entry exists 710 listActive.getSelectionModel().setSelectionInterval(j, j);711 listActive.scrollRectToVisible(listActive.getCellRect(j, 0, true));723 activeTable.getSelectionModel().setSelectionInterval(j, j); 724 activeTable.scrollRectToVisible(activeTable.getCellRect(j, 0, true)); 712 725 continue outer; 713 726 } … … 724 737 } 725 738 726 model.addRow(new ImageryInfo(info));727 int lastLine = model.getRowCount() - 1;728 listActive.getSelectionModel().setSelectionInterval(lastLine, lastLine);729 listActive.scrollRectToVisible(listActive.getCellRect(lastLine, 0, true));730 } 731 } 732 } 733 734 class ReloadAction extends AbstractAction { 739 activeModel.addRow(new ImageryInfo(info)); 740 int lastLine = activeModel.getRowCount() - 1; 741 activeTable.getSelectionModel().setSelectionInterval(lastLine, lastLine); 742 activeTable.scrollRectToVisible(activeTable.getCellRect(lastLine, 0, true)); 743 } 744 } 745 } 746 747 private class ReloadAction extends AbstractAction { 735 748 public ReloadAction() { 736 749 putValue(SHORT_DESCRIPTION, tr("reload defaults")); … … 740 753 public void actionPerformed(ActionEvent evt) { 741 754 layerInfo.loadDefaults(true); 742 modeldef.fireTableDataChanged();755 defaultModel.fireTableDataChanged(); 743 756 } 744 757 } … … 747 760 * The table model for imagery layer list 748 761 */ 749 class ImageryLayerTableModel extends DefaultTableModel { 762 public class ImageryLayerTableModel extends DefaultTableModel { 750 763 public ImageryLayerTableModel() { 751 764 setColumnIdentifiers(new String[] { tr("Menu Name"), tr("Imagery URL")}); … … 810 823 * The table model for the default imagery layer list 811 824 */ 812 class ImageryDefaultLayerTableModel extends DefaultTableModel { 825 public class ImageryDefaultLayerTableModel extends DefaultTableModel { 813 826 public ImageryDefaultLayerTableModel() { 814 827 setColumnIdentifiers(new String[]{"", tr("Menu Name (Default)"), tr("Imagery URL (Default)")});
Note:
See TracChangeset
for help on using the changeset viewer.