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

📄 uiswtstatusentryimpl.java

📁 java 文件下载器。可自定义
💻 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 + -