Changeset 3734 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2010-12-21T11:44:19+01:00 (11 years ago)
Author:
Upliner
Message:

fix #5756 -- allow to overwrite offset bookmarks

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java

    r3722 r3734  
    195195        }
    196196
     197        private boolean confirmOverwriteBookmark() {
     198            ExtendedDialog dialog = new ExtendedDialog(
     199                    Main.parent,
     200                    tr("Overwrite"),
     201                    new String[] {tr("Overwrite"), tr("Cancel")}
     202            ) {{
     203                contentInsets = new Insets(10, 15, 10, 15);
     204            }};
     205            dialog.setContent(tr("Offset bookmark already exists. Overwrite?"));
     206            dialog.setButtonIcons(new String[] {"ok.png", "cancel.png"});
     207            dialog.setupDialog();
     208            dialog.setVisible(true);
     209            return dialog.getValue() == 1;
     210        }
     211
    197212        @Override
    198213        protected void buttonAction(int buttonIndex, ActionEvent evt) {
     214            if (buttonIndex != 1 && tBookmarkName.getText() != null && !"".equals(tBookmarkName.getText()) &&
     215                    OffsetBookmark.getBookmarkByName(layer, tBookmarkName.getText()) != null) {
     216                if (!confirmOverwriteBookmark()) return;
     217            }
    199218            super.buttonAction(buttonIndex, evt);
    200219            offsetDialog = null;
     
    202221                layer.setOffset(oldDx, oldDy);
    203222            } else if (tBookmarkName.getText() != null && !"".equals(tBookmarkName.getText())) {
    204                 OffsetBookmark b = new OffsetBookmark(
    205                         Main.proj,layer.getInfo().getName(),
    206                         tBookmarkName.getText(),
    207                         layer.getDx(),layer.getDy());
    208                 OffsetBookmark.allBookmarks.add(b);
    209                 OffsetBookmark.saveBookmarks();
     223                OffsetBookmark.bookmarkOffset(tBookmarkName.getText(), layer);
    210224            }
    211225            Main.main.menu.imageryMenuUpdater.refreshOffsetMenu();
  • trunk/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java

    r3720 r3734  
    99import java.util.LinkedList;
    1010import java.util.List;
     11import java.util.ListIterator;
    1112
    1213import org.openstreetmap.josm.Main;
     
    7677    }
    7778
     79    public static OffsetBookmark getBookmarkByName(ImageryLayer layer, String name) {
     80        for (OffsetBookmark b : allBookmarks) {
     81            if (b.isUsable(layer) && name.equals(b.name))
     82                return b;
     83        }
     84        return null;
     85    }
     86
     87    public static void bookmarkOffset(String name, ImageryLayer layer) {
     88        OffsetBookmark nb = new OffsetBookmark(
     89                Main.proj, layer.getInfo().getName(),
     90                name, layer.getDx(), layer.getDy());
     91        for (ListIterator<OffsetBookmark> it = allBookmarks.listIterator();it.hasNext();) {
     92            OffsetBookmark b = it.next();
     93            if (b.isUsable(layer) && name.equals(b.name)) {
     94                it.set(nb);
     95                saveBookmarks();
     96                return;
     97            }
     98        }
     99        allBookmarks.add(nb);
     100        saveBookmarks();
     101    }
    78102}
Note: See TracChangeset for help on using the changeset viewer.