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