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;
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;
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;
private TileserverMapnik server;
+ private FileFieldEditor addNew;
+
public MapsServerPreferencePage() {
super(GRID);
setDescription("Maps server preferences");
@Override
public void widgetSelected(SelectionEvent e) {
- E4WorkbenchUtils.showInSystemExplorer("");
+// E4WorkbenchUtils.showInSystemExplorer("");
}
});
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();
}
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) {
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;
+ }
}