Archived
0
This repository has been archived on 2022-07-30. You can view files and clone it, but cannot push or open issues or pull requests.
Files
trader/client/src/main/java/ru/trader/model/ProfileModel.java
2015-08-08 21:36:26 +03:00

207 lines
5.7 KiB
Java

package ru.trader.model;
import javafx.beans.property.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.Engine;
import ru.trader.core.Profile;
import ru.trader.core.Ship;
public class ProfileModel {
private final static Logger LOG = LoggerFactory.getLogger(ProfileModel.class);
private final Profile profile;
private final MarketModel market;
private final StringProperty name;
private final DoubleProperty balance;
private final ObjectProperty<SystemModel> system;
private final ObjectProperty<StationModel> station;
private final BooleanProperty docked;
private final DoubleProperty shipMass;
private final DoubleProperty shipTank;
private final IntegerProperty shipCargo;
private final ObjectProperty<Engine> shipEngine;
public ProfileModel(Profile profile, MarketModel market) {
this.market = market;
this.profile = profile;
name = new SimpleStringProperty();
balance = new SimpleDoubleProperty();
system = new SimpleObjectProperty<>();
station = new SimpleObjectProperty<>();
docked = new SimpleBooleanProperty();
shipMass = new SimpleDoubleProperty();
shipTank = new SimpleDoubleProperty();
shipCargo = new SimpleIntegerProperty();
shipEngine = new SimpleObjectProperty<>();
refresh();
initListeners();
}
private void initListeners() {
name.addListener((ov, o, n) -> {
LOG.debug("Change name, old: {}, new: {}", o, n);
profile.setName(n);
});
balance.addListener((ov, o, n) -> {
LOG.debug("Change balance, old: {}, new: {}", o, n);
profile.setBalance(n.doubleValue());
});
system.addListener((ov, o, n) -> {
LOG.debug("Change system, old: {}, new: {}", o, n);
profile.setSystem(n != null && n != ModelFabric.NONE_SYSTEM ? n.getSystem() : null);
});
station.addListener((ov, o, n) -> {
LOG.debug("Change station, old: {}, new: {}", o, n);
profile.setStation(n != null && n != ModelFabric.NONE_STATION ? n.getStation() : null);
});
docked.addListener((ov, o, n) -> {
LOG.debug("Change docked, old: {}, new: {}", o, n);
profile.setDocked(n);
});
shipMass.addListener((ov, o, n) -> {
LOG.debug("Change ship mass, old: {}, new: {}", o, n);
profile.getShip().setMass(n.doubleValue());
});
shipTank.addListener((ov, o, n) -> {
LOG.debug("Change ship tank, old: {}, new: {}", o, n);
profile.getShip().setTank(n.doubleValue());
});
shipCargo.addListener((ov, o, n) -> {
LOG.debug("Change ship cargo, old: {}, new: {}", o, n);
profile.getShip().setCargo(n.intValue());
});
shipEngine.addListener((ov, o, n) -> {
LOG.debug("Change ship engine, old: {}, new: {}", o, n);
profile.getShip().setEngine(n);
});
}
public MarketModel getMarket() {
return market;
}
public String getName() {
return name.get();
}
public StringProperty nameProperty() {
return name;
}
public void setName(String name) {
this.name.set(name);
}
public double getBalance() {
return balance.get();
}
public DoubleProperty balanceProperty() {
return balance;
}
public void setBalance(double balance) {
this.balance.set(balance);
}
public SystemModel getSystem() {
return system.get();
}
public ObjectProperty<SystemModel> systemProperty() {
return system;
}
public void setSystem(SystemModel system) {
this.system.set(system);
}
public StationModel getStation() {
return station.get();
}
public ObjectProperty<StationModel> stationProperty() {
return station;
}
public void setStation(StationModel station) {
this.station.set(station);
}
public boolean isDocked() {
return docked.get();
}
public BooleanProperty dockedProperty() {
return docked;
}
public void setDocked(boolean docked) {
this.docked.set(docked);
}
public double getShipMass() {
return shipMass.get();
}
public DoubleProperty shipMassProperty() {
return shipMass;
}
public void setShipMass(double shipMass) {
this.shipMass.set(shipMass);
}
public double getShipTank() {
return shipTank.get();
}
public DoubleProperty shipTankProperty() {
return shipTank;
}
public void setShipTank(double shipTank) {
this.shipTank.set(shipTank);
}
public int getShipCargo() {
return shipCargo.get();
}
public IntegerProperty shipCargoProperty() {
return shipCargo;
}
public void setShipCargo(int shipCargo) {
this.shipCargo.set(shipCargo);
}
public Engine getShipEngine() {
return shipEngine.get();
}
public ObjectProperty<Engine> shipEngineProperty() {
return shipEngine;
}
public void setShipEngine(Engine engine) {
this.shipEngine.set(engine);
}
private void refresh(){
name.setValue(profile.getName());
balance.setValue(profile.getBalance());
system.setValue(market.getModeler().get(profile.getSystem()));
station.setValue(market.getModeler().get(profile.getStation()));
docked.setValue(profile.isDocked());
Ship ship = profile.getShip();
shipMass.setValue(ship.getMass());
shipTank.setValue(ship.getTank());
shipCargo.setValue(ship.getCargo());
shipEngine.setValue(ship.getEngine());
}
}