📄 watchlisttableviewer.java
字号:
watchlistSelection = new WatchlistItem[selection.length]; if (SecurityTransfer.getInstance().isSupportedType(event.dataType)) { Security[] securities = new Security[selection.length]; for (int i = 0; i < selection.length; i++) { WatchlistTableItem item = (WatchlistTableItem)selection[i]; securities[i] = item.getWatchlistItem().getSecurity(); watchlistSelection[i] = item.getWatchlistItem(); } event.data = securities; } else if (WatchlistItemTransfer.getInstance().isSupportedType(event.dataType)) { for (int i = 0; i < selection.length; i++) { WatchlistTableItem item = (WatchlistTableItem)selection[i]; watchlistSelection[i] = item.getWatchlistItem(); } event.data = watchlistSelection; } else if (TextTransfer.getInstance().isSupportedType(event.dataType)) { StringBuffer data = new StringBuffer(); for (int i = 0; i < selection.length; i++) { WatchlistTableItem item = (WatchlistTableItem)selection[i]; for (int c = 1; c < table.getColumnCount(); c++) { if (c > 1) data.append(";"); data.append(item.getText(c)); } data.append("\r\n"); watchlistSelection[i] = item.getWatchlistItem(); } event.data = data.toString(); } } public void dragFinished(DragSourceEvent event) { if (event.doit && event.detail == DND.DROP_MOVE && watchlistSelection != null) { for (int i = 0; i < watchlistSelection.length; i++) getView().getWatchlist().getItems().remove(watchlistSelection[i]); } watchlistSelection = null; } }); MenuManager menuMgr = new MenuManager("#popupMenu", "popupMenu"); //$NON-NLS-1$ //$NON-NLS-2$ menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager menuManager) { menuManager.add(new Separator("top")); //$NON-NLS-1$ menuManager.add(new Separator("search")); //$NON-NLS-1$ getView().fillMenuBars(menuManager); menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); menuManager.add(new Separator("bottom")); //$NON-NLS-1$ menuManager.add(propertiesAction); } }); table.setMenu(menuMgr.createContextMenu(table)); getView().getSite().registerContextMenu(menuMgr, getView().getSite().getSelectionProvider()); return content; } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#setFocus() */ void setFocus() { table.getParent().setFocus(); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#dispose() */ public void dispose() { IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); themeManager.removePropertyChangeListener(themeChangeListener); ITheme theme = themeManager.getCurrentTheme(); theme.removePropertyChangeListener(themeChangeListener); IActionBars actionBars = getViewSite().getActionBars(); actionBars.setGlobalActionHandler("properties", null); IMenuManager menuManager = getViewSite().getActionBars().getMenuManager(); menuManager.remove(toggleShowTotals.getId()); menuManager.remove(autoResizeAction.getId()); if (content != null) content.dispose(); } public void updateView() { int index; TableColumn tableColumn; String[] items = getView().getPreferenceStore().getString(WatchlistView.PREFS_SORTING).split(";"); if (items.length != 2) items = new String[] { "", "0" }; sortDirection = new Integer(items[1]).intValue(); index = 1; for (Iterator iter = getView().getWatchlist().getColumns().iterator(); iter.hasNext(); ) { WatchlistColumn column = (WatchlistColumn)iter.next(); String name = ""; int style = SWT.LEFT; Image image = null; ILabelProvider provider = ColumnRegistry.createLabelProvider(column.getId()); if (provider != null) { LogFactory.getLog(getClass()).debug("Adding column [" + column.getId() + "]"); name = ColumnRegistry.getName(column.getId()); style = ColumnRegistry.getOrientation(column.getId()); if (provider instanceof ITableLabelProvider) { name = ((ITableLabelProvider)provider).getColumnText(getView().getWatchlist(), index); image = ((ITableLabelProvider)provider).getColumnImage(getView().getWatchlist(), index); } } else LogFactory.getLog(getClass()).warn("Missing column [" + column.getId() + "]"); if (index < table.getColumnCount()) { tableColumn = table.getColumn(index); tableColumn.setAlignment(style); if (tableColumn.getData("labelProvider") != null) ((ILabelProvider)tableColumn.getData("labelProvider")).dispose(); } else { tableColumn = new EditableTableColumn(table, style); tableColumn.addControlListener(columnControlListener); tableColumn.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { if (e.widget.getData("labelProvider") != null) ((ILabelProvider)e.widget.getData("labelProvider")).dispose(); } }); tableColumn.addSelectionListener(columnSelectionListener); } tableColumn.setText(name); tableColumn.setImage(image); tableColumn.setData(column); tableColumn.setData("labelProvider", provider); if (column.getId().equals(items[0])) sortColumn = index; index++; } while(index < table.getColumnCount()) table.getColumn(index).dispose(); list = new ArrayList(getView().getWatchlist().getItems()); if (sortColumn >= 1 && sortColumn < table.getColumnCount()) { table.setSortColumn(table.getColumn(sortColumn)); table.setSortDirection(sortDirection == 0 ? SWT.UP : SWT.DOWN); Collections.sort(list, comparator); } else { table.setSortColumn(null); sortColumn = -1; sortDirection = 0; } updateTableContents(); PreferenceStore preferences = getView().getPreferenceStore(); for (int i = 1; i < table.getColumnCount(); i++) { WatchlistColumn column = (WatchlistColumn)table.getColumn(i).getData(); preferences.setDefault(column.getId() + ".width", -1); int size = preferences.getInt(column.getId() + ".width"); if (size != -1) table.getColumn(i).setWidth(size); else table.getColumn(i).pack(); } if ("gtk".equals(SWT.getPlatform())) table.getColumn(table.getColumnCount() - 1).pack(); } public void updateTableContents() { WatchlistTableItem tableItem; int index = 0; for (Iterator iter = list.iterator(); iter.hasNext(); ) { WatchlistItem watchlistItem = (WatchlistItem)iter.next(); if (index < table.getItemCount()) { if (table.getItem(index) instanceof WatchlistTableItem) { tableItem = (WatchlistTableItem)table.getItem(index); tableItem.setWatchlistItem(watchlistItem); } else tableItem = new WatchlistTableItem(table, SWT.NONE, index, watchlistItem); } else tableItem = new WatchlistTableItem(table, SWT.NONE, index, watchlistItem); tableItem.setBackground(((index & 1) == 1) ? oddBackground : evenBackground); tableItem.setForeground(((index & 1) == 1) ? oddForeground : evenForeground); tableItem.ticker.setBackground(tickBackground); index++; } if (showTotals) { WatchlistTotalsTableItem item = null; if (index < table.getItemCount()) { if (table.getItem(index) instanceof WatchlistTotalsTableItem) { item = (WatchlistTotalsTableItem) table.getItem(index); item.setWatchlistItem(getView().getWatchlist().getTotals()); } } if (item == null) item = new WatchlistTotalsTableItem(table, SWT.NONE, getView().getWatchlist().getTotals()); item.setBackground(totalsBackground); item.setForeground(totalsForeground); index++; } table.setItemCount(index); } public void update(Observable o, Object arg) { table.getDisplay().asyncExec(new Runnable() { public void run() { if (!table.isDisposed()) updateView(); } }); } private void updateSelection() { boolean enable = false; if (table.getSelectionCount() != 0 && table.getSelection()[0] instanceof WatchlistTableItem) { WatchlistTableItem tableItem = (WatchlistTableItem)table.getSelection()[0]; if (selectedColumn != null) getView().getSite().getSelectionProvider().setSelection(new WatchlistColumnSelection(tableItem.getWatchlistItem(), selectedColumn)); else getView().getSite().getSelectionProvider().setSelection(new WatchlistItemSelection(tableItem.getWatchlistItem())); enable = true; } else getView().getSite().getSelectionProvider().setSelection(new NullSelection()); IActionBars actionBars = getViewSite().getActionBars(); actionBars.getGlobalActionHandler("cut").setEnabled(enable); actionBars.getGlobalActionHandler("copy").setEnabled(enable); actionBars.getGlobalActionHandler("delete").setEnabled(enable); actionBars.getGlobalActionHandler("properties").setEnabled(enable); } public void itemAdded(Object o) { if (o instanceof WatchlistItem) { int index = getView().getWatchlist().getItems().indexOf(o); list.add(index >= 0 ? index : list.size(), o); if (sortColumn >= 0) Collections.sort(list, comparator); updateView(); }/* { WatchlistItem watchlistItem = (WatchlistItem)o; int index = table.getItemCount(); if (showTotals) index--; WatchlistTableItem tableItem = new WatchlistTableItem(table, SWT.NONE, index, watchlistItem); tableItem.setBackground(((index & 1) == 1) ? oddBackground : evenBackground); }*/ } public void itemRemoved(Object o) { TableItem[] items = table.getItems(); for (int i = 0; i < items.length; i++) { if (!(items[i] instanceof WatchlistTableItem)) continue; WatchlistTableItem tableItem = (WatchlistTableItem)items[i]; if (tableItem.getWatchlistItem().equals(o)) { tableItem.dispose(); for (; i < table.getItemCount() - 1; i++) table.getItem(i).setBackground(((i & 1) == 1) ? oddBackground : evenBackground); break; } } list.remove(o); if (table.getSelectionCount() != 0) { WatchlistTableItem tableItem = (WatchlistTableItem)table.getSelection()[0]; getView().getSite().getSelectionProvider().setSelection(new WatchlistItemSelection(tableItem.getWatchlistItem())); } else getView().getSite().getSelectionProvider().setSelection(new NullSelection()); } public boolean isShowTotals() { return showTotals; } public void setShowTotals(boolean showTotals) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -