Skip to content
Snippets Groups Projects
Commit c665cd25 authored by George Adrian Stoica's avatar George Adrian Stoica
Browse files

added basic editing for name and description

parent 7aa2893c
No related branches found
No related tags found
1 merge request!6Issue 11 allow user to enter and update metadata about the latlong points
Pipeline #52841 passed
...@@ -9,6 +9,7 @@ import fxmapcontrol.MapItemsControl; ...@@ -9,6 +9,7 @@ import fxmapcontrol.MapItemsControl;
import fxmapcontrol.MapNode; import fxmapcontrol.MapNode;
import fxmapcontrol.MapProjection; import fxmapcontrol.MapProjection;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Point2D; import javafx.geometry.Point2D;
...@@ -98,6 +99,14 @@ public abstract class AbstractFxAppController { ...@@ -98,6 +99,14 @@ public abstract class AbstractFxAppController {
.addListener((prop, oldValue, newValue) -> updateMapMarker(true)); .addListener((prop, oldValue, newValue) -> updateMapMarker(true));
//connect the cell renderer to the list //connect the cell renderer to the list
locationListView.setCellFactory(listView -> new LatLongCell()); locationListView.setCellFactory(listView -> new LatLongCell());
locationListView.addEventHandler(MetaDataEditorController.METADATA_SAVED, new EventHandler<MetaDataEvent>() {
@Override
public void handle(MetaDataEvent event) {
System.out.println("saved at list level");
}
});
} }
private void handleMapDragged(final Node node, final double dx, final double dy) { private void handleMapDragged(final Node node, final double dx, final double dy) {
......
...@@ -19,7 +19,7 @@ public class LatLongCell extends ListCell<LatLong> { ...@@ -19,7 +19,7 @@ public class LatLongCell extends ListCell<LatLong> {
setGraphic(null); setGraphic(null);
setPrefHeight(30.0); setPrefHeight(30.0);
} else { } else {
LatLongCellController latLongCellController = new LatLongCellController(); LatLongCellController latLongCellController = new LatLongCellController(this);
latLongCellController.setLatLong(location); latLongCellController.setLatLong(location);
setGraphic(latLongCellController.getCellView(this.isSelected())); setGraphic(latLongCellController.getCellView(this.isSelected()));
setPrefHeight(Region.USE_COMPUTED_SIZE); setPrefHeight(Region.USE_COMPUTED_SIZE);
......
...@@ -3,12 +3,21 @@ package simpleex.ui; ...@@ -3,12 +3,21 @@ package simpleex.ui;
import java.util.Iterator; import java.util.Iterator;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Region; import javafx.scene.layout.Region;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import simpleex.core.LatLong; import simpleex.core.LatLong;
import simpleex.core.MetaData; import simpleex.core.MetaData;
...@@ -61,12 +70,15 @@ public class LatLongCellController { ...@@ -61,12 +70,15 @@ public class LatLongCellController {
* the current LatLong object that needs to be displayed * the current LatLong object that needs to be displayed
*/ */
private LatLong latLong; private LatLong latLong;
private LatLongCell latLongCell;
/** /**
* create a new controller for managing a LatLong list cell * create a new controller for managing a LatLong list cell
* @param latLongCell
*/ */
public LatLongCellController() { public LatLongCellController(LatLongCell latLongCell) {
super(); super();
this.latLongCell = latLongCell;
} }
/** /**
...@@ -89,6 +101,33 @@ public class LatLongCellController { ...@@ -89,6 +101,33 @@ public class LatLongCellController {
if(selected) { if(selected) {
this.editMetadataButton = new Button("..."); this.editMetadataButton = new Button("...");
this.hBox.getChildren().add(editMetadataButton); this.hBox.getChildren().add(editMetadataButton);
editMetadataButton.setOnAction(event -> {
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MetaDataEditor.fxml"));
Parent root1 = fxmlLoader.load();
MetaDataEditorController metaDataEditorController = fxmlLoader.getController();
metaDataEditorController.setLatLong(this.latLong);
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.initStyle(StageStyle.DECORATED);
stage.setTitle("Loction MetaData Editor");
Scene scene = new Scene(root1);
stage.setScene(scene);
stage.show();
stage.addEventHandler(MetaDataEditorController.METADATA_SAVED, new EventHandler<MetaDataEvent>() {
@Override
public void handle(MetaDataEvent event) {
if ( event.getEventType() == MetaDataEditorController.METADATA_SAVED) {
System.out.println("metadata saved click");
LatLongCellController.this.latLongCell.updateItem(latLong, false);
}
}
} );
} catch (Exception e) {
throw new RuntimeException(e);
}
});
} }
if(this.latLong.hasMetaData()) { if(this.latLong.hasMetaData()) {
...@@ -131,6 +170,9 @@ public class LatLongCellController { ...@@ -131,6 +170,9 @@ public class LatLongCellController {
} }
} }
/** /**
* get the UI for the cell based on selection and * get the UI for the cell based on selection and
* the available info in the latLong object * the available info in the latLong object
......
package simpleex.ui; package simpleex.ui;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventType;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.TextArea; import javafx.scene.control.TextArea;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import simpleex.core.LatLong; import simpleex.core.LatLong;
import simpleex.core.MetaData;
import simpleex.ui.tags.TagsBar; import simpleex.ui.tags.TagsBar;
public class MetaDataEditorController { public class MetaDataEditorController {
public static EventType<MetaDataEvent> OPTIONS_ALL = new EventType<>("OPTIONS_ALL");
public static EventType<MetaDataEvent> METADATA_SAVED = new EventType<>(OPTIONS_ALL, "METADATA_SAVED");
private LatLong latlong; private LatLong latlong;
@FXML
private BorderPane rootContainer;
@FXML @FXML
private Button saveButton; private Button saveButton;
...@@ -43,8 +61,11 @@ public class MetaDataEditorController { ...@@ -43,8 +61,11 @@ public class MetaDataEditorController {
private TagsBar tagsBar; private TagsBar tagsBar;
@FXML @FXML
void onCancel(ActionEvent event) { private Label coordinatesLabel;
@FXML
void onCancel(ActionEvent event) {
closeDialog(event);
} }
@FXML @FXML
...@@ -52,8 +73,18 @@ public class MetaDataEditorController { ...@@ -52,8 +73,18 @@ public class MetaDataEditorController {
} }
void closeDialog(ActionEvent event) {
Stage stage = (Stage) ((Button) event.getSource()).getScene().getWindow();
stage.close();
}
@FXML @FXML
void onSave(ActionEvent event) { void onSave(ActionEvent event) {
latlong.getMetaData().setProperty(MetaData.NAME_PROPERTY, nameInput.getText());
latlong.getMetaData().setProperty(MetaData.DESCRIPTION_PROPERTY, descriptionInput.getText());
Event.fireEvent(((Button) event.getSource()).getScene().getWindow(),
new MetaDataEvent(METADATA_SAVED));
closeDialog(event);
} }
...@@ -63,8 +94,10 @@ public class MetaDataEditorController { ...@@ -63,8 +94,10 @@ public class MetaDataEditorController {
} }
private void updateUi() { private void updateUi() {
// TODO Auto-generated method stub nameInput.setText(latlong.getMetaData().getProperty(MetaData.NAME_PROPERTY));
descriptionInput.setText(latlong.getMetaData().getProperty(MetaData.DESCRIPTION_PROPERTY));
coordinatesLabel.setText(latlong.toString());
} }
} }
package simpleex.ui;
import javafx.event.Event;
import javafx.event.EventTarget;
import javafx.event.EventType;
public class MetaDataEvent extends Event {
/**
*
*/
private static final long serialVersionUID = 1L;
public MetaDataEvent(Object source, EventTarget target, EventType<? extends Event> eventType) {
super(source, target, eventType);
// TODO Auto-generated constructor stub
}
public MetaDataEvent(EventType<? extends Event> eventType) {
super(eventType);
// TODO Auto-generated constructor stub
}
}
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import simpleex.ui.tags.TagsBar?> <?import simpleex.ui.tags.TagsBar?>
<fx:root prefHeight="500.0" prefWidth="600.0" type="BorderPane" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="simpleex.ui.MetaDataEditorController"> <BorderPane prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="simpleex.ui.MetaDataEditorController" fx:id="rootContainer">
<bottom> <bottom>
<HBox alignment="CENTER_RIGHT" prefHeight="40.0" prefWidth="600.0" spacing="10.0" BorderPane.alignment="CENTER_RIGHT"> <HBox alignment="CENTER_RIGHT" prefHeight="40.0" prefWidth="600.0" spacing="10.0" BorderPane.alignment="CENTER_RIGHT">
<children> <children>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<HBox prefHeight="23.0" prefWidth="580.0" spacing="10.0"> <HBox prefHeight="23.0" prefWidth="580.0" spacing="10.0">
<children> <children>
<Label text="Coordinates:" /> <Label text="Coordinates:" />
<Label layoutX="10.0" layoutY="10.0" text="Label" /> <Label layoutX="10.0" layoutY="10.0" text="Label" fx:id="coordinatesLabel"/>
</children> </children>
</HBox> </HBox>
<Label text="Description:" /> <Label text="Description:" />
...@@ -52,4 +52,4 @@ ...@@ -52,4 +52,4 @@
</BorderPane.margin> </BorderPane.margin>
</VBox> </VBox>
</center> </center>
</fx:root> </BorderPane>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment