Archived
0

implement copy to clipboard route

This commit is contained in:
iMoHax
2015-11-27 14:53:30 +03:00
parent 4b5931209e
commit 50297f1f1e
8 changed files with 56 additions and 0 deletions

View File

@@ -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());
}
}
}

View File

@@ -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));

View File

@@ -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));

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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>

View File

@@ -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>