]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/prefs/MapsServerPreferencePage.java
Some cleaning and fixing of district functionalities
[simantics/district.git] / org.simantics.maps.server.ui / src / org / simantics / maps / server / ui / prefs / MapsServerPreferencePage.java
index 548daf310fe663ab277a96f2185d6a40c888d6e3..6dc96877b2e56957d54167891f9d6a827c863ea6 100644 (file)
@@ -2,6 +2,9 @@ package org.simantics.maps.server.ui.prefs;
 
 import java.io.IOException;
 import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 
 import org.eclipse.core.runtime.preferences.InstanceScope;
@@ -13,6 +16,8 @@ import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.jface.preference.FileFieldEditor;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.IntegerFieldEditor;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -26,7 +31,6 @@ import org.eclipse.ui.preferences.ScopedPreferenceStore;
 import org.simantics.district.maps.server.TileserverMapnik;
 import org.simantics.district.maps.server.TileserverMapnikInstance;
 import org.simantics.district.maps.server.prefs.MapsServerPreferences;
-import org.simantics.ui.workbench.e4.E4WorkbenchUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,6 +40,8 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen
     
     private TileserverMapnik server;
 
+    private FileFieldEditor addNew;
+
     public MapsServerPreferencePage() {
         super(GRID);
         setDescription("Maps server preferences");
@@ -157,7 +163,8 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen
                 namesAndValues[i] = nameAndValue;
             }
             
-            ComboFieldEditor selector = new ComboFieldEditor("Styles", "Tile Styles", namesAndValues, parent);
+            ComboFieldEditor selector = new ComboFieldEditor(MapsServerPreferences.P_CURRENT_TM2STYLE, "Tile Styles", namesAndValues, parent);
+            addField(selector);
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -170,7 +177,7 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen
         
         createTilesField(tilesGroup);
         
-        GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).extendedMargins(12, 12, 12, 12).spacing(5, 4).applyTo(tilesGroup);
+        GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).extendedMargins(12, 12, 12, 12).spacing(5, 4).applyTo(tilesGroup);
     }
 
     private void createTilesField(Composite parent) {
@@ -186,15 +193,52 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen
                 namesAndValues[i] = nameAndValue;
             }
             
-            ComboFieldEditor selector = new ComboFieldEditor("MBTiles", "MBTiles", namesAndValues, parent);
-            
+            ComboFieldEditor selector = new ComboFieldEditor(MapsServerPreferences.P_CURRENT_MBTILES, "MBTiles", namesAndValues, parent);
+            addField(selector);
             
-            FileFieldEditor addNew = new FileFieldEditor("add new", "Add new tiles", parent);
+            addNew = new FileFieldEditor("Add new tiles", "Add new tiles", parent);
+            addNew.setPropertyChangeListener(new IPropertyChangeListener() {
+                
+                @Override
+                public void propertyChange(PropertyChangeEvent event) {
+                    System.out.println(event);
+                }
+            });
             
         } catch (IOException e) {
             LOGGER.error("Could not create tiles field", e);
         }
     }
     
+    @Override
+    protected void performApply() {
+        // Upload new mbtiles file
+        String fileLocation = addNew.getStringValue();
+        if (fileLocation != null && !fileLocation.isEmpty()) {
+            Path p = Paths.get(fileLocation);
+            Path target = server.getDataDirectory().resolve(p.getFileName());
+            try {
+                Files.copy(p, target);
+            } catch (IOException e) {
+                String message = "Could not upload " + fileLocation + " to " + target.toAbsolutePath(); 
+                LOGGER.error(message, e);
+                setErrorMessage(message);
+            }
+        }
+        super.performApply();
+    }
+    
+    @Override
+    public boolean performOk() {
+        boolean success = super.performOk();
+        
+        try {
+            server.restart();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
+        return success;
+    }
 
 }