diff --git a/photon/src/main/java/org/marketcetera/ui/marketdata/view/MarketDataListView.java b/photon/src/main/java/org/marketcetera/ui/marketdata/view/MarketDataListView.java index a197361941..cd6dc524be 100644 --- a/photon/src/main/java/org/marketcetera/ui/marketdata/view/MarketDataListView.java +++ b/photon/src/main/java/org/marketcetera/ui/marketdata/view/MarketDataListView.java @@ -6,7 +6,6 @@ import java.util.UUID; import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; import org.apache.commons.lang3.StringUtils; import org.marketcetera.core.BigDecimalUtil; @@ -129,6 +128,8 @@ public void start() rootLayout = new VBox(5); initializeAddSymbol(); initializeTable(); + marketDataTable.prefWidthProperty().bind(getParentWindow().widthProperty()); + rootLayout.prefHeightProperty().bind(getParentWindow().heightProperty()); rootLayout.getChildren().addAll(addSymbolLayout, marketDataTable); rootLayout.addEventHandler(KeyEvent.KEY_PRESSED, event -> { @@ -138,10 +139,6 @@ public void start() } }); } - @PreDestroy - public void stop() - { - } /** * Create a new MarketDataListView instance. * @@ -157,6 +154,9 @@ public MarketDataListView(Region inParent, inEvent, inProperties); } + /** + * Update the view properties for this view. + */ private void updateViewProperties() { synchronized(symbolsByRequestId) { @@ -164,6 +164,9 @@ private void updateViewProperties() String.valueOf(symbolsByRequestId.values())); } } + /** + * Initialize the Add Symbol controls. + */ private void initializeAddSymbol() { addSymbolLayout = new HBox(5); @@ -202,13 +205,20 @@ private void initializeAddSymbol() addSymbolLayout.getChildren().addAll(addSymbolTextField, addSymbolButton); } + /** + * Initialize the market data table. + */ private void initializeTable() { marketDataTable = new TableView<>(); marketDataTable.setPlaceholder(new Label("no market data selected")); initializeColumns(); initializeContextMenu(); + marketDataTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); } + /** + * Initialize the market data table columns. + */ private void initializeColumns() { symbolColumn = new TableColumn<>("Symbol"); @@ -263,6 +273,9 @@ private void initializeColumns() marketDataTable.getColumns().add(closePriceColumn); marketDataTable.getColumns().add(volumeColumn); } + /** + * Initialize the market data item context menu. + */ private void initializeContextMenu() { removeMarketDataMenuItem = new MenuItem("Remove"); @@ -420,12 +433,13 @@ private String renderMarketDataItem(MarketDataItem inMarketDataItem) PlatformServices.cellStyleRightAlign); return table.render(); } - private ContextMenu marketDataContextMenu; - private MenuItem removeMarketDataMenuItem; - private MenuItem copyMarketDataMenuItem; - private MenuItem buyMarketDataMenuItem; - private MenuItem sellMarketDataMenuItem; - private MenuItem viewDetailMarketDataMenuItem; + /** + * Create a market data row listener to update a market data item. + * + * @author Colin DuPlantis + * @version $Id$ + * @since $Release$ + */ private class MarketDataRowListener implements MarketDataListener { @@ -440,35 +454,128 @@ public void receiveMarketData(Event inEvent) /** * Create a new MarketDataRowListener instance. * - * @param inMarketDataItem + * @param inMarketDataItem a MarketDataItem value */ private MarketDataRowListener(MarketDataItem inMarketDataItem) { marketDataItem = inMarketDataItem; } + /** + * market data item to update for this listener + */ private final MarketDataItem marketDataItem; } + /** + * market data item context menu + */ + private ContextMenu marketDataContextMenu; + /** + * remove market data context menu item + */ + private MenuItem removeMarketDataMenuItem; + /** + * copy market data context menu item + */ + private MenuItem copyMarketDataMenuItem; + /** + * buy market data context menu item + */ + private MenuItem buyMarketDataMenuItem; + /** + * sell market data context menu item + */ + private MenuItem sellMarketDataMenuItem; + /** + * view detail market data menu item + */ + private MenuItem viewDetailMarketDataMenuItem; + /** + * holds the requested symbols by the request id + */ private final Map symbolsByRequestId = Maps.newHashMap(); + /** + * market data item table + */ private TableView marketDataTable; + /** + * provides access to market data services + */ private MarketDataClientService marketdataClient; + /** + * provides access to trade services + */ private TradeClientService tradeClient; + /** + * main layout of the view + */ private VBox rootLayout; + /** + * key in the view properties for the symbols list + */ private final String symbolsKey = "SYMBOLS"; + /** + * layout of the add symbol controls + */ private HBox addSymbolLayout; + /** + * add symbol text field + */ private TextField addSymbolTextField; + /** + * add symbol button + */ private Button addSymbolButton; + /** + * symbol table column + */ private TableColumn symbolColumn; + /** + * exec price table column + */ private TableColumn execPriceColumn; + /** + * last qty table column + */ private TableColumn lastQtyColumn; + /** + * bid qty table column + */ private TableColumn bidQtyColumn; + /** + * bid price table column + */ private TableColumn bidPriceColumn; + /** + * ask qty table column + */ private TableColumn askQtyColumn; + /** + * ask price table column + */ private TableColumn askPriceColumn; + /** + * prev close table column + */ private TableColumn prevCloseColumn; + /** + * open price table column + */ private TableColumn openPriceColumn; + /** + * high price table column + */ private TableColumn highPriceColumn; + /** + * low price table column + */ private TableColumn lowPriceColumn; + /** + * close price table column + */ private TableColumn closePriceColumn; + /** + * volume table column + */ private TableColumn volumeColumn; /** * global name of this view