/* * Copyright (c) 2006 Borland Software Corporation * * 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: * Dmitry Stadnik (Borland) - initial API and implementation */ package org.eclipse.gmf.tests.setup.annotated; import java.util.Iterator; import java.util.List; import org.eclipse.emf.ecore.EModelElement; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.gmf.tests.setup.ToolDefSource; import org.eclipse.gmf.tooldef.AbstractTool; import org.eclipse.gmf.tooldef.ContextMenu; import org.eclipse.gmf.tooldef.CreationTool; import org.eclipse.gmf.tooldef.GMFToolFactory; import org.eclipse.gmf.tooldef.MainMenu; import org.eclipse.gmf.tooldef.Palette; import org.eclipse.gmf.tooldef.ToolGroup; import org.eclipse.gmf.tooldef.ToolRegistry; /** * Creates tooling definition model from annotated domain model. * * @author dstadnik */ public class ToolDefASetup extends AbstractASetup implements ToolDefSource { protected EPackage ePackage; protected ToolRegistry registry; protected ToolGroup group; public ToolDefASetup(EPackage ePackage) { this.ePackage = ePackage; } protected Iterator<EObject> getAllDomainModelContents() { return ePackage.eAllContents(); } protected void createToolRegistry() { registry = GMFToolFactory.eINSTANCE.createToolRegistry(); Palette palette = GMFToolFactory.eINSTANCE.createPalette(); palette.setTitle("default"); //$NON-NLS-1$ registry.setPalette(palette); group = GMFToolFactory.eINSTANCE.createToolGroup(); group.setTitle("default"); //$NON-NLS-1$ palette.getTools().add(group); processDomainModel(); } protected void processNode(EModelElement element, String name, List<Parameter> params) { group.getTools().add(createCreationTool(element, name, params)); } protected void processLink(EModelElement element, String name, List<Parameter> params) { group.getTools().add(createCreationTool(element, name, params)); } protected CreationTool createCreationTool(EModelElement element, String name, List<Parameter> params) { CreationTool tool = GMFToolFactory.eINSTANCE.createCreationTool(); tool.setTitle(getName(element, name)); tool.setLargeIcon(GMFToolFactory.eINSTANCE.createDefaultImage()); tool.setSmallIcon(GMFToolFactory.eINSTANCE.createDefaultImage()); return tool; } // source public ToolRegistry getRegistry() { if (registry == null) { createToolRegistry(); saveModel(registry, "gmftool"); //$NON-NLS-1$ validate(registry); } return registry; } public Palette getPalette() { return getRegistry().getPalette(); } public AbstractTool getNodeCreationTool() { return null; } public AbstractTool getLinkCreationTool() { return null; } public MainMenu getMainMenu() { return null; } public ContextMenu getNodeContextMenu() { return null; } }