Commit a6a8df6ff5be1e08eddb715734fc61cd03bce8b0
1 parent
df68a9fdcc
Exists in
master
and in
1 other branch
add the possibility to search an MMSI
Showing 8 changed files with 31 additions and 27 deletions Side-by-side Diff
- src/main/kotlin/application/App.kt
- src/main/kotlin/application/controller/DataPanelController.kt
- src/main/kotlin/application/controller/VesselListPanelController.kt
- src/main/resources/gui/mapPanel.fxml
- src/main/resources/gui/menuBar.fxml
- src/main/resources/gui/timePanel.fxml
- src/main/resources/gui/vesselListPanel.fxml
- src/main/resources/gui/windows.fxml
src/main/kotlin/application/App.kt
View file @
a6a8df6
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 | import jfxtras.styles.jmetro.Style |
14 | 14 | import kotlin.system.exitProcess |
15 | 15 | |
16 | + | |
16 | 17 | class App : Application() { |
17 | 18 | var style: Style = Style.LIGHT |
18 | 19 | |
... | ... | @@ -29,7 +30,6 @@ |
29 | 30 | } |
30 | 31 | |
31 | 32 | private fun closeApplication() { |
32 | - | |
33 | 33 | Platform.exit() |
34 | 34 | exitProcess(0) |
35 | 35 | } |
src/main/kotlin/application/controller/DataPanelController.kt
View file @
a6a8df6
... | ... | @@ -86,7 +86,6 @@ |
86 | 86 | dataViewer.updatePlot(plotData) |
87 | 87 | initDataList() |
88 | 88 | |
89 | - | |
90 | 89 | } |
91 | 90 | |
92 | 91 | private fun plot() { |
... | ... | @@ -97,8 +96,6 @@ |
97 | 96 | } |
98 | 97 | } |
99 | 98 | |
100 | - | |
101 | - | |
102 | 99 | private fun plot(data: String?) { |
103 | 100 | if (data == null) { |
104 | 101 | plotData.allTraces.clear() |
... | ... | @@ -332,7 +329,7 @@ |
332 | 329 | timeData = populateTime(vessel) |
333 | 330 | |
334 | 331 | if (dataListView.selectionModel.selectedItem == null) return |
335 | -//NOTE: Ajouter les nouvelles donnée à la fin | |
332 | + | |
336 | 333 | when (dataListView.selectionModel.selectedItem) { |
337 | 334 | "Latitude" -> { |
338 | 335 | latitude.clear() |
src/main/kotlin/application/controller/VesselListPanelController.kt
View file @
a6a8df6
... | ... | @@ -6,27 +6,32 @@ |
6 | 6 | import application.model.observableVessel |
7 | 7 | import javafx.collections.FXCollections |
8 | 8 | import javafx.collections.ObservableList |
9 | +import javafx.collections.transformation.FilteredList | |
9 | 10 | import javafx.fxml.FXML |
10 | 11 | import javafx.fxml.Initializable |
11 | -import javafx.scene.control.ListCell | |
12 | -import javafx.scene.control.ListView | |
13 | -import javafx.scene.control.MultipleSelectionModel | |
14 | -import javafx.scene.control.SelectionMode | |
12 | +import javafx.scene.control.* | |
15 | 13 | import javafx.scene.input.MouseEvent |
16 | 14 | import java.net.URL |
17 | 15 | import java.util.* |
18 | 16 | |
19 | 17 | |
20 | 18 | class VesselListPanelController : Initializable, MessageListener { |
19 | + | |
21 | 20 | @FXML |
22 | 21 | var shipListView: ListView<String?> = ListView() |
23 | 22 | |
23 | + @FXML | |
24 | + var filterInput: TextField = TextField() | |
25 | + | |
24 | 26 | private var shipList: ObservableList<String?> = FXCollections.observableArrayList() |
25 | 27 | |
28 | + private val filterMMSI = FilteredList(shipList) | |
29 | + | |
26 | 30 | override fun initialize(location: URL?, resources: ResourceBundle?) { |
27 | 31 | |
28 | 32 | |
29 | - shipListView.items = shipList | |
33 | + shipListView.items = filterMMSI | |
34 | + | |
30 | 35 | observableVessel.listeners.add(this) |
31 | 36 | shipListView.selectionModel.selectedItemProperty().addListener { _, _, newValue -> |
32 | 37 | if (newValue == null) { |
33 | 38 | |
34 | 39 | |
... | ... | @@ -35,12 +40,26 @@ |
35 | 40 | observableSelectedVessel.value = observableVessel.vessels[newValue]!! |
36 | 41 | } |
37 | 42 | } |
43 | + | |
44 | + | |
38 | 45 | setCellFactory() |
46 | + setFilterTextListener() | |
39 | 47 | } |
40 | 48 | |
41 | 49 | override fun onValueChanged(newValue: MutableMap<String?, Vessel>) { |
42 | 50 | shipList.clear() |
43 | 51 | shipList.addAll(newValue.keys) |
52 | + } | |
53 | + | |
54 | + private fun setFilterTextListener() { | |
55 | + filterInput.textProperty().addListener { _ -> | |
56 | + val filter: String = filterInput.text | |
57 | + if (filter.isEmpty()) { | |
58 | + filterMMSI.setPredicate { true } | |
59 | + } else { | |
60 | + filterMMSI.setPredicate { s: String? -> s!!.contains(filter) } | |
61 | + } | |
62 | + } | |
44 | 63 | } |
45 | 64 | |
46 | 65 | private fun setCellFactory() { |
src/main/resources/gui/mapPanel.fxml
View file @
a6a8df6
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | |
3 | 3 | <?import javafx.scene.layout.*?> |
4 | 4 | |
5 | -<VBox prefHeight="150.0" prefWidth="371.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.MapPanelController"> | |
5 | +<VBox prefHeight="150.0" prefWidth="371.0" xmlns="http://javafx.com/javafx/8.0.241" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.MapPanelController"> | |
6 | 6 | <StackPane fx:id="map" /> |
7 | 7 | <fx:include source="timePanel.fxml" /> |
8 | 8 | </VBox> |
src/main/resources/gui/menuBar.fxml
View file @
a6a8df6
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | |
3 | 3 | <?import javafx.scene.control.*?> |
4 | 4 | |
5 | -<MenuBar fx:id="menuBar" prefHeight="25.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.MenuBarController"> | |
5 | +<MenuBar fx:id="menuBar" prefHeight="25.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.241" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.MenuBarController"> | |
6 | 6 | <menus> |
7 | 7 | <Menu mnemonicParsing="false" text="File"> |
8 | 8 | <items> |
src/main/resources/gui/timePanel.fxml
View file @
a6a8df6
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <?import javafx.scene.control.*?> |
5 | 5 | <?import javafx.scene.layout.*?> |
6 | 6 | |
7 | -<HBox alignment="CENTER" prefHeight="65.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.TimePanel"> | |
7 | +<HBox alignment="CENTER" prefHeight="65.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.241" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.TimePanel"> | |
8 | 8 | <children> |
9 | 9 | <Slider fx:id="timeSlider" prefHeight="14.0" prefWidth="538.0"> |
10 | 10 | <HBox.margin> |
src/main/resources/gui/vesselListPanel.fxml
View file @
a6a8df6
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | |
3 | -<?import javafx.geometry.*?> | |
4 | 3 | <?import javafx.scene.control.*?> |
5 | 4 | <?import javafx.scene.layout.*?> |
6 | -<?import javafx.scene.text.*?> | |
7 | 5 | |
8 | 6 | <BorderPane prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller.VesselListPanelController"> |
9 | 7 | <center> |
10 | 8 | <ListView fx:id="shipListView" prefHeight="50.0" prefWidth="200.0" /> |
11 | 9 | </center> |
12 | 10 | <top> |
13 | - <TextFlow prefHeight="28.0" prefWidth="200.0" style="-fx-font-weight: bold;" textAlignment="CENTER" BorderPane.alignment="CENTER"> | |
14 | - <children> | |
15 | - <Text scaleX="1.5" scaleY="1.5" strokeType="OUTSIDE" strokeWidth="0.0" text="MMSI" textAlignment="CENTER" /> | |
16 | - </children> | |
17 | - <BorderPane.margin> | |
18 | - <Insets /> | |
19 | - </BorderPane.margin> | |
20 | - <padding> | |
21 | - <Insets top="5.0" /> | |
22 | - </padding> | |
23 | - </TextFlow> | |
11 | + <TextField fx:id="filterInput" promptText="MMSI" BorderPane.alignment="CENTER" /> | |
24 | 12 | </top> |
25 | 13 | </BorderPane> |
src/main/resources/gui/windows.fxml
View file @
a6a8df6
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <?import javafx.scene.layout.*?> |
5 | 5 | <?import javafx.scene.shape.*?> |
6 | 6 | |
7 | -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="900.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> | |
7 | +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="900.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8.0.241" xmlns:fx="http://javafx.com/fxml/1"> | |
8 | 8 | <children> |
9 | 9 | <fx:include source="menuBar.fxml" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> |
10 | 10 | <SplitPane dividerPositions="0.13772954924874792" layoutY="39.0" prefHeight="865.0" prefWidth="1194.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="35.0"> |