📄 uiswtstatusentryimpl.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: UISWTStatusEntryImpl.java
package org.gudy.azureus2.ui.swt.pluginsimpl;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Menu;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.plugins.ui.menus.MenuContext;
import org.gudy.azureus2.pluginsimpl.local.ui.menus.MenuContextImpl;
import org.gudy.azureus2.ui.common.util.MenuItemManager;
import org.gudy.azureus2.ui.swt.MenuBuildUtils;
import org.gudy.azureus2.ui.swt.mainwindow.MainStatusBar;
import org.gudy.azureus2.ui.swt.plugins.UISWTStatusEntry;
import org.gudy.azureus2.ui.swt.plugins.UISWTStatusEntryListener;
public class UISWTStatusEntryImpl
implements UISWTStatusEntry, org.gudy.azureus2.ui.swt.mainwindow.MainStatusBar.CLabelUpdater
{
private AEMonitor this_mon;
private UISWTStatusEntryListener listener;
private MenuContextImpl menu_context;
private boolean needs_update;
private String text;
private String tooltip;
private boolean image_enabled;
private Image image;
private boolean is_visible;
private boolean needs_disposing;
private boolean is_destroyed;
private Menu menu;
private CopyOnWriteArrayList imageIDstoDispose;
private String imageID;
public UISWTStatusEntryImpl()
{
this_mon = new AEMonitor((new StringBuilder()).append("UISWTStatusEntryImpl@").append(Integer.toHexString(hashCode())).toString());
listener = null;
menu_context = MenuContextImpl.create("status_entry");
needs_update = false;
text = null;
tooltip = null;
image_enabled = false;
image = null;
is_visible = false;
needs_disposing = false;
is_destroyed = false;
imageIDstoDispose = new CopyOnWriteArrayList();
imageID = null;
}
private void checkDestroyed()
{
if (is_destroyed)
throw new RuntimeException("object is destroyed, cannot be reused");
else
return;
}
public MenuContext getMenuContext()
{
return menu_context;
}
public void update(CLabel label)
{
if (needs_disposing && !label.isDisposed())
{
if (menu != null && !menu.isDisposed())
{
menu.dispose();
menu = null;
}
label.dispose();
if (imageID != null)
imageIDstoDispose.add(imageID);
releaseOldImages();
return;
}
if (menu_context.is_dirty)
{
needs_update = true;
menu_context.is_dirty = false;
}
if (!needs_update)
return;
this_mon.enter();
update0(label);
this_mon.exit();
break MISSING_BLOCK_LABEL_134;
Exception exception;
exception;
this_mon.exit();
throw exception;
}
private void releaseOldImages()
{
if (imageIDstoDispose.size() > 0)
{
ImageLoader imageLoader = ImageLoader.getInstance();
for (Iterator iter = imageIDstoDispose.iterator(); iter.hasNext(); iter.remove())
{
String id = (String)iter.next();
imageLoader.releaseImage(id);
}
}
}
private void update0(final CLabel label)
{
label.setText(text);
label.setToolTipText(tooltip);
label.setImage(image_enabled ? image : null);
label.setVisible(is_visible);
releaseOldImages();
org.gudy.azureus2.plugins.ui.menus.MenuItem items[] = MenuItemManager.getInstance().getAllAsArray(menu_context.context);
if ((items.length > 0) & (menu == null))
{
menu = new Menu(label);
label.setMenu(menu);
MenuBuildUtils.addMaintenanceListenerForMenu(menu, new org.gudy.azureus2.ui.swt.MenuBuildUtils.MenuBuilder() {
final CLabel val$label;
final UISWTStatusEntryImpl this$0;
public void buildMenu(Menu menu)
{
org.gudy.azureus2.plugins.ui.menus.MenuItem items[] = MenuItemManager.getInstance().getAllAsArray(menu_context.context);
MenuBuildUtils.addPluginMenuItems(label, items, menu, true, true, MenuBuildUtils.BASIC_MENU_ITEM_CONTROLLER);
}
{
this$0 = UISWTStatusEntryImpl.this;
label = clabel;
super();
}
});
} else
if (menu != null && items.length == 0)
{
label.setMenu(null);
if (!menu.isDisposed())
menu.dispose();
menu = null;
}
needs_update = false;
}
void onClick()
{
UISWTStatusEntryListener listener0 = listener;
if (listener0 != null)
listener.entryClicked(this);
}
public void destroy()
{
this_mon.enter();
is_visible = false;
listener = null;
image = null;
needs_disposing = true;
is_destroyed = true;
MenuItemManager.getInstance().removeAllMenuItems(menu_context.context);
this_mon.exit();
break MISSING_BLOCK_LABEL_65;
Exception exception;
exception;
this_mon.exit();
throw exception;
}
public void setImage(int image_id)
{
if (imageID != null)
imageIDstoDispose.add(imageID);
switch (image_id)
{
case 3: // '\003'
imageID = "greenled";
break;
case 1: // '\001'
imageID = "redled";
break;
case 2: // '\002'
imageID = "yellowled";
break;
default:
imageID = "grayled";
break;
}
ImageLoader imageLoader = ImageLoader.getInstance();
setImage(imageLoader.getImage(imageID));
}
public void setImage(Image image)
{
checkDestroyed();
this_mon.enter();
this.image = image;
needs_update = true;
this_mon.exit();
}
public void setImageEnabled(boolean enabled)
{
checkDestroyed();
this_mon.enter();
image_enabled = enabled;
needs_update = true;
this_mon.exit();
}
public void setListener(UISWTStatusEntryListener listener)
{
checkDestroyed();
this.listener = listener;
}
public void setText(String text)
{
checkDestroyed();
this_mon.enter();
this.text = text;
needs_update = true;
this_mon.exit();
}
public void setTooltipText(String text)
{
checkDestroyed();
this_mon.enter();
tooltip = text;
needs_update = true;
this_mon.exit();
}
public void setVisible(boolean visible)
{
checkDestroyed();
this_mon.enter();
is_visible = visible;
needs_update = true;
this_mon.exit();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -