Changeset 1169 in josm for trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
- Timestamp:
- 2008-12-23T15:07:05+01:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
r627 r1169 26 26 * Marker representing an image. Uses a special icon, and when clicked, 27 27 * displays an image view dialog. Re-uses some code from GeoImageLayer. 28 * 28 * 29 29 * @author Frederik Ramm <frederik@remote.org> 30 30 * … … 32 32 public class ImageMarker extends ButtonMarker { 33 33 34 34 public URL imageUrl; 35 35 36 37 38 39 40 41 42 36 public static ImageMarker create(LatLon ll, String url, MarkerLayer parentLayer, double time, double offset) { 37 try { 38 return new ImageMarker(ll, new URL(url), parentLayer, time, offset); 39 } catch (Exception ex) { 40 return null; 41 } 42 } 43 43 44 45 46 47 44 private ImageMarker(LatLon ll, URL imageUrl, MarkerLayer parentLayer, double time, double offset) { 45 super(ll, "photo.png", parentLayer, time, offset); 46 this.imageUrl = imageUrl; 47 } 48 48 49 50 51 52 53 49 @Override public void actionPerformed(ActionEvent ev) { 50 final JPanel p = new JPanel(new BorderLayout()); 51 final JScrollPane scroll = new JScrollPane(new JLabel(loadScaledImage(imageUrl, 580))); 52 final JViewport vp = scroll.getViewport(); 53 p.add(scroll, BorderLayout.CENTER); 54 54 55 55 final JToggleButton scale = new JToggleButton(ImageProvider.get("misc", "rectangle")); 56 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 57 JPanel p2 = new JPanel(); 58 p2.add(scale); 59 p.add(p2, BorderLayout.SOUTH); 60 scale.addActionListener(new ActionListener(){ 61 public void actionPerformed(ActionEvent ev) { 62 p.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 63 if (scale.getModel().isSelected()) 64 ((JLabel)vp.getView()).setIcon(loadScaledImage(imageUrl, Math.max(vp.getWidth(), vp.getHeight()))); 65 else 66 ((JLabel)vp.getView()).setIcon(new ImageIcon(imageUrl)); 67 p.setCursor(Cursor.getDefaultCursor()); 68 } 69 }); 70 scale.setSelected(true); 71 JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE); 72 JDialog dlg = pane.createDialog(Main.parent, imageUrl.toString()); 73 dlg.setModal(false); 74 dlg.setVisible(true); 75 } 76 76 77 78 79 80 81 82 83 84 85 86 87 88 89 77 private static Icon loadScaledImage(URL u, int maxSize) { 78 Image img = new ImageIcon(u).getImage(); 79 int w = img.getWidth(null); 80 int h = img.getHeight(null); 81 if (w>h) { 82 h = Math.round(maxSize*((float)h/w)); 83 w = maxSize; 84 } else { 85 w = Math.round(maxSize*((float)w/h)); 86 h = maxSize; 87 } 88 return new ImageIcon(img.getScaledInstance(w, h, Image.SCALE_SMOOTH)); 89 } 90 90 91 91 }
Note:
See TracChangeset
for help on using the changeset viewer.