package org.wiztools.restclient.ui.reqbody;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.net.MalformedURLException;
import java.net.URL;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.wiztools.restclient.bean.ReqEntity;
import org.wiztools.restclient.bean.ReqEntityUrlStream;
import org.wiztools.restclient.bean.ReqEntityUrlStreamBean;
import org.wiztools.restclient.ui.RESTUserInterface;
import org.wiztools.restclient.ui.RESTView;
import org.wiztools.restclient.ui.UIUtil;
/**
*
* @author subwiz
*/
public class ReqBodyPanelUrlStream extends JPanel implements ReqBodyPanel {
@Inject RESTView view;
@Inject RESTUserInterface rest_ui;
@Inject ContentTypeCharsetComponent jp_content_type_charset;
private JTextField jtf_url = new JTextField(ContentTypeCharsetComponent.TEXT_FIELD_LENGTH);
@PostConstruct
protected void init() {
setLayout(new FlowLayout(FlowLayout.LEFT));
jtf_url.setToolTipText("Contents of this URL will be set as request body");
JPanel jp = new JPanel(new BorderLayout());
JPanel jp_west = new JPanel(new GridLayout(2, 1));
jp_west.add(new JLabel(" Content type: "));
jp_west.add(new JLabel(" URL: "));
jp.add(jp_west, BorderLayout.WEST);
JPanel jp_center = new JPanel(new GridLayout(2, 1));
jp_center.add(jp_content_type_charset.getComponent());
jp_center.add(UIUtil.getFlowLayoutPanelLeftAligned(jtf_url));
jp.add(jp_center, BorderLayout.CENTER);
add(jp);
}
@Override
public void enableBody() {
jp_content_type_charset.enableComponent();
jtf_url.setEnabled(true);
}
@Override
public void disableBody() {
jp_content_type_charset.disableComponent();
jtf_url.setEnabled(false);
}
@Override
public void setEntity(ReqEntity entity) {
if(entity instanceof ReqEntityUrlStream) {
ReqEntityUrlStream e = (ReqEntityUrlStream) entity;
URL url = e.getUrl();
jtf_url.setText(url.toString());
}
}
@Override
public ReqEntity getEntity() {
try {
URL url = new URL(jtf_url.getText());
return new ReqEntityUrlStreamBean(
jp_content_type_charset.getContentType(), url);
}
catch(MalformedURLException ex) {
throw new IllegalStateException("Body Stream URL is malformed!", ex);
}
}
@Override
public Component getComponent() {
return this;
}
@Override
public void clear() {
jp_content_type_charset.clear();
jtf_url.setText("");
}
@Override
public void requestFocus() {
jp_content_type_charset.requestFocus();
}
}