📄 tab.java
字号:
// 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 + -