📄 tableviewswtimpl.java
字号:
}
int numSWTColumns = table.getColumnCount();
int iNewLength = numSWTColumns - (bSkipFirstColumn ? 1 : 0);
columnsOrdered = new TableColumnCore[iNewLength];
System.arraycopy(tmpColumnsOrdered, 0, columnsOrdered, 0, iNewLength);
columnsVisible = new boolean[tableColumns.length];
ColumnSelectionListener columnSelectionListener = new ColumnSelectionListener();
int swtColumnPos = bSkipFirstColumn ? 1 : 0;
for (int i = 0; i < tableColumns.length; i++)
{
int position = tableColumns[i].getPosition();
if (position == -1 || !tableColumns[i].isVisible())
continue;
columnsVisible[i] = true;
String sName = tableColumns[i].getName();
if (swtColumnPos >= numSWTColumns)
{
Debug.out((new StringBuilder()).append("Incorrect table column setup, skipping column '").append(sName).append("', position=").append(swtColumnPos).append(";numCols=").append(numSWTColumns).toString());
continue;
}
TableColumn column = table.getColumn(swtColumnPos);
try
{
column.setMoveable(true);
}
catch (NoSuchMethodError e) { }
column.setAlignment(TableColumnSWTUtils.convertColumnAlignmentToSWT(tableColumns[i].getAlignment()));
Messages.setLanguageText(column, tableColumns[i].getTitleLanguageKey());
column.setWidth(tableColumns[i].getWidth());
if (tableColumns[i].getMinWidth() == tableColumns[i].getMaxWidth() && tableColumns[i].getMinWidth() > 0)
column.setResizable(false);
column.setData("TableColumnCore", tableColumns[i]);
column.setData("configName", (new StringBuilder()).append("Table.").append(sTableID).append(".").append(sName).toString());
column.setData("Name", sName);
column.addControlListener(resizeListener);
column.addListener(13, columnSelectionListener);
swtColumnPos++;
}
TableColumnManager tcManager = TableColumnManager.getInstance();
String sSortColumn = tcManager.getDefaultSortColumnName(sTableID);
if (sSortColumn == null || sSortColumn.length() == 0)
sSortColumn = sDefaultSortOn;
TableColumnCore tc = tcManager.getTableColumnCore(sTableID, sSortColumn);
if (tc == null && tableColumns.length > 0)
tc = tableColumns[0];
sortColumn = tc;
fixAlignment(tc, true);
changeColumnIndicator();
if (SWT.getVersion() >= 3100)
{
Listener columnResizeListener = COLUMN_CLICK_DELAY ? new Listener() {
final TableViewSWTImpl this$0;
public void handleEvent(Event event)
{
lLastColumnResizeOn = System.currentTimeMillis();
}
{
this$0 = TableViewSWTImpl.this;
super();
}
} : null;
TableColumn columns[] = table.getColumns();
for (int i = 0; i < columns.length; i++)
{
TableColumn column = columns[i];
column.addListener(10, columnMoveListener);
if (COLUMN_CLICK_DELAY)
column.addListener(11, columnResizeListener);
}
}
columnVisibilitiesChanged = true;
}
public void fixAlignment(TableColumnCore tc, boolean sorted)
{
if (Constants.isOSX)
{
if (table.isDisposed() || tc == null)
return;
int columnOrder[] = table.getColumnOrder();
int i = tc.getPosition() - (bSkipFirstColumn ? 1 : 0);
if (i < 0 || i >= columnOrder.length)
return;
TableColumn swtColumn = table.getColumn(columnOrder[i]);
if (swtColumn != null)
if (swtColumn.getAlignment() == 0x20000 && sorted)
swtColumn.setText((new StringBuilder()).append(" ").append(swtColumn.getText()).append(" ").toString());
else
swtColumn.setText(swtColumn.getText().trim());
}
}
public Menu createMenu()
{
if (!isMenuEnabled())
{
return null;
} else
{
Menu menu = new Menu(tableComposite.getShell(), 8);
MenuBuildUtils.addMaintenanceListenerForMenu(menu, new org.gudy.azureus2.ui.swt.MenuBuildUtils.MenuBuilder() {
final TableViewSWTImpl this$0;
public void buildMenu(Menu menu)
{
fillMenu(menu);
addThisColumnSubMenu(getColumnNo(iMouseX));
}
{
this$0 = TableViewSWTImpl.this;
super();
}
});
return menu;
}
}
public void fillMenu(Menu menu)
{
Object listeners[] = listenersMenuFill.toArray();
for (int i = 0; i < listeners.length; i++)
{
TableViewSWTMenuFillListener l = (TableViewSWTMenuFillListener)listeners[i];
l.fillMenu(menu);
}
MenuItem itemChangeTable = new MenuItem(menu, 8);
Messages.setLanguageText(itemChangeTable, "MyTorrentsView.menu.editTableColumns");
Utils.setMenuItemImage(itemChangeTable, "columns");
itemChangeTable.addListener(13, new Listener() {
final TableViewSWTImpl this$0;
public void handleEvent(Event e)
{
showColumnEditor();
}
{
this$0 = TableViewSWTImpl.this;
super();
}
});
menuThisColumn = new Menu(tableComposite.getShell(), 4);
MenuItem itemThisColumn = new MenuItem(menu, 64);
itemThisColumn.setMenu(menuThisColumn);
boolean enable_items = table != null && table.getSelection().length > 0;
org.gudy.azureus2.plugins.ui.tables.TableContextMenuItem items[] = TableContextMenuManager.getInstance().getAllAsArray(sTableID);
org.gudy.azureus2.plugins.ui.menus.MenuItem menu_items[] = null;
if ("MySeeders".equals(sTableID) || "MyTorrents".equals(sTableID))
menu_items = MenuItemManager.getInstance().getAllAsArray("download_context");
else
menu_items = MenuItemManager.getInstance().getAllAsArray((String)null);
if (items.length > 0 || menu_items.length > 0)
{
new MenuItem(menu, 2);
if (menu_items != null)
MenuBuildUtils.addPluginMenuItems(getComposite(), menu_items, menu, true, true, new org.gudy.azureus2.ui.swt.MenuBuildUtils.MenuItemPluginMenuControllerImpl(getSelectedDataSources(false)));
if (items.length > 0)
MenuBuildUtils.addPluginMenuItems(getComposite(), items, menu, true, enable_items, new org.gudy.azureus2.ui.swt.MenuBuildUtils.PluginMenuController() {
final TableViewSWTImpl this$0;
public Listener makeSelectionListener(org.gudy.azureus2.plugins.ui.menus.MenuItem plugin_menu_item)
{
return new TableSelectedRowsListener(plugin_menu_item) {
final org.gudy.azureus2.plugins.ui.menus.MenuItem val$plugin_menu_item;
final 25 this$1;
public boolean run(TableRowCore rows[])
{
if (rows.length != 0)
((TableContextMenuItemImpl)plugin_menu_item).invokeListenersMulti(rows);
return true;
}
{
this$1 = 25.this;
plugin_menu_item = menuitem;
super(x0);
}
};
}
public void notifyFillListeners(org.gudy.azureus2.plugins.ui.menus.MenuItem menu_item)
{
((TableContextMenuItemImpl)menu_item).invokeMenuWillBeShownListeners(getSelectedRows());
}
{
this$0 = TableViewSWTImpl.this;
super();
}
});
}
}
void showColumnEditor()
{
TableRowCore focusedRow = getFocusedRow();
if (focusedRow == null)
focusedRow = getRow(0);
(new TableColumnSetupWindow(classDataSourceType, sTableID, focusedRow, TableStructureEventDispatcher.getInstance(sTableID))).open();
}
private void addThisColumnSubMenu(int iColumn)
{
if (menuThisColumn == null || menuThisColumn.isDisposed())
return;
MenuItem oldItems[] = menuThisColumn.getItems();
for (int i = 0; i < oldItems.length; i++)
oldItems[i].dispose();
MenuItem item = menuThisColumn.getParentItem();
if (iColumn == -1)
{
item.setEnabled(false);
item.setText(MessageText.getString("GenericText.column"));
return;
}
item.setEnabled(true);
final TableColumn tcColumn = table.getColumn(iColumn);
item.setText((new StringBuilder()).append("'").append(tcColumn.getText()).append("' ").append(MessageText.getString("GenericText.column")).toString());
if (menu != null)
{
menu.setData("ColumnNo", new Long(iColumn));
menu.setData("column", tcColumn);
}
String sColumnName = (String)tcColumn.getData("Name");
if (sColumnName != null)
{
Object listeners[] = listenersMenuFill.toArray();
for (int i = 0; i < listeners.length; i++)
{
TableViewSWTMenuFillListener l = (TableViewSWTMenuFillListener)listeners[i];
l.addThisColumnSubMenu(sColumnName, menuThisColumn);
}
}
if (menuThisColumn.getItemCount() > 0)
new MenuItem(menuThisColumn, 2);
item = new MenuItem(menuThisColumn, 8);
Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.sort");
item.addListener(13, new Listener() {
final TableViewSWTImpl this$0;
public void handleEvent(Event e)
{
int iColumn = ((Long)menu.getData("ColumnNo")).intValue();
table.getColumn(iColumn).notifyListeners(13, new Event());
}
{
this$0 = TableViewSWTImpl.this;
super();
}
});
final MenuItem at_item = new MenuItem(menuThisColumn, 32);
Messages.setLanguageText(at_item, "MyTorrentsView.menu.thisColumn.autoTooltip");
at_item.addListener(13, new Listener() {
final MenuItem val$at_item;
final TableViewSWTImpl this$0;
public void handleEvent(Event e)
{
TableColumn tc = (TableColumn)menu.getData("column");
TableColumnCore tcc = (TableColumnCore)tc.getData("TableColumnCore");
tcc.setAutoTooltip(at_item.getSelection());
tcc.invalidateCells();
}
{
this$0 = TableViewSWTImpl.this;
at_item = menuitem;
super();
}
});
at_item.setSelection(((TableColumnCore)tcColumn.getData("TableColumnCore")).doesAutoTooltip());
item = new MenuItem(menuThisColumn, 8);
Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.remove");
item.addListener(13, new Listener() {
final TableColumn val$tcColumn;
final TableViewSWTImpl this$0;
public void handleEvent(Event e)
{
TableColumn tc = (TableColumn)menu.getData("column");
if (tc == null)
return;
String columnName = (String)tcColumn.getData("Name");
if (columnName == null)
return;
for (int i = 0; i < tableColumns.length; i++)
if (tableColumns[i].getName().equals(columnName))
tableColumns[i].setVisible(false);
tableStructureChanged(false);
}
{
this$0 = TableViewSWTImpl.this;
tcColumn = tablecolumn;
super();
}
});
item = new MenuItem(menuThisColumn, 8);
Messages.setLanguageText(item, "MyTorrentsView.menu.thisColumn.toClipboard");
item.addListener(13, new Listener() {
final TableColumn val$tcColumn;
final TableViewSWTImpl this$0;
public void handleEvent(Event e)
{
String sToClipboard = "";
TableColumn tc = (TableColumn)menu.getData("column");
if (tc == null)
return;
String columnName = (String)tcColumn.getData("Name");
if (columnName == null)
return;
TableItem tis[] = table.getSelection();
for (int i = 0; i < tis.length; i++)
{
if (i != 0)
sToClipboard = (new StringBuilder()).append(sToClipboard).append("\n").toString();
TableRowCore row = (TableRowCore)tis[i].getData("TableRow");
TableCellCore cell = row.getTableCellCore(columnName);
if (cell != null)
sToClipboard = (new StringBuilder()).append(sToClipboard).append(cell.getText()).toString();
}
if (sToClipboard.length() == 0)
{
return;
} else
{
(new Clipboard(mainComposite.getDisplay())).setContents(new Object[] {
sToClipboard
}, new Transfer[] {
TextTransfer.getInstance()
});
return;
}
}
{
this$0 = TableViewSWTImpl.this;
tcColumn = tablecolumn;
super();
}
});
TableColumnCore tc = (TableColumnCore)tcColumn.getData("TableColumnCore");
org.gudy.azureus2.plugins.ui.tables.TableContextMenuItem items[] = tc.getContextMenuItems();
if (items.length > 0)
{
new MenuItem(menuThisColumn, 2);
MenuBuildUtils.addPluginMenuItems(getComposite(), items, menuThisColumn, true, true, new org.gudy.azureus2.ui.swt.MenuBuildUtils.MenuItemPluginMenuControllerImpl(getSelectedDataSources(true)));
}
}
public Composite getComposite()
{
return mainComposite;
}
public Composite getTableComposite()
{
return tableComposite;
}
public IView getActiveSubView()
{
if (!bEnableTabViews || tabFolder == null || tabFolder.isDisposed() || tabFolder.getMinimized())
return null;
CTabItem item = tabFolder.getSelection();
if (item != null)
return (IView)item.getData("IView");
else
return null;
}
public void refreshSelectedSubView()
{
IView view = getActiveSubView();
if (view != null)
view.refresh();
}
public void refreshTable(final boolean bForceSort)
{
Utils.execSWTThread(new AERunnable() {
final boolean val$bForceSort;
final TableViewSWTImpl this$0;
public void runSupport()
{
_refreshTable(bForceSort);
if (bEnableTabViews && tabFolder != null && !tabFolder.isDisposed() && !tabFolder.getMinimized())
refreshSelectedSubView();
}
{
this$0 = TableViewSWTImpl.this;
bForceSort = flag;
super();
}
});
triggerTableRefreshListeners();
}
private void _refreshTable(boolean bForceSort)
{
if (table == null)
return;
isVisible();
if (getComposite() == null || getComposite().isDisposed())
return;
if (checkColumnWidthsEvery != 0 && loopFactor % checkColumnWidthsEvery == 0)
{
TableColumn tableColumnsSWT[] = table.getColumns();
for (int i = 0; i < tableColumnsSWT.length; i++)
{
TableColumnCore tc = (TableColumnCore)tableColumnsSWT[i].getData("TableColu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -