Archived
0

add population summ

This commit is contained in:
Mo
2016-11-09 21:14:14 +03:00
parent fd95692271
commit 5a0fc0c95b
4 changed files with 44 additions and 6 deletions

View File

@@ -1,10 +1,13 @@
package ru.trader.controllers; package ru.trader.controllers;
import javafx.beans.InvalidationListener;
import javafx.beans.property.*; import javafx.beans.property.*;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.util.converter.NumberStringConverter;
import org.controlsfx.control.CheckComboBox; import org.controlsfx.control.CheckComboBox;
import org.controlsfx.control.MasterDetailPane; import org.controlsfx.control.MasterDetailPane;
import ru.trader.Main; import ru.trader.Main;
@@ -20,7 +23,6 @@ import ru.trader.view.support.autocomplete.CachedSuggestionProvider;
import ru.trader.view.support.autocomplete.SystemsProvider; import ru.trader.view.support.autocomplete.SystemsProvider;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -59,13 +61,17 @@ public class PowerPlayController {
private TableView<ResultEntry> tblResults; private TableView<ResultEntry> tblResults;
@FXML @FXML
private TableView<ResultEntry> tblDetail; private TableView<ResultEntry> tblDetail;
@FXML
private Label resultPopSumm;
@FXML
private Label detailPopSumm;
private MarketModel world; private MarketModel world;
private ProfileModel profile; private ProfileModel profile;
private Optional<SystemModel> hqSystem; private Optional<SystemModel> hqSystem;
private PowerPlayAnalyzator analyzator; private PowerPlayAnalyzator analyzator;
private final List<ResultEntry> result = FXCollections.observableArrayList(); private final ObservableList<ResultEntry> result = FXCollections.observableArrayList();
private final List<ResultEntry> detail = FXCollections.observableArrayList(); private final ObservableList<ResultEntry> detail = FXCollections.observableArrayList();
@FXML @FXML
@@ -81,6 +87,7 @@ public class PowerPlayController {
cbStates.getItems().setAll(POWER_STATE.values()); cbStates.getItems().setAll(POWER_STATE.values());
cbStates.getCheckModel().check(POWER_STATE.CONTROL); cbStates.getCheckModel().check(POWER_STATE.CONTROL);
cbStates.getCheckModel().check(POWER_STATE.HEADQUARTERS); cbStates.getCheckModel().check(POWER_STATE.HEADQUARTERS);
cbStates.getCheckModel().check(POWER_STATE.TURMOIL);
BindingsHelper.setTableViewItems(tblResults, result); BindingsHelper.setTableViewItems(tblResults, result);
BindingsHelper.setTableViewItems(tblDetail, detail); BindingsHelper.setTableViewItems(tblDetail, detail);
@@ -129,7 +136,7 @@ public class PowerPlayController {
}); });
historySystems.getSelectionModel().selectedItemProperty().addListener((ov, o, n) -> { historySystems.getSelectionModel().selectedItemProperty().addListener((ov, o, n) -> {
if (n != null){ if (n != null) {
checkedSystem.setValue(n); checkedSystem.setValue(n);
} }
}); });
@@ -149,6 +156,17 @@ public class PowerPlayController {
resultPane.setShowDetailNode(false); resultPane.setShowDetailNode(false);
} }
}); });
NumberStringConverter converter = new NumberStringConverter("#,##0.##");
result.addListener((InvalidationListener) i ->
resultPopSumm.setText(converter.toString(getPopulationSumm(result)))
);
detail.addListener((InvalidationListener) i ->
detailPopSumm.setText(converter.toString(getPopulationSumm(detail)))
);
}
private long getPopulationSumm(Collection<ResultEntry> collection){
return collection.stream().mapToLong(ResultEntry::getPopulation).sum();
} }
private void fillDetail(SystemModel detailSystem) { private void fillDetail(SystemModel detailSystem) {
@@ -424,6 +442,10 @@ public class PowerPlayController {
return intersecting; return intersecting;
} }
public long getPopulation() {
return population.get();
}
public ReadOnlyLongProperty populationProperty() { public ReadOnlyLongProperty populationProperty() {
return population; return population;
} }

View File

@@ -66,6 +66,7 @@ power.YONG_RUI=Li Yong-Rui
power.ANTAL=Pranav Antal power.ANTAL=Pranav Antal
power.HUDSON=Zachary Hudson power.HUDSON=Zachary Hudson
power.TORVAL=Zemina Torval power.TORVAL=Zemina Torval
power.GROM=Yuri Grom
power.NONE=None power.NONE=None
power.states.HEADQUARTERS=Headquarters power.states.HEADQUARTERS=Headquarters
@@ -73,6 +74,8 @@ power.states.CONTROL=Controlled
power.states.EXPLOITED=Exploited power.states.EXPLOITED=Exploited
power.states.EXPANSION=Expansion power.states.EXPANSION=Expansion
power.states.CONTESTED=Contested power.states.CONTESTED=Contested
power.states.BLOCKED=Blocked
power.states.TURMOIL=Turmoil
power.states.NONE=None power.states.NONE=None
item.group.chemicals=Chemicals item.group.chemicals=Chemicals

View File

@@ -68,6 +68,7 @@ power.YONG_RUI=Li Yong-Rui
power.ANTAL=Pranav Antal power.ANTAL=Pranav Antal
power.HUDSON=Zachary Hudson power.HUDSON=Zachary Hudson
power.TORVAL=Zemina Torval power.TORVAL=Zemina Torval
power.GROM=Yuri Grom
power.NONE=\u041D\u0435\u0442 power.NONE=\u041D\u0435\u0442
power.states.HEADQUARTERS=\u0428\u0442\u0430\u0431-\u043A\u0432\u0430\u0440\u0442\u0438\u0440\u0430 power.states.HEADQUARTERS=\u0428\u0442\u0430\u0431-\u043A\u0432\u0430\u0440\u0442\u0438\u0440\u0430
@@ -75,6 +76,8 @@ power.states.CONTROL=\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u044
power.states.EXPLOITED=\u042D\u043A\u0441\u043F\u043B\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044F power.states.EXPLOITED=\u042D\u043A\u0441\u043F\u043B\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044F
power.states.EXPANSION=\u042D\u043A\u0441\u043F\u0430\u043D\u0441\u0438\u044F power.states.EXPANSION=\u042D\u043A\u0441\u043F\u0430\u043D\u0441\u0438\u044F
power.states.CONTESTED=\u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F power.states.CONTESTED=\u041E\u0441\u043F\u0430\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044F
power.states.BLOCKED=\u0417\u0430\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0430
power.states.TURMOIL=\u041A\u0440\u0438\u0437\u0438\u0441
power.states.NONE=\u041D\u0435\u0442 power.states.NONE=\u041D\u0435\u0442
item.group.chemicals=\u0425\u0438\u043C\u0438\u043A\u0430\u0442\u044B item.group.chemicals=\u0425\u0438\u043C\u0438\u043A\u0430\u0442\u044B

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?> <?import javafx.scene.control.cell.*?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
@@ -11,6 +12,8 @@
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" <VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.PowerPlayController" fx:controller="ru.trader.controllers.PowerPlayController"
prefHeight="500" > prefHeight="500" >
<fx:define><Insets fx:id="tablePadding" left="0" right="0" top="0" bottom="0" /></fx:define>
<fx:define><Insets fx:id="summPadding" left="4" right="4" top="4" bottom="4" /></fx:define>
<TitledPane text="Параметры анализа" collapsible="false"> <TitledPane text="Параметры анализа" collapsible="false">
<HBox spacing="50" alignment="CENTER" minHeight="210" maxHeight="210"> <HBox spacing="50" alignment="CENTER" minHeight="210" maxHeight="210">
<VBox minWidth="250" maxWidth="250" spacing="4"> <VBox minWidth="250" maxWidth="250" spacing="4">
@@ -87,7 +90,8 @@
<MasterDetailPane fx:id="resultPane" detailSide="RIGHT" prefWidth="1190" dividerPosition="0.566" showDetailNode="false" VBox.vgrow="ALWAYS"> <MasterDetailPane fx:id="resultPane" detailSide="RIGHT" prefWidth="1190" dividerPosition="0.566" showDetailNode="false" VBox.vgrow="ALWAYS">
<masterNode> <masterNode>
<TitledPane text="Результаты анализа" collapsible="false"> <TitledPane text="Результаты анализа" collapsible="false">
<TableView fx:id="tblResults"> <VBox spacing="4" padding="$tablePadding">
<TableView fx:id="tblResults" VBox.vgrow="ALWAYS">
<columns> <columns>
<TableColumn prefWidth="150" text="%market.system"> <TableColumn prefWidth="150" text="%market.system">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory> <cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
@@ -125,6 +129,7 @@
<cellValueFactory><PropertyValueFactory property="upkeep"/></cellValueFactory> <cellValueFactory><PropertyValueFactory property="upkeep"/></cellValueFactory>
</TableColumn> </TableColumn>
<TableColumn prefWidth="80" text="Население"> <TableColumn prefWidth="80" text="Население">
<cellFactory><TextCell><converter><CustomNumberStringConverter pattern="#,##0.##" /></converter></TextCell></cellFactory>
<cellValueFactory><PropertyValueFactory property="population"/></cellValueFactory> <cellValueFactory><PropertyValueFactory property="population"/></cellValueFactory>
</TableColumn> </TableColumn>
<TableColumn prefWidth="100" text="Тип площадки"> <TableColumn prefWidth="100" text="Тип площадки">
@@ -149,11 +154,14 @@
</ContextMenu> </ContextMenu>
</contextMenu> </contextMenu>
</TableView> </TableView>
<HBox spacing="4" padding="$summPadding"><Label text="Сумма населения:" /><Label fx:id="resultPopSumm" /></HBox>
</VBox>
</TitledPane> </TitledPane>
</masterNode> </masterNode>
<detailNode> <detailNode>
<TitledPane text="Системы в радиусе 15 LY" collapsible="false"> <TitledPane text="Системы в радиусе 15 LY" collapsible="false">
<TableView fx:id="tblDetail"> <VBox spacing="4" padding="$tablePadding">
<TableView fx:id="tblDetail" VBox.vgrow="ALWAYS">
<columns> <columns>
<TableColumn prefWidth="100" text="%market.system"> <TableColumn prefWidth="100" text="%market.system">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory> <cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
@@ -199,6 +207,8 @@
</ContextMenu> </ContextMenu>
</contextMenu> </contextMenu>
</TableView> </TableView>
<HBox spacing="4" padding="$summPadding"><Label text="Сумма населения:" /><Label fx:id="detailPopSumm" /></HBox>
</VBox>
</TitledPane> </TitledPane>
</detailNode> </detailNode>
</MasterDetailPane> </MasterDetailPane>