⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tableviewswtimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   TableViewSWTImpl.java

package org.gudy.azureus2.ui.swt.views.table.impl;

import com.aelitis.azureus.ui.common.table.TableCellCore;
import com.aelitis.azureus.ui.common.table.TableColumnCore;
import com.aelitis.azureus.ui.common.table.TableGroupRowRunner;
import com.aelitis.azureus.ui.common.table.TableGroupRowVisibilityRunner;
import com.aelitis.azureus.ui.common.table.TableRowCore;
import com.aelitis.azureus.ui.common.table.TableSelectedRowsListener;
import com.aelitis.azureus.ui.common.table.TableStructureEventDispatcher;
import com.aelitis.azureus.ui.common.table.TableStructureModificationListener;
import com.aelitis.azureus.ui.common.table.TableView;
import com.aelitis.azureus.ui.common.table.impl.TableViewImpl;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.UIFunctionsSWT;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Adapter;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Sash;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.config.impl.ConfigurationManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.LogEvent;
import org.gudy.azureus2.core3.logging.LogIDs;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.core3.util.AEDiagnostics;
import org.gudy.azureus2.core3.util.AEDiagnosticsLogger;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.IndentWriter;
import org.gudy.azureus2.core3.util.LightHashMap;
import org.gudy.azureus2.core3.util.LightHashSet;
import org.gudy.azureus2.core3.util.SystemTime;
import org.gudy.azureus2.core3.util.Timer;
import org.gudy.azureus2.core3.util.TimerEvent;
import org.gudy.azureus2.core3.util.TimerEventPerformer;
import org.gudy.azureus2.plugins.ui.tables.TableCellMouseEvent;
import org.gudy.azureus2.plugins.ui.tables.TableRowRefreshListener;
import org.gudy.azureus2.pluginsimpl.local.ui.tables.TableContextMenuItemImpl;
import org.gudy.azureus2.ui.common.util.MenuItemManager;
import org.gudy.azureus2.ui.swt.MenuBuildUtils;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.debug.ObfusticateImage;
import org.gudy.azureus2.ui.swt.debug.UIDebugGenerator;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import org.gudy.azureus2.ui.swt.plugins.UISWTViewEventListener;
import org.gudy.azureus2.ui.swt.pluginsimpl.UISWTInstanceImpl;
import org.gudy.azureus2.ui.swt.pluginsimpl.UISWTViewImpl;
import org.gudy.azureus2.ui.swt.shells.GCStringPrinter;
import org.gudy.azureus2.ui.swt.views.IView;
import org.gudy.azureus2.ui.swt.views.columnsetup.TableColumnSetupWindow;
import org.gudy.azureus2.ui.swt.views.table.TableCellSWT;
import org.gudy.azureus2.ui.swt.views.table.TableRowSWT;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWT;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWTMenuFillListener;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWTPanelCreator;
import org.gudy.azureus2.ui.swt.views.table.utils.TableColumnManager;
import org.gudy.azureus2.ui.swt.views.table.utils.TableColumnSWTUtils;
import org.gudy.azureus2.ui.swt.views.table.utils.TableContextMenuManager;
import org.gudy.azureus2.ui.swt.views.utils.VerticalAligner;

// Referenced classes of package org.gudy.azureus2.ui.swt.views.table.impl:
//			TableRowImpl, TableTooltips, TableCellImpl

public class TableViewSWTImpl extends TableViewImpl
	implements ParameterListener, TableViewSWT, TableStructureModificationListener, ObfusticateImage
{
	private class ColumnMoveListener
		implements Listener
	{

		final TableViewSWTImpl this$0;

		public void handleEvent(Event event)
		{
			TableColumn column = (TableColumn)event.widget;
			if (column == null)
				return;
			TableColumnCore tableColumnCore = (TableColumnCore)column.getData("TableColumnCore");
			if (tableColumnCore == null)
				return;
			Table table = column.getParent();
			TableColumn tableColumns[] = table.getColumns();
			int iAddedPosition;
			for (iAddedPosition = 0; iAddedPosition < tableColumns.length && column != tableColumns[iAddedPosition]; iAddedPosition++);
			if (iAddedPosition >= tableColumns.length)
				return;
			int iColumnOrder[];
			try
			{
				iColumnOrder = table.getColumnOrder();
			}
			catch (NoSuchMethodError e)
			{
				return;
			}
			int i = 0;
			do
			{
				if (i >= iColumnOrder.length)
					break;
				if (iColumnOrder[i] == iAddedPosition)
				{
					int iNewPosition = i - (bSkipFirstColumn ? 1 : 0);
					if (tableColumnCore.getPosition() != iNewPosition)
					{
						if (iNewPosition == -1)
						{
							iColumnOrder[0] = 0;
							iColumnOrder[1] = iAddedPosition;
							table.setColumnOrder(iColumnOrder);
							iNewPosition = 0;
						}
						tableColumnCore.setPositionNoShift(iNewPosition);
						tableColumnCore.saveSettings(null);
						TableStructureEventDispatcher.getInstance(sTableID).columnOrderChanged(iColumnOrder);
					}
					break;
				}
				i++;
			} while (true);
		}

		private ColumnMoveListener()
		{
			this$0 = TableViewSWTImpl.this;
			super();
		}

	}

	private class ColumnSelectionListener
		implements Listener
	{

		final TableViewSWTImpl this$0;

		public void handleEvent(final Event event)
		{
			if (TableViewSWTImpl.COLUMN_CLICK_DELAY)
			{
				final Timer timer = new Timer("Column Selection Wait");
				timer.addEvent(System.currentTimeMillis() + 85L, new TimerEventPerformer() {

					final Event val$event;
					final Timer val$timer;
					final ColumnSelectionListener this$1;

					public void perform(TimerEvent timerEvent)
					{
						Utils.execSWTThread(new AERunnable() {

							final 1 this$2;

							public void runSupport()
							{
								if (lLastColumnResizeOn == -1L || System.currentTimeMillis() - lLastColumnResizeOn > 220L)
									reallyHandleEvent(event);
							}

						
						{
							this$2 = 1.this;
							super();
						}
						});
						timer.destroy();
					}

				
				{
					this$1 = ColumnSelectionListener.this;
					event = event1;
					timer = timer1;
					super();
				}
				});
			} else
			{
				reallyHandleEvent(event);
			}
		}

		private void reallyHandleEvent(Event event)
		{
			TableColumn column = (TableColumn)event.widget;
			if (column == null)
				return;
			TableColumnCore tableColumnCore = (TableColumnCore)column.getData("TableColumnCore");
			if (tableColumnCore != null)
			{
				sortColumnReverse(tableColumnCore);
				columnVisibilitiesChanged = true;
				refreshTable(true);
			}
		}


		private ColumnSelectionListener()
		{
			this$0 = TableViewSWTImpl.this;
			super();
		}

	}

	private static interface SourceReplaceListener
	{

		public abstract void sourcesChanged();

		public abstract void cleanup(Text text);
	}


	private static final LogIDs LOGID;
	private static final boolean DISABLEVIRTUAL = SWT.getVersion() < 3138;
	private static final boolean COLUMN_CLICK_DELAY;
	private static final boolean DEBUG_SORTER = false;
	private static final ConfigurationManager configMan = ConfigurationManager.getInstance();
	private static final String CFG_SORTDIRECTION = "config.style.table.defaultSortOrder";
	private static final long BREAKOFF_ADDTOMAP = 1000L;
	private static final long BREAKOFF_ADDROWSTOSWT = 800L;
	private static final boolean TRIGGER_PAINT_ON_SELECTIONS = false;
	protected String sTableID;
	protected String sPropertiesPrefix;
	protected String sDefaultSortOn;
	private boolean bSkipFirstColumn;
	private Point ptIconSize;
	private TableColumnCore basicItems[];
	private TableColumnCore tableColumns[];
	private Composite mainComposite;
	private Composite tableComposite;
	private Table table;
	private TableEditor editor;
	protected int iTableStyle;
	private boolean bTableVirtual;
	private Menu menu;
	private Menu menuThisColumn;
	private Map mapDataSourceToRow;
	private AEMonitor dataSourceToRow_mon;
	private List sortedRows;
	private AEMonitor sortedRows_mon;
	private AEMonitor sortColumn_mon;
	protected TableColumnCore sortColumn;
	private long lLastSortedOn;
	private int iMouseX;
	protected int loopFactor;
	protected int graphicsUpdate;
	protected int reOrderDelay;
	private int checkColumnWidthsEvery;
	private TableColumnCore columnsOrdered[];
	private boolean columnsVisible[];
	private ColumnMoveListener columnMoveListener;
	private LightHashSet dataSourcesToAdd;
	private LightHashSet dataSourcesToRemove;
	private boolean bReallyAddingDataSources;
	public boolean bEnableTabViews;
	private CTabFolder tabFolder;
	private ArrayList tabViews;
	private int lastTopIndex;
	private int lastBottomIndex;
	protected IView coreTabViews[];
	private long lCancelSelectionTriggeredOn;
	private long lLastColumnResizeOn;
	private List listenersMenuFill;
	private TableViewSWTPanelCreator mainPanelCreator;
	private List listenersKey;
	private boolean columnPaddingAdjusted;
	private boolean columnVisibilitiesChanged;
	private Class classDataSourceType;
	private AEMonitor listeners_mon;
	private ArrayList refreshListeners;
	private Font fontBold;
	private Rectangle clientArea;
	private boolean isVisible;
	private boolean menuEnabled;
	private boolean headerVisible;
	private int selectedRowIndexes[];
	private List listSelectedCoreDataSources;
	private org.gudy.azureus2.ui.swt.Utils.addDataSourceCallback processDataSourceQueueCallback = new org.gudy.azureus2.ui.swt.Utils.addDataSourceCallback() {

		final TableViewSWTImpl this$0;

		public void process()
		{
			processDataSourceQueue();
		}

		public void debug(String str)
		{
			TableViewSWTImpl.this.debug(str);
		}

			
			{
				this$0 = TableViewSWTImpl.this;
				super();
			}
	};
	private int lastHorizontalPos;
	private SourceReplaceListener cellEditNotifier;

	public TableViewSWTImpl(String _sTableID, String _sPropertiesPrefix, TableColumnCore _basicItems[], String _sDefaultSortOn, int _iTableStyle)
	{
		ptIconSize = null;
		dataSourceToRow_mon = new AEMonitor("TableView:OTSI");
		sortedRows_mon = new AEMonitor("TableView:sR");
		sortColumn_mon = new AEMonitor("TableView:sC");
		iMouseX = -1;
		graphicsUpdate = configMan.getIntParameter("Graphics Update");
		reOrderDelay = configMan.getIntParameter("ReOrder Delay");
		checkColumnWidthsEvery = !Constants.isOSX || SWT.getVersion() >= 3054 ? 0 : 10000 / configMan.getIntParameter("GUI Refresh");
		columnMoveListener = new ColumnMoveListener();
		dataSourcesToAdd = new LightHashSet(4);
		dataSourcesToRemove = new LightHashSet(4);
		bReallyAddingDataSources = false;
		bEnableTabViews = false;
		tabViews = new ArrayList(1);
		lastTopIndex = 0;
		lastBottomIndex = -1;
		coreTabViews = null;
		lCancelSelectionTriggeredOn = -1L;
		lLastColumnResizeOn = -1L;
		listenersMenuFill = new ArrayList(1);
		listenersKey = new ArrayList(1);
		columnPaddingAdjusted = false;
		columnVisibilitiesChanged = true;
		listeners_mon = new AEMonitor("tablelisteners");
		menuEnabled = true;
		headerVisible = true;
		sTableID = _sTableID;
		basicItems = _basicItems;
		sPropertiesPrefix = _sPropertiesPrefix;
		sDefaultSortOn = _sDefaultSortOn;
		iTableStyle = _iTableStyle | 0x200;
		if (DISABLEVIRTUAL)
			iTableStyle &= 0xefffffff;
		bTableVirtual = (iTableStyle & 0x10000000) != 0;
		mapDataSourceToRow = new LightHashMap();
		sortedRows = new ArrayList();
	}

	public TableViewSWTImpl(String _sTableID, String _sPropertiesPrefix, TableColumnCore _basicItems[], String _sDefaultSortOn)
	{
		this(_sTableID, _sPropertiesPrefix, _basicItems, _sDefaultSortOn, 0x10010004);
	}

	private void initializeColumnDefs()
	{
		TableColumnManager tcManager = TableColumnManager.getInstance();
		if (basicItems != null)
		{
			if (tcManager.getTableColumnCount(sTableID) != basicItems.length)
				tcManager.addColumns(basicItems);
			basicItems = null;
		}
		tableColumns = tcManager.getAllTableColumnCoreAsArray(classDataSourceType, sTableID);
		tcManager.ensureIntegrety(sTableID);
	}

	public void setColumnList(TableColumnCore columns[], String defaultSortColumnID, boolean defaultSortOrder, boolean titleIsMinWidth)
	{
		TableColumnManager tcManager = TableColumnManager.getInstance();
		if (tcManager.getTableColumnCount(sTableID) != columns.length)
			tcManager.addColumns(basicItems);
		tableColumns = tcManager.getAllTableColumnCoreAsArray(classDataSourceType, sTableID);
		tcManager.ensureIntegrety(sTableID);
	}

	public void initialize(Composite composite)
	{
		composite.setRedraw(false);
		mainComposite = createSashForm(composite);
		menu = createMenu();
		table = createTable(tableComposite);
		clientArea = table.getClientArea();
		editor = new TableEditor(table);
		editor.minimumWidth = 80;
		editor.grabHorizontal = true;
		initializeTable(table);
		triggerLifeCycleListener(0);
		configMan.addParameterListener("Graphics Update", this);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -