Package ch.fusun.baron.map.ui

Source Code of ch.fusun.baron.map.ui.TileActionRegistry

package ch.fusun.baron.map.ui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;

import ch.fusun.baron.core.injection.ReInjector;
import ch.fusun.baron.map.ui.views.TileAction;

/**
* Registry for all tile actions. Loads all the registered {@link TileAction}s
*/
public class TileActionRegistry {

  private static final String TILEACTION_ID = "ch.fusun.baron.map.ui.tileaction"; //$NON-NLS-1$
  private static final String TILEACTION = "action"; //$NON-NLS-1$
  private static final String TILEIMAGE = "image"; //$NON-NLS-1$
  private static TileActionRegistry instance;
  private final List<TileAction> tileActions;
  private final Map<TileAction, String> imageMap = new HashMap<TileAction, String>();

  /**
   * Constructor
   */
  public TileActionRegistry() {
    tileActions = new ArrayList<TileAction>();
    IConfigurationElement[] config = Platform.getExtensionRegistry()
        .getConfigurationElementsFor(TILEACTION_ID);
    try {
      for (IConfigurationElement e : config) {
        TileAction bean = (TileAction) e
            .createExecutableExtension(TILEACTION);
        ReInjector.getInstance().reInject(bean);
        tileActions.add(bean);
        if (e.getAttribute(TILEIMAGE) != null
            && !e.getAttribute(TILEIMAGE).isEmpty()) {
          imageMap.put(bean, e.getAttribute(TILEIMAGE));
        }
      }
    } catch (CoreException ex) {
      System.err.println("Handle this error with log or so: " //$NON-NLS-1$
          + ex.getMessage());
    }
  }

  /**
   * @return The singleton instance
   */
  public static TileActionRegistry getInstance() {
    if (instance == null) {
      instance = new TileActionRegistry();
    }
    return instance;
  }

  /**
   * @return All the available tile actions
   */
  public List<TileAction> getTileActions() {
    return tileActions;
  }

  /**
   * @param action
   *            The action
   * @return does the image map contain the action
   */
  public boolean hasImage(TileAction action) {
    return imageMap.containsKey(action);
  }

  /**
   * @param action
   *            The action
   * @param display
   *            The display
   * @return THe loaded image
   */
  public Image getImage(TileAction action, Display display) {
    return action.loadImage(display, imageMap.get(action));
  }
}
TOP

Related Classes of ch.fusun.baron.map.ui.TileActionRegistry

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.