diff --git a/client/src/main/java/ru/trader/model/GroupModel.java b/client/src/main/java/ru/trader/model/GroupModel.java index 3ea626f..6ee5109 100644 --- a/client/src/main/java/ru/trader/model/GroupModel.java +++ b/client/src/main/java/ru/trader/model/GroupModel.java @@ -6,7 +6,7 @@ import javafx.beans.property.StringProperty; import ru.trader.core.Group; import ru.trader.view.support.Localization; -public class GroupModel { +public class GroupModel implements Comparable { private final Group group; private StringProperty name; @@ -39,6 +39,13 @@ public class GroupModel { return Localization.getString("item.group." + group.getName(), group.getName()); } + @Override + public int compareTo(GroupModel other) { + int cmp = group.getType().compareTo(other.group.getType()); + if (cmp != 0) return cmp; + return getName().compareTo(other.getName()); + } + @Override public String toString() { return getName(); diff --git a/client/src/main/java/ru/trader/model/ItemModel.java b/client/src/main/java/ru/trader/model/ItemModel.java index c1e71c0..ee38f57 100644 --- a/client/src/main/java/ru/trader/model/ItemModel.java +++ b/client/src/main/java/ru/trader/model/ItemModel.java @@ -9,7 +9,7 @@ import ru.trader.view.support.Localization; import java.util.List; -public class ItemModel { +public class ItemModel implements Comparable { private final static Logger LOG = LoggerFactory.getLogger(ItemModel.class); private final Item item; @@ -17,17 +17,20 @@ public class ItemModel { private final ItemStatModel statSell; private final ItemStatModel statBuy; + private final GroupModel group; ItemModel() { this.item = null; this.statSell = null; this.statBuy = null; + this.group = null; } ItemModel(Item item, MarketModel market) { this.item = item; this.statSell = new ItemStatModel(market.getStat(OFFER_TYPE.SELL, item), market); this.statBuy = new ItemStatModel(market.getStat(OFFER_TYPE.BUY, item), market); + this.group = market.getModeler().get(item.getGroup()); } Item getItem(){ @@ -112,6 +115,13 @@ public class ItemModel { } } + @Override + public int compareTo(ItemModel other) { + int cmp = group != null ? other.group != null ? group.compareTo(other.group) : 1 : 0; + if (cmp != 0) return cmp; + return getName().compareTo(other.getName()); + } + @Override public String toString() { if (LOG.isTraceEnabled()){ diff --git a/client/src/main/java/ru/trader/model/MarketModel.java b/client/src/main/java/ru/trader/model/MarketModel.java index e477421..f24304f 100644 --- a/client/src/main/java/ru/trader/model/MarketModel.java +++ b/client/src/main/java/ru/trader/model/MarketModel.java @@ -45,6 +45,7 @@ public class MarketModel { notificator = new Notificator(); groups = new SimpleListProperty<>(BindingsHelper.observableList(market.getGroups(), modeler::get)); items = new SimpleListProperty<>(BindingsHelper.observableList(market.getItems(), modeler::get)); + items.sort((i1, i2) -> i1.compareTo(i2)); systems = new SimpleListProperty<>(BindingsHelper.observableList(market.get(), modeler::get)); systemsList = new SimpleListProperty<>(FXCollections.observableArrayList(ModelFabric.NONE_SYSTEM)); systemsList.addAll(systems);