implement copy to clipboard route
This commit is contained in:
@@ -8,6 +8,7 @@ import javafx.scene.Parent;
|
||||
import javafx.scene.control.ButtonType;
|
||||
import javafx.scene.control.Dialog;
|
||||
import javafx.scene.control.TableView;
|
||||
import ru.trader.Main;
|
||||
import ru.trader.model.RouteModel;
|
||||
import ru.trader.model.support.BindingsHelper;
|
||||
import ru.trader.view.support.Localization;
|
||||
@@ -80,4 +81,13 @@ public class PathsController {
|
||||
return tblPaths.getSelectionModel().getSelectedItem();
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void copyToClipboard(){
|
||||
RouteModel route = getPath();
|
||||
if (route != null){
|
||||
Main.copyToClipboard(route.asString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import javafx.fxml.FXML;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.Pane;
|
||||
import ru.trader.Main;
|
||||
import ru.trader.analysis.CrawlerSpecificator;
|
||||
import ru.trader.model.*;
|
||||
import ru.trader.model.support.BindingsHelper;
|
||||
@@ -258,6 +259,13 @@ public class RouteTrackController {
|
||||
setRoute(null);
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void copyToClipboard(){
|
||||
if (route != null){
|
||||
Main.copyToClipboard(route.asString());
|
||||
}
|
||||
}
|
||||
|
||||
private final ChangeListener<? super Number> currentEntryListener = (ov, o, n) -> ViewUtils.doFX(() -> setIndex(n.intValue()));
|
||||
private final InvalidationListener activeEntryListener = ov -> ViewUtils.doFX(this::update);
|
||||
private final ChangeListener<RouteModel> routeListener = (ov, o, n) -> ViewUtils.doFX(() -> setRoute(n));
|
||||
|
||||
@@ -6,6 +6,7 @@ import javafx.beans.property.*;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import ru.trader.core.Order;
|
||||
import ru.trader.model.support.ModelBindings;
|
||||
import ru.trader.view.support.Localization;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -165,6 +166,10 @@ public class OrderModel {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public String asString(){
|
||||
return String.format(Localization.getString("market.order.text.format"), getOffer().getItem().getName(), getStation().getFullName(), getBuyer().getFullName());
|
||||
}
|
||||
|
||||
public StringBinding asString(final boolean buy){
|
||||
if (buy){
|
||||
return Bindings.createStringBinding(() -> this.toString(buy), countProperty(), ModelBindings.offerPrice(buyOfferProperty(), true));
|
||||
|
||||
@@ -8,6 +8,8 @@ import ru.trader.analysis.RouteReserve;
|
||||
import ru.trader.core.Offer;
|
||||
import ru.trader.core.Order;
|
||||
import ru.trader.model.support.BindingsHelper;
|
||||
import ru.trader.view.support.Localization;
|
||||
import ru.trader.view.support.ViewUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -121,6 +123,10 @@ public class RouteModel {
|
||||
return _route.getLands();
|
||||
}
|
||||
|
||||
public double getProfitByTonne(){
|
||||
return _route.getProfit()/_route.getCargo();
|
||||
}
|
||||
|
||||
public double getProfit() {
|
||||
return profit.get();
|
||||
}
|
||||
@@ -467,4 +473,17 @@ public class RouteModel {
|
||||
return new RouteModel(route, station.getMarket());
|
||||
}
|
||||
|
||||
public String asString(){
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (RouteEntryModel entry : entries) {
|
||||
for (OrderModel order : entry.orders()) {
|
||||
if (builder.length()>0) builder.append("\n");
|
||||
builder.append(order.asString());
|
||||
}
|
||||
}
|
||||
builder.append("\n");
|
||||
builder.append(String.format(Localization.getString("routes.text.format"), getProfitByTonne(), ViewUtils.timeToString(getTime())));
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ market.order.profit=Profit
|
||||
market.order.buyer=Buyer
|
||||
market.order.seller=Seller
|
||||
market.order.distance=Distance
|
||||
market.order.text.format=%s from %s to %s
|
||||
|
||||
# Route
|
||||
routes.path=Path
|
||||
@@ -37,6 +38,7 @@ routes.refills=Refills
|
||||
routes.lands=Landings
|
||||
routes.time=Time
|
||||
routes.profitByTime=Cr/Sec
|
||||
routes.text.format=Profit: %.2f, Time: %s
|
||||
|
||||
# Dialog
|
||||
dialog.confirm.save=Changes were not saved, save changes?
|
||||
@@ -47,6 +49,7 @@ dialog.button.cancel=Cancel
|
||||
dialog.button.edit=Edit
|
||||
dialog.button.remove=Remove
|
||||
dialog.button.clear=Clear
|
||||
dialog.button.copy=Copy
|
||||
|
||||
# main.fxml
|
||||
main.title=Trader
|
||||
|
||||
@@ -29,6 +29,7 @@ market.order.profit=\u041F\u0440\u0438\u0431\u044B\u043B\u044C
|
||||
market.order.buyer=\u041F\u043E\u043A\u0443\u043F\u0430\u0442\u0435\u043B\u044C
|
||||
market.order.seller=\u041F\u0440\u043E\u0434\u0430\u0432\u0435\u0446
|
||||
market.order.distance=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u044F
|
||||
market.order.text.format=%s \u0438\u0437 %s \u043D\u0430 %s
|
||||
|
||||
# Route
|
||||
routes.path=\u041F\u0443\u0442\u044C
|
||||
@@ -37,6 +38,7 @@ routes.refills=\u0417\u0430\u043F\u0440\u0430\u0432\u043E\u043A
|
||||
routes.lands=\u041F\u043E\u0441\u0430\u0434\u043E\u043A
|
||||
routes.time=\u0412\u0440\u0435\u043C\u044F
|
||||
routes.profitByTime=\u041A\u0440/\u0421\u0435\u043A
|
||||
routes.text.format=\u041F\u0440\u0438\u0431\u044B\u043B\u044C: %.2f, \u0412\u0440\u0435\u043C\u044F: %s
|
||||
|
||||
# Dialog
|
||||
dialog.confirm.save=\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B, \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C?
|
||||
@@ -47,6 +49,7 @@ dialog.button.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
|
||||
dialog.button.edit=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C
|
||||
dialog.button.remove=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
|
||||
dialog.button.clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C
|
||||
dialog.button.copy=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C
|
||||
|
||||
|
||||
# main.fxml
|
||||
|
||||
@@ -47,5 +47,12 @@
|
||||
<sortOrder>
|
||||
<fx:reference source="profitByTime"/>
|
||||
</sortOrder>
|
||||
<contextMenu>
|
||||
<ContextMenu>
|
||||
<items>
|
||||
<MenuItem text="%dialog.button.copy" onAction="#copyToClipboard" />
|
||||
</items>
|
||||
</ContextMenu>
|
||||
</contextMenu>
|
||||
</TableView>
|
||||
</HBox>
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
<Button onAction="#addEntry"><graphic><Glyph text="FontAwesome|PLUS"/></graphic></Button>
|
||||
<Button onAction="#setActive"><graphic><Glyph text="FontAwesome|MAP_MARKER"/></graphic></Button>
|
||||
<Button onAction="#clear"><graphic><Glyph text="FontAwesome|TRASH"/></graphic></Button>
|
||||
<Button onAction="#copyToClipboard"><graphic><Glyph text="FontAwesome|COPY"/></graphic></Button>
|
||||
</HBox>
|
||||
</VBox>
|
||||
</VBox>
|
||||
|
||||
Reference in New Issue
Block a user