Commit d4a0e680 authored by 9731301's avatar 9731301

complete send button actionListener

parent c3e683b0
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/insomnia/GUI/InsomniaGUI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/GUI/InsomniaGUI.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/insomnia/GUI/InsomniaGUI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/GUI/InsomniaGUI.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/insomnia/GUI/RequestPanel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/GUI/RequestPanel.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/com/insomnia/GUI/RequestPanel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/GUI/RequestPanel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/insomnia/GUI/RespondPanel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/GUI/RespondPanel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/com/insomnia/parser/RequestLoader.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/com/insomnia/parser/RequestLoader.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
...@@ -144,7 +146,7 @@ ...@@ -144,7 +146,7 @@
<workItem from="1590682418201" duration="308000" /> <workItem from="1590682418201" duration="308000" />
<workItem from="1590757579057" duration="2543000" /> <workItem from="1590757579057" duration="2543000" />
<workItem from="1590934179600" duration="31544000" /> <workItem from="1590934179600" duration="31544000" />
<workItem from="1591024948574" duration="4476000" /> <workItem from="1591024948574" duration="14918000" />
</task> </task>
<servers /> <servers />
</component> </component>
...@@ -155,10 +157,10 @@ ...@@ -155,10 +157,10 @@
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
</component> </component>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state x="472" y="159" key="#com.intellij.ide.util.MemberChooser" timestamp="1590962459070"> <state x="472" y="159" key="#com.intellij.ide.util.MemberChooser" timestamp="1591034675582">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="472" y="159" key="#com.intellij.ide.util.MemberChooser/0.0.1536.824@0.0.1536.824" timestamp="1590962459070" /> <state x="472" y="159" key="#com.intellij.ide.util.MemberChooser/0.0.1536.824@0.0.1536.824" timestamp="1591034675582" />
<state x="499" y="197" key="#com.intellij.ide.util.TreeClassChooserDialog" timestamp="1590961999762"> <state x="499" y="197" key="#com.intellij.ide.util.TreeClassChooserDialog" timestamp="1590961999762">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
...@@ -175,22 +177,22 @@ ...@@ -175,22 +177,22 @@
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state x="402" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1590494460700" /> <state x="402" y="167" key="FileChooserDialogImpl/0.0.1536.824@0.0.1536.824" timestamp="1590494460700" />
<state width="1493" height="2" key="GridCell.Tab.0.bottom" timestamp="1591028946800"> <state width="1493" height="105" key="GridCell.Tab.0.bottom" timestamp="1591040084950">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="2" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1591028946800" /> <state width="1493" height="105" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1591040084950" />
<state width="1493" height="2" key="GridCell.Tab.0.center" timestamp="1591028946800"> <state width="1493" height="105" key="GridCell.Tab.0.center" timestamp="1591040084950">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="2" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1591028946800" /> <state width="1493" height="105" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1591040084950" />
<state width="1493" height="2" key="GridCell.Tab.0.left" timestamp="1591028946800"> <state width="1493" height="105" key="GridCell.Tab.0.left" timestamp="1591040084950">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="2" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1591028946800" /> <state width="1493" height="105" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1591040084950" />
<state width="1493" height="2" key="GridCell.Tab.0.right" timestamp="1591028946800"> <state width="1493" height="105" key="GridCell.Tab.0.right" timestamp="1591040084950">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
<state width="1493" height="2" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1591028946800" /> <state width="1493" height="105" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1591040084950" />
<state x="249" y="0" key="SettingsEditor" timestamp="1590962002174"> <state x="249" y="0" key="SettingsEditor" timestamp="1590962002174">
<screen x="0" y="0" width="1536" height="824" /> <screen x="0" y="0" width="1536" height="824" />
</state> </state>
......
No preview for this file type
No preview for this file type
File added
File added
File added
File added
No preview for this file type
No preview for this file type
No preview for this file type
File added
File added
File added
File added
File added
No preview for this file type
No preview for this file type
File added
No preview for this file type
No preview for this file type
...@@ -223,7 +223,7 @@ public class InsomniaGUI { ...@@ -223,7 +223,7 @@ public class InsomniaGUI {
panel.add(panelRight , BorderLayout.CENTER); panel.add(panelRight , BorderLayout.CENTER);
frame.getContentPane().add(panel); frame.getContentPane().add(panel);
frame.pack(); frame.setSize(800,400);
} }
......
package com.insomnia.GUI; package com.insomnia.GUI;
import com.insomnia.parser.RequestData; import com.insomnia.parser.RequestData;
import com.insomnia.parser.RequestLoader;
import com.insomnia.parser.ResponseData;
import com.insomnia.parser.Saver; import com.insomnia.parser.Saver;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
...@@ -8,14 +10,21 @@ import javax.swing.text.Utilities; ...@@ -8,14 +10,21 @@ import javax.swing.text.Utilities;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.DataInput;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
public class RequestPanel extends JPanel { public class RequestPanel extends JPanel {
private VerticalFlowLayout vfLayout = new VerticalFlowLayout(); private VerticalFlowLayout vfLayout = new VerticalFlowLayout();
private String[] ss = {"JSON","Form Data"}; private String[] ss = {"Form Data","JSON","Binary Data"};
private JComboBox Json_FormData = new JComboBox(ss); private JComboBox Json_FormData = new JComboBox(ss);
private JPanel body_pane = new JPanel(){
@Override
public Dimension getPreferredSize(){
return body.getSize();
}
};
private JPanel body = new JPanel(); private JPanel body = new JPanel();
private JPanel auth = new JPanel(); private JPanel auth = new JPanel();
private JPanel query = new JPanel(); private JPanel query = new JPanel();
...@@ -42,8 +51,18 @@ public class RequestPanel extends JPanel { ...@@ -42,8 +51,18 @@ public class RequestPanel extends JPanel {
BufferedImage master; BufferedImage master;
master = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\Insomnia\\src\\image\\535246.png")); master = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\Insomnia\\src\\image\\535246.png"));
Image scaled = master.getScaledInstance(20,20, java.awt.Image.SCALE_SMOOTH); Image scaled = master.getScaledInstance(20,20, java.awt.Image.SCALE_SMOOTH);
body.setBackground(Color.GRAY); body.setBackground(Color.GRAY);
body.add(Json_FormData,BorderLayout.NORTH); body.add(Json_FormData,BorderLayout.NORTH);
body.add(body_pane);
Json_FormData.setSelectedIndex(0);
initBody();
Json_FormData.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
initBody();
}
});
auth.setBackground(Color.GRAY); auth.setBackground(Color.GRAY);
query.setBackground(Color.GRAY); query.setBackground(Color.GRAY);
mainCenterHeader.setBackground(Color.GRAY); mainCenterHeader.setBackground(Color.GRAY);
...@@ -63,8 +82,8 @@ public class RequestPanel extends JPanel { ...@@ -63,8 +82,8 @@ public class RequestPanel extends JPanel {
JButton Btn = (JButton) e.getSource(); JButton Btn = (JButton) e.getSource();
//to repair showing //to repair showing
mainCenterHeader.remove(((JPanel) Btn.getParent()).getParent()); mainCenterHeader.remove(((JPanel) Btn.getParent()).getParent());
mainCenterHeader.revalidate(); mainCenterHeader.revalidate();
mainCenterHeader.repaint(); mainCenterHeader.repaint();
} }
}; };
...@@ -106,6 +125,14 @@ public class RequestPanel extends JPanel { ...@@ -106,6 +125,14 @@ public class RequestPanel extends JPanel {
} }
}); });
body_pane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
if (((JPanel) body_pane.getComponent(0)).getComponentCount()==0 && body_insert!=null && selectedItem==0) body_insert.mouseClicked(null);
}
});
headerField.addMouseListener(m); headerField.addMouseListener(m);
...@@ -127,7 +154,11 @@ public class RequestPanel extends JPanel { ...@@ -127,7 +154,11 @@ public class RequestPanel extends JPanel {
boolean isLastComponent(Component c){ boolean isLastComponent(Component c){
return mainCenterHeader.getComponent(mainCenterHeader.getComponentCount()-1)==c; return isLastComponent(c,mainCenterHeader);
}
boolean isLastComponent(Component c,JPanel p){
return p.getComponent(p.getComponentCount()-1)==c;
} }
public HashMap<String,String> getHeaders(){ public HashMap<String,String> getHeaders(){
...@@ -149,23 +180,190 @@ public class RequestPanel extends JPanel { ...@@ -149,23 +180,190 @@ public class RequestPanel extends JPanel {
return headers; return headers;
} }
public HashMap<String,String> getFormDataBody(){
HashMap<String,String> bodydata = new HashMap<>();
for(Component c : ((JPanel)body_pane.getComponent(0)).getComponents()){
if (c instanceof JPanel){
JPanel nh = (JPanel) c;
JPanel l = (JPanel) nh.getComponent(1);
JTextField h = (JTextField) l.getComponent(0);
JTextField v = (JTextField) l.getComponent(1);
if (!h.getText().trim().isEmpty()){
bodydata.put(h.getText().trim(),v.getText());
}
}
}
return bodydata;
}
public String getFormDataBodyAsString(){
HashMap<String,String> b = getFormDataBody();
if(b.size()==0) return "";
String f = "";
for (String key : b.keySet()){
f = f+key+"="+b.get(key)+"&";
}
return f.substring(0,f.length()-1);
}
int selectedItem = -2;
MouseAdapter body_insert = null;
void initBody(){
if (selectedItem == Json_FormData.getSelectedIndex()) return;
selectedItem = Json_FormData.getSelectedIndex();
if(body_pane.getComponentCount()>0) {
Component[] components = body_pane.getComponents();
for(Component c : components) body_pane.remove(c);
}
Border border = BorderFactory.createLineBorder(Color.BLACK,3);
if(Json_FormData.getSelectedItem().equals("JSON")) {
JTextArea textArea = new JTextArea(){
@Override
public Dimension getPreferredSize(){
return body_pane.getSize();
}
};
textArea.setToolTipText("Enter JSON");
textArea.setBorder(border);
body_pane.add(textArea);
} else if(Json_FormData.getSelectedItem().equals("Binary Data")){
JTextField path = new JTextField("File Path"){
@Override
public Dimension getPreferredSize(){
return new Dimension(body_pane.getSize().width-16,28);
}
};
path.setBorder(border);
body_pane.add(path,BorderLayout.NORTH);
JButton selector = new JButton("Choose File");
body_pane.add(selector,BorderLayout.NORTH);
selector.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
FileDialog fc = new FileDialog((Frame) null,"Select a file to upload");
fc.setMode(FileDialog.LOAD);
fc.setVisible(true);
String f = fc.getFile();
if (f!=null && !f.isEmpty()) {
path.setText(new File(fc.getDirectory(),fc.getName()).getAbsolutePath());
}
}
});
}else {
BufferedImage master = null;
try {
master = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\Insomnia\\src\\image\\535246.png"));
} catch (IOException e) {
}
final Image scaled = master.getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH);
final JPanel vl = new JPanel(vfLayout) {
@Override
public Dimension getPreferredSize() {
return body_pane.getSize();
}
};
body_pane.add(vl);
if (body_insert==null){
MouseAdapter deleteClick = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JButton Btn = (JButton) e.getSource();
//to repair showing
vl.remove(((JPanel) Btn.getParent()).getParent());
vl.revalidate();
vl.repaint();
}
};
body_insert = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e != null && !isLastComponent(((Component) e.getSource()).getParent().getParent(), vl)) return;
JTextField newHeaderField = new JTextField("key");
newHeaderField.addMouseListener(this);
newHeaderField.setBorder(border);
JTextField newValueField = new JTextField("value");
newValueField.setBorder(border);
JButton newDelete = new JButton();
newDelete.setPreferredSize(new Dimension(20, 20));
newDelete.setIcon(new ImageIcon(scaled));
newDelete.addMouseListener(deleteClick);
JPanel newRightOfHeader = new JPanel();
newRightOfHeader.add(newDelete);
JPanel new_center_header = new JPanel(new GridLayout(1, 2));
new_center_header.add(newHeaderField);
new_center_header.add(newValueField);
JPanel newHeader = new JPanel(new BorderLayout());
newHeader.add(newRightOfHeader, BorderLayout.EAST);
newHeader.add(new_center_header, BorderLayout.CENTER);
vl.add(newHeader);
vl.validate();
}
};
}
body_insert.mouseClicked(null);
}
body_pane.revalidate();
body_pane.repaint();
}
//request_up //request_up
public JPanel centerUp(){ public JPanel centerUp(){
sendButton.addMouseListener(new MouseAdapter() { sendButton.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
RequestData requestData = new RequestData(); RequestData requestData = new RequestData();
// requestData.setUploadPath();
requestData.setUrl(URLTextField.getText()); requestData.setUrl(URLTextField.getText());
super.mouseClicked(e); super.mouseClicked(e);
Saver saver = new Saver(); Saver saver = new Saver();
//set if it is Json or not //set if it is Json or not
if(Json_FormData.getActionCommand().equals("JSON")); if(Json_FormData.getSelectedItem().equals("JSON")) {
requestData.setJson(true); requestData.setJson(true);
JTextArea textArea = (JTextArea) body_pane.getComponent(0);
requestData.setBody(textArea.getText().trim());
}
else if(Json_FormData.getSelectedItem().equals("Binary Data")){
JTextField p = (JTextField) body_pane.getComponent(0);
if (!p.getText().isEmpty() && !p.getText().equals("File Path"))
requestData.setUploadPath(p.getText());
}else {
requestData.setBody(getFormDataBodyAsString());
}
requestData.setHeaders(getHeaders()); requestData.setHeaders(getHeaders());
for(String h : requestData.getHeaders().keySet()){ requestData.setFollowRedirects(true);
System.out.println(h+" : "+requestData.getHeaders().get(h)); requestData.setShowResponseHeaders(true);
requestData.setSaveRequest(false);
ResponseData data = RequestLoader.run(requestData);
if (data.hasSyntaxError()){
System.out.println("Syntax Error : "+data.getSyntaxErrorLog());
}else{
System.out.println("Connection time : "+((data.getFinalTime()-data.getStartTime())/1000)+"s");
System.out.println("Response Status : "+ data.getResponseStatus());
if (data.isSuccessful()){
System.out.println("Response : "+data.getResponseString());
if (data.getRequestData().isShowResponseHeaders()&& data.getResponseHeaders()!=null){
System.out.println("******* Response Headers *******");
for (String key : data.getResponseHeaders().keySet()){
System.out.println(key+" : "+data.getResponseHeaders().get(key).toString());
}
}
}else {
System.out.println("Error : "+data.getErrorMessage());
}
} }
} }
}); });
......
...@@ -10,7 +10,12 @@ public class RespondPanel extends JPanel { ...@@ -10,7 +10,12 @@ public class RespondPanel extends JPanel {
private Border border = BorderFactory.createLineBorder(Color.BLACK,3); private Border border = BorderFactory.createLineBorder(Color.BLACK,3);
private VerticalFlowLayout vfLayout = new VerticalFlowLayout(); private VerticalFlowLayout vfLayout = new VerticalFlowLayout();
private JPanel row = new JPanel(); private JPanel row = new JPanel();
private JTextArea massageBody = new JTextArea(); private JTextArea massageBody = new JTextArea() {
@Override
public Dimension getPreferredSize() {
return row.getSize();
}
};
private JPanel mainCenterHeader_respond = new JPanel(vfLayout); private JPanel mainCenterHeader_respond = new JPanel(vfLayout);
private JScrollPane scrollPane_Header_Respond = new JScrollPane(mainCenterHeader_respond); private JScrollPane scrollPane_Header_Respond = new JScrollPane(mainCenterHeader_respond);
private JPanel header_MainPanel = new JPanel(new BorderLayout()); private JPanel header_MainPanel = new JPanel(new BorderLayout());
...@@ -22,7 +27,7 @@ public class RespondPanel extends JPanel { ...@@ -22,7 +27,7 @@ public class RespondPanel extends JPanel {
public JTabbedPane tabbedPaneCenterResponse() { public JTabbedPane tabbedPaneCenterResponse() {
massageBody.setLineWrap(true); massageBody.setLineWrap(true);
massageBody.setPreferredSize(new Dimension(200, 300)); massageBody.setBorder(border);
row.add(massageBody); row.add(massageBody);
row.setBackground(Color.GRAY); row.setBackground(Color.GRAY);
scrollPane_Header_Respond.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scrollPane_Header_Respond.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
......
...@@ -88,13 +88,13 @@ public class RequestLoader { ...@@ -88,13 +88,13 @@ public class RequestLoader {
String crlf = "\r\n"; String crlf = "\r\n";
if (!data.getBody().isEmpty()) { if (!data.getBody().isEmpty()) {
HashMap<String, String> fields = new HashMap<>(); HashMap<String, String> fields = new HashMap<>();
if (!data.getBody().contains(";")) { if (!data.getBody().contains("&")) {
String[] f1 = data.getBody().split(":"); String[] f1 = data.getBody().split("=");
fields.put(f1[0], f1[1]); fields.put(f1[0], f1[1]);
} else { } else {
String[] mFields = data.getBody().split(";"); String[] mFields = data.getBody().split("&");
for (String f : mFields) { for (String f : mFields) {
String[] f0 = f.split(":"); String[] f0 = f.split("=");
fields.put(f0[0], f0[1]); fields.put(f0[0], f0[1]);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment