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


Ignore:
Timestamp:
2011-08-29T09:46:27+02:00 (13 years ago)
Author:
simon04
Message:

fix #4609 - copy node coordinate to clipboard

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

Legend:

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

    r3384 r4380  
    66import static org.openstreetmap.josm.tools.I18n.tr;
    77
    8 import java.awt.Toolkit;
    9 import java.awt.datatransfer.Clipboard;
    10 import java.awt.datatransfer.ClipboardOwner;
    11 import java.awt.datatransfer.StringSelection;
    12 import java.awt.datatransfer.Transferable;
    138import java.awt.event.ActionEvent;
    149import java.awt.event.KeyEvent;
     
    2116import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2217import org.openstreetmap.josm.tools.Shortcut;
     18import org.openstreetmap.josm.tools.Utils;
    2319
    2420public final class CopyAction extends JosmAction {
     
    3127    }
    3228
     29    @Override
    3330    public void actionPerformed(ActionEvent e) {
    3431        if(isEmptySelection()) return;
     
    4239        StringBuilder idsBuilder = new StringBuilder();
    4340        for (OsmPrimitive p : primitives) {
    44             idsBuilder.append(p.getId()+",");
     41            idsBuilder.append(p.getId()).append(",");
    4542        }
    4643        String ids = idsBuilder.substring(0, idsBuilder.length() - 1);
    47         try {
    48             Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
    49                     new StringSelection(ids.toString()), new ClipboardOwner() {
    50                         public void lostOwnership(Clipboard clipboard, Transferable contents) {}
    51                     }
    52             );
    53         }
    54         catch (RuntimeException x) {}
     44        Utils.copyToClipboard(ids);
    5545
    5646        Main.pasteBuffer.makeCopy(primitives);
  • trunk/src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java

    r4253 r4380  
    66import java.awt.GridBagConstraints;
    77import java.awt.GridBagLayout;
    8 import java.awt.Toolkit;
    9 import java.awt.datatransfer.DataFlavor;
    10 import java.awt.datatransfer.Transferable;
    118import java.awt.event.ActionEvent;
    129import java.awt.event.KeyEvent;
     
    2926import org.openstreetmap.josm.tools.Shortcut;
    3027import org.openstreetmap.josm.tools.UrlLabel;
     28import org.openstreetmap.josm.tools.Utils;
    3129
    3230public class Map_Rectifier_WMSmenuAction extends JosmAction {
     
    118116        JTextField tfWmsUrl = new JTextField(30);
    119117
    120         String clip = getClipboardContents();
     118        String clip = Utils.getClipboardContent();
     119        clip = clip == null ? "" : clip.trim();
    121120        ButtonGroup group = new ButtonGroup();
    122121
     
    224223    }
    225224
    226     /**
    227      * Helper function that extracts a String from the Clipboard if available.
    228      * Returns an empty String otherwise
    229      * @return String Clipboard contents if available
    230      */
    231     private String getClipboardContents() {
    232         String result = "";
    233         Transferable contents = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    234 
    235         if(contents == null || !contents.isDataFlavorSupported(DataFlavor.stringFlavor))
    236             return "";
    237 
    238         try {
    239             result = (String)contents.getTransferData(DataFlavor.stringFlavor);
    240         } catch(Exception ex) {
    241             return "";
    242         }
    243         return result.trim();
    244     }
    245 
    246225    @Override
    247226    protected void updateEnabledState() {
  • trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

    r4146 r4380  
    66
    77import java.awt.Dimension;
    8 import java.awt.Toolkit;
    9 import java.awt.datatransfer.Clipboard;
    10 import java.awt.datatransfer.ClipboardOwner;
    11 import java.awt.datatransfer.StringSelection;
    12 import java.awt.datatransfer.Transferable;
    138import java.awt.event.ActionEvent;
    149import java.awt.event.KeyEvent;
     
    2722import org.openstreetmap.josm.plugins.PluginHandler;
    2823import org.openstreetmap.josm.tools.Shortcut;
     24import org.openstreetmap.josm.tools.Utils;
    2925
    3026/**
     
    127123
    128124        if(ed.getValue() != 1) return;
    129         try {
    130             Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
    131                     new StringSelection(text.toString()), new ClipboardOwner() {
    132                         public void lostOwnership(Clipboard clipboard, Transferable contents) {}
    133                     }
    134             );
    135         }
    136         catch (RuntimeException x) {}
     125        Utils.copyToClipboard(text.toString());
    137126    }
    138127}
  • trunk/src/org/openstreetmap/josm/gui/MainMenu.java

    r4266 r4380  
    2424import org.openstreetmap.josm.actions.CombineWayAction;
    2525import org.openstreetmap.josm.actions.CopyAction;
     26import org.openstreetmap.josm.actions.CopyCoordinatesAction;
    2627import org.openstreetmap.josm.actions.CreateCircleAction;
    2728import org.openstreetmap.josm.actions.CreateMultipolygonAction;
     
    125126    public final RedoAction redo = new RedoAction();
    126127    public final JosmAction copy = new CopyAction();
     128    public final JosmAction copyCoordinates = new CopyCoordinatesAction();
    127129    public final PasteAction paste = new PasteAction();
    128130    public final JosmAction pasteTags = new PasteTagsAction();
     
    257259        editMenu.addSeparator();
    258260        add(editMenu, copy);
     261        add(editMenu, copyCoordinates);
    259262        add(editMenu, paste);
    260263        add(editMenu, pasteTags);
  • trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java

    r3424 r4380  
    88import java.awt.GridBagLayout;
    99import java.awt.Toolkit;
    10 import java.awt.datatransfer.DataFlavor;
    1110import java.awt.datatransfer.FlavorEvent;
    1211import java.awt.datatransfer.FlavorListener;
    13 import java.awt.datatransfer.Transferable;
    14 import java.awt.datatransfer.UnsupportedFlavorException;
    1512import java.awt.event.ActionEvent;
    1613import java.awt.event.ActionListener;
     
    1916import java.awt.event.MouseAdapter;
    2017import java.awt.event.MouseEvent;
    21 import java.io.IOException;
    2218
    2319import javax.swing.AbstractAction;
     
    4036import org.openstreetmap.josm.tools.ImageProvider;
    4137import org.openstreetmap.josm.tools.OsmUrlToBounds;
     38import org.openstreetmap.josm.tools.Utils;
    4239
    4340/**
     
    306303        }
    307304
    308         protected String getClipboardContent() {
    309             Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    310             try {
    311                 if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
    312                     String text = (String)t.getTransferData(DataFlavor.stringFlavor);
    313                     return text;
    314                 }
    315             } catch (UnsupportedFlavorException ex) {
    316                 ex.printStackTrace();
    317                 return null;
    318             } catch (IOException ex) {
    319                 ex.printStackTrace();
    320                 return null;
    321             }
    322             return null;
    323         }
    324 
    325305        public void actionPerformed(ActionEvent e) {
    326             String content = getClipboardContent();
     306            String content = Utils.getClipboardContent();
    327307            if (content != null) {
    328308                tfOsmUrl.setText(content);
     
    331311
    332312        protected void updateEnabledState() {
    333             setEnabled(getClipboardContent() != null);
     313            setEnabled(Utils.getClipboardContent() != null);
    334314        }
    335315
  • trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java

    r4191 r4380  
    1313import java.awt.GridBagConstraints;
    1414import java.awt.GridBagLayout;
    15 import java.awt.Toolkit;
    16 import java.awt.datatransfer.DataFlavor;
    17 import java.awt.datatransfer.Transferable;
    1815import java.awt.event.ActionEvent;
    1916import java.awt.event.InputEvent;
     
    4441import org.openstreetmap.josm.tools.ImageProvider;
    4542import org.openstreetmap.josm.tools.OsmUrlToBounds;
     43import org.openstreetmap.josm.tools.Utils;
    4644import org.openstreetmap.josm.tools.WindowGeometry;
    4745
     
    183181        getRootPane().getActionMap().put("checkClipboardContents", new AbstractAction() {
    184182            public void actionPerformed(ActionEvent e) {
    185                 checkClipboardContents();
     183                String clip = Utils.getClipboardContent();
     184                if (clip == null) {
     185                    return;
     186                }
     187                Bounds b = OsmUrlToBounds.parse(clip);
     188                if (b != null) {
     189                    boundingBoxChanged(new Bounds(b), null);
     190                }
    186191            }
    187192        });
     
    189194        addWindowListener(new WindowEventHandler());
    190195        restoreSettings();
    191     }
    192 
    193     private void checkClipboardContents() {
    194         String result = "";
    195         Transferable contents = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    196 
    197         if(contents == null || !contents.isDataFlavorSupported(DataFlavor.stringFlavor))
    198             return;
    199 
    200         try {
    201             result = (String)contents.getTransferData(DataFlavor.stringFlavor);
    202         }
    203         catch(Exception ex) {
    204             return;
    205         }
    206 
    207         Bounds b = OsmUrlToBounds.parse(result);
    208         if (b != null) {
    209             boundingBoxChanged(new Bounds(b),null);
    210         }
    211196    }
    212197
  • trunk/src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java

    r3083 r4380  
    99import java.awt.Insets;
    1010import java.awt.Toolkit;
    11 import java.awt.datatransfer.DataFlavor;
    1211import java.awt.datatransfer.FlavorEvent;
    1312import java.awt.datatransfer.FlavorListener;
    14 import java.awt.datatransfer.Transferable;
    15 import java.awt.datatransfer.UnsupportedFlavorException;
    1613import java.awt.event.ActionEvent;
    1714import java.awt.event.MouseEvent;
    18 import java.io.IOException;
    1915
    2016import javax.swing.AbstractAction;
     
    3531import org.openstreetmap.josm.tools.ImageProvider;
    3632import org.openstreetmap.josm.tools.OsmUrlToBounds;
     33import org.openstreetmap.josm.tools.Utils;
    3734
    3835/**
     
    237234        }
    238235
    239         protected String getClipboardContent() {
    240             Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    241             try {
    242                 if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
    243                     String text = (String)t.getTransferData(DataFlavor.stringFlavor);
    244                     return text;
    245                 }
    246             } catch (UnsupportedFlavorException ex) {
    247                 ex.printStackTrace();
    248                 return null;
    249             } catch (IOException ex) {
    250                 ex.printStackTrace();
    251                 return null;
    252             }
    253             return null;
    254         }
    255 
    256236        public void actionPerformed(ActionEvent e) {
    257             String content = getClipboardContent();
     237            String content = Utils.getClipboardContent();
    258238            if (content != null) {
    259239                tfOsmUrl.setText(content);
     
    262242
    263243        protected void updateEnabledState() {
    264             setEnabled(getClipboardContent() != null);
     244            setEnabled(Utils.getClipboardContent() != null);
    265245        }
    266246
  • trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java

    r3840 r4380  
    66import java.awt.Component;
    77import java.awt.GridBagLayout;
    8 import java.awt.Toolkit;
    9 import java.awt.datatransfer.Clipboard;
    10 import java.awt.datatransfer.ClipboardOwner;
    11 import java.awt.datatransfer.StringSelection;
    12 import java.awt.datatransfer.Transferable;
    138import java.io.PrintWriter;
    149import java.io.StringWriter;
     
    127122                            "below at this URL:")), GBC.eol());
    128123                    p.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eop().insets(8,0,0,0));
    129                     try {
    130                         Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(text), new ClipboardOwner(){
    131                             public void lostOwnership(Clipboard clipboard, Transferable contents) {}
    132                         });
     124                    if (Utils.copyToClipboard(text)) {
    133125                        p.add(new JLabel(tr("(The text has already been copied to your clipboard.)")), GBC.eop());
    134126                    }
    135                     catch (RuntimeException x) {}
    136127
    137128                    JTextArea info = new JTextArea(text, 20, 60);
  • trunk/src/org/openstreetmap/josm/tools/Utils.java

    r4272 r4380  
    33
    44import java.awt.Color;
     5import java.awt.Toolkit;
     6import java.awt.datatransfer.Clipboard;
     7import java.awt.datatransfer.ClipboardOwner;
     8import java.awt.datatransfer.DataFlavor;
     9import java.awt.datatransfer.StringSelection;
     10import java.awt.datatransfer.Transferable;
     11import java.awt.datatransfer.UnsupportedFlavorException;
    512import java.io.File;
    613import java.io.IOException;
     
    264271        return Math.abs(a - b) <= EPSILION;
    265272    }
     273
     274    /**
     275     * Copies the string {@code s} to system clipboard.
     276     * @param s string to be copied to clipboard.
     277     * @return true if succeeded, false otherwise.
     278     */
     279    public static boolean copyToClipboard(String s) {
     280        try {
     281            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(s), new ClipboardOwner() {
     282
     283                @Override
     284                public void lostOwnership(Clipboard clpbrd, Transferable t) {
     285                }
     286            });
     287            return true;
     288        } catch (IllegalStateException ex) {
     289            ex.printStackTrace();
     290            return false;
     291        }
     292    }
     293
     294    /**
     295     * Extracts clipboard content as string.
     296     * @return string clipboard contents if available, {@code null} otherwise.
     297     */
     298    public static String getClipboardContent() {
     299        Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
     300        try {
     301            if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
     302                String text = (String) t.getTransferData(DataFlavor.stringFlavor);
     303                return text;
     304            }
     305        } catch (UnsupportedFlavorException ex) {
     306            ex.printStackTrace();
     307            return null;
     308        } catch (IOException ex) {
     309            ex.printStackTrace();
     310            return null;
     311        }
     312        return null;
     313    }
    266314}
Note: See TracChangeset for help on using the changeset viewer.