/***********************************************************************************************************************
 * Copyright (c) 2010 Attensity Europe GmbH. All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 **********************************************************************************************************************/
package org.eclipse.smila.processing.designer.ui.palette;

import org.eclipse.bpel.common.ui.palette.IPaletteProvider;
import org.eclipse.bpel.common.ui.palette.PaletteCategory;
import org.eclipse.bpel.ui.util.BPELCreationToolEntry;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.smila.processing.designer.model.processor.ProcessorPackage;
import org.eclipse.smila.processing.designer.ui.factories.InvokePipeletUIFactory;

/**
 * Responsible for extendening the BPEL palette with SMILA items.
 * 
 * Copyright (c) 2010 Attensity Europe GmbH
 * 
 * @author Tobias Liefke
 */
public class SMILADesignerPaletteProvider implements IPaletteProvider {

  /**
   * @see IPaletteProvider#contributeItems(PaletteRoot)
   */
  @Override
  public void contributeItems(PaletteRoot paletteRoot) {
    PaletteCategory category = new PaletteCategory("SMILA");
    category.setCategoryId("org.eclipse.smila");
    category.setOrder(40);

    category.add(new BPELCreationToolEntry("Pipelet", "Invokes a SMILA pipelet", new InvokePipeletUIFactory(
      ProcessorPackage.eINSTANCE.getInvokePipelet())));

    paletteRoot.add(category);
  }

}
