1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.panels.request;
14
15 import javax.swing.AbstractAction;
16 import javax.swing.JButton;
17 import javax.swing.JPopupMenu;
18 import javax.swing.JSeparator;
19
20 import com.eviware.soapui.impl.support.components.ModelItemXmlEditor;
21 import com.eviware.soapui.impl.support.components.RequestXmlDocument;
22 import com.eviware.soapui.impl.support.components.ResponseXmlDocument;
23 import com.eviware.soapui.impl.support.panels.AbstractHttpRequestDesktopPanel;
24 import com.eviware.soapui.impl.wsdl.WsdlRequest;
25 import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
26 import com.eviware.soapui.impl.wsdl.actions.request.AddRequestToMockServiceAction;
27 import com.eviware.soapui.impl.wsdl.actions.request.CloneRequestAction;
28 import com.eviware.soapui.impl.wsdl.actions.request.CreateEmptyRequestAction;
29 import com.eviware.soapui.impl.wsdl.actions.request.RecreateRequestAction;
30 import com.eviware.soapui.impl.wsdl.panels.request.actions.WSIValidateRequestAction;
31 import com.eviware.soapui.model.ModelItem;
32 import com.eviware.soapui.model.iface.Submit;
33 import com.eviware.soapui.model.iface.SubmitContext;
34 import com.eviware.soapui.model.iface.SubmitListener;
35 import com.eviware.soapui.model.iface.Request.SubmitException;
36 import com.eviware.soapui.support.action.swing.SwingActionDelegate;
37 import com.eviware.soapui.support.components.JXToolBar;
38 import com.eviware.soapui.support.editor.views.xml.source.XmlSourceEditorView;
39 import com.eviware.soapui.support.editor.xml.XmlDocument;
40 import com.eviware.soapui.support.editor.xml.support.DefaultXmlDocument;
41 import com.eviware.soapui.support.xml.JXEditTextArea;
42
43 /***
44 * Abstract DesktopPanel for WsdlRequests
45 *
46 * @author Ole.Matzura
47 */
48
49 public abstract class AbstractWsdlRequestDesktopPanel<T extends ModelItem, T2 extends WsdlRequest> extends
50 AbstractHttpRequestDesktopPanel<T, T2> implements SubmitListener
51 {
52 private JButton recreateButton;
53 private JButton cloneButton;
54 private JButton createEmptyButton;
55 private JButton addToMockServiceButton;
56 private AbstractAction wsiValidateAction;
57
58 public AbstractWsdlRequestDesktopPanel( T modelItem, T2 request )
59 {
60 super( modelItem, request );
61 }
62
63 @Override
64 protected void init( T2 request )
65 {
66 recreateButton = createActionButton( new RecreateRequestAction( request ), true );
67 addToMockServiceButton = createActionButton( SwingActionDelegate.createDelegate(
68 AddRequestToMockServiceAction.SOAPUI_ACTION_ID, request, null, "/addToMockService.gif" ), true );
69
70 cloneButton = createActionButton( SwingActionDelegate.createDelegate( CloneRequestAction.SOAPUI_ACTION_ID,
71 request, null, "/clone_request.gif" ), true );
72
73 createEmptyButton = createActionButton( new CreateEmptyRequestAction( request ), true );
74
75 wsiValidateAction = SwingActionDelegate.createDelegate( new WSIValidateRequestAction(), request, "alt W" );
76 wsiValidateAction.setEnabled( request.getResponse() != null );
77
78 super.init( request );
79 }
80
81 protected ModelItemXmlEditor<?, ?> buildResponseEditor()
82 {
83 return new WsdlResponseMessageEditor( new ResponseXmlDocument( getRequest() ) );
84 }
85
86 protected ModelItemXmlEditor<?, ?> buildRequestEditor()
87 {
88 return new WsdlRequestMessageEditor( new RequestXmlDocument( getRequest() ) );
89 }
90
91 public static class OneWayResponseMessageEditor extends ModelItemXmlEditor<ModelItem, DefaultXmlDocument>
92 {
93 public OneWayResponseMessageEditor( ModelItem modelItem )
94 {
95 super( new DefaultXmlDocument(), modelItem );
96 }
97 }
98
99 protected void insertButtons( JXToolBar toolbar )
100 {
101 toolbar.add( addToMockServiceButton );
102 toolbar.add( recreateButton );
103 toolbar.add( createEmptyButton );
104 toolbar.add( cloneButton );
105 }
106
107 public void setEnabled( boolean enabled )
108 {
109 super.setEnabled( enabled );
110
111 recreateButton.setEnabled( enabled );
112 createEmptyButton.setEnabled( enabled );
113 cloneButton.setEnabled( enabled );
114 }
115
116 public class WsdlRequestMessageEditor extends
117 AbstractHttpRequestDesktopPanel<T, T2>.AbstractHttpRequestMessageEditor<XmlDocument>
118 {
119 public WsdlRequestMessageEditor( XmlDocument document )
120 {
121 super( document );
122
123 XmlSourceEditorView<?> editor = getSourceEditor();
124 JXEditTextArea inputArea = editor.getInputArea();
125 inputArea.getInputHandler().addKeyBinding( "F5", recreateButton.getAction() );
126 }
127 }
128
129 public class WsdlResponseMessageEditor extends
130 AbstractHttpRequestDesktopPanel<T, T2>.AbstractHttpResponseMessageEditor<XmlDocument>
131 {
132 public WsdlResponseMessageEditor( XmlDocument document )
133 {
134 super( document );
135
136 XmlSourceEditorView<?> editor = getSourceEditor();
137
138 JPopupMenu inputPopup = editor.getEditorPopup();
139 inputPopup.insert( new JSeparator(), 2 );
140 inputPopup.insert( wsiValidateAction, 3 );
141 }
142 }
143
144 protected Submit doSubmit() throws SubmitException
145 {
146 return getRequest().submit( new WsdlSubmitContext( getModelItem() ), true );
147 }
148
149 public boolean beforeSubmit( Submit submit, SubmitContext context )
150 {
151 boolean result = super.beforeSubmit( submit, context );
152 wsiValidateAction.setEnabled( !result );
153 return result;
154 }
155
156 public void afterSubmit( Submit submit, SubmitContext context )
157 {
158 super.afterSubmit( submit, context );
159 if( !isHasClosed() )
160 wsiValidateAction.setEnabled( submit.getResponse() != null );
161 }
162 }