blob: 3931667e079488a05ff088be6a72df583c2f0277 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 IBM Corporation and others.
* 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
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.gef.ui.palette;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.gef.internal.ui.palette.editparts.DrawerEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.GroupEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.PaletteStackEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.PinnablePaletteStackEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.SeparatorEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.SliderPaletteEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.TemplateEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.ToolEntryEditPart;
import org.eclipse.gef.internal.ui.palette.editparts.ToolbarEditPart;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteEntry;
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PaletteSeparator;
import org.eclipse.gef.palette.PaletteStack;
import org.eclipse.gef.palette.PaletteTemplateEntry;
import org.eclipse.gef.palette.PaletteToolbar;
import org.eclipse.gef.ui.palette.editparts.PaletteEditPart;
/**
* Factory to create EditParts for different PaletteEntries.
*
* @author Pratik Shah
*/
public class PaletteEditPartFactory implements EditPartFactory {
/**
* Create DrawerEditPart - edit part for PaletteDrawer
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteDrawer
* @return the newly created EditPart
*/
protected EditPart createDrawerEditPart(EditPart parentEditPart,
Object model) {
return new DrawerEditPart((PaletteDrawer) model);
}
/**
* @see org.eclipse.gef.EditPartFactory#createEditPart(EditPart, Object)
*/
public EditPart createEditPart(EditPart parentEditPart, Object model) {
if (model instanceof PaletteRoot)
return createMainPaletteEditPart(parentEditPart, model);
if (model instanceof PaletteStack)
return createStackEditPart(parentEditPart, model);
if (model instanceof PaletteContainer) {
Object type = ((PaletteContainer) model).getType();
if (PaletteDrawer.PALETTE_TYPE_DRAWER.equals(type))
return createDrawerEditPart(parentEditPart, model);
if (PaletteGroup.PALETTE_TYPE_GROUP.equals(type)
|| PaletteContainer.PALETTE_TYPE_UNKNOWN.equals(type))
return createGroupEditPart(parentEditPart, model);
if (PaletteToolbar.PALETTE_TYPE_TOOLBAR_GROUP.equals(type))
return createToolbarEditPart(parentEditPart, model);
}
if (model instanceof PaletteTemplateEntry)
return createTemplateEditPart(parentEditPart, model);
if (model instanceof PaletteSeparator)
return createSeparatorEditPart(parentEditPart, model);
if (model instanceof PaletteEntry)
return createEntryEditPart(parentEditPart, model);
return null;
}
/**
* Create SeparatorEditPart - edit part for PaletteSeparator
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteSeparator
* @return the newly created EditPart
*/
protected EditPart createSeparatorEditPart(EditPart parentEditPart,
Object model) {
return new SeparatorEditPart((PaletteSeparator) model);
}
/**
* Create PaletteStackEditPart - edit part for PaletteStack
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteStack
* @return the newly created EditPart
*/
protected EditPart createStackEditPart(EditPart parentEditPart, Object model) {
if (parentEditPart instanceof PaletteEditPart
&& ((PaletteEditPart) parentEditPart).isToolbarItem()) {
return new PaletteStackEditPart((PaletteStack) model);
}
return new PinnablePaletteStackEditPart((PaletteStack) model);
}
/**
* Create ToolEntryEditPart - edit part for ToolEntry
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the ToolEntry
* @return the newly created EditPart
*/
protected EditPart createEntryEditPart(EditPart parentEditPart, Object model) {
return new ToolEntryEditPart((PaletteEntry) model);
}
/**
* Create GroupEditPart - edit part for PaletteGroup
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteGroup
* @return the newly created EditPart
*/
protected EditPart createGroupEditPart(EditPart parentEditPart, Object model) {
return new GroupEditPart((PaletteContainer) model);
}
/**
* Create ToolbarEditPart - edit part for PaletteToolbar
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteToolbar
* @return the newly created EditPart
*/
protected EditPart createToolbarEditPart(EditPart parentEditPart,
Object model) {
return new ToolbarEditPart((PaletteToolbar) model);
}
/**
* Create SliderPaletteEditPart - edit part for PaletteRoot
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteRoot
* @return the newly created EditPart
*/
protected EditPart createMainPaletteEditPart(EditPart parentEditPart,
Object model) {
return new SliderPaletteEditPart((PaletteRoot) model);
}
/**
* Create TemplateEditPart - edit part for PaletteTemplateEntry
*
* @param parentEditPart
* the parent of the new editpart to be created
* @param model
* the PaletteTemplateEntry
* @return the newly created EditPart
*/
protected EditPart createTemplateEditPart(EditPart parentEditPart,
Object model) {
return new TemplateEditPart((PaletteTemplateEntry) model);
}
}