diff --git a/simpleexample2/fxui/src/main/java/simpleex/ui/MetaDataEditorController.java b/simpleexample2/fxui/src/main/java/simpleex/ui/MetaDataEditorController.java index 1a2abd74b648e2469e103447ebf503d041e6f9cb..17bd9464f638a587896b0e54092132d38f0a60ca 100644 --- a/simpleexample2/fxui/src/main/java/simpleex/ui/MetaDataEditorController.java +++ b/simpleexample2/fxui/src/main/java/simpleex/ui/MetaDataEditorController.java @@ -1,5 +1,11 @@ package simpleex.ui; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.event.Event; import javafx.event.EventType; @@ -10,9 +16,12 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; +import javafx.scene.control.TableColumn.CellDataFeatures; import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; +import javafx.util.Callback; +import javafx.util.Pair; import simpleex.core.LatLong; import simpleex.core.MetaData; import simpleex.ui.tags.TagsBar; @@ -44,13 +53,13 @@ public class MetaDataEditorController { private TextArea descriptionInput; @FXML - private TableView<?> propertiesTableView; + private TableView<Pair<String,String>> propertiesTableView; @FXML - private TableColumn<?, ?> propertyNamesColumn; + private TableColumn<Pair<String, String>, String> propertyNamesColumn; @FXML - private TableColumn<?, ?> propertyValuesColumn; + private TableColumn<Pair<String, String>, String> propertyValuesColumn; @FXML private TagsBar tagsBar; @@ -58,6 +67,20 @@ public class MetaDataEditorController { @FXML private Label coordinatesLabel; + @FXML + private void initialize() { + propertyNamesColumn.setCellValueFactory( + cellData -> new SimpleStringProperty( + ((Pair<String, String>) (cellData.getValue())).getKey() + )); + + propertyValuesColumn.setCellValueFactory( + cellData -> new SimpleStringProperty( + ((Pair<String, String>) (cellData.getValue())).getValue() + )); + } + + @FXML void onCancel(ActionEvent event) { closeDialog(event); @@ -93,7 +116,31 @@ public class MetaDataEditorController { descriptionInput.setText(latlong.getMetaData().getProperty(MetaData.DESCRIPTION_PROPERTY)); coordinatesLabel.setText(latlong.toString()); - //propertiesTableView.setItems(latlong.getMetaData().propertyNames()); + MetaData metaData = latlong.getMetaData(); + final Iterator<String> propertyNames = metaData.propertyNames(); + Collection<Pair<String, String>> locationProperties = new ArrayList<Pair<String,String>>(); + if( propertyNames.hasNext()) { + while(propertyNames.hasNext()) { + final String propertyName = propertyNames.next(); + if ((propertyName == MetaData.NAME_PROPERTY) || + (propertyName == MetaData.DESCRIPTION_PROPERTY)) { + continue; + } else { + Pair<String,String> p = new Pair<String, String>(propertyName, metaData.getProperty(propertyName)); + locationProperties.add(p); + } + } + propertiesTableView.getItems().addAll(locationProperties); + } + + final Iterator<String> tags = metaData.tags(); + if(tags.hasNext()) { + while(tags.hasNext()) { + final String tag = tags.next(); + tagsBar.addTag(tag); + } + } + }