Package org.dcarew.halostatus

Source Code of org.dcarew.halostatus.HaloStatusStartup

package org.dcarew.halostatus;

import org.dcarew.halostatus.utils.LabelContributionItem;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchWindow;

/**
* The IStartup item for the Halo status project. This is run an Eclipse startup and adds our
* contribution item to the status line.
*
* @author Devon Carew
*/
public class HaloStatusStartup
  implements IStartup
{

  public HaloStatusStartup()
  {
   
  }

  /**
   * Called by the workspace after general statup.
   */
  public void earlyStartup()
  {
    PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
        public void run() {
          addStatusLineContribution();
        }
    });
  }
 
  /**
   * Adds the cruise control status line contrubution. This must be called from the display thread.
   */
  private void addStatusLineContribution()
  {
    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
   
    if (windows.length < 1)
      throw new IllegalStateException("should be at least one workbench window");
   
    WorkbenchWindow window = (WorkbenchWindow)windows[0];
   
    final StatusLineManager statusLineManager = window.getStatusLineManager();
   
    final LabelContributionItem label = new LabelContributionItem(HaloStatusPlugin.PLUGIN_ID + ".statusContribution", 7);
   
    setHaloStatus(label, HaloStatusPlugin.getPlugin().getPlayerCount());
    label.setImage(HaloStatusPlugin.getImage("resources/icons/halo1.gif"));
   
    statusLineManager.add(new Separator("halo"));
    statusLineManager.appendToGroup("halo", label);
   
      statusLineManager.update(true);
     
      HaloStatusPlugin.getPlugin().getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {
      public void propertyChange(PropertyChangeEvent event) {
        if (HaloStatusPlugin.PLAYER_COUNT_PREF.equals(event.getProperty()))
          setHaloStatus(label, (String)event.getNewValue());
      }
      });
  }
 
  private void setHaloStatus(final LabelContributionItem label, final String haloStatus)
  {
    Display.getDefault().asyncExec(new Runnable() {
      public void run() {
        label.setText(haloStatus);
       
        if (haloStatus.length() > 0)
          label.setTooltip(haloStatus + " players online");
        else
          label.setTooltip(" ");
      }
    });
  }
 
}
TOP

Related Classes of org.dcarew.halostatus.HaloStatusStartup

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.