X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.server.ui%2Fsrc%2Forg%2Fsimantics%2Fmaps%2Fserver%2Fui%2Fprefs%2FMapsServerPreferencePage.java;h=6dc96877b2e56957d54167891f9d6a827c863ea6;hb=00e4eca98cef6d77d5023f4b424f9e8da0487463;hp=548daf310fe663ab277a96f2185d6a40c888d6e3;hpb=02ecca5e61d2eb17de40cc058be678b414aaad00;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/prefs/MapsServerPreferencePage.java b/org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/prefs/MapsServerPreferencePage.java index 548daf31..6dc96877 100644 --- a/org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/prefs/MapsServerPreferencePage.java +++ b/org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/prefs/MapsServerPreferencePage.java @@ -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; + } }