add log handling

This commit is contained in:
Andreas Billmann
2015-03-26 17:39:47 +01:00
parent 3d2edb8681
commit fc6b8be0be
2 changed files with 104 additions and 67 deletions

View File

@@ -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);
}
}