Package com.aelitis.azureus.ui.swt.mdi

Source Code of com.aelitis.azureus.ui.swt.mdi.BaseMdiEntry

package com.aelitis.azureus.ui.swt.mdi;

import java.util.*;

import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;

import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.impl.ConfigurationDefaults;
import org.gudy.azureus2.core3.config.impl.ConfigurationParameterNotFoundException;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.LightHashMap;
import org.gudy.azureus2.pluginsimpl.local.PluginCoreUtils;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.mainwindow.PluginsMenuHelper;
import org.gudy.azureus2.ui.swt.mainwindow.PluginsMenuHelper.IViewInfo;
import org.gudy.azureus2.ui.swt.plugins.UISWTView;
import org.gudy.azureus2.ui.swt.plugins.UISWTViewEvent;
import org.gudy.azureus2.ui.swt.plugins.UISWTViewEventListener;
import org.gudy.azureus2.ui.swt.pluginsimpl.BasicPluginViewImpl;
import org.gudy.azureus2.ui.swt.pluginsimpl.UISWTViewEventListenerHolder;
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 com.aelitis.azureus.ui.common.ToolBarEnabler;
import com.aelitis.azureus.ui.common.viewtitleinfo.*;
import com.aelitis.azureus.ui.mdi.*;
import com.aelitis.azureus.ui.selectedcontent.SelectedContentManager;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.UIFunctionsSWT;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObject;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObjectContainer;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObjectListener;

public abstract class BaseMdiEntry
  implements MdiEntrySWT, ViewTitleInfoListener
{
  protected final MultipleDocumentInterface mdi;

  protected final String id;

  protected String logID;

  protected Object datasource;

  protected Class<?> iviewClass;

  protected Class<?>[] iviewClassArgs;

  protected Object[] iviewClassVals;

  protected IView iview;

  private String skinRef;

  private List<MdiCloseListener> listCloseListeners = null;

  private List<MdiChildCloseListener> listChildCloseListeners = null;

  private List<MdiEntryLogIdListener> listLogIDListeners = null;

  private List<MdiEntryOpenListener> listOpenListeners = null;

  private List<MdiEntryDropListener> listDropListeners = null;

  protected ViewTitleInfo viewTitleInfo;

  private SWTSkinObject skinObject;

  private String title;

  private String titleID;

  private UISWTViewEventListener eventListener;

  private String parentID;

  private boolean pullTitleFromIView;

  private boolean closeable;

  private Boolean isExpanded = null;

  private boolean disposed = false;
 
  private boolean added = false;

  private String imageLeftID;

  private Image imageLeft;

  private boolean collapseDisabled = false;

  private SWTSkinObject soMaster;
 
  private Set<ToolBarEnabler> setToolBarEnablers = new HashSet<ToolBarEnabler>(1);
 
  private String preferredAfterID;

  @SuppressWarnings("unused")
  private BaseMdiEntry() {
    mdi = null;
    id = null;
    setDefaultExpanded(false);
  }

  public BaseMdiEntry(MultipleDocumentInterface mdi, String id) {
    this.mdi = mdi;
    this.id = id;
    this.pullTitleFromIView = true;

    if (id == null) {
      logID = "null";
    } else {
      int i = id.indexOf('_');
      if (i > 0) {
        logID = id.substring(0, i);
      } else {
        logID = id;
      }
    }
    setDefaultExpanded(false);
  }

  public String getId() {
    return id;
  }

  public MdiEntryVitalityImage addVitalityImage(String imageID) {
    return null;
  }

  /* (non-Javadoc)
   * @see com.aelitis.azureus.ui.mdi.MdiEntry#close()
   */
  public boolean close(boolean forceClose) {
    if (!forceClose && iview instanceof UISWTViewImpl) {
      if (!((UISWTViewImpl) iview).requestClose()) {
        return false;
      }
    }

    disposed = true;
    ViewTitleInfoManager.removeListener(this);

    return true;
  }

  public Object getDatasourceCore() {
    return datasource;
  }

  public Object getDatasource() {
    return PluginCoreUtils.convert(datasource, false);
  }

  public void setDatasource(Object datasource) {
    this.datasource = datasource;

    if (isAdded()) {
      if (iview != null) {
        iview.dataSourceChanged(datasource);
      }
      if (skinObject != null) {
        skinObject.triggerListeners(
            SWTSkinObjectListener.EVENT_DATASOURCE_CHANGED, datasource);
      }
    }
  }

  public IView getIView() {
    return iview;
  }

  public Class<?> getIViewClass() {
    return iviewClass;
  }

  public void setIViewClass(Class<?> iviewClass, Class<?>[] iviewClassArgs,
      Object[] iviewClassVals) {
    this.iviewClass = iviewClass;
    this.iviewClassArgs = iviewClassArgs;
    this.iviewClassVals = iviewClassVals;
  }

  public Class<?>[] getIViewClassArgs() {
    return iviewClassArgs;
  }

  public Object[] getIViewClassVals() {
    return iviewClassVals;
  }

  public String getLogID() {
    return logID;
  }

  public MultipleDocumentInterface getMDI() {
    return mdi;
  }

  public String getParentID() {
    return parentID;
  }

  public void setParentID(String id) {
    if (id == null || "Tools".equals(id)) {
      if (getId().equals(MultipleDocumentInterface.SIDEBAR_HEADER_DVD)
          && id == null) {
        id = "";
      } else {
        id = MultipleDocumentInterface.SIDEBAR_HEADER_PLUGINS;
      }
    }
    if (id.equals(getId())) {
      Debug.out("Setting Parent to same ID as child! " + id);
      return;
    }
    parentID = id;
    // ensure parent gets created if it isn't there already
    mdi.loadEntryByID(parentID, false);
  }

  public MdiEntryVitalityImage[] getVitalityImages() {
    return null;
  }

  public boolean isCloseable() {
    return closeable;
  }

  public boolean isCollapseDisabled() {
    return collapseDisabled;
  }

  public void setCollapseDisabled(boolean collapseDisabled) {
    this.collapseDisabled = collapseDisabled;
    setExpanded(true);
  }

  public void addListener(MdiCloseListener l) {
    synchronized (this) {
      if (listCloseListeners == null) {
        listCloseListeners = new ArrayList<MdiCloseListener>(1);
      }
      listCloseListeners.add(l);
    }
  }

  public void removeListener(MdiCloseListener l) {
    synchronized (this) {
      if (listCloseListeners != null) {
        listCloseListeners.remove(l);
      }
    }
  }

  public void triggerCloseListeners(boolean user) {
    Object[] list = {};
    synchronized (this) {
      if (listCloseListeners != null) {
        list = listCloseListeners.toArray();
      }
    }
    for (int i = 0; i < list.length; i++) {
      MdiCloseListener l = (MdiCloseListener) list[i];
      try {
        l.mdiEntryClosed(this, user);
      } catch (Exception e) {
        Debug.out(e);
      }
    }

    MdiEntry parentEntry = mdi.getEntry(parentID);
    if (parentEntry instanceof BaseMdiEntry) {
      ((BaseMdiEntry) parentEntry).triggerChildCloseListeners(this, user);
    }
  }

  public void addListener(MdiChildCloseListener l) {
    synchronized (this) {
      if (listChildCloseListeners == null) {
        listChildCloseListeners = new ArrayList<MdiChildCloseListener>(1);
      }
      listChildCloseListeners.add(l);
    }
  }

  public void removeListener(MdiChildCloseListener l) {
    synchronized (this) {
      if (listChildCloseListeners != null) {
        listChildCloseListeners.remove(l);
      }
    }
  }

  public void triggerChildCloseListeners(MdiEntry child, boolean user) {
    if (listChildCloseListeners == null) {
      return;
    }
    Object[] list;
    synchronized (this) {
      list = listChildCloseListeners.toArray();
    }
    for (int i = 0; i < list.length; i++) {
      MdiChildCloseListener l = (MdiChildCloseListener) list[i];
      try {
        l.mdiChildEntryClosed(this, child, user);
      } catch (Exception e) {
        Debug.out(e);
      }
    }
  }


  public void addListener(MdiEntryLogIdListener l) {
    synchronized (this) {
      if (listLogIDListeners == null) {
        listLogIDListeners = new ArrayList<MdiEntryLogIdListener>(1);
      }
      listLogIDListeners.add(l);
    }
  }

  public void removeListener(MdiEntryLogIdListener sideBarLogIdListener) {
    synchronized (this) {
      if (listLogIDListeners != null) {
        listLogIDListeners.remove(sideBarLogIdListener);
      }
    }
  }

  protected void triggerLogIDListeners(String oldID) {
    Object[] list;
    synchronized (this) {
      if (listLogIDListeners == null) {
        return;
      }

      list = listLogIDListeners.toArray();
    }

    for (int i = 0; i < list.length; i++) {
      MdiEntryLogIdListener l = (MdiEntryLogIdListener) list[i];
      l.mdiEntryLogIdChanged(this, oldID, logID);
    }
  }

  public void addListener(MdiEntryOpenListener l) {
    synchronized (this) {
      if (listOpenListeners == null) {
        listOpenListeners = new ArrayList<MdiEntryOpenListener>(1);
      }
      listOpenListeners.add(l);
    }

    if (iview != null) {
      l.mdiEntryOpen(this);
    }
  }

  public void removeListener(MdiEntryOpenListener l) {
    synchronized (this) {
      if (listOpenListeners != null) {
        listOpenListeners.remove(l);
      }
    }
  }

  public void triggerOpenListeners() {
    Object[] list;
    synchronized (this) {
      if (listOpenListeners == null) {
        return;
      }

      list = listOpenListeners.toArray();
    }
    for (int i = 0; i < list.length; i++) {
      MdiEntryOpenListener l = (MdiEntryOpenListener) list[i];
      try {
        l.mdiEntryOpen(this);
      } catch (Exception e) {
        Debug.out(e);
      }
    }
  }

  public void addListener(MdiEntryDropListener l) {
    synchronized (this) {
      if (listDropListeners == null) {
        listDropListeners = new ArrayList<MdiEntryDropListener>(1);
      }
      listDropListeners.add(l);
    }
  }

  public void removeListener(MdiEntryDropListener l) {
    synchronized (this) {
      if (listDropListeners != null) {
        listDropListeners.remove(l);
      }
    }
  }

  public boolean hasDropListeners() {
    synchronized (this) {
      return listDropListeners != null && listDropListeners.size() > 0;
    }
  }
 
  /**
   *
   * @param o
   * @return true: handled; false: not handled
   */
  public boolean triggerDropListeners(Object o) {
    boolean handled = false;
    Object[] list;
    synchronized (this) {
      if (listDropListeners == null) {
        return handled;
      }

      list = listDropListeners.toArray();
    }
    for (int i = 0; i < list.length; i++) {
      MdiEntryDropListener l = (MdiEntryDropListener) list[i];
      handled = l.mdiEntryDrop(this, o);
      if (handled) {
        break;
      }
    }
    return handled;
  }

  public void setLogID(String logID) {
    if (logID == null || logID.equals("" + this.logID)) {
      return;
    }
    String oldID = this.logID;
    this.logID = logID;
    triggerLogIDListeners(oldID);
  }

  /* (non-Javadoc)
   * @see com.aelitis.azureus.ui.mdi.MdiEntry#getViewTitleInfo()
   */
  public ViewTitleInfo getViewTitleInfo() {
    return viewTitleInfo;
  }

  /* (non-Javadoc)
   * @see com.aelitis.azureus.ui.mdi.MdiEntry#setViewTitleInfo(com.aelitis.azureus.ui.common.viewtitleinfo.ViewTitleInfo)
   */
  public void setViewTitleInfo(ViewTitleInfo viewTitleInfo) {
    if (this.viewTitleInfo == viewTitleInfo) {
      return;
    }
    this.viewTitleInfo = viewTitleInfo;
    // TODO: Need to listen for viewTitleInfo triggers so we can refresh items below
    if (viewTitleInfo != null) {
      if (viewTitleInfo instanceof ViewTitleInfo2) {
        ViewTitleInfo2 vti2 = (ViewTitleInfo2) viewTitleInfo;
        try {
          vti2.titleInfoLinked(mdi, this);
        } catch (Exception e) {
          Debug.out(e);
        }
      }

      String newTitle = (String) viewTitleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_TEXT);
      if (newTitle != null) {
        setPullTitleFromIView(false);
        setTitle(newTitle);
      }

      String imageID = (String) viewTitleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_IMAGEID);
      if (imageID != null) {
        setImageLeftID(imageID.length() == 0 ? null : imageID);
      }

      ViewTitleInfoManager.addListener(this);
    }
  }

  public void addToolbarEnabler(ToolBarEnabler enabler) {
    setToolBarEnablers.add(enabler);
  }
 
  public void removeToolbarEnabler(ToolBarEnabler enabler) {
    setToolBarEnablers.remove(enabler);
  }
 
  public ToolBarEnabler[] getToolbarEnablers() {
    return setToolBarEnablers.toArray(new ToolBarEnabler[0]);
  }
 
  public void setIView(IView iview) {
    this.iview = iview;
    if (iview instanceof ViewTitleInfo) {
      setViewTitleInfo((ViewTitleInfo) iview);
    } else if (iview instanceof UISWTViewImpl) {
      UISWTViewEventListener eventListener = ((UISWTViewImpl) iview).getEventListener();
      if (eventListener instanceof ViewTitleInfo) {
        setViewTitleInfo((ViewTitleInfo) eventListener);
      }
    }
   
    if (iview instanceof ToolBarEnabler) {
      addToolbarEnabler((ToolBarEnabler) iview);
    }

    if (iview != null) {
      if (title == null) {
        setTitle(iview.getFullTitle());
      }
      if (datasource != null) {
        try {
          iview.dataSourceChanged(datasource);
        } catch (Exception e) {
          Debug.out(e);
        }
      }
    }
  }

  public SWTSkinObject getSkinObject() {
    return skinObject;
  }

  public void setSkinObject(SWTSkinObject skinObject, SWTSkinObject soMaster) {
    this.skinObject = skinObject;
    this.soMaster = soMaster;
    if (datasource != null) {
      if (skinObject != null) {
        skinObject.triggerListeners(
            SWTSkinObjectListener.EVENT_DATASOURCE_CHANGED, datasource);
      }
      if (iview != null) {
        iview.dataSourceChanged(datasource);
      }
    }
  }

  public SWTSkinObject getSkinObjectMaster() {
    if (soMaster == null) {
      return skinObject;
    }
    return soMaster;
  }

  public void setSkinRef(String configID, Object params) {
    skinRef = configID;
    if (params != null) {
      setDatasource(params);
    }
  }

  public String getSkinRef() {
    return skinRef;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    if (title == null) {
      return;
    }
    if (title.startsWith("{") && title.endsWith("}") && title.length() > 2) {
      setTitleID(title.substring(1, title.length() - 1));
      return;
    }
    if (title.equals(this.title)) {
      return;
    }
    this.title = title;
    this.titleID = null;
    redraw();
  }
 
  public void setTitleID(String titleID) {
    String title = MessageText.getString(titleID);
    setTitle(title.startsWith("{") ? title.substring(1) : title);
    this.titleID = titleID;
  }
 
  public void updateLanguage() {
    if (titleID != null) {
      setTitleID(titleID);
    } else {
      if (viewTitleInfo != null) {
        viewTitleInfoRefresh(viewTitleInfo);
      }
      updateUI();
    }
  }

  public void show() {
    if (skinObject == null) {
      return;
    }

    SelectedContentManager.clearCurrentlySelectedContent();

    UIFunctionsSWT uif = UIFunctionsManagerSWT.getUIFunctionsSWT();
    if (uif != null) {
      //uif.refreshIconBar(); // needed?
      uif.refreshTorrentMenu();
    }

    SWTSkinObject skinObject = getSkinObjectMaster();
    skinObject.setVisible(true);
    if (skinObject instanceof SWTSkinObjectContainer) {
      SWTSkinObjectContainer container = (SWTSkinObjectContainer) skinObject;
      Composite composite = container.getComposite();
      if (composite != null && !composite.isDisposed()) {
        composite.setVisible(true);
        composite.moveAbove(null);
        //composite.setFocus();
        //container.getParent().relayout();
        composite.getParent().layout();
      }
      // This causes double show because createSkinObject already calls show
      //container.triggerListeners(SWTSkinObjectListener.EVENT_SHOW);
    }
    if (iview != null) {
      Composite c = iview.getComposite();
      if (c != null && !c.isDisposed()) {
        c.setData("BaseMDIEntry", this);
        c.setVisible(true);
        c.getParent().layout();
      }
    }

    try {
      if (iview instanceof IViewExtension) {
        ((IViewExtension) iview).viewActivated();
      } else if (iview instanceof UISWTView) {
        ((UISWTView) iview).triggerEvent(UISWTViewEvent.TYPE_FOCUSGAINED, null);
      }
    } catch (Exception e) {
      Debug.out(e);
    }
  }

  public void hide() {
    Utils.execSWTThread(new AERunnable() {
      public void runSupport() {
        swt_hide();
      }
    });
  }

  private void swt_hide() {
    SWTSkinObject skinObjectMaster = getSkinObjectMaster();
    if (skinObjectMaster instanceof SWTSkinObjectContainer) {
      SWTSkinObjectContainer container = (SWTSkinObjectContainer) skinObjectMaster;
      if (container != null) {
        Control oldComposite = container.getControl();

        container.setVisible(false);
        if (!oldComposite.isDisposed()) {
          oldComposite.getShell().update();
        }
      }
    }
    if (iview != null) {
      Composite oldComposite = iview.getComposite();
      if (oldComposite != null && !oldComposite.isDisposed()) {

        oldComposite.setVisible(false);
        oldComposite.getShell().update();
      }
    }

    try {
      if (iview instanceof IViewExtension) {
        ((IViewExtension) iview).viewDeactivated();
      } else if (iview instanceof UISWTView) {
        ((UISWTView) iview).triggerEvent(UISWTViewEvent.TYPE_FOCUSLOST, null);
      }
    } catch (Exception e) {
      Debug.out(e);
    }
  }

  public UISWTViewEventListener getEventListener() {
    return eventListener;
  }

  public void setEventListener(UISWTViewEventListener _eventListener) {
    this.eventListener = _eventListener;
   
    if (eventListener instanceof ToolBarEnabler) {
      addToolbarEnabler((ToolBarEnabler) eventListener);
    }
    if ((eventListener instanceof ViewTitleInfo) && viewTitleInfo == null) {
      setViewTitleInfo((ViewTitleInfo) eventListener);
    }

    UISWTViewEventListener eventListenerDelegate = _eventListener;
    /*
    UISWTViewEventListener eventListenerDelegate = new UISWTViewEventListener() {
      public boolean eventOccurred(UISWTViewEvent event) {
        switch (event.getType()) {
          case UISWTViewEvent.TYPE_CREATE:
            break;

          case UISWTViewEvent.TYPE_DATASOURCE_CHANGED:
            if (skinObject != null) {
              skinObject.triggerListeners(
                  SWTSkinObjectListener.EVENT_DATASOURCE_CHANGED,
                  event.getData());
            }
            break;

          default:
            break;
        }
        return eventListener.eventOccurred(event);
      }
    };
    */
    if (iview != null) {
      return;
    }
    try {
      IView iview = new UISWTViewImpl(parentID, id, eventListenerDelegate,
          datasource);
      setIView(iview);

      IViewInfo foundViewInfo = PluginsMenuHelper.getInstance().findIViewInfo(
          eventListener);

      String title;
      if (foundViewInfo != null) {
        title = foundViewInfo.name;
      } else {
        title = iview.getFullTitle();
      }
      ((UISWTViewImpl) iview).setTitle(title);
      setTitle(title);
    } catch (Exception e) {
      Debug.out(e);
    }
   
    if (   ( _eventListener instanceof BasicPluginViewImpl ) ||
        (  ( _eventListener instanceof UISWTViewEventListenerHolder )) && ((UISWTViewEventListenerHolder)_eventListener).isLogView()){

      if ("image.sidebar.plugin".equals(getImageLeftID())) {
        setImageLeftID("image.sidebar.logview");
      }
    }
  }

  public boolean isPullTitleFromIView() {
    return pullTitleFromIView;
  }

  public void setPullTitleFromIView(boolean pullTitleFromIView) {
    this.pullTitleFromIView = pullTitleFromIView;
  }

  public void updateUI() {
    if (iview == null) {
      return;
    }
    Utils.execSWTThread(new AERunnable() {
      public void runSupport() {
        if (iview != null && !isDisposed()) {
          iview.refresh();
        }
        if (isPullTitleFromIView() && isAdded()) {
          setTitle(iview.getFullTitle());
        }
      }
    });
  }

  public boolean isDisposed() {
    return disposed;
  }

  public void setCloseable(boolean closeable) {
    this.closeable = closeable;
    if (closeable) {
      Map<String, Object> autoOpenInfo = new LightHashMap<String, Object>();
      if (getParentID() != null) {
        autoOpenInfo.put("parentID", getParentID());
      }
      if (getIViewClass() != null) {
        autoOpenInfo.put("iviewClass", getIViewClass().getName());
      }
      if (getEventListener() != null) {
        autoOpenInfo.put("eventlistenerid", id);
      }
      if (getIView() != null) {
        autoOpenInfo.put("title", getIView().getFullTitle());
      }
      Object datasource = getDatasourceCore();
      if (datasource instanceof DownloadManager) {
        try {
          autoOpenInfo.put(
              "dm",
              ((DownloadManager) datasource).getTorrent().getHashWrapper().toBase32String());
        } catch (Throwable t) {
        }
      } else if (datasource instanceof DownloadManager[]) {
        DownloadManager[] dms = (DownloadManager[]) datasource;
        List<String> list = new ArrayList<String>();
        for (DownloadManager dm : dms) {
          try {
            list.add(dm.getTorrent().getHashWrapper().toBase32String());
          } catch (Throwable e) {
          }
        }
        autoOpenInfo.put("dms", list);
      } else if (datasource != null) {
        autoOpenInfo.put("datasource", datasource.toString());
      }

      mdi.informAutoOpenSet(this, autoOpenInfo);
      COConfigurationManager.setParameter("SideBar.AutoOpen." + id, true);
    } else {
      COConfigurationManager.removeParameter("SideBar.AutoOpen." + id);
    }
  }

  // @see com.aelitis.azureus.ui.mdi.MdiEntry#setDefaultExpanded(boolean)
  public void setDefaultExpanded(boolean defaultExpanded) {
    COConfigurationManager.setBooleanDefault("SideBar.Expanded." + id, defaultExpanded);
  }

  public boolean isExpanded() {
    return isExpanded == null
        ? COConfigurationManager.getBooleanParameter("SideBar.Expanded." + id)
        : isExpanded;
  }

  public void setExpanded(boolean expanded) {
    isExpanded = expanded;
    boolean defExpanded = true;
    try {
      defExpanded = ConfigurationDefaults.getInstance().getBooleanParameter(
          "SideBar.Expanded." + id);
    } catch (ConfigurationParameterNotFoundException e) {
    }
    if (isExpanded == defExpanded) {
      COConfigurationManager.removeParameter("SideBar.Expanded." + id);
    } else {
      COConfigurationManager.setParameter("SideBar.Expanded." + id, isExpanded);
    }
  }

  public boolean isAdded() {
    return added;
  }

  public void setDisposed(boolean b) {
    disposed = b;
    added = !b;
  }

  public void setImageLeftID(String id) {
    imageLeftID = id;
    imageLeft = null;
    redraw();
  }

  public String getImageLeftID() {
    return imageLeftID;
  }

  /**
   * @param imageLeft the imageLeft to set
   */
  public void setImageLeft(Image imageLeft) {
    this.imageLeft = imageLeft;
    imageLeftID = null;
    redraw();
  }

  public Image getImageLeft(String suffix) {
    if (imageLeft != null) {
      return imageLeft;
    }
    if (imageLeftID == null) {
      return null;
    }
    Image img = null;
    if (suffix == null) {
      img = ImageLoader.getInstance().getImage(imageLeftID);
    } else {
      img = ImageLoader.getInstance().getImage(imageLeftID + suffix);
    }
    if (ImageLoader.isRealImage(img)) {
      return img;
    }
    return null;
  }

  public void releaseImageLeft(String suffix) {
    if (imageLeft != null) {
      ImageLoader.getInstance().releaseImage(imageLeftID + (suffix == null ? "" : suffix));
    }
  }

  public void viewTitleInfoRefresh(ViewTitleInfo titleInfoToRefresh) {
    if (titleInfoToRefresh == null || this.viewTitleInfo != titleInfoToRefresh) {
      return;
    }
    if (isDisposed()) {
      return;
    }

    String newText = (String) viewTitleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_TEXT);
    if (newText != null) {
      setPullTitleFromIView(false);
      setTitle(newText);
    }

    String imageID = (String) viewTitleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_IMAGEID);
    if (imageID != null) {
      setImageLeftID(imageID.length() == 0 ? null : imageID);
    }

    redraw();

    String logID = (String) viewTitleInfo.getTitleInfoProperty(ViewTitleInfo.TITLE_LOGID);
    if (logID != null) {
      setLogID(logID);
    }
  }

  public void build() {
  }

  public void setPreferredAfterID(String preferredAfterID) {
    this.preferredAfterID = preferredAfterID;
  }

  public String getPreferredAfterID() {
    return preferredAfterID;
  }
}
TOP

Related Classes of com.aelitis.azureus.ui.swt.mdi.BaseMdiEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.