https://bugzilla.redhat.com/show_bug.cgi?id=996874 - same fix but for
old version of bpel editor WITH embedded XPath editors
diff --git a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/dialogs/TypeSelectorDialog.java b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/dialogs/TypeSelectorDialog.java
index 786f9bd..ae488ee 100644
--- a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/dialogs/TypeSelectorDialog.java
+++ b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/dialogs/TypeSelectorDialog.java
@@ -1,375 +1,376 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2012 IBM Corporation and others.
- * 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.bpel.ui.dialogs;
-
-
-import java.util.List;
-
-import org.eclipse.bpel.model.util.BPELUtils;
-import org.eclipse.bpel.ui.Messages;
-import org.eclipse.bpel.ui.details.providers.CompositeContentProvider;
-import org.eclipse.bpel.ui.details.providers.MessageTypeContentProvider;
-import org.eclipse.bpel.ui.details.providers.ModelLabelProvider;
-import org.eclipse.bpel.ui.details.providers.VariableTypeTreeContentProvider;
-import org.eclipse.bpel.ui.details.providers.XSDSchemaFromResourceContentProvider;
-import org.eclipse.bpel.ui.details.providers.XSDTypeOrElementContentProvider;
-import org.eclipse.bpel.ui.util.ModelHelper;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.SelectionDialog;
-import org.eclipse.wst.wsdl.Message;
-
-
-/**
- * Browse for data types available and choose that type.
- *
- * In BPEL, types are just an aggregation of "visible" XML schemas. Visible schemas are
- * schemas imported in the BPEL source file via the import construct and schemas
- * present in WSDL files (which are also imported via the import construct).
- *
- * When browsing for types, two modes are supported by this dialog.
- * 1) Browsing types which are already imported (constitute the type system of the process)
- * 2) Browsing for available types. This includes XML types visible to designer.
- *
- * In addition, one can arbitrarily add an import to the process if the XML schema
- * representing the types is somewhere else (URL, outside file, etc).
- *
- * It should be noted, that currently, no attempt is made to resolve duplicate type entries
- * in the schemas. This is not necessarily a bug.
- *
- * @author Michal Chmielewski (michal.chmielewski@oracle.com)
- *
- */
-
-public class TypeSelectorDialog extends BrowseSelectorDialog {
-
- // https://issues.jboss.org/browse/JBIDE-8045
- // additional filters for constraining XSD & message type selections
- final public static int INCLUDE_SIMPLE_TYPES = 0x1;
- final public static int INCLUDE_COMPLEX_TYPES = 0x2;
- final public static int INCLUDE_ELEMENT_DECLARATIONS = 0x4;
- final public static int INCLUDE_PRIMITIVES = 0x8;
- final public static int INCLUDE_MESSAGE_TYPES = 0x10;
- final public static int INCLUDE_ALL = 0xff;
- final public static int INCLUDE_XSD_TYPES = INCLUDE_SIMPLE_TYPES | INCLUDE_COMPLEX_TYPES;
-
- /* Button id for complex types */
- protected final static int BID_COMPLEX_TYPES = IDialogConstants.CLIENT_ID + 100;
-
- /* Button id for simple types */
- protected final static int BID_SIMPLE_TYPES = IDialogConstants.CLIENT_ID + 101;
-
- /* Button id for element declarations */
- protected final static int BID_ELEMENT_DECLARATIONS = IDialogConstants.CLIENT_ID + 102;
-
- /* Button id for messages */
- protected final static int BID_MESSAGES = IDialogConstants.CLIENT_ID + 103;
-
- /* Button id for primitives */
- protected final static int BID_XSD_PRIMITIVES = IDialogConstants.CLIENT_ID + 104;
-
- /* Whether messages ought to be shown */
- protected boolean showMessages = true;
-
-
- protected XSDTypeOrElementContentProvider xsdTypeProvider = new XSDTypeOrElementContentProvider();
- protected MessageTypeContentProvider messageTypeProvider = new MessageTypeContentProvider();
-
-
- /* Filter types key */
- private static final String FILTER_TYPES_KEY = "FilterTypes"; //$NON-NLS-1$
-
- /* Show messages key in dialog settings */
- private static final String SHOW_MESSAGES_KEY = "ShowMessages"; //$NON-NLS-1$
-
-
- /* Which types to filter ? */
- protected int FILTER_TYPES = XSDTypeOrElementContentProvider.INCLUDE_ALL;
-
- // https://issues.jboss.org/browse/JBIDE-8045
- /* Which types to include as selections (checkboxes) in dialog ? */
- protected int includeTypes = INCLUDE_ALL;
-
- // https://jira.jboss.org/browse/JBIDE-7107
- // set by caller if a selection from the lower tree (typically message parts or XSD elements)
- // are required before "OK" button can be enabled.
- protected boolean requireLowerTreeSelection = false;
-
-
- /**
- * Create a brand new shiny Type Selector Dialog.
- *
- * @param parent the parent shell
- * @param eObj any BPEL model object
- */
- // https://issues.jboss.org/browse/JBIDE-8045
- // add filter selection parameter
- public TypeSelectorDialog (Shell parent, EObject eObj, int filter ) {
- super(parent, new ModelLabelProvider(eObj));
-
- this.includeTypes = filter;
- this.modelObject = eObj;
-
- resourceContentProvider = new XSDSchemaFromResourceContentProvider( modelObject.eResource().getResourceSet() );
-
- CompositeContentProvider ccp = new CompositeContentProvider();
- ccp.add( xsdTypeProvider );
- ccp.add( messageTypeProvider );
- contentProvider = ccp;
-
- treeContentProvider = new VariableTypeTreeContentProvider (true,true);
-
- setTitle(Messages.TypeSelectorDialog_4);
- setMessage(Messages.TypeSelectorDialog_5);
- setLowerViewLabel(Messages.TypeSelectorDialog_7);
- setBrowseFromLabel( Messages.TypeSelectorDialog_9 );
-
- // Restore some dialog settings ...
- IDialogSettings settings = getDialogSettings();
- try {
- FILTER_TYPES = settings.getInt(FILTER_TYPES_KEY);
- } catch (Exception ex) {
- FILTER_TYPES = XSDTypeOrElementContentProvider.INCLUDE_ALL;
- }
-
- try {
- showMessages = settings.getBoolean(SHOW_MESSAGES_KEY);
- } catch (Exception ex) {
- showMessages = false;
- }
- }
-
- /**
- * Hook a load on the defaults into this dialog upon create.
- *
- */
-
- @Override
- protected Control createContents(Composite parent) {
-
- Control control = super.createContents(parent);
-
- // Re-Create the state of the providers from the dialog settings.
- setProviderFilters();
-
- refresh();
-
- return control;
- }
-
-
-
- @Override
- protected void saveSettings () {
- super.saveSettings();
- IDialogSettings settings = getDialogSettings();
- settings.put ( FILTER_TYPES_KEY, FILTER_TYPES );
- settings.put ( SHOW_MESSAGES_KEY, showMessages);
- }
-
- /**
- * Handle the check button and radio button callbacks.
- *
- * @param id
- * @param checked
- */
-
- @Override
- protected void buttonPressed (int id, boolean checked, boolean bRefresh) {
-
- int bits = 0;
-
- switch (id) {
- case BID_SIMPLE_TYPES :
- bits = XSDTypeOrElementContentProvider.INCLUDE_SIMPLE_TYPES;
- break;
-
- case BID_COMPLEX_TYPES :
- bits = XSDTypeOrElementContentProvider.INCLUDE_COMPLEX_TYPES;
- break;
-
- case BID_ELEMENT_DECLARATIONS :
- bits = XSDTypeOrElementContentProvider.INCLUDE_ELEMENT_DECLARATIONS;
- break;
-
- case BID_XSD_PRIMITIVES :
- bits = XSDTypeOrElementContentProvider.INCLUDE_PRIMITIVES;
- break;
-
- case BID_MESSAGES :
- showMessages = checked;
- // https://issues.jboss.org/browse/JBIDE-8075
- // enable/disable selection of Message objects
- setProviderFilters();
- bRefresh = true;
- break;
-
- default :
- // exit the function here
- super.buttonPressed(id, checked,bRefresh);
- return;
- }
-
-
- // adjust the filter
- if (bits != 0) {
- if (checked) {
- FILTER_TYPES |= bits;
- } else {
- FILTER_TYPES &= ~bits;
- }
- setProviderFilters();
- }
-
- if (bRefresh) {
- refresh();
- }
- }
-
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent,
- BID_ADD_IMPORT,
- Messages.TypeSelectorDialog_3,
- false);
- super.createButtonsForButtonBar(parent);
- }
-
- @Override
- protected void createBrowseFilterGroupButtons ( Group group ) {
-
- // https://issues.jboss.org/browse/JBIDE-8045
- if ((includeTypes & INCLUDE_PRIMITIVES) > 0 )
- createCheckButton(group,Messages.TypeSelectorDialog_14, BID_XSD_PRIMITIVES,
- (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_PRIMITIVES) > 0 );
- if ((includeTypes & INCLUDE_SIMPLE_TYPES) > 0 )
- createCheckButton(group,Messages.TypeSelectorDialog_15, BID_SIMPLE_TYPES,
- (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_SIMPLE_TYPES) > 0 );
- if ((includeTypes & INCLUDE_COMPLEX_TYPES) > 0 )
- createCheckButton(group,Messages.TypeSelectorDialog_16, BID_COMPLEX_TYPES,
- (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_COMPLEX_TYPES ) > 0 );
- if ((includeTypes & INCLUDE_ELEMENT_DECLARATIONS) > 0 )
- createCheckButton(group,Messages.TypeSelectorDialog_17, BID_ELEMENT_DECLARATIONS,
- (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_ELEMENT_DECLARATIONS ) > 0 );
- if ((includeTypes & INCLUDE_MESSAGE_TYPES) > 0 )
- createCheckButton(group,Messages.TypeSelectorDialog_18, BID_MESSAGES,
- showMessages);
-
- super.createBrowseFilterGroupButtons( group );
- }
-
-
-
- @Override
- protected List collectItemsFromImports() {
-
- List list = ModelHelper.getSchemas(modelObject,true);
-
- if (showMessages) {
- list.addAll ( ModelHelper.getDefinitions(modelObject) );
- }
-
- return list;
- }
-
- // https://jira.jboss.org/browse/JBIDE-7107
- @Override
- protected void updateOkState() {
- super.updateOkState();
-
- boolean enabled = true;
- computeResult();
- Object obj = getFirstResult();
- // We need to check whether namespace prefix has been already defined
- if (obj instanceof Message) {
- if (!checkNamespace((Message) obj)){
- enabled = false;
- }
- }
- if ( getResult().length<2 && this.requireLowerTreeSelection )
- enabled = false;
-
- getOkButton().setEnabled(enabled);
- }
-
- @Override
- protected void okPressed() {
- computeResult();
- Object obj = getFirstResult();
- // We need to check whether namespace prefix has been already defined
- if (obj instanceof Message) {
- if (!checkNamespace((Message) obj)){
- return;
- }
- }
- if ( getResult().length<2 && this.requireLowerTreeSelection )
- return;
- super.okPressed();
- }
-
- private boolean checkNamespace(Message message) {
- String targetNamespace = message.getQName().getNamespaceURI();
- String prefix = BPELUtils.getNamespacePrefix (modelObject, targetNamespace);
- if (prefix != null) {
- return true;
- }
- // We have to map the namespace to a prefix.
- NamespaceMappingDialog dialog = new NamespaceMappingDialog(getShell(),modelObject);
- dialog.setNamespace( targetNamespace );
-
- if (dialog.open() == Window.CANCEL) {
- return false;
- }
-
- // define the prefix
- BPELUtils.setPrefix( BPELUtils.getProcess(modelObject), targetNamespace, dialog.getPrefix());
- return true;
- }
-
-
- /**
- * https://issues.jboss.org/browse/JBIDE-8045
- * Enable or disable lower tree selection required flag (see this.requireLowerTreeSelection)
- *
- * @param enabled
- */
- public void setRequireLowerTreeSelection(boolean enabled)
- {
- this.requireLowerTreeSelection = enabled;
- }
-
- // https://issues.jboss.org/browse/JBIDE-8045
- public void setIncludeTypes(int includeTypes) {
- this.includeTypes = includeTypes;
- }
-
- // https://issues.jboss.org/browse/JBIDE-8045
- // update the provider filters for only those types selected and available
- private void setProviderFilters() {
-
- xsdTypeProvider.setFilter( FILTER_TYPES & includeTypes );
-
- // https://issues.jboss.org/browse/JBIDE-8075
- // enable/disable selection of Message objects
- if ( (includeTypes & INCLUDE_MESSAGE_TYPES) > 0 ) {
- messageTypeProvider.setFilter( showMessages ? 1 : 0 );
- }
- else {
- messageTypeProvider.setFilter( 0 );
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2005, 2012 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.bpel.ui.dialogs;
+
+
+import java.util.List;
+
+import org.eclipse.bpel.model.util.BPELUtils;
+import org.eclipse.bpel.ui.Messages;
+import org.eclipse.bpel.ui.details.providers.CompositeContentProvider;
+import org.eclipse.bpel.ui.details.providers.MessageTypeContentProvider;
+import org.eclipse.bpel.ui.details.providers.ModelLabelProvider;
+import org.eclipse.bpel.ui.details.providers.VariableTypeTreeContentProvider;
+import org.eclipse.bpel.ui.details.providers.XSDSchemaFromResourceContentProvider;
+import org.eclipse.bpel.ui.details.providers.XSDTypeOrElementContentProvider;
+import org.eclipse.bpel.ui.util.ModelHelper;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.SelectionDialog;
+import org.eclipse.wst.wsdl.Message;
+
+
+/**
+ * Browse for data types available and choose that type.
+ *
+ * In BPEL, types are just an aggregation of "visible" XML schemas. Visible schemas are
+ * schemas imported in the BPEL source file via the import construct and schemas
+ * present in WSDL files (which are also imported via the import construct).
+ *
+ * When browsing for types, two modes are supported by this dialog.
+ * 1) Browsing types which are already imported (constitute the type system of the process)
+ * 2) Browsing for available types. This includes XML types visible to designer.
+ *
+ * In addition, one can arbitrarily add an import to the process if the XML schema
+ * representing the types is somewhere else (URL, outside file, etc).
+ *
+ * It should be noted, that currently, no attempt is made to resolve duplicate type entries
+ * in the schemas. This is not necessarily a bug.
+ *
+ * @author Michal Chmielewski (michal.chmielewski@oracle.com)
+ *
+ */
+
+public class TypeSelectorDialog extends BrowseSelectorDialog {
+
+ // https://issues.jboss.org/browse/JBIDE-8045
+ // additional filters for constraining XSD & message type selections
+ final public static int INCLUDE_SIMPLE_TYPES = 0x1;
+ final public static int INCLUDE_COMPLEX_TYPES = 0x2;
+ final public static int INCLUDE_ELEMENT_DECLARATIONS = 0x4;
+ final public static int INCLUDE_PRIMITIVES = 0x8;
+ final public static int INCLUDE_MESSAGE_TYPES = 0x10;
+ final public static int INCLUDE_ALL = 0xff;
+ final public static int INCLUDE_XSD_TYPES = INCLUDE_SIMPLE_TYPES | INCLUDE_COMPLEX_TYPES;
+
+ /* Button id for complex types */
+ protected final static int BID_COMPLEX_TYPES = IDialogConstants.CLIENT_ID + 100;
+
+ /* Button id for simple types */
+ protected final static int BID_SIMPLE_TYPES = IDialogConstants.CLIENT_ID + 101;
+
+ /* Button id for element declarations */
+ protected final static int BID_ELEMENT_DECLARATIONS = IDialogConstants.CLIENT_ID + 102;
+
+ /* Button id for messages */
+ protected final static int BID_MESSAGES = IDialogConstants.CLIENT_ID + 103;
+
+ /* Button id for primitives */
+ protected final static int BID_XSD_PRIMITIVES = IDialogConstants.CLIENT_ID + 104;
+
+ /* Whether messages ought to be shown */
+ protected boolean showMessages = true;
+
+
+ protected XSDTypeOrElementContentProvider xsdTypeProvider = new XSDTypeOrElementContentProvider();
+ protected MessageTypeContentProvider messageTypeProvider = new MessageTypeContentProvider();
+
+
+ /* Filter types key */
+ private static final String FILTER_TYPES_KEY = "FilterTypes"; //$NON-NLS-1$
+
+ /* Show messages key in dialog settings */
+ private static final String SHOW_MESSAGES_KEY = "ShowMessages"; //$NON-NLS-1$
+
+
+ /* Which types to filter ? */
+ protected int FILTER_TYPES = XSDTypeOrElementContentProvider.INCLUDE_ALL;
+
+ // https://issues.jboss.org/browse/JBIDE-8045
+ /* Which types to include as selections (checkboxes) in dialog ? */
+ protected int includeTypes = INCLUDE_ALL;
+
+ // https://jira.jboss.org/browse/JBIDE-7107
+ // set by caller if a selection from the lower tree (typically message parts or XSD elements)
+ // are required before "OK" button can be enabled.
+ protected boolean requireLowerTreeSelection = false;
+
+
+ /**
+ * Create a brand new shiny Type Selector Dialog.
+ *
+ * @param parent the parent shell
+ * @param eObj any BPEL model object
+ */
+ // https://issues.jboss.org/browse/JBIDE-8045
+ // add filter selection parameter
+ public TypeSelectorDialog (Shell parent, EObject eObj, int filter ) {
+ super(parent, new ModelLabelProvider(eObj));
+
+ this.includeTypes = filter;
+ this.modelObject = eObj;
+
+ resourceContentProvider = new XSDSchemaFromResourceContentProvider( modelObject.eResource().getResourceSet() );
+
+ CompositeContentProvider ccp = new CompositeContentProvider();
+ ccp.add( xsdTypeProvider );
+ ccp.add( messageTypeProvider );
+ contentProvider = ccp;
+
+ treeContentProvider = new VariableTypeTreeContentProvider (true,true);
+
+ setTitle(Messages.TypeSelectorDialog_4);
+ setMessage(Messages.TypeSelectorDialog_5);
+ setLowerViewLabel(Messages.TypeSelectorDialog_7);
+ setBrowseFromLabel( Messages.TypeSelectorDialog_9 );
+
+ // Restore some dialog settings ...
+ IDialogSettings settings = getDialogSettings();
+ try {
+ FILTER_TYPES = settings.getInt(FILTER_TYPES_KEY);
+ } catch (Exception ex) {
+ FILTER_TYPES = XSDTypeOrElementContentProvider.INCLUDE_ALL;
+ }
+
+ try {
+ showMessages = settings.getBoolean(SHOW_MESSAGES_KEY);
+ } catch (Exception ex) {
+ showMessages = false;
+ }
+ }
+
+ /**
+ * Hook a load on the defaults into this dialog upon create.
+ *
+ */
+
+ @Override
+ protected Control createContents(Composite parent) {
+
+ Control control = super.createContents(parent);
+
+ // Re-Create the state of the providers from the dialog settings.
+ setProviderFilters();
+
+ refresh();
+
+ return control;
+ }
+
+
+
+ @Override
+ protected void saveSettings () {
+ super.saveSettings();
+ IDialogSettings settings = getDialogSettings();
+ settings.put ( FILTER_TYPES_KEY, FILTER_TYPES );
+ settings.put ( SHOW_MESSAGES_KEY, showMessages);
+ }
+
+ /**
+ * Handle the check button and radio button callbacks.
+ *
+ * @param id
+ * @param checked
+ */
+
+ @Override
+ protected void buttonPressed (int id, boolean checked, boolean bRefresh) {
+
+ int bits = 0;
+
+ switch (id) {
+ case BID_SIMPLE_TYPES :
+ bits = XSDTypeOrElementContentProvider.INCLUDE_SIMPLE_TYPES;
+ break;
+
+ case BID_COMPLEX_TYPES :
+ bits = XSDTypeOrElementContentProvider.INCLUDE_COMPLEX_TYPES;
+ break;
+
+ case BID_ELEMENT_DECLARATIONS :
+ bits = XSDTypeOrElementContentProvider.INCLUDE_ELEMENT_DECLARATIONS;
+ break;
+
+ case BID_XSD_PRIMITIVES :
+ bits = XSDTypeOrElementContentProvider.INCLUDE_PRIMITIVES;
+ break;
+
+ case BID_MESSAGES :
+ showMessages = checked;
+ // https://issues.jboss.org/browse/JBIDE-8075
+ // enable/disable selection of Message objects
+ setProviderFilters();
+ bRefresh = true;
+ break;
+
+ default :
+ // exit the function here
+ super.buttonPressed(id, checked,bRefresh);
+ return;
+ }
+
+
+ // adjust the filter
+ if (bits != 0) {
+ if (checked) {
+ FILTER_TYPES |= bits;
+ } else {
+ FILTER_TYPES &= ~bits;
+ }
+ setProviderFilters();
+ }
+
+ if (bRefresh) {
+ refresh();
+ }
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent,
+ BID_ADD_IMPORT,
+ Messages.TypeSelectorDialog_3,
+ false);
+ super.createButtonsForButtonBar(parent);
+ }
+
+ @Override
+ protected void createBrowseFilterGroupButtons ( Group group ) {
+
+ // https://issues.jboss.org/browse/JBIDE-8045
+ if ((includeTypes & INCLUDE_PRIMITIVES) > 0 )
+ createCheckButton(group,Messages.TypeSelectorDialog_14, BID_XSD_PRIMITIVES,
+ (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_PRIMITIVES) > 0 );
+ if ((includeTypes & INCLUDE_SIMPLE_TYPES) > 0 )
+ createCheckButton(group,Messages.TypeSelectorDialog_15, BID_SIMPLE_TYPES,
+ (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_SIMPLE_TYPES) > 0 );
+ if ((includeTypes & INCLUDE_COMPLEX_TYPES) > 0 )
+ createCheckButton(group,Messages.TypeSelectorDialog_16, BID_COMPLEX_TYPES,
+ (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_COMPLEX_TYPES ) > 0 );
+ if ((includeTypes & INCLUDE_ELEMENT_DECLARATIONS) > 0 )
+ createCheckButton(group,Messages.TypeSelectorDialog_17, BID_ELEMENT_DECLARATIONS,
+ (FILTER_TYPES & XSDTypeOrElementContentProvider.INCLUDE_ELEMENT_DECLARATIONS ) > 0 );
+ if ((includeTypes & INCLUDE_MESSAGE_TYPES) > 0 )
+ createCheckButton(group,Messages.TypeSelectorDialog_18, BID_MESSAGES,
+ showMessages);
+
+ super.createBrowseFilterGroupButtons( group );
+ }
+
+
+
+ @Override
+ protected List collectItemsFromImports() {
+
+ List list = ModelHelper.getSchemas(modelObject,true);
+
+ if (showMessages) {
+ list.addAll ( ModelHelper.getDefinitions(modelObject) );
+ }
+
+ return list;
+ }
+
+ // https://jira.jboss.org/browse/JBIDE-7107
+ @Override
+ protected void updateOkState() {
+ super.updateOkState();
+
+ boolean enabled = true;
+ computeResult();
+ Object obj = getFirstResult();
+ // We need to check whether namespace prefix has been already defined
+ if (obj instanceof Message) {
+ if (!checkNamespace((Message) obj)){
+ enabled = false;
+ }
+ }
+ if ( getResult().length<2 && this.requireLowerTreeSelection )
+ enabled = false;
+
+ if (getOkButton()!=null)
+ getOkButton().setEnabled(enabled);
+ }
+
+ @Override
+ protected void okPressed() {
+ computeResult();
+ Object obj = getFirstResult();
+ // We need to check whether namespace prefix has been already defined
+ if (obj instanceof Message) {
+ if (!checkNamespace((Message) obj)){
+ return;
+ }
+ }
+ if ( getResult().length<2 && this.requireLowerTreeSelection )
+ return;
+ super.okPressed();
+ }
+
+ private boolean checkNamespace(Message message) {
+ String targetNamespace = message.getQName().getNamespaceURI();
+ String prefix = BPELUtils.getNamespacePrefix (modelObject, targetNamespace);
+ if (prefix != null) {
+ return true;
+ }
+ // We have to map the namespace to a prefix.
+ NamespaceMappingDialog dialog = new NamespaceMappingDialog(getShell(),modelObject);
+ dialog.setNamespace( targetNamespace );
+
+ if (dialog.open() == Window.CANCEL) {
+ return false;
+ }
+
+ // define the prefix
+ BPELUtils.setPrefix( BPELUtils.getProcess(modelObject), targetNamespace, dialog.getPrefix());
+ return true;
+ }
+
+
+ /**
+ * https://issues.jboss.org/browse/JBIDE-8045
+ * Enable or disable lower tree selection required flag (see this.requireLowerTreeSelection)
+ *
+ * @param enabled
+ */
+ public void setRequireLowerTreeSelection(boolean enabled)
+ {
+ this.requireLowerTreeSelection = enabled;
+ }
+
+ // https://issues.jboss.org/browse/JBIDE-8045
+ public void setIncludeTypes(int includeTypes) {
+ this.includeTypes = includeTypes;
+ }
+
+ // https://issues.jboss.org/browse/JBIDE-8045
+ // update the provider filters for only those types selected and available
+ private void setProviderFilters() {
+
+ xsdTypeProvider.setFilter( FILTER_TYPES & includeTypes );
+
+ // https://issues.jboss.org/browse/JBIDE-8075
+ // enable/disable selection of Message objects
+ if ( (includeTypes & INCLUDE_MESSAGE_TYPES) > 0 ) {
+ messageTypeProvider.setFilter( showMessages ? 1 : 0 );
+ }
+ else {
+ messageTypeProvider.setFilter( 0 );
+ }
+ }
+}