fix nullpointer iwth root.scene(), reformat

This commit is contained in:
Manfred Karrer 2016-01-15 01:42:05 +01:00
parent e2a9a3701c
commit 489f834e1c

View file

@ -26,7 +26,9 @@ import io.bitsquare.trade.Trade;
import javafx.beans.property.ReadOnlyBooleanProperty; import javafx.beans.property.ReadOnlyBooleanProperty;
import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
@ -47,20 +49,28 @@ import java.util.Date;
public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTradesViewModel> { public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTradesViewModel> {
private final TradeDetailsPopup tradeDetailsPopup; private final TradeDetailsPopup tradeDetailsPopup;
@FXML TableView<PendingTradesListItem> table; @FXML
@FXML TableColumn<PendingTradesListItem, Fiat> priceColumn; TableView<PendingTradesListItem> table;
@FXML TableColumn<PendingTradesListItem, Fiat> tradeVolumeColumn; @FXML
@FXML TableColumn<PendingTradesListItem, PendingTradesListItem> directionColumn; TableColumn<PendingTradesListItem, Fiat> priceColumn;
@FXML
TableColumn<PendingTradesListItem, Fiat> tradeVolumeColumn;
@FXML
TableColumn<PendingTradesListItem, PendingTradesListItem> directionColumn;
@FXML @FXML
TableColumn<PendingTradesListItem, PendingTradesListItem> idColumn; TableColumn<PendingTradesListItem, PendingTradesListItem> idColumn;
@FXML TableColumn<PendingTradesListItem, Date> dateColumn; @FXML
@FXML TableColumn<PendingTradesListItem, Coin> tradeAmountColumn; TableColumn<PendingTradesListItem, Date> dateColumn;
@FXML
TableColumn<PendingTradesListItem, Coin> tradeAmountColumn;
private ChangeListener<PendingTradesListItem> selectedItemChangeListener; private ChangeListener<PendingTradesListItem> selectedItemChangeListener;
private TradeSubView currentSubView; private TradeSubView currentSubView;
private ChangeListener<Boolean> appFocusChangeListener; private ChangeListener<Boolean> appFocusChangeListener;
private ReadOnlyBooleanProperty appFocusProperty; private ReadOnlyBooleanProperty appFocusProperty;
private ChangeListener<Trade> currentTradeChangeListener; private ChangeListener<Trade> currentTradeChangeListener;
private EventHandler<KeyEvent> keyEventEventHandler;
private Scene scene;
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -108,16 +118,17 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
setNewSubView(newValue); setNewSubView(newValue);
}; };
// we add hidden emergency shortcut to open support ticket // we use a hidden emergency shortcut to open support ticket
root.getScene().addEventHandler(KeyEvent.KEY_RELEASED, event -> { keyEventEventHandler = event -> {
if (new KeyCodeCombination(KeyCode.O, KeyCombination.SHORTCUT_DOWN).match(event)) if (new KeyCodeCombination(KeyCode.O, KeyCombination.SHORTCUT_DOWN).match(event))
new OpenEmergencyTicketPopup().onOpenTicket(() -> model.dataModel.onOpenSupportTicket()).show(); new OpenEmergencyTicketPopup().onOpenTicket(() -> model.dataModel.onOpenSupportTicket()).show();
}); };
} }
@Override @Override
protected void activate() { protected void activate() {
appFocusProperty = root.getScene().getWindow().focusedProperty(); scene = root.getScene();
appFocusProperty = scene.getWindow().focusedProperty();
appFocusProperty.addListener(appFocusChangeListener); appFocusProperty.addListener(appFocusChangeListener);
model.currentTrade().addListener(currentTradeChangeListener); model.currentTrade().addListener(currentTradeChangeListener);
setNewSubView(model.currentTrade().get()); setNewSubView(model.currentTrade().get());
@ -133,6 +144,8 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
UserThread.execute(() -> table.getFocusModel().focus(index)); UserThread.execute(() -> table.getFocusModel().focus(index));
}); });
} }
scene.addEventHandler(KeyEvent.KEY_RELEASED, keyEventEventHandler);
} }
@Override @Override
@ -148,6 +161,9 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
if (currentSubView != null) if (currentSubView != null)
currentSubView.deactivate(); currentSubView.deactivate();
if (scene != null)
scene.removeEventHandler(KeyEvent.KEY_RELEASED, keyEventEventHandler);
} }
@ -167,8 +183,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
currentSubView = new BuyerSubView(model); currentSubView = new BuyerSubView(model);
else else
currentSubView = new SellerSubView(model); currentSubView = new SellerSubView(model);
} } else {
else {
if (model.isBuyOffer()) if (model.isBuyOffer())
currentSubView = new SellerSubView(model); currentSubView = new SellerSubView(model);
else else
@ -207,8 +222,7 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
Tooltip.install(hyperlink, new Tooltip(model.formatTradeId(item.getId()))); Tooltip.install(hyperlink, new Tooltip(model.formatTradeId(item.getId())));
hyperlink.setOnAction(event -> tradeDetailsPopup.show(item.getTrade())); hyperlink.setOnAction(event -> tradeDetailsPopup.show(item.getTrade()));
setGraphic(hyperlink); setGraphic(hyperlink);
} } else {
else {
setGraphic(null); setGraphic(null);
setId(null); setId(null);
} }