add log handling
This commit is contained in:
@@ -32,13 +32,22 @@ import de.geofroggerfx.application.SessionContext;
|
||||
import de.geofroggerfx.application.SessionContextListener;
|
||||
import de.geofroggerfx.model.Attribute;
|
||||
import de.geofroggerfx.model.Cache;
|
||||
import de.geofroggerfx.model.Log;
|
||||
import de.geofroggerfx.ui.FXMLController;
|
||||
import de.geofroggerfx.ui.GeocachingIcons;
|
||||
import de.geofroggerfx.ui.glyphs.GeofroggerGlyphsDude;
|
||||
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
|
||||
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcons;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TitledPane;
|
||||
import javafx.geometry.HPos;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.geometry.VPos;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.FlowPane;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.Region;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.scene.web.WebEngine;
|
||||
@@ -85,6 +94,12 @@ public class DetailsController extends FXMLController {
|
||||
@FXML
|
||||
private FlowPane attributeList;
|
||||
|
||||
@FXML
|
||||
private GridPane logList;
|
||||
|
||||
@FXML
|
||||
private FlowPane logButtonPane;
|
||||
|
||||
private GoogleMap map;
|
||||
private Marker marker;
|
||||
|
||||
@@ -97,13 +112,21 @@ public class DetailsController extends FXMLController {
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
setCacheListener();
|
||||
initializeMap();
|
||||
setLogLinkButton();
|
||||
}
|
||||
|
||||
private void setCacheListener() {
|
||||
sessionContext.addListener(CURRENT_CACHE, new SessionContextListener() {
|
||||
@Override
|
||||
public void sessionContextChanged() {
|
||||
fillContent();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initializeMap() {
|
||||
mapView.addMapInializedListener(new MapComponentInitializedListener() {
|
||||
@Override
|
||||
public void mapInitialized() {
|
||||
@@ -131,6 +154,26 @@ public class DetailsController extends FXMLController {
|
||||
});
|
||||
}
|
||||
|
||||
private void setLogLinkButton() {
|
||||
Button logLink = GeofroggerGlyphsDude.createIconButton(FontAwesomeIcons.EXTERNAL_LINK);
|
||||
logLink.setStyle("-fx-background-color: transparent;");
|
||||
logButtonPane.getChildren().add(logLink);
|
||||
logLink.setOnAction(event -> {
|
||||
Cache cache = (Cache) sessionContext.getData(CURRENT_CACHE);
|
||||
if (cache != null) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Log log: cache.getLogs()) {
|
||||
sb.append(log.getText());
|
||||
sb.append("\n--------------------------------------\n");
|
||||
}
|
||||
|
||||
Alert logWindow = new Alert(Alert.AlertType.INFORMATION);
|
||||
logWindow.setContentText(sb.toString());
|
||||
logWindow.showAndWait();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void fillContent() {
|
||||
Cache cache = (Cache) sessionContext.getData(CURRENT_CACHE);
|
||||
cacheName.setText(cache.getName());
|
||||
@@ -156,6 +199,13 @@ public class DetailsController extends FXMLController {
|
||||
attributeList.getChildren().add(createIcon(getIcon(attribute), "1.6em"));
|
||||
}
|
||||
|
||||
logList.getChildren().clear();
|
||||
int maxRow = Math.min(4, cache.getLogs().size());
|
||||
for (int row=0; row<maxRow; row++) {
|
||||
setLogIcon(row);
|
||||
setLogText(row, cache.getLogs().get(row));
|
||||
}
|
||||
|
||||
LatLong latLong = new LatLong(cache.getMainWayPoint().getLatitude(), cache.getMainWayPoint().getLongitude());
|
||||
MarkerOptions options = new MarkerOptions();
|
||||
options.position(latLong);
|
||||
@@ -169,4 +219,20 @@ public class DetailsController extends FXMLController {
|
||||
map.setCenter(latLong);
|
||||
mapView.requestLayout();
|
||||
}
|
||||
|
||||
private void setLogIcon(int row) {
|
||||
logList.add(GeofroggerGlyphsDude.createIcon(FontAwesomeIcons.CHECK), 0, row);
|
||||
}
|
||||
|
||||
private void setLogText(int row, Log log) {
|
||||
Label logLabel = new Label(log.getText());
|
||||
logLabel.setWrapText(false);
|
||||
logLabel.setTextOverrun(OverrunStyle.ELLIPSIS);
|
||||
logLabel.setAlignment(Pos.TOP_LEFT);
|
||||
logLabel.setMaxHeight(Region.USE_PREF_SIZE);
|
||||
logLabel.setPrefHeight(18.0);
|
||||
logLabel.setMinHeight(Region.USE_PREF_SIZE);
|
||||
logLabel.setTooltip(new Tooltip(log.getText()));
|
||||
logList.add(logLabel, 1, row);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user