| /******************************************************************************* |
| * Copyright (c) 2011, 2012 Red Hat, Inc. |
| * All rights reserved. |
| * This program is 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: |
| * Red Hat, Inc. - initial API and implementation |
| * |
| * @author Bob Brodt |
| ******************************************************************************/ |
| |
| package org.eclipse.bpmn2.modeler.ui.property.dialogs; |
| import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime; |
| import org.eclipse.bpmn2.modeler.ui.Activator; |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.dialogs.SelectionStatusDialog; |
| |
| /** |
| * This class is a delegate for a Schema Import Dialog which may be supplied by the currently |
| * active Target Runtime. The Target Runtime plugin is searched for an "importDialog" extension |
| * and, if found, the class defined by that extension is used as the import dialog. |
| * |
| * The class must be a subclass of org.eclipse.ui.dialogs.SelectionStatusDialog and may |
| * either build on the default implementation DefaultSchemaImportDialog, or may completely |
| * replace it. |
| * |
| * See the extension point org.eclipse.bpmn2.modeler.ui for a complete description. |
| */ |
| |
| public class SchemaImportDialog { |
| // resource type flags for configuring this dialog: |
| public final static int ALLOW_XSD = (1 << 0); |
| public final static int ALLOW_WSDL = (1 << 1); |
| public final static int ALLOW_BPMN2 = (1 << 2); |
| public final static int ALLOW_JAVA = (1 << 3); |
| |
| SelectionStatusDialog delegate = null; |
| |
| /** |
| * Create a brand new shiny Schema Import Dialog. |
| * |
| * @param parent |
| * @param targetRuntime |
| * @param allowedResourceTypes |
| */ |
| public SchemaImportDialog(Shell parent, TargetRuntime targetRuntime, int allowedResourceTypes) { |
| |
| // Get the SchemaImportDialog class for this Target Runtime from contributing plugins; |
| // if none found, use a default |
| IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor( |
| Activator.UI_EXTENSION_ID); |
| try { |
| for (IConfigurationElement e : config) { |
| if (e.getName().equals("importDialog")) { //$NON-NLS-1$ |
| String id = e.getAttribute("id"); //$NON-NLS-1$ |
| String runtimeId = e.getAttribute("runtimeId"); //$NON-NLS-1$ |
| if (targetRuntime!=null && targetRuntime.getId().equals(runtimeId)) { |
| delegate = (SelectionStatusDialog)e.createExecutableExtension("class"); //$NON-NLS-1$ |
| break; |
| } |
| } |
| } |
| } |
| catch (Exception ex) { |
| Activator.logError(ex); |
| } |
| if (delegate==null) |
| delegate = new DefaultSchemaImportDialog(parent,allowedResourceTypes); |
| } |
| |
| public SchemaImportDialog(Shell parent, TargetRuntime targetRuntime) { |
| this(parent, targetRuntime, -1); |
| } |
| |
| public int open() { |
| return delegate.open(); |
| } |
| |
| public Object[] getResult() { |
| return delegate.getResult(); |
| } |
| } |