/** * Copyright (c) 2010-2012 ISBAN S.L * * 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: * Ruben De Dios (ISBAN S.L) * Andrez Alvarez Mattos (ISBAN S.L) */ package org.eclipse.gmf.tooling.simplemap.model.triggers.parent; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.gmfgraph.Canvas; import org.eclipse.gmf.gmfgraph.DiagramLabel; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.Label; import org.eclipse.gmf.tooldef.CreationTool; import org.eclipse.gmf.tooldef.DefaultImage; import org.eclipse.gmf.tooldef.GMFToolFactory; import org.eclipse.gmf.tooldef.Palette; import org.eclipse.gmf.tooling.simplemap.model.triggers.AbstractTrigger; import org.eclipse.gmf.tooling.simplemap.simplemappings.SimpleChildNode; import org.eclipse.gmf.tooling.simplemap.simplemappings.SimpleCompartment; import org.eclipse.gmf.tooling.simplemap.simplemappings.SimpleLabelNode; import org.eclipse.gmf.tooling.simplemap.simplemappings.SimpleLinkMapping; import org.eclipse.gmf.tooling.simplemap.simplemappings.SimpleNode; public abstract class NewElementTrigger extends AbstractTrigger { private Canvas canvas; private Palette palette; protected CanvasFactory canvasFactory; public NewElementTrigger(TransactionalEditingDomain domain, SimpleChildNode newNode) { super(domain); this.canvas = newNode.getParentMapping().getCanvas(); this.palette = newNode.getParentMapping().getPalette(); canvasFactory = new CanvasFactory(canvas); } /** * Creamos una nueva herramienta para el nuevo nodo * @return */ protected CreationTool createNewTool() { CreationTool newCreationTool = GMFToolFactory.eINSTANCE.createCreationTool(); DefaultImage smallIcon = GMFToolFactory.eINSTANCE.createDefaultImage(); DefaultImage largeIcon = GMFToolFactory.eINSTANCE.createDefaultImage(); newCreationTool.setSmallIcon(smallIcon); newCreationTool.setLargeIcon(largeIcon); palette.getTools().add(newCreationTool); return newCreationTool; } protected Label getLabelFigure(Object selected) { Figure figure = null; if (selected instanceof SimpleNode) { DiagramLabel diagramLabel = ((SimpleNode) selected).getDiagramLabel(); if (diagramLabel != null && diagramLabel.getAccessor() != null) figure = diagramLabel.getAccessor().getFigure(); } if (selected instanceof SimpleLabelNode) { figure = ((SimpleNode) selected).getDiagramLabel().getFigure().getActualFigure(); } if (selected instanceof SimpleCompartment) { figure = getLabelFigure(((SimpleCompartment) selected).getParent()); } if (selected instanceof SimpleLinkMapping) { figure = ((SimpleLinkMapping) selected).getDiagramLabel().getFigure().getActualFigure(); } return (Label) figure; } }