implement edit power of system
This commit is contained in:
@@ -25,6 +25,10 @@ public class SystemsController {
|
||||
private TableColumn<SystemModel, FACTION> faction;
|
||||
@FXML
|
||||
private TableColumn<SystemModel, GOVERNMENT> government;
|
||||
@FXML
|
||||
private TableColumn<SystemModel, POWER> power;
|
||||
@FXML
|
||||
private TableColumn<SystemModel, POWER_STATE> powerState;
|
||||
|
||||
|
||||
private ObservableList<SystemModel> stations = FXCollections.observableArrayList();
|
||||
@@ -35,6 +39,8 @@ public class SystemsController {
|
||||
tblSystems.setItems(stations);
|
||||
faction.setCellFactory(ComboBoxTableCell.forTableColumn(new FactionStringConverter(), FXCollections.observableArrayList(FACTION.values())));
|
||||
government.setCellFactory(ComboBoxTableCell.forTableColumn(new GovernmentStringConverter(), FXCollections.observableArrayList(GOVERNMENT.values())));
|
||||
power.setCellFactory(ComboBoxTableCell.forTableColumn(new PowerStringConverter(), FXCollections.observableArrayList(POWER.values())));
|
||||
powerState.setCellFactory(ComboBoxTableCell.forTableColumn(new PowerStateStringConverter(), FXCollections.observableArrayList(POWER_STATE.values())));
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package ru.trader.model;
|
||||
|
||||
import javafx.beans.property.ReadOnlyStringProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.beans.property.*;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import org.slf4j.Logger;
|
||||
@@ -62,7 +60,7 @@ public class SystemModel {
|
||||
public void setFaction(FACTION faction) {
|
||||
FACTION oldFaction = getFaction();
|
||||
if (oldFaction != null && oldFaction.equals(faction) || faction == null) return;
|
||||
LOG.info("Change faction station {} to {}", system, faction);
|
||||
LOG.info("Change faction system {} to {}", system, faction);
|
||||
system.setFaction(faction);
|
||||
}
|
||||
|
||||
@@ -71,10 +69,28 @@ public class SystemModel {
|
||||
public void setGovernment(GOVERNMENT government) {
|
||||
GOVERNMENT oldGovernment = getGovernment();
|
||||
if (oldGovernment != null && oldGovernment.equals(government) || government == null) return;
|
||||
LOG.info("Change government station {} to {}", system, government);
|
||||
LOG.info("Change government system {} to {}", system, government);
|
||||
system.setGovernment(government);
|
||||
}
|
||||
|
||||
public POWER getPower() {return system.getPower();}
|
||||
|
||||
public void setPower(POWER power) {
|
||||
POWER oldPower = getPower();
|
||||
if (oldPower != null && oldPower.equals(power) || power == null) return;
|
||||
LOG.info("Change power system {} to {}", system, power);
|
||||
system.setPower(power, system.getPowerState());
|
||||
}
|
||||
|
||||
public POWER_STATE getPowerState() {return system.getPowerState();}
|
||||
|
||||
public void setPowerState(POWER_STATE powerState) {
|
||||
POWER_STATE oldPowerState = getPowerState();
|
||||
if (oldPowerState != null && oldPowerState.equals(powerState) || powerState == null) return;
|
||||
LOG.info("Change power state system {} to {}", system, powerState);
|
||||
system.setPower(system.getPower(), powerState);
|
||||
}
|
||||
|
||||
public double getX(){
|
||||
return system.getX();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package ru.trader.view.support;
|
||||
|
||||
|
||||
import javafx.util.StringConverter;
|
||||
import ru.trader.core.POWER_STATE;
|
||||
|
||||
|
||||
public class PowerStateStringConverter extends StringConverter<POWER_STATE> {
|
||||
|
||||
@Override
|
||||
public String toString(POWER_STATE powerState) {
|
||||
return toLocalizationString(powerState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER_STATE fromString(String powerState) {
|
||||
return POWER_STATE.valueOf(powerState);
|
||||
}
|
||||
|
||||
public static String toLocalizationString(POWER_STATE powerState){
|
||||
if (powerState == null) return null;
|
||||
return Localization.getString("power.states." + powerState.toString(), powerState.toString());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package ru.trader.view.support;
|
||||
|
||||
|
||||
import javafx.util.StringConverter;
|
||||
import ru.trader.core.POWER;
|
||||
|
||||
|
||||
public class PowerStringConverter extends StringConverter<POWER> {
|
||||
|
||||
@Override
|
||||
public String toString(POWER power) {
|
||||
return toLocalizationString(power);
|
||||
}
|
||||
|
||||
@Override
|
||||
public POWER fromString(String power) {
|
||||
return POWER.valueOf(power);
|
||||
}
|
||||
|
||||
public static String toLocalizationString(POWER power){
|
||||
if (power == null) return null;
|
||||
return Localization.getString("power." + power.toString(), power.toString());
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package ru.trader.view.support.cells;
|
||||
import com.sun.javafx.property.PropertyReference;
|
||||
import javafx.beans.NamedArg;
|
||||
import javafx.beans.property.ReadOnlyObjectWrapper;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.util.Callback;
|
||||
@@ -23,12 +24,16 @@ public abstract class PropertyCellValueFactory<S,T,V> extends PropertyFactory<S,
|
||||
|
||||
abstract ObservableValue<V> format(ObservableValue<S> value);
|
||||
|
||||
private ObservableValue<V> getCellValue(T rowData){
|
||||
private ObservableValue<V> getCellValue(final T rowData){
|
||||
ObservableValue<S> value = null;
|
||||
PropertyReference<S> prop = getPropertyRef(rowData);
|
||||
final PropertyReference<S> prop = getPropertyRef(rowData);
|
||||
if (prop!=null){
|
||||
if (prop.hasProperty()) value = prop.getProperty(rowData);
|
||||
else value = new ReadOnlyObjectWrapper<>(prop.get(rowData));
|
||||
else if (prop.isWritable()) {
|
||||
value = new SimpleObjectProperty<>(prop.get(rowData));
|
||||
value.addListener((ov , o, n) -> prop.set(rowData, n));
|
||||
} else
|
||||
value = new ReadOnlyObjectWrapper<>(prop.get(rowData));
|
||||
}
|
||||
if (value == null) return null;
|
||||
return format(value);
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package ru.trader.view.support.cells;
|
||||
|
||||
import com.sun.javafx.property.PropertyReference;
|
||||
import javafx.beans.NamedArg;
|
||||
import javafx.beans.property.ReadOnlyObjectWrapper;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.util.Callback;
|
||||
import ru.trader.view.support.PropertyFactory;
|
||||
|
||||
public class WritablePropertyValueFactory<S,T> extends PropertyFactory<T, S> implements Callback<TableColumn.CellDataFeatures<S, T>, ObservableValue<T>> {
|
||||
public WritablePropertyValueFactory(@NamedArg("property") String property) {
|
||||
super(property);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ObservableValue<T> call(TableColumn.CellDataFeatures<S, T> param) {
|
||||
return getCellValue(param.getValue());
|
||||
}
|
||||
|
||||
private ObservableValue<T> getCellValue(final S rowData){
|
||||
ObservableValue<T> value = null;
|
||||
final PropertyReference<T> prop = getPropertyRef(rowData);
|
||||
if (prop != null){
|
||||
if (prop.hasProperty()) value = prop.getProperty(rowData);
|
||||
else if (prop.isWritable()) {
|
||||
value = new SimpleObjectProperty<>(prop.get(rowData));
|
||||
value.addListener((ov , o, n) -> prop.set(rowData, n));
|
||||
} else
|
||||
value = new ReadOnlyObjectWrapper<>(prop.get(rowData));
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
<?import ru.trader.view.support.cells.OfferCellValueImpl?>
|
||||
<?import ru.trader.view.support.cells.DoubleCell?>
|
||||
|
||||
<?import ru.trader.view.support.cells.WritablePropertyValueFactory?>
|
||||
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
|
||||
fx:controller="ru.trader.db.controllers.StationsController">
|
||||
<TableView fx:id="tblStations" editable="true" VBox.vgrow="ALWAYS" prefWidth="800">
|
||||
@@ -19,22 +20,22 @@
|
||||
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="type" minWidth="100" text="%market.station.type">
|
||||
<cellValueFactory><PropertyValueFactory property="type"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="type"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="faction" minWidth="100" text="%market.allegiance">
|
||||
<cellValueFactory><PropertyValueFactory property="faction"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="faction"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="government" minWidth="100" text="%market.government">
|
||||
<cellValueFactory><PropertyValueFactory property="government"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="government"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="economic" minWidth="100" text="%market.economic">
|
||||
<cellValueFactory><PropertyValueFactory property="economic"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="economic"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="subEconomic" minWidth="100" text="%market.economic">
|
||||
<cellValueFactory><PropertyValueFactory property="subEconomic"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="subEconomic"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn minWidth="100" text="Дистанция">
|
||||
<cellValueFactory><PropertyValueFactory property="distance"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="distance"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="services" minWidth="100" text="Сервисы">
|
||||
<cellValueFactory><PropertyValueFactory property="services"/></cellValueFactory>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<?import ru.trader.view.support.cells.OfferCellValueImpl?>
|
||||
<?import ru.trader.view.support.cells.DoubleCell?>
|
||||
|
||||
<?import ru.trader.view.support.cells.WritablePropertyValueFactory?>
|
||||
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
|
||||
fx:controller="ru.trader.db.controllers.SystemsController">
|
||||
<TableView fx:id="tblSystems" editable="true" VBox.vgrow="ALWAYS" prefWidth="800">
|
||||
@@ -25,11 +26,18 @@
|
||||
<cellValueFactory><PropertyValueFactory property="z"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="faction" minWidth="100" text="%market.allegiance">
|
||||
<cellValueFactory><PropertyValueFactory property="faction"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="faction"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="government" minWidth="100" text="%market.government">
|
||||
<cellValueFactory><PropertyValueFactory property="government"/></cellValueFactory>
|
||||
<cellValueFactory><WritablePropertyValueFactory property="government"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="power" minWidth="100" text="Сила">
|
||||
<cellValueFactory><WritablePropertyValueFactory property="power"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
<TableColumn fx:id="powerState" minWidth="100" text="Статус">
|
||||
<cellValueFactory><WritablePropertyValueFactory property="powerState"/></cellValueFactory>
|
||||
</TableColumn>
|
||||
|
||||
</columns>
|
||||
<columnResizePolicy>
|
||||
<TableView fx:constant="UNCONSTRAINED_RESIZE_POLICY"/>
|
||||
|
||||
Reference in New Issue
Block a user