package sample5_tilesets; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.event.MouseInputListener; import org.jxmapviewer.JXMapViewer; import org.jxmapviewer.OSMTileFactoryInfo; import org.jxmapviewer.VirtualEarthTileFactoryInfo; import org.jxmapviewer.input.PanMouseInputListener; import org.jxmapviewer.input.ZoomMouseWheelListenerCursor; import org.jxmapviewer.viewer.DefaultTileFactory; import org.jxmapviewer.viewer.GeoPosition; import org.jxmapviewer.viewer.TileFactory; import org.jxmapviewer.viewer.TileFactoryInfo; /** * This example demonstrate the use of different {@link TileFactory} elements. * @author Martin Steiger */ public class Sample5 { /** * @param args the program args (ignored) */ public static void main(String[] args) { final List<TileFactory> factories = new ArrayList<TileFactory>(); TileFactoryInfo osmInfo = new OSMTileFactoryInfo(); TileFactoryInfo veInfo = new VirtualEarthTileFactoryInfo(VirtualEarthTileFactoryInfo.MAP); // factories.add(new EmptyTileFactory()); factories.add(new DefaultTileFactory(osmInfo)); factories.add(new DefaultTileFactory(veInfo)); // Setup JXMapViewer final JXMapViewer mapViewer = new JXMapViewer(); mapViewer.setTileFactory(factories.get(0)); GeoPosition frankfurt = new GeoPosition(50.11, 8.68); // Set the focus mapViewer.setZoom(7); mapViewer.setAddressLocation(frankfurt); // Add interactions MouseInputListener mia = new PanMouseInputListener(mapViewer); mapViewer.addMouseListener(mia); mapViewer.addMouseMotionListener(mia); mapViewer.addMouseWheelListener(new ZoomMouseWheelListenerCursor(mapViewer)); JPanel panel = new JPanel(); JLabel label = new JLabel("Select a TileFactory "); String[] tfLabels = new String[factories.size()]; for (int i = 0; i < factories.size(); i++) { tfLabels[i] = factories.get(i).getInfo().getName(); } final JComboBox combo = new JComboBox(tfLabels); combo.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { TileFactory factory = factories.get(combo.getSelectedIndex()); mapViewer.setTileFactory(factory); } }); panel.setLayout(new GridLayout()); panel.add(label); panel.add(combo); final JLabel labelThreadCount = new JLabel("Threads: "); // Display the viewer in a JFrame JFrame frame = new JFrame("JXMapviewer2 Example 5"); frame.setLayout(new BorderLayout()); frame.add(panel, BorderLayout.NORTH); frame.add(mapViewer); frame.add(labelThreadCount, BorderLayout.SOUTH); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); Timer t = new Timer(500, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Set<Thread> threads = Thread.getAllStackTraces().keySet(); labelThreadCount.setText("Threads: " + threads.size()); } }); t.start(); } }