/*
* 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:
* Artem Tikhomirov (Borland) - initial API and implementation
*/
package org.eclipse.gmf.internal.bridge.wizards.pages;
import org.eclipse.gmf.mappings.LinkMapping;
import org.eclipse.gmf.mappings.NodeMapping;
import org.eclipse.gmf.tooldef.AbstractTool;
import org.eclipse.gmf.tooldef.CreationTool;
import org.eclipse.gmf.tooldef.GMFToolFactory;
import org.eclipse.gmf.tooldef.Palette;
import org.eclipse.gmf.tooldef.ToolGroup;
import org.eclipse.gmf.tooldef.ToolRegistry;
/**
* Naive, creates new tool each time, don't care about duplicated mappings.
* @author artem
*/
@SuppressWarnings("unchecked")
public class CreateToolDef implements ToolDefSupplier {
private final Palette myPalette;
private final ToolGroup myNodesGroup;
private final ToolGroup myLinksGroup;
public CreateToolDef(ToolRegistry registry) {
assert registry != null;
if (registry.getPalette() == null) {
myPalette = GMFToolFactory.eINSTANCE.createPalette();
myPalette.setTitle("Generated");
myPalette.setDescription("Generated");
registry.setPalette(myPalette);
} else {
myPalette = registry.getPalette();
}
myNodesGroup = GMFToolFactory.eINSTANCE.createToolGroup();
myNodesGroup.setDescription("Generated node creation tools");
myNodesGroup.setTitle("Nodes");
myLinksGroup = GMFToolFactory.eINSTANCE.createToolGroup();
myLinksGroup.setDescription("Generated link creation tools");
myLinksGroup.setTitle("Links");
myPalette.getTools().add(myNodesGroup);
myPalette.getTools().add(myLinksGroup);
}
public AbstractTool findTool(NodeMapping nm) {
CreationTool t = GMFToolFactory.eINSTANCE.createCreationTool();
t.setTitle("Create Node " + String.valueOf(1 + myNodesGroup.getTools().size()));
t.setSmallIcon(GMFToolFactory.eINSTANCE.createDefaultImage());
myNodesGroup.getTools().add(t);
return t;
}
public AbstractTool findTool(LinkMapping lm) {
CreationTool t = GMFToolFactory.eINSTANCE.createCreationTool();
t.setTitle("Create Link " + String.valueOf(1 + myLinksGroup.getTools().size()));
t.setSmallIcon(GMFToolFactory.eINSTANCE.createDefaultImage());
myLinksGroup.getTools().add(t);
return t;
}
}