/* * Copyright (c) 2006, 2007 Borland Software Corp. * * 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 - initial API and implementation */ package org.eclipse.gmf.internal.common.ui; import java.util.LinkedHashMap; import java.util.Map; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.swt.widgets.Composite; /** * @author dstadnik */ public class ExtensibleModelSelectionPage extends ModelSelectionPage { private Map<String, ModelSelectionPageExtension> extensions; // id -> extension public ExtensibleModelSelectionPage(String pageId, ResourceLocationProvider rloc, ResourceSet resourceSet) { this(pageId, rloc, resourceSet, null); } public ExtensibleModelSelectionPage(String pageId, ResourceLocationProvider rloc, ResourceSet resourceSet, String modelFileExtension) { super(pageId, rloc, resourceSet, modelFileExtension); extensions = new LinkedHashMap<String, ModelSelectionPageExtension>(); addExtensions(); } protected void addExtensions() { } public void addExtension(String id, ModelSelectionPageExtension extension) { assert id != null; assert extension != null; assert getControl() == null; extensions.put(id, extension); } public ModelSelectionPageExtension getExtension(String id) { return extensions.get(id); } @Override public void createAdditionalControls(Composite parent) { for (ModelSelectionPageExtension extension : extensions.values()) { extension.createControl(parent); } } @Override protected void resourceChanged() { for (ModelSelectionPageExtension extension : extensions.values()) { extension.setResource(getResource()); } } }