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

📄 tab.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// 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:   Tab.java

package org.gudy.azureus2.ui.swt;

import com.aelitis.azureus.ui.common.updater.UIUpdatable;
import com.aelitis.azureus.ui.common.updater.UIUpdater;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.UIFunctionsSWT;
import com.aelitis.azureus.ui.swt.utils.ColorCache;
import java.util.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.logging.*;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.plugins.PluginView;
import org.gudy.azureus2.plugins.ui.UIPluginView;
import org.gudy.azureus2.ui.swt.mainwindow.MainWindow;
import org.gudy.azureus2.ui.swt.plugins.UISWTPluginView;
import org.gudy.azureus2.ui.swt.plugins.UISWTView;
import org.gudy.azureus2.ui.swt.pluginsimpl.UISWTViewImpl;
import org.gudy.azureus2.ui.swt.views.IView;
import org.gudy.azureus2.ui.swt.views.IViewExtension;
import org.gudy.azureus2.ui.swt.views.ManagerView;
import org.gudy.azureus2.ui.swt.views.MySharesView;
import org.gudy.azureus2.ui.swt.views.MyTorrentsSuperView;
import org.gudy.azureus2.ui.swt.views.MyTrackerView;

public class Tab
	implements ParameterListener, UIUpdatable
{

	private static final LogIDs LOGID;
	private static final String ID = "TabSet";
	private HashMap tabs;
	private AEMonitor class_mon;
	private boolean useCustomTab;
	private Composite folder;
	private boolean eventCloseAllowed;
	private Item selectedItem;
	private MainWindow mainwindow;
	private Listener activateListener;

	public Tab(MainWindow _mainWindow)
	{
		class_mon = new AEMonitor("TabSet");
		eventCloseAllowed = true;
		selectedItem = null;
		mainwindow = _mainWindow;
		tabs = new HashMap();
		COConfigurationManager.addParameterListener("GUI_SWT_bFancyTab", this);
		activateListener = new Listener() {

			final Tab this$0;

			public void handleEvent(Event event)
			{
				IView view = null;
				Composite parent = (Composite)event.widget;
				IView oldView = getView(selectedItem);
				if (oldView instanceof IViewExtension)
					((IViewExtension)oldView).viewDeactivated();
				do
				{
					if (parent == null || parent.isDisposed() || view != null)
						break;
					if (parent instanceof CTabFolder)
					{
						CTabFolder folder = (CTabFolder)parent;
						selectedItem = folder.getSelection();
						view = getView(selectedItem);
					} else
					if (parent instanceof TabFolder)
					{
						TabFolder folder = (TabFolder)parent;
						TabItem selection[] = folder.getSelection();
						if (selection.length > 0)
						{
							selectedItem = selection[0];
							view = getView(selectedItem);
						}
					}
					if (view == null)
						parent = parent.getParent();
				} while (true);
				if (view != null)
				{
					if (view instanceof IViewExtension)
						((IViewExtension)view).viewActivated();
					view.refresh();
				}
			}

			
			{
				this$0 = Tab.this;
				super();
			}
		};
		mainwindow.getUIFunctions().getUIUpdater().addUpdater(this);
	}

	public Composite createFolderWidget(Composite parent)
	{
		Display display = parent.getDisplay();
		if (tabs == null)
			tabs = new HashMap();
		if (folder != null && !folder.isDisposed())
			return folder;
		useCustomTab = COConfigurationManager.getBooleanParameter("useCustomTab");
		if (!useCustomTab)
		{
			folder = new TabFolder(parent, 512);
		} else
		{
			folder = new CTabFolder(parent, 2112);
			float hsb[] = folder.getBackground().getRGB().getHSB();
			hsb[2] *= Constants.isOSX ? 0.90000000000000002D : 0.96999999999999997D;
			folder.setBackground(ColorCache.getColor(parent.getDisplay(), hsb));
			hsb = folder.getForeground().getRGB().getHSB();
			hsb[2] *= Constants.isOSX ? 1.1000000000000001D : 0.029999999999999999D;
			folder.setForeground(ColorCache.getColor(parent.getDisplay(), hsb));
			((CTabFolder)folder).addCTabFolder2Listener(new CTabFolder2Adapter() {

				final Tab this$0;

				public void close(CTabFolderEvent event)
				{
					if (!closed((Item)event.item))
						event.doit = false;
				}

			
			{
				this$0 = Tab.this;
				super();
			}
			});
			folder.addMouseListener(new MouseAdapter() {

				final Tab this$0;

				public void mouseDown(MouseEvent arg0)
				{
					CTabItem tabItem = ((CTabFolder)folder).getItem(new Point(arg0.x, arg0.y));
					if (arg0.button == 2)
					{
						if (eventCloseAllowed)
						{
							Rectangle rectangle = tabItem.getBounds();
							if (rectangle.contains(arg0.x, arg0.y))
							{
								eventCloseAllowed = false;
								selectedItem = null;
								closed(tabItem);
							}
						}
					} else
					{
						selectedItem = ((CTabFolder)folder).getSelection();
					}
				}

				public void mouseUp(MouseEvent arg0)
				{
					eventCloseAllowed = true;
					if (selectedItem != null)
					{
						((CTabFolder)folder).setSelection((CTabItem)selectedItem);
						ensureVisibilities();
					}
				}

			
			{
				this$0 = Tab.this;
				super();
			}
			});
		}
		folder.getDisplay().addFilter(1, new Listener() {

			final Tab this$0;

			public void handleEvent(Event event)
			{
				Control focus_control = folder.getDisplay().getFocusControl();
				if (focus_control != null && focus_control.getShell() != folder.getShell())
					return;
				int key = event.character;
				if ((event.stateMask & SWT.MOD1) != 0 && event.character <= '\032' && event.character > 0)
					key += 96;
				if (key == 27 || event.keyCode == 0x100000d && event.stateMask == 0x40000)
				{
					closeCurrent();
					event.doit = false;
				} else
				if (event.keyCode == 0x100000f || event.character == '\t' && (event.stateMask & 0x40000) != 0)
					if ((event.stateMask & 0x20000) == 0)
					{
						event.doit = false;
						selectNextTab(true);
					} else
					if (event.stateMask == 0x20000)
					{
						selectNextTab(false);
						event.doit = false;
					}
			}

			
			{
				this$0 = Tab.this;
				super();
			}
		});
		SelectionAdapter selectionAdapter = new SelectionAdapter() {

			final Tab this$0;

			public void widgetSelected(SelectionEvent event)
			{
				if (folder == null || folder.isDisposed())
					return;
				if (useCustomTab && !folder.isDisposed())
					ensureVisibilities();
				mainwindow.getUIFunctions().refreshIconBar();
				mainwindow.getUIFunctions().refreshTorrentMenu();
			}

			
			{
				this$0 = Tab.this;
				super();
			}
		};
		if (!useCustomTab)
		{
			((TabFolder)folder).addSelectionListener(selectionAdapter);
		} else
		{
			try
			{
				((CTabFolder)folder).setMinimumCharacters(75);
			}
			catch (Exception e)
			{
				Logger.log(new LogEvent(LOGID, "Can't set MIN_TAB_WIDTH", e));
			}
			((CTabFolder)folder).addCTabFolderListener(new CTabFolderAdapter() {

				final Tab this$0;

				public void itemClosed(CTabFolderEvent event)
				{
					if (!event.doit)
					{
						return;
					} else
					{
						closed((CTabItem)event.item);
						event.doit = true;
						((CTabItem)event.item).dispose();
						return;
					}
				}

			
			{
				this$0 = Tab.this;
				super();
			}
			});
			((CTabFolder)folder).addSelectionListener(selectionAdapter);
			try
			{
				((CTabFolder)folder).setSelectionBackground(new Color[] {
					display.getSystemColor(25), display.getSystemColor(25), display.getSystemColor(22)
				}, new int[] {
					10, 90
				}, true);
			}
			catch (NoSuchMethodError e)
			{
				((CTabFolder)folder).setSelectionBackground(new Color[] {
					display.getSystemColor(25)
				}, new int[0]);
			}
			((CTabFolder)folder).setSelectionForeground(display.getSystemColor(24));
			try
			{
				((CTabFolder)folder).setSimple(!COConfigurationManager.getBooleanParameter("GUI_SWT_bFancyTab"));
			}
			catch (NoSuchMethodError e) { }
		}
		return folder;
	}

	protected void ensureVisibilities()
	{
		if (!(folder instanceof CTabFolder))
			return;
		CTabItem items[] = ((CTabFolder)folder).getItems();
		CTabItem item = ((CTabFolder)folder).getSelection();
		for (int i = 0; i < items.length; i++)
		{
			CTabItem tabItem = items[i];
			if (tabItem == null || tabItem.isDisposed())
				continue;
			if (tabItem == item)
			{
				try
				{
					((CTabFolder)folder).setSelection(tabItem);
					Control control = getView(tabItem).getComposite();
					if (control != null)
					{
						control.setVisible(true);
						control.setFocus();
					}
				}
				catch (Throwable e)
				{
					Debug.printStackTrace(e);
				}
				continue;
			}
			try
			{
				Control control = getView(tabItem).getComposite();
				if (control != null)
					control.setVisible(false);
			}
			catch (Throwable e)
			{
				Debug.printStackTrace(e);
			}
		}

	}

	public Item createTabItem(final IView _view, boolean bFocus)
	{
		if (folder.isDisposed())
			return null;
		Item tabItem;
		if (folder instanceof CTabFolder)
		{
			CTabFolder tabFolder = (CTabFolder)folder;
			tabItem = new CTabItem(tabFolder, 0, (_view instanceof MyTorrentsSuperView) ? 0 : tabFolder.getItemCount());
		} else
		{
			TabFolder tabFolder = (TabFolder)folder;
			tabItem = new TabItem(tabFolder, 0, (_view instanceof MyTorrentsSuperView) ? 0 : tabFolder.getItemCount());
		}
		tabs.put(tabItem, _view);
		try
		{
			Composite tabArea = new Composite(folder, 0);
			GridLayout layout = new GridLayout();
			layout.marginHeight = 0;
			layout.marginWidth = 0;
			tabArea.setLayout(layout);
			_view.initialize(tabArea);
			tabItem.setText(escapeAccelerators(_view.getShortTitle()));
			Composite viewComposite = _view.getComposite();
			if (viewComposite != null && !viewComposite.isDisposed())
			{
				viewComposite.addListener(26, activateListener);
				if ((tabArea.getLayout() instanceof GridLayout) && !(viewComposite.getLayoutData() instanceof GridData))
					viewComposite.setLayoutData(new GridData(1808));
				if (viewComposite != tabArea)
					viewComposite.addDisposeListener(new DisposeListener() {

						boolean alreadyHere;
						final IView val$_view;
						final Tab this$0;

						public void widgetDisposed(DisposeEvent e)
						{
							if (alreadyHere)
								return;
							alreadyHere = true;
							Item tab = getTab(_view);
							if (tab != null)
								closed(tab);
						}

			
			{
				this$0 = Tab.this;
				_view = iview;
				super();
				alreadyHere = false;
			}
					});
			}
			if (folder instanceof CTabFolder)
			{
				((CTabItem)tabItem).setControl(tabArea);
				if (bFocus)
				{
					((CTabFolder)folder).setSelection((CTabItem)tabItem);
					ensureVisibilities();
				}
			} else
			{
				((TabItem)tabItem).setControl(tabArea);
				((TabItem)tabItem).setToolTipText(_view.getFullTitle());
				TabItem items[] = {
					(TabItem)tabItem
				};
				if (bFocus)
					((TabFolder)folder).setSelection(items);
			}
		}
		catch (Exception e)
		{
			tabs.remove(tabItem);
			Debug.printStackTrace(e);
		}
		if (bFocus)
		{
			UIFunctionsSWT uif = UIFunctionsManagerSWT.getUIFunctionsSWT();
			if (uif != null)
			{
				uif.refreshIconBar();
				uif.refreshTorrentMenu();
			}
			selectedItem = tabItem;
		}
		return tabItem;
	}

	public IView getView(Item item)
	{
		return (IView)tabs.get(item);
	}

	public Item getTab(IView view)
	{
		Iterator iter;
		class_mon.enter();
		iter = tabs.keySet().iterator();
		Item item2;
		Item item;
		IView this_view;
		do
		{
			if (!iter.hasNext())
				break MISSING_BLOCK_LABEL_74;
			item = (Item)iter.next();
			this_view = (IView)tabs.get(item);
		} while (this_view != view);
		item2 = item;
		class_mon.exit();
		return item2;
		Item item1 = null;
		class_mon.exit();
		return item1;
		Exception exception;
		exception;
		class_mon.exit();
		throw exception;
	}

	public Item[] getAllTabs()
	{
		Item aitem[];

⌨️ 快捷键说明

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