[jbosstools-commits] JBoss Tools SVN: r30561 - in trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui: commands and 2 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Apr 13 13:40:26 EDT 2011


Author: bbrodt
Date: 2011-04-13 13:40:25 -0400 (Wed, 13 Apr 2011)
New Revision: 30561

Modified:
   trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java
   trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/commands/SetOnEventVariableTypeCommand.java
   trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties
   trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/properties/InvokeImplSection.java
   trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java
Log:
https://issues.jboss.org/browse/JBIDE-8305
added support for selecting an "element" for OnEvent handler

Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java	2011-04-13 16:31:30 UTC (rev 30560)
+++ trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java	2011-04-13 17:40:25 UTC (rev 30561)
@@ -458,6 +458,11 @@
 	public static String InvokeImplDetails_Partner__10;
 	public static String InvokeImplDetails_Request_3_Plain;
 	public static String InvokeImplDetails_Response_4_Plain;
+	// https://issues.jboss.org/browse/JBIDE-8305
+	public static String InvokeImplDetails_MessageType;
+	public static String InvokeImplDetails_Element;
+	public static String InvokeImplDetails_MessageTypeOrElement;
+
 	public static String InvokeImplSection_None_1;
 	public static String JoinConditionSection_Create_a_New_Condition_3;
 	public static String JoinConditionSection_No_condition_specified_1;

Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/commands/SetOnEventVariableTypeCommand.java
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/commands/SetOnEventVariableTypeCommand.java	2011-04-13 16:31:30 UTC (rev 30560)
+++ trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/commands/SetOnEventVariableTypeCommand.java	2011-04-13 17:40:25 UTC (rev 30561)
@@ -15,32 +15,41 @@
 import org.eclipse.wst.wsdl.Input;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Operation;
+import org.eclipse.wst.wsdl.Part;
+import org.eclipse.xsd.XSDElementDeclaration;
 
-public class SetOnEventVariableTypeCommand extends AutoUndoCommand {
+public class SetOnEventVariableTypeCommand extends SetCommand {
 	
-	OnEvent onEvent;
-	
 	public SetOnEventVariableTypeCommand(OnEvent onEvent) {
-		super(onEvent);
-		this.onEvent = onEvent;
+		super(onEvent,null);
 	}
 	
 	@Override
 	public void doExecute() {
-		if (onEvent.getVariable() == null) {
-			onEvent.setMessageType(null);
-		} else {
-			Message message = null;
-			if (onEvent.getOperation() != null) {
-				Operation op = onEvent.getOperation();
-				if (op != null) {
-					Input input = op.getEInput();
-					if (input != null) {
-						message = input.getEMessage();
+		if (fTarget instanceof OnEvent) {
+			OnEvent onEvent = (OnEvent) fTarget;
+			if (onEvent.getVariable() == null) {
+				onEvent.setMessageType(null);
+			} else {
+				if (fNewValue instanceof XSDElementDeclaration) {
+					onEvent.setMessageType(null);
+					onEvent.setXSDElement((XSDElementDeclaration)fNewValue);
+				}
+				else {
+					Message message = null;
+					if (onEvent.getOperation() != null) {
+						Operation op = onEvent.getOperation();
+						if (op != null) {
+							Input input = op.getEInput();
+							if (input != null) {
+								message = input.getEMessage();
+							}
+						}
 					}
+					onEvent.setMessageType(message);
+					onEvent.setXSDElement(null);
 				}
 			}
-			onEvent.setMessageType(message);
 		}
 	}
-}
+}
\ No newline at end of file

Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties	2011-04-13 16:31:30 UTC (rev 30560)
+++ trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties	2011-04-13 17:40:25 UTC (rev 30561)
@@ -355,6 +355,9 @@
 InvokeImplDetails_Partner__10=Par&tner Link\:
 InvokeImplDetails_Request_3_Plain=Request
 InvokeImplDetails_Response_4_Plain=Response
+InvokeImplDetails_MessageType=Message Type\:
+InvokeImplDetails_Element=Element\:
+InvokeImplDetails_MessageTypeOrElement=Message/Element\:
 InvokeImplSection_None_1=(none)
 InvokeImplSection_0=Create Global Partner Link.
 InvokeImplSection_1=Create Local Partner Link.

Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/properties/InvokeImplSection.java
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/properties/InvokeImplSection.java	2011-04-13 16:31:30 UTC (rev 30560)
+++ trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/properties/InvokeImplSection.java	2011-04-13 17:40:25 UTC (rev 30561)
@@ -102,8 +102,10 @@
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Output;
+import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.WSDLFactory;
+import org.eclipse.xsd.XSDElementDeclaration;
 
 /**
  * Details section for the Partner/PortType/Operation properties of a
@@ -138,6 +140,9 @@
 	private Text faultText;
 	// https://issues.jboss.org/browse/JBIDE-7861
 	private boolean ignoreQuickPickSelection = false;
+	// https://issues.jboss.org/browse/JBIDE-8305
+	private Label messageOrElementLabel;
+	private Text messageOrElementText;
 	
 	private IControlContentAdapter fTextContentAdapter = new TextContentAdapter() {
 		@Override
@@ -216,11 +221,13 @@
 							updatePartnerWidgets();
 							updatePortTypeWidgets();
 							updateOperationWidgets();
+							updateMessageOrElementWidgets(); // https://issues.jboss.org/browse/JBIDE-8305
 							updateFaultWidgets();
 						} else if (ModelHelper.isOperationAffected(input, n)) {
 							upp = true;
 							updatePortTypeWidgets();
-							updateOperationWidgets();							
+							updateOperationWidgets();		
+							updateMessageOrElementWidgets(); // https://issues.jboss.org/browse/JBIDE-8305
 							updateFaultWidgets();
 						} else {							
 							updateFaultWidgets();								
@@ -265,6 +272,7 @@
 		updatePartnerWidgets();
 		updatePortTypeWidgets();
 		updateOperationWidgets();
+		updateMessageOrElementWidgets(); // https://issues.jboss.org/browse/JBIDE-8305
 		updateFaultWidgets();		
 		
 	}
@@ -654,8 +662,40 @@
 		return composite;
 	}
 	
+	// https://issues.jboss.org/browse/JBIDE-8305
+	private  Composite createMessageOrElementWidgets(Composite top, Composite parent) {
+		FlatFormData data;
+		
+		final Composite composite = createFlatFormComposite(parent);
+		data = new FlatFormData();
+		if (top == null) {
+			data.top = new FlatFormAttachment(0, IDetailsAreaConstants.VSPACE);
+		} else {
+			data.top = new FlatFormAttachment(top,  IDetailsAreaConstants.VSPACE );
+		}
+		data.left = new FlatFormAttachment(0, IDetailsAreaConstants.HSPACE);
+		data.right = new FlatFormAttachment(SPLIT_POINT, -SPLIT_POINT_OFFSET);
+		composite.setLayoutData(data);
+		
+		messageOrElementLabel = fWidgetFactory.createLabel(composite, Messages.InvokeImplDetails_MessageTypeOrElement); 
+		messageOrElementText = fWidgetFactory.createText(composite,EMPTY_STRING,SWT.NONE);
+		messageOrElementText.setEditable(false); // read-only text for visual feedback of Quick Pick tree selection
+		
+
+		data = new FlatFormData();
+		data.left = new FlatFormAttachment(0, BPELUtil.calculateLabelWidth(messageOrElementLabel, STANDARD_LABEL_WIDTH_SM));
+		data.right = new FlatFormAttachment(operationButton, 0);
+		messageOrElementText.setLayoutData(data);
+
+		data = new FlatFormData();
+		data.left = new FlatFormAttachment(0, 0);
+		data.right = new FlatFormAttachment(messageOrElementText, -IDetailsAreaConstants.HSPACE);
+		data.top = new FlatFormAttachment(messageOrElementText, 0, SWT.CENTER);
+		messageOrElementLabel.setLayoutData(data);
+
+		return composite;
+	}
 	
-	
 //	protected Composite createInputVariableWidgets(Composite top, Composite parent) {
 //		FlatFormData data;
 //		
@@ -1135,7 +1175,10 @@
 		quickPickTreeViewer.setLabelProvider(new ModelTreeLabelProvider());
 		quickPickTreeViewer.addFilter( fPartnerRoleFilter );
 		quickPickTreeViewer.setInput ( null );
-		quickPickTreeViewer.setAutoExpandLevel(3);
+		// https://issues.jboss.org/browse/JBIDE-8305
+		// show tree down to message part level so that tree node highlight works
+		// when the tree viewer is constructed.
+		quickPickTreeViewer.setAutoExpandLevel(5);
 		// end tree viewer for variable structure
 		
 		data = new FlatFormData();
@@ -1175,7 +1218,7 @@
 		Composite ref = createPartnerWidgets(null,composite);
 		ref = createPortTypeWidgets(ref, composite);
 		ref = createOperationWidgets(ref,composite);
-		 
+		ref = createMessageOrElementWidgets(ref,composite);	 // https://issues.jboss.org/browse/JBIDE-8305	 
 		ref = createFaultComposite ( ref, composite );
 		
 		
@@ -1297,6 +1340,13 @@
 				if (obj!=partnerLink)
 					return false;
 			}
+			// https://issues.jboss.org/browse/JBIDE-8305
+			else if (obj instanceof Input) {
+				obj = ModelHelper.getMessageType(obj);
+			}
+			else if (obj instanceof Part) {
+				obj = ModelHelper.getVariableTypeFrom(obj);
+			}
 			if (model==obj) {
 				quickPickTree.setSelection(item);
 				return true;
@@ -1337,8 +1387,50 @@
 		} else {
 			operationText.setText ( EMPTY_STRING );
 		}
+		if (getInput() instanceof OnEvent) {
+			// https://issues.jboss.org/browse/JBIDE-8305
+			// show the message type or message part in the quick pick tree
+			OnEvent onEvent = (OnEvent)getInput();
+			Message message = onEvent.getMessageType();
+			if (message!=null) {
+				updateQuickPickSelection(message);
+			}
+			else {
+				XSDElementDeclaration element = onEvent.getXSDElement();
+				if (element!=null)
+					updateQuickPickSelection(element);
+			}
+		}
 	}
 	
+	// https://issues.jboss.org/browse/JBIDE-8305
+	private void updateMessageOrElementWidgets() {
+		boolean visible = (getInput() instanceof OnEvent);
+		if (visible) {
+			OnEvent onEvent = (OnEvent)getInput();
+			String text = "";
+			String label = Messages.InvokeImplDetails_MessageTypeOrElement;
+			if (onEvent.getVariable()!=null) {
+				Message message = onEvent.getMessageType();
+				if (message!=null) {
+					text = message.getQName().getLocalPart();
+					label = Messages.InvokeImplDetails_MessageType;
+				}
+				else {
+					XSDElementDeclaration element = onEvent.getXSDElement();
+					if (element!=null) {
+						text = element.getName();
+						label = Messages.InvokeImplDetails_Element;
+					}
+				}
+			}
+			messageOrElementText.setText(text);
+			messageOrElementLabel.setText(label);
+		}
+		messageOrElementLabel.setVisible(visible);
+		messageOrElementText.setVisible(visible);
+	}
+	
 	/**
 	 * replyFaultEnabled() Checks if the active activity is a reply activity and
 	 * has a fault name
@@ -1684,7 +1776,8 @@
 		List cmdList = basicCommandList( input , null, null);
 		
 		PartnerLink pl = null;
-		Operation op = null;		
+		Operation op = null;
+		Part part = null;
 		SetCommand setCommand = null;
 									
 		for (int i=0,j=path.getSegmentCount(); i < j; i++) {
@@ -1726,10 +1819,20 @@
 				// attempt to locate a variable matching the type
 				alterCommands (cmdList,input,pl,op,(Input) op.getInput()  );
 				alterCommands (cmdList,input,pl,op,(Output)op.getOutput() );
-												
-			} else { 
-				break;
-			}			
+				
+			} else if (model instanceof Part) {
+				// https://issues.jboss.org/browse/JBIDE-8305
+				// if a message part was selected, set the OnEvent "element" attribute
+				part = (Part) model;
+				setCommand = (SetCommand) ListMap.Find ( cmdList, new ListMap.Visitor() {
+					public Object visit(Object obj) {
+						return (obj instanceof SetOnEventVariableTypeCommand ? obj : ListMap.IGNORE);						
+					}										
+				});
+				if (setCommand!=null)
+					setCommand.setNewValue( part.getElementDeclaration() );
+
+			}	
 			// System.out.println( "segment[" + i + "]=" + path.getSegment( i ));
 		}
 
@@ -1799,7 +1902,10 @@
 			}
 			variable.setName ( name );			
 			variable.setMessageType( msg );
-			cmds.add(0, new AddVariableCommand(input, variable));
+			// https://issues.jboss.org/browse/JBIDE-8305
+			// don't create a new variable for OnEvent - this is an "implicit" variable
+			if (input instanceof OnEvent == false)
+				cmds.add(0, new AddVariableCommand(input, variable));
 		}
 		
 		SetVariableCommand cmd = (SetVariableCommand) ListMap.Find(cmds, new ListMap.Visitor() {

Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java	2011-04-13 16:31:30 UTC (rev 30560)
+++ trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java	2011-04-13 17:40:25 UTC (rev 30561)
@@ -883,6 +883,13 @@
 		if (context instanceof PropertyAlias) {
 			return (Message)((PropertyAlias)context).getMessageType();
 		}
+		// https://issues.jboss.org/browse/JBIDE-8305
+		if (context instanceof OnEvent) {
+			return (Message)((OnEvent)context).getMessageType();
+		}
+		if (context instanceof org.eclipse.wst.wsdl.Input) {
+			return (Message)((org.eclipse.wst.wsdl.Input)context).getMessage();
+		}
 		throw new IllegalArgumentException();
 	}
 



More information about the jbosstools-commits mailing list