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=c9e01cb0e36ab575d7f80c2aab882f4ede6bab7d;hb=refs%2Fchanges%2F18%2F3918%2F1;hp=6dc96877b2e56957d54167891f9d6a827c863ea6;hpb=00e4eca98cef6d77d5023f4b424f9e8da0487463;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 6dc96877..c9e01cb0 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 @@ -16,6 +16,7 @@ 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.preference.StringFieldEditor; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; @@ -31,6 +32,8 @@ 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.district.network.ui.DynamicComboFieldEditor; +import org.simantics.maps.server.ui.TileserverMapnikStartJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +45,8 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen private FileFieldEditor addNew; + private DynamicComboFieldEditor currentTilesSelector; + public MapsServerPreferencePage() { super(GRID); setDescription("Maps server preferences"); @@ -63,13 +68,39 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen private void createServerStatusField(Composite parent) { Label label = new Label(parent, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, false).applyTo(label); + + Button b = new Button(parent, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, false).applyTo(b); + updateWidgets(label, b); + b.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + try { + if (server.isRunning()) { + server.stop(); + updateWidgets(label, b); + } else { + new TileserverMapnikStartJob(status -> { + parent.getDisplay().asyncExec(() -> { + updateWidgets(label, b); + }); + }).schedule(); + } + } catch (Exception ex) { + LOGGER.error("Could not start/stop server", ex); + } + } + }); + } + + private void updateWidgets(Label label, Button b) { String labelText = ""; String buttonText = ""; int labelColor = -1; - boolean running = false; try { if (server.isRunning()) { - running = true; buttonText = "Stop"; labelText = "running"; labelColor = SWT.COLOR_DARK_GREEN; @@ -85,24 +116,7 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen label.setText("Tileserver is currently " + labelText); label.setForeground(getShell().getDisplay().getSystemColor(labelColor)); - Button b = new Button(parent, SWT.NONE); b.setText(buttonText + " server"); - b.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - try { - if (server.isRunning()) { - server.stop(); - } else { - server.start(); - } - - } catch (Exception ex) { - LOGGER.error("Could not start/stop server", ex); - } - } - }); } private void createGeneralGroup() { @@ -118,16 +132,10 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen BooleanFieldEditor automatically = new BooleanFieldEditor(MapsServerPreferences.P_START_AUTOMATICALLY, "Start tileserver automatically", serverGroup); addField(automatically); - Button openInExplorer = new Button(serverGroup, SWT.NONE); - openInExplorer.setText("Open server folder"); - openInExplorer.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { -// E4WorkbenchUtils.showInSystemExplorer(""); - } - }); - + StringFieldEditor serverFolder = new StringFieldEditor(MapsServerPreferences.P_SERVER_FOLDER, "Server folder", serverGroup); + serverFolder.setEnabled(false, serverGroup); + addField(serverFolder); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).extendedMargins(12, 12, 12, 12).spacing(5, 4).applyTo(serverGroup); } @@ -163,7 +171,8 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen namesAndValues[i] = nameAndValue; } - ComboFieldEditor selector = new ComboFieldEditor(MapsServerPreferences.P_CURRENT_TM2STYLE, "Tile Styles", namesAndValues, parent); + ComboFieldEditor selector = new ComboFieldEditor(MapsServerPreferences.P_CURRENT_TM2STYLE, "Selected Style", namesAndValues, parent); + GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(selector.getLabelControl(parent)); addField(selector); } catch (IOException e) { e.printStackTrace(); @@ -172,31 +181,29 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen private void createTilesGroup() { Group tilesGroup = new Group(getFieldEditorParent(), SWT.NONE); - tilesGroup.setText("MBTiles"); - GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(tilesGroup); - + tilesGroup.setText("Vector Tiles"); + GridDataFactory.fillDefaults().grab(true, false).applyTo(tilesGroup); createTilesField(tilesGroup); - GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).extendedMargins(12, 12, 12, 12).spacing(5, 4).applyTo(tilesGroup); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).extendedMargins(12, 12, 12, 12).spacing(5, 4).applyTo(tilesGroup); } private void createTilesField(Composite parent) { try { - List tiles = server.availableMBTiles(); - - String[][] namesAndValues = new String[tiles.size()][]; - for (int i = 0; i < tiles.size(); i++) { - String style = tiles.get(i); - String[] nameAndValue = new String[2]; - nameAndValue[0] = style; - nameAndValue[1] = style; - namesAndValues[i] = nameAndValue; - } + + String[][] namesAndValues = computeNamesAndValues(); + currentTilesSelector = new DynamicComboFieldEditor(MapsServerPreferences.P_CURRENT_MBTILES, "Current Tiles", namesAndValues, parent); - ComboFieldEditor selector = new ComboFieldEditor(MapsServerPreferences.P_CURRENT_MBTILES, "MBTiles", namesAndValues, parent); - addField(selector); + GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(currentTilesSelector.getLabelControl(parent)); + addField(currentTilesSelector); + + Composite newParent = new Composite(parent, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(newParent); + GridLayoutFactory.fillDefaults().numColumns(3).applyTo(newParent); - addNew = new FileFieldEditor("Add new tiles", "Add new tiles", parent); + addNew = new FileFieldEditor("Add new tiles", "Add new tiles", newParent); + //GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(addNew.getTextControl(newParent)); + //addField(addNew); addNew.setPropertyChangeListener(new IPropertyChangeListener() { @Override @@ -210,6 +217,19 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen } } + private String[][] computeNamesAndValues() throws IOException { + List tiles = server.availableMBTiles(); + String[][] namesAndValues = new String[tiles.size()][]; + for (int i = 0; i < tiles.size(); i++) { + String style = tiles.get(i); + String[] nameAndValue = new String[2]; + nameAndValue[0] = style; + nameAndValue[1] = style; + namesAndValues[i] = nameAndValue; + } + return namesAndValues; + } + @Override protected void performApply() { // Upload new mbtiles file @@ -219,12 +239,19 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen Path target = server.getDataDirectory().resolve(p.getFileName()); try { Files.copy(p, target); + addNew.setStringValue(""); } catch (IOException e) { String message = "Could not upload " + fileLocation + " to " + target.toAbsolutePath(); LOGGER.error(message, e); setErrorMessage(message); } } + try { + currentTilesSelector.updateCombo(computeNamesAndValues()); + currentTilesSelector.load(); + } catch (IOException e) { + e.printStackTrace(); + } super.performApply(); } @@ -233,9 +260,10 @@ public class MapsServerPreferencePage extends FieldEditorPreferencePage implemen boolean success = super.performOk(); try { - server.restart(); + server.stop(); + new TileserverMapnikStartJob(status -> {}).schedule(); } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Could not restart tileserver-mapnik", e); } return success;