implement saving preference for swing version
git-svn-id: https://osmand.googlecode.com/svn/trunk@58 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
6af7969c8a
commit
5a66576ee7
10 changed files with 131 additions and 71 deletions
|
@ -1,32 +1,11 @@
|
||||||
package com.osmand;
|
package com.osmand;
|
||||||
|
|
||||||
import com.osmand.map.ITileSource;
|
|
||||||
import com.osmand.map.TileSourceManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is temp class where all path & machine specific properties are written
|
* This is temp class where all path & machine specific properties are written
|
||||||
*/
|
*/
|
||||||
public abstract class DefaultLauncherConstants {
|
public abstract class DefaultLauncherConstants {
|
||||||
|
|
||||||
// External files
|
|
||||||
public static String pathToTestDataDir = "E:\\Information\\OSM maps\\";
|
|
||||||
|
|
||||||
public static String pathToOsmFile = pathToTestDataDir + "minsk.osm";
|
|
||||||
public static String pathToOsmBz2File = pathToTestDataDir + "belarus_2010_04_01.osm.bz2";
|
|
||||||
|
|
||||||
public static String pathToWorkingDir = pathToTestDataDir +"osmand\\";
|
|
||||||
public static String pathToDirWithTiles = pathToWorkingDir +"tiles";
|
|
||||||
|
|
||||||
public static String writeTestOsmFile = "C:\\1_tmp.osm"; // could be null - wo writing
|
|
||||||
|
|
||||||
// Initial map settings
|
|
||||||
public static double MAP_startMapLongitude = 27.56;
|
|
||||||
public static double MAP_startMapLatitude = 53.9;
|
|
||||||
public static int MAP_startMapZoom = 15;
|
|
||||||
public static int MAP_divNonLoadedImage = 16;
|
|
||||||
public static boolean loadMissingImages = true;
|
|
||||||
public static ITileSource MAP_defaultTileSource = TileSourceManager.getMapnikSource();
|
|
||||||
public static boolean showGPSCoordinates = true;
|
|
||||||
|
|
||||||
|
|
||||||
// Application constants
|
// Application constants
|
||||||
|
@ -36,10 +15,7 @@ public abstract class DefaultLauncherConstants {
|
||||||
|
|
||||||
// Download manager tile settings
|
// Download manager tile settings
|
||||||
public static int TILE_DOWNLOAD_THREADS = 4;
|
public static int TILE_DOWNLOAD_THREADS = 4;
|
||||||
public static int TILE_DOWNLOAD_SECONTS_TO_WORK = 25;
|
public static int TILE_DOWNLOAD_SECONDS_TO_WORK = 25;
|
||||||
public static final int TILE_DOWNLOAD_MAX_ERRORS = -1;
|
public static final int TILE_DOWNLOAD_MAX_ERRORS = -1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class ToDoConstants {
|
||||||
|
|
||||||
/// SWING version :
|
/// SWING version :
|
||||||
// TODO :
|
// TODO :
|
||||||
// 1. save preferences ? where? (use internet, default dir save and other...)
|
// 1. Add preferences dialog (use internet, )
|
||||||
// 2. specify area to download tiles ()
|
// 2. specify area to download tiles ()
|
||||||
// 3. download tiles without using dir tiles
|
// 3. download tiles without using dir tiles
|
||||||
// 4. Config file log & see log from file
|
// 4. Config file log & see log from file
|
||||||
|
|
|
@ -17,7 +17,6 @@ import org.apache.tools.bzip2.CBZip2InputStream;
|
||||||
import org.apache.tools.bzip2.CBZip2OutputStream;
|
import org.apache.tools.bzip2.CBZip2OutputStream;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
import com.osmand.DefaultLauncherConstants;
|
|
||||||
import com.osmand.IProgress;
|
import com.osmand.IProgress;
|
||||||
import com.osmand.data.Amenity;
|
import com.osmand.data.Amenity;
|
||||||
import com.osmand.data.City;
|
import com.osmand.data.City;
|
||||||
|
@ -78,7 +77,13 @@ public class DataExtraction {
|
||||||
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
|
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
|
||||||
new DataExtraction().testReadingOsmFile();
|
new DataExtraction().testReadingOsmFile();
|
||||||
}
|
}
|
||||||
|
// External files
|
||||||
|
public static String pathToTestDataDir = "E:\\Information\\OSM maps\\";
|
||||||
|
public static String pathToOsmFile = pathToTestDataDir + "minsk.osm";
|
||||||
|
public static String pathToOsmBz2File = pathToTestDataDir + "belarus_2010_04_01.osm.bz2";
|
||||||
|
public static String pathToWorkingDir = pathToTestDataDir +"osmand\\";
|
||||||
|
public static String pathToDirWithTiles = pathToWorkingDir +"tiles";
|
||||||
|
public static String writeTestOsmFile = "C:\\1_tmp.osm"; // could be null - wo writing
|
||||||
|
|
||||||
private static boolean parseSmallFile = true;
|
private static boolean parseSmallFile = true;
|
||||||
private static boolean parseOSM = true;
|
private static boolean parseOSM = true;
|
||||||
|
@ -93,9 +98,9 @@ public class DataExtraction {
|
||||||
public void testReadingOsmFile() throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
|
public void testReadingOsmFile() throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
|
||||||
String f;
|
String f;
|
||||||
if(parseSmallFile){
|
if(parseSmallFile){
|
||||||
f = DefaultLauncherConstants.pathToOsmFile;
|
f = pathToOsmFile;
|
||||||
} else {
|
} else {
|
||||||
f = DefaultLauncherConstants.pathToOsmBz2File;
|
f = pathToOsmBz2File;
|
||||||
}
|
}
|
||||||
long st = System.currentTimeMillis();
|
long st = System.currentTimeMillis();
|
||||||
|
|
||||||
|
@ -116,10 +121,10 @@ public class DataExtraction {
|
||||||
// MapUtils.addIdsToList(amenities, interestedObjects);
|
// MapUtils.addIdsToList(amenities, interestedObjects);
|
||||||
MapUtils.addIdsToList(waysManager.getAllObjects(), interestedObjects);
|
MapUtils.addIdsToList(waysManager.getAllObjects(), interestedObjects);
|
||||||
// MapUtils.addIdsToList(buildings, interestedObjects);
|
// MapUtils.addIdsToList(buildings, interestedObjects);
|
||||||
if (DefaultLauncherConstants.writeTestOsmFile != null) {
|
if (writeTestOsmFile != null) {
|
||||||
OSMStorageWriter writer = new OSMStorageWriter(country.getStorage().getRegisteredEntities());
|
OSMStorageWriter writer = new OSMStorageWriter(country.getStorage().getRegisteredEntities());
|
||||||
OutputStream output = new FileOutputStream(DefaultLauncherConstants.writeTestOsmFile);
|
OutputStream output = new FileOutputStream(writeTestOsmFile);
|
||||||
if (DefaultLauncherConstants.writeTestOsmFile.endsWith(".bz2")) {
|
if (writeTestOsmFile.endsWith(".bz2")) {
|
||||||
output.write('B');
|
output.write('B');
|
||||||
output.write('Z');
|
output.write('Z');
|
||||||
output = new CBZip2OutputStream(output);
|
output = new CBZip2OutputStream(output);
|
||||||
|
|
|
@ -11,7 +11,6 @@ import javax.xml.stream.XMLStreamException;
|
||||||
|
|
||||||
import org.apache.tools.bzip2.CBZip2OutputStream;
|
import org.apache.tools.bzip2.CBZip2OutputStream;
|
||||||
|
|
||||||
import com.osmand.DefaultLauncherConstants;
|
|
||||||
import com.osmand.data.Amenity;
|
import com.osmand.data.Amenity;
|
||||||
import com.osmand.data.Region;
|
import com.osmand.data.Region;
|
||||||
import com.osmand.osm.io.OSMStorageWriter;
|
import com.osmand.osm.io.OSMStorageWriter;
|
||||||
|
@ -47,7 +46,7 @@ public class DataIndexBuilder {
|
||||||
f.delete();
|
f.delete();
|
||||||
}
|
}
|
||||||
OutputStream output = new FileOutputStream(f);
|
OutputStream output = new FileOutputStream(f);
|
||||||
if (DefaultLauncherConstants.writeTestOsmFile.endsWith(".bz2")) {
|
if (name.endsWith(".bz2")) {
|
||||||
output.write('B');
|
output.write('B');
|
||||||
output.write('Z');
|
output.write('Z');
|
||||||
output = new CBZip2OutputStream(output);
|
output = new CBZip2OutputStream(output);
|
||||||
|
|
|
@ -87,7 +87,7 @@ public class MapTileDownloader {
|
||||||
|
|
||||||
|
|
||||||
public MapTileDownloader(int numberOfThreads){
|
public MapTileDownloader(int numberOfThreads){
|
||||||
threadPoolExecutor = new ThreadPoolExecutor(numberOfThreads, numberOfThreads, DefaultLauncherConstants.TILE_DOWNLOAD_SECONTS_TO_WORK,
|
threadPoolExecutor = new ThreadPoolExecutor(numberOfThreads, numberOfThreads, DefaultLauncherConstants.TILE_DOWNLOAD_SECONDS_TO_WORK,
|
||||||
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
|
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
|
||||||
// 1.6 method but very useful to kill non-running threads
|
// 1.6 method but very useful to kill non-running threads
|
||||||
// threadPoolExecutor.allowCoreThreadTimeOut(true);
|
// threadPoolExecutor.allowCoreThreadTimeOut(true);
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package com.osmand.swing;
|
package com.osmand.swing;
|
||||||
|
|
||||||
|
import java.awt.Rectangle;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
|
|
||||||
|
import com.osmand.osm.LatLon;
|
||||||
|
|
||||||
public class DataExtractionSettings {
|
public class DataExtractionSettings {
|
||||||
|
|
||||||
private static DataExtractionSettings settings = null;
|
private static DataExtractionSettings settings = null;
|
||||||
|
@ -11,9 +17,65 @@ public class DataExtractionSettings {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Preferences preferences = Preferences.userRoot();
|
||||||
|
|
||||||
|
|
||||||
public void saveSettings(){
|
public File getTilesDirectory(){
|
||||||
|
return new File(getDefaultWorkingDir(), "tiles");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public File getDefaultWorkingDir(){
|
||||||
|
String workingDir = preferences.get("working_dir", System.getProperty("user.home"));
|
||||||
|
if(workingDir.equals(System.getProperty("user.home"))){
|
||||||
|
workingDir += "/osmand";
|
||||||
|
new File(workingDir).mkdir();
|
||||||
|
}
|
||||||
|
return new File(workingDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDefaultWorkingDir(File path){
|
||||||
|
preferences.put("working_dir", path.getAbsolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
public LatLon getDefaultLocation(){
|
||||||
|
double lat = preferences.getDouble("default_lat", 53.9);
|
||||||
|
double lon = preferences.getDouble("default_lon", 27.56);
|
||||||
|
return new LatLon(lat, lon);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDefaultLocation(double lat, double lon){
|
||||||
|
preferences.putDouble("default_lat", lat);
|
||||||
|
preferences.putDouble("default_lon", lon);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDefaultZoom(){
|
||||||
|
return preferences.getInt("default_zoom", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDefaultZoom(int zoom){
|
||||||
|
preferences.putInt("default_zoom", zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rectangle getWindowBounds(){
|
||||||
|
Rectangle r = new Rectangle();
|
||||||
|
r.x = preferences.getInt("window_x", 0);
|
||||||
|
r.y = preferences.getInt("window_y", 0);
|
||||||
|
r.width = preferences.getInt("window_width", 800);
|
||||||
|
r.height = preferences.getInt("window_height", 600);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveWindowBounds(Rectangle r) {
|
||||||
|
preferences.putInt("window_x", r.x);
|
||||||
|
preferences.putInt("window_y", r.y);
|
||||||
|
preferences.putInt("window_width", r.width);
|
||||||
|
preferences.putInt("window_height", r.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean useInternetToLoadImages(){
|
||||||
|
// TODO save the property if needed
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseWheelEvent;
|
import java.awt.event.MouseWheelEvent;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -36,7 +38,6 @@ import javax.swing.UIManager;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import com.osmand.DefaultLauncherConstants;
|
|
||||||
import com.osmand.IMapLocationListener;
|
import com.osmand.IMapLocationListener;
|
||||||
import com.osmand.LogUtil;
|
import com.osmand.LogUtil;
|
||||||
import com.osmand.data.DataTileManager;
|
import com.osmand.data.DataTileManager;
|
||||||
|
@ -54,6 +55,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
protected static final Log log = LogUtil.getLog(MapPanel.class);
|
protected static final Log log = LogUtil.getLog(MapPanel.class);
|
||||||
|
public static final int divNonLoadedImage = 16;
|
||||||
|
|
||||||
public static JMenu getMenuToChooseSource(final MapPanel panel){
|
public static JMenu getMenuToChooseSource(final MapPanel panel){
|
||||||
final JMenu tiles = new JMenu("Source tile");
|
final JMenu tiles = new JMenu("Source tile");
|
||||||
|
@ -74,8 +76,9 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
if(l.equals(DefaultLauncherConstants.MAP_defaultTileSource)){
|
if(l.equals(TileSourceManager.getMapnikSource())){
|
||||||
menuItem.setSelected(true);
|
menuItem.setSelected(true);
|
||||||
|
panel.setMapName(l);
|
||||||
}
|
}
|
||||||
tiles.add(menuItem);
|
tiles.add(menuItem);
|
||||||
}
|
}
|
||||||
|
@ -85,19 +88,24 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
JFrame frame = new JFrame("Tree of choose");
|
JFrame frame = new JFrame("Map view");
|
||||||
try {
|
try {
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final MapPanel panel = new MapPanel(DataExtractionSettings.getSettings().getTilesDirectory());
|
||||||
frame.addWindowListener(new OsmExtractionUI.ExitListener());
|
frame.addWindowListener(new WindowAdapter(){
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent e) {
|
||||||
|
DataExtractionSettings settings = DataExtractionSettings.getSettings();
|
||||||
|
settings.saveDefaultLocation(panel.getLatitude(), panel.getLongitude());
|
||||||
|
settings.saveDefaultZoom(panel.getZoom());
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
Container content = frame.getContentPane();
|
Container content = frame.getContentPane();
|
||||||
|
|
||||||
MapPanel panel = new MapPanel(new File(DefaultLauncherConstants.pathToDirWithTiles));
|
|
||||||
|
|
||||||
content.add(panel, BorderLayout.CENTER);
|
content.add(panel, BorderLayout.CENTER);
|
||||||
|
|
||||||
JMenuBar bar = new JMenuBar();
|
JMenuBar bar = new JMenuBar();
|
||||||
|
@ -111,21 +119,21 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
private File tilesLocation = null;
|
private File tilesLocation = null;
|
||||||
|
|
||||||
// name of source map
|
// name of source map
|
||||||
private ITileSource map = DefaultLauncherConstants.MAP_defaultTileSource;
|
private ITileSource map;
|
||||||
|
|
||||||
|
|
||||||
// special points to draw
|
// special points to draw
|
||||||
private DataTileManager<LatLon> points;
|
private DataTileManager<LatLon> points;
|
||||||
|
|
||||||
// zoom level
|
// zoom level
|
||||||
private int zoom = DefaultLauncherConstants.MAP_startMapZoom;
|
private int zoom = 1;
|
||||||
|
|
||||||
// degree measurements (-180, 180)
|
// degree measurements (-180, 180)
|
||||||
// долгота
|
// долгота
|
||||||
private double longitude = DefaultLauncherConstants.MAP_startMapLongitude;
|
private double longitude;
|
||||||
// широта
|
// широта
|
||||||
// degree measurements (90, -90)
|
// degree measurements (90, -90)
|
||||||
private double latitude = DefaultLauncherConstants.MAP_startMapLatitude;
|
private double latitude;
|
||||||
|
|
||||||
private List<IMapLocationListener> listeners = new ArrayList<IMapLocationListener>();
|
private List<IMapLocationListener> listeners = new ArrayList<IMapLocationListener>();
|
||||||
|
|
||||||
|
@ -145,6 +153,12 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
|
|
||||||
public MapPanel(File fileWithTiles) {
|
public MapPanel(File fileWithTiles) {
|
||||||
tilesLocation = fileWithTiles;
|
tilesLocation = fileWithTiles;
|
||||||
|
LatLon defaultLocation = DataExtractionSettings.getSettings().getDefaultLocation();
|
||||||
|
latitude = defaultLocation.getLatitude();
|
||||||
|
longitude = defaultLocation.getLongitude();
|
||||||
|
zoom = DataExtractionSettings.getSettings().getDefaultZoom();
|
||||||
|
|
||||||
|
|
||||||
downloader.setDownloaderCallback(this);
|
downloader.setDownloaderCallback(this);
|
||||||
setFocusable(true);
|
setFocusable(true);
|
||||||
addComponentListener(new ComponentAdapter(){
|
addComponentListener(new ComponentAdapter(){
|
||||||
|
@ -181,7 +195,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
for (int i = 0; i < images.length; i++) {
|
for (int i = 0; i < images.length; i++) {
|
||||||
for (int j = 0; j < images[i].length; j++) {
|
for (int j = 0; j < images[i].length; j++) {
|
||||||
if (images[i][j] == null) {
|
if (images[i][j] == null) {
|
||||||
int div = DefaultLauncherConstants.MAP_divNonLoadedImage;
|
int div = divNonLoadedImage;
|
||||||
int tileDiv = getTileSize() / div;
|
int tileDiv = getTileSize() / div;
|
||||||
for (int k1 = 0; k1 < div; k1++) {
|
for (int k1 = 0; k1 < div; k1++) {
|
||||||
for (int k2 = 0; k2 < div; k2++) {
|
for (int k2 = 0; k2 < div; k2++) {
|
||||||
|
@ -234,6 +248,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
|
|
||||||
public void setTilesLocation(File tilesLocation) {
|
public void setTilesLocation(File tilesLocation) {
|
||||||
this.tilesLocation = tilesLocation;
|
this.tilesLocation = tilesLocation;
|
||||||
|
cache.clear();
|
||||||
prepareImage();
|
prepareImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,7 +314,7 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void prepareImage(){
|
public void prepareImage(){
|
||||||
prepareImage(DefaultLauncherConstants.loadMissingImages);
|
prepareImage(DataExtractionSettings.getSettings().useInternetToLoadImages());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void prepareImage(boolean loadNecessaryImages){
|
public void prepareImage(boolean loadNecessaryImages){
|
||||||
|
|
|
@ -59,7 +59,6 @@ import org.apache.commons.logging.LogFactory;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
import com.osmand.Algoritms;
|
import com.osmand.Algoritms;
|
||||||
import com.osmand.DefaultLauncherConstants;
|
|
||||||
import com.osmand.ExceptionHandler;
|
import com.osmand.ExceptionHandler;
|
||||||
import com.osmand.IMapLocationListener;
|
import com.osmand.IMapLocationListener;
|
||||||
import com.osmand.data.Amenity;
|
import com.osmand.data.Amenity;
|
||||||
|
@ -83,11 +82,12 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
OsmExtractionUI ui = new OsmExtractionUI(null);
|
OsmExtractionUI ui = new OsmExtractionUI(null);
|
||||||
ui.runUI();
|
ui.frame.setBounds(DataExtractionSettings.getSettings().getWindowBounds());
|
||||||
|
ui.frame.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected City selectedCity;
|
protected City selectedCity;
|
||||||
private MapPanel mapPanel = new MapPanel(new File(DefaultLauncherConstants.pathToDirWithTiles));
|
private MapPanel mapPanel;
|
||||||
|
|
||||||
private DataExtractionTreeNode amenitiesTree;
|
private DataExtractionTreeNode amenitiesTree;
|
||||||
private JTree treePlaces;
|
private JTree treePlaces;
|
||||||
|
@ -98,7 +98,6 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
private JLabel statusBarLabel;
|
private JLabel statusBarLabel;
|
||||||
|
|
||||||
private Region region;
|
private Region region;
|
||||||
private File workingDir;
|
|
||||||
private JButton generateDataButton;
|
private JButton generateDataButton;
|
||||||
private JCheckBox buildPoiIndex;
|
private JCheckBox buildPoiIndex;
|
||||||
private JCheckBox buildAddressIndex;
|
private JCheckBox buildAddressIndex;
|
||||||
|
@ -107,7 +106,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
|
|
||||||
public OsmExtractionUI(final Region r){
|
public OsmExtractionUI(final Region r){
|
||||||
this.region = r;
|
this.region = r;
|
||||||
workingDir = new File(DefaultLauncherConstants.pathToWorkingDir);
|
mapPanel = new MapPanel(DataExtractionSettings.getSettings().getTilesDirectory());
|
||||||
createUI();
|
createUI();
|
||||||
setRegion(r, "Region");
|
setRegion(r, "Region");
|
||||||
}
|
}
|
||||||
|
@ -181,6 +180,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
|
|
||||||
statusBarLabel = new JLabel();
|
statusBarLabel = new JLabel();
|
||||||
content.add(statusBarLabel, BorderLayout.SOUTH);
|
content.add(statusBarLabel, BorderLayout.SOUTH);
|
||||||
|
File workingDir = DataExtractionSettings.getSettings().getDefaultWorkingDir();
|
||||||
statusBarLabel.setText(workingDir == null ? "<working directory unspecified>" : "Working directory : " + workingDir.getAbsolutePath());
|
statusBarLabel.setText(workingDir == null ? "<working directory unspecified>" : "Working directory : " + workingDir.getAbsolutePath());
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateButtonsBar() {
|
protected void updateButtonsBar() {
|
||||||
generateDataButton.setEnabled(workingDir != null && region != null);
|
generateDataButton.setEnabled(region != null);
|
||||||
buildAddressIndex.setEnabled(generateDataButton.isEnabled() && region.getCitiesCount(null) > 0);
|
buildAddressIndex.setEnabled(generateDataButton.isEnabled() && region.getCitiesCount(null) > 0);
|
||||||
buildPoiIndex.setEnabled(generateDataButton.isEnabled() && !region.getAmenityManager().isEmpty());
|
buildPoiIndex.setEnabled(generateDataButton.isEnabled() && !region.getAmenityManager().isEmpty());
|
||||||
}
|
}
|
||||||
|
@ -283,7 +283,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
DataIndexBuilder builder = new DataIndexBuilder(workingDir, region);
|
DataIndexBuilder builder = new DataIndexBuilder(DataExtractionSettings.getSettings().getDefaultWorkingDir(), region);
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
try {
|
try {
|
||||||
msg.append("Indices checked for ").append(region.getName());
|
msg.append("Indices checked for ").append(region.getName());
|
||||||
|
@ -381,10 +381,6 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runUI(){
|
|
||||||
frame.setSize(1024, 768);
|
|
||||||
frame.setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void fillMenuWithActions(JMenuBar bar){
|
public void fillMenuWithActions(JMenuBar bar){
|
||||||
JMenu menu = new JMenu("File");
|
JMenu menu = new JMenu("File");
|
||||||
|
@ -412,12 +408,14 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
JFileChooser fc = new JFileChooser();
|
JFileChooser fc = new JFileChooser();
|
||||||
fc.setDialogTitle("Choose working directory");
|
fc.setDialogTitle("Choose working directory");
|
||||||
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||||
|
File workingDir = DataExtractionSettings.getSettings().getDefaultWorkingDir();
|
||||||
if(workingDir != null){
|
if(workingDir != null){
|
||||||
fc.setCurrentDirectory(workingDir);
|
fc.setCurrentDirectory(workingDir);
|
||||||
}
|
}
|
||||||
if(fc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION && fc.getSelectedFile() != null &&
|
if(fc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION && fc.getSelectedFile() != null &&
|
||||||
fc.getSelectedFile().isDirectory()){
|
fc.getSelectedFile().isDirectory()){
|
||||||
workingDir = fc.getSelectedFile();
|
DataExtractionSettings.getSettings().saveDefaultWorkingDir(fc.getSelectedFile());
|
||||||
|
mapPanel.setTilesLocation(DataExtractionSettings.getSettings().getTilesDirectory());
|
||||||
statusBarLabel.setText("Working directory : " + fc.getSelectedFile().getAbsolutePath());
|
statusBarLabel.setText("Working directory : " + fc.getSelectedFile().getAbsolutePath());
|
||||||
updateButtonsBar();
|
updateButtonsBar();
|
||||||
}
|
}
|
||||||
|
@ -433,7 +431,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
fc.setDialogTitle("Choose osm file");
|
fc.setDialogTitle("Choose osm file");
|
||||||
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||||
fc.setAcceptAllFileFilterUsed(true);
|
fc.setAcceptAllFileFilterUsed(true);
|
||||||
fc.setCurrentDirectory(new File(DefaultLauncherConstants.pathToTestDataDir));
|
fc.setCurrentDirectory(DataExtractionSettings.getSettings().getDefaultWorkingDir());
|
||||||
//System.out.println("opening fc for extension " + extension);
|
//System.out.println("opening fc for extension " + extension);
|
||||||
fc.setFileFilter(new FileFilter(){
|
fc.setFileFilter(new FileFilter(){
|
||||||
|
|
||||||
|
@ -599,10 +597,16 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public static class ExitListener extends WindowAdapter {
|
public class ExitListener extends WindowAdapter {
|
||||||
public void windowClosing(WindowEvent event) {
|
public void windowClosing(WindowEvent event) {
|
||||||
|
// save preferences
|
||||||
|
DataExtractionSettings settings = DataExtractionSettings.getSettings();
|
||||||
|
settings.saveDefaultLocation(mapPanel.getLatitude(), mapPanel.getLongitude());
|
||||||
|
settings.saveDefaultZoom(mapPanel.getZoom());
|
||||||
|
settings.saveWindowBounds(frame.getBounds());
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class OsmandSettings {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return DefaultLauncherConstants.MAP_defaultTileSource;
|
return TileSourceManager.getMapnikSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getMapTileSourceName(Context ctx){
|
public static String getMapTileSourceName(Context ctx){
|
||||||
|
@ -50,7 +50,7 @@ public class OsmandSettings {
|
||||||
if(tileName != null){
|
if(tileName != null){
|
||||||
return tileName;
|
return tileName;
|
||||||
}
|
}
|
||||||
return DefaultLauncherConstants.MAP_defaultTileSource.getName();
|
return TileSourceManager.getMapnikSource().getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ import android.view.SurfaceHolder;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
import android.view.SurfaceHolder.Callback;
|
import android.view.SurfaceHolder.Callback;
|
||||||
|
|
||||||
import com.osmand.DefaultLauncherConstants;
|
|
||||||
import com.osmand.IMapLocationListener;
|
import com.osmand.IMapLocationListener;
|
||||||
import com.osmand.LogUtil;
|
import com.osmand.LogUtil;
|
||||||
import com.osmand.OsmandSettings;
|
import com.osmand.OsmandSettings;
|
||||||
|
@ -34,7 +33,7 @@ import com.osmand.views.AnimateDraggingMapThread.AnimateDraggingCallback;
|
||||||
|
|
||||||
public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCallback, Callback, AnimateDraggingCallback{
|
public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCallback, Callback, AnimateDraggingCallback{
|
||||||
|
|
||||||
protected final int emptyTileDivisor = DefaultLauncherConstants.MAP_divNonLoadedImage;
|
protected final int emptyTileDivisor = 16;
|
||||||
protected final int timeForDraggingAnimation = 300;
|
protected final int timeForDraggingAnimation = 300;
|
||||||
protected final int minimumDistanceForDraggingAnimation = 40;
|
protected final int minimumDistanceForDraggingAnimation = 40;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue