📄 watchlisttableviewer.java
字号:
this.showTotals = showTotals; getView().getPreferenceStore().setValue(WatchlistView.PREFS_SHOW_TOTALS, showTotals); } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.trading.internal.AbstractLayout#getSelection() */ public WatchlistItem[] getSelection() { TableItem selection[] = table.getSelection(); WatchlistItem[] items = new WatchlistItem[selection.length]; for (int i = 0; i < selection.length; i++) { WatchlistTableItem item = (WatchlistTableItem)selection[i]; items[i] = item.getWatchlistItem(); } return items; } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.trading.internal.AbstractLayout#tickAlert(net.sourceforge.eclipsetrader.core.db.WatchlistItem, org.eclipse.swt.graphics.RGB, org.eclipse.swt.graphics.RGB) */ public void tickAlert(WatchlistItem watchlistItem, RGB foreground, RGB background) { TableItem[] items = table.getItems(); for (int i = 0; i < items.length; i++) { WatchlistTableItem tableItem = (WatchlistTableItem)items[i]; if (tableItem.getWatchlistItem().equals(watchlistItem)) { Color fg = foreground != null ? new Color(null, foreground) : null; Color bg = background != null ? new Color(null, background) : new Color(null, alertHilightBackground.getRGB()); tableItem.ticker.tick(bg, fg); if (bg != null) bg.dispose(); if (fg != null) fg.dispose(); break; } } } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.trading.internal.AbstractLayout#getItemIndex(org.eclipse.swt.graphics.Point) */ public int getItemIndex(Point point) { TableItem tableItem = table.getItem(table.toControl(point)); return tableItem != null ? table.indexOf(tableItem) : -1; } protected void setTheme(ITheme theme) { positiveForeground = theme.getColorRegistry().get(POSITIVE_FOREGROUND); negativeForeground = theme.getColorRegistry().get(NEGATIVE_FOREGROUND); evenForeground = theme.getColorRegistry().get(EVEN_ROWS_FOREGROUND); evenBackground = theme.getColorRegistry().get(EVEN_ROWS_BACKGROUND); oddForeground = theme.getColorRegistry().get(ODD_ROWS_FOREGROUND); oddBackground = theme.getColorRegistry().get(ODD_ROWS_BACKGROUND); totalsForeground = theme.getColorRegistry().get(TOTALS_ROWS_FOREGROUND); totalsBackground = theme.getColorRegistry().get(TOTALS_ROWS_BACKGROUND); tickBackground = theme.getColorRegistry().get(TICK_BACKGROUND); alertHilightBackground = theme.getColorRegistry().get(ALERT_BACKGROUND); theme.addPropertyChangeListener(themeChangeListener); } public Table getTable() { return table; } protected WatchlistColumn getColumn(MouseEvent e) { Point p = new Point(e.x, e.y); TableItem item = table.getItem(p); if (item != null) { for (int i = 0; i < table.getColumnCount(); i++) { Rectangle rect = item.getBounds(i); if (rect.contains(p)) { TableColumn column = table.getColumn(i); if (column.getData() instanceof WatchlistColumn) return (WatchlistColumn) column.getData(); } } } return null; } private class WatchlistTableItem extends TableItem implements DisposeListener, Observer, IEditableItem { private WatchlistItem watchlistItem; private CellTicker ticker; WatchlistTableItem(Table parent, int style, int index, WatchlistItem watchlistItem) { super(parent, style, index); addDisposeListener(this); ticker = new CellTicker(this, CellTicker.BACKGROUND|CellTicker.FOREGROUND); setWatchlistItem(watchlistItem); } WatchlistTableItem(Table parent, int style, WatchlistItem watchlistItem) { super(parent, style); addDisposeListener(this); ticker = new CellTicker(this, CellTicker.BACKGROUND|CellTicker.FOREGROUND); setWatchlistItem(watchlistItem); } /* (non-Javadoc) * @see org.eclipse.swt.widgets.TableItem#checkSubclass() */ protected void checkSubclass() { } void setWatchlistItem(WatchlistItem watchlistItem) { if (this.watchlistItem != null) this.watchlistItem.deleteObserver(this); this.watchlistItem = watchlistItem; update(false); this.watchlistItem.addObserver(this); } WatchlistItem getWatchlistItem() { return watchlistItem; } void update(boolean tick) { TableColumn[] columns = getParent().getColumns(); for (int i = 1; i < columns.length; i++) { ILabelProvider provider = (ILabelProvider)columns[i].getData("labelProvider"); if (provider == null) continue; Image image = provider.getImage(watchlistItem); if (!tick || image != getImage(i)) setImage(i, image); String value = provider.getText(watchlistItem); if (!tick || !value.equals(getText(i))) { setText(i, value); if (value.startsWith("+")) setForeground(i, positiveForeground); else if (value.startsWith("-")) setForeground(i, negativeForeground); else setForeground(i, null); if (tick) { if (provider instanceof IEditableLabelProvider) { if (!((IEditableLabelProvider)provider).isEditable(watchlistItem)) ticker.tick(i); } else ticker.tick(i); } } } } /* (non-Javadoc) * @see java.util.Observer#update(java.util.Observable, java.lang.Object) */ public void update(Observable o, Object arg) { getDisplay().asyncExec(new Runnable() { public void run() { if (!isDisposed()) update(true); } }); } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#canEdit(int) */ public boolean canEdit(int index) { ILabelProvider provider = (ILabelProvider)getParent().getColumn(index).getData("labelProvider"); if (provider != null && (provider instanceof IEditableLabelProvider)) return ((IEditableLabelProvider)provider).isEditable(watchlistItem); return false; } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#isEditable() */ public boolean isEditable() { return true; } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#itemEdited(int, java.lang.String) */ public void itemEdited(int index, String text) { ILabelProvider provider = (ILabelProvider)getParent().getColumn(index).getData("labelProvider"); if (provider != null && (provider instanceof IEditableLabelProvider)) ((IEditableLabelProvider)provider).setEditableText(watchlistItem, text); } /* (non-Javadoc) * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) */ public void widgetDisposed(DisposeEvent e) { if (watchlistItem != null) watchlistItem.deleteObserver(this); ticker.dispose(); } } private class WatchlistTotalsTableItem extends TableItem implements DisposeListener, Observer, IEditableItem { private WatchlistItem watchlistItem; WatchlistTotalsTableItem(Table parent, int style, int index, WatchlistItem watchlistItem) { super(parent, style, index); addDisposeListener(this); setWatchlistItem(watchlistItem); } WatchlistTotalsTableItem(Table parent, int style, WatchlistItem watchlistItem) { super(parent, style); addDisposeListener(this); setWatchlistItem(watchlistItem); } /* (non-Javadoc) * @see org.eclipse.swt.widgets.TableItem#checkSubclass() */ protected void checkSubclass() { } void setWatchlistItem(WatchlistItem watchlistItem) { if (this.watchlistItem != null) this.watchlistItem.deleteObserver(this); this.watchlistItem = watchlistItem; update(); this.watchlistItem.addObserver(this); } WatchlistItem getWatchlistItem() { return watchlistItem; } void update() { TableColumn[] columns = getParent().getColumns(); for (int i = 1; i < columns.length; i++) { ILabelProvider provider = (ILabelProvider)columns[i].getData("labelProvider"); String value = provider.getText(watchlistItem.getParent()); if (!value.equals(getText(i))) setText(i, value); Image image = provider.getImage(watchlistItem.getParent()); if (image != getImage(i)) setImage(i, image); } } /* (non-Javadoc) * @see java.util.Observer#update(java.util.Observable, java.lang.Object) */ public void update(Observable o, Object arg) { getDisplay().asyncExec(new Runnable() { public void run() { if (!isDisposed()) update(); } }); } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#canEdit(int) */ public boolean canEdit(int index) { return false; } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#isEditable() */ public boolean isEditable() { return true; } /* (non-Javadoc) * @see net.sourceforge.eclipsetrader.core.ui.widgets.IEditableItem#itemEdited(int, java.lang.String) */ public void itemEdited(int index, String text) { } /* (non-Javadoc) * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) */ public void widgetDisposed(DisposeEvent e) { if (watchlistItem != null) watchlistItem.deleteObserver(this); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -