package org.wiztools.restclient.ui.reqbody; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.nio.charset.Charset; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextField; import org.wiztools.commons.StringUtil; import org.wiztools.restclient.bean.ContentType; import org.wiztools.restclient.bean.ContentTypeBean; import org.wiztools.restclient.ui.RCFileView; import org.wiztools.restclient.ui.UIUtil; import org.wiztools.restclient.util.HttpUtil; /** * * @author subwiz */ public class ContentTypeCharsetComponentImpl extends JPanel implements ContentTypeCharsetComponent { @Inject private BodyContentTypeDialog jd; private static final String DEFAULT_CONTENT_CHARSET = HttpUtil.getFormattedContentType( BodyContentTypeDialog.DEFAULT_CONTENT_TYPE, BodyContentTypeDialog.DEFAULT_CHARSET); private final JTextField jtf_content_type_charset = new JTextField(DEFAULT_CONTENT_CHARSET, TEXT_FIELD_LENGTH); private final JButton jb_body_content_type = new JButton(UIUtil.getIconFromClasspath(RCFileView.iconBasePath + "edit.png")); @PostConstruct protected void init() { setLayout(new FlowLayout(FlowLayout.LEFT)); jtf_content_type_charset.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2) { jd.setVisible(true); } } }); jtf_content_type_charset.setEditable(false); add(jtf_content_type_charset); jd.addContentTypeCharSetChangeListener(new ContentTypeCharsetChangeListener() { @Override public void changed(String contentType, String charset) { final String formatted = HttpUtil.getFormattedContentType(contentType, charset); jtf_content_type_charset.setText(formatted); } }); jb_body_content_type.setToolTipText("Edit Content-type & Charset"); jb_body_content_type.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { jd.setVisible(true); } }); add(jb_body_content_type); } @Override public void requestFocus() { jb_body_content_type.requestFocus(); } @Override public void setContentTypeCharset(ContentType contentType) { if(contentType != null) { setContentTypeCharset(contentType.getContentType(), contentType.getCharset()); } } @Override public ContentType getContentType() { if(StringUtil.isNotEmpty(jd.getContentType())) { return new ContentTypeBean(jd.getContentType(), jd.getCharset()); } else { return null; } } @Override public void setContentTypeCharset(String contentType, Charset charset) { jd.setContentType(contentType); if(charset != null) { jd.setCharset(charset); } jtf_content_type_charset.setText( HttpUtil.getFormattedContentType(contentType, charset)); } public void setContentType(ContentType contentType) { setContentTypeCharset(contentType.getContentType(), contentType.getCharset()); } @Override public void setContentType(String contentType) { jd.setContentType(contentType); String charset = jd.getCharsetString(); jtf_content_type_charset.setText( HttpUtil.getFormattedContentType(contentType, charset)); } @Override public String getContentTypeCharsetString() { return jtf_content_type_charset.getText(); } @Override public String getContentTypeString() { return HttpUtil.getMimeFromContentType(jtf_content_type_charset.getText()); } @Override public void setCharset(Charset charset) { jd.setCharset(charset); jtf_content_type_charset.setText( HttpUtil.getFormattedContentType( jd.getContentType(), charset)); } @Override public Charset getCharset() { return jd.getCharset(); } @Override public String getCharsetString() { return jd.getCharsetString(); } @Override public void enableComponent() { jtf_content_type_charset.setEnabled(true); jb_body_content_type.setEnabled(true); } @Override public void disableComponent() { jtf_content_type_charset.setEnabled(false); jb_body_content_type.setEnabled(false); } @Override public void clear() { jtf_content_type_charset.setText(DEFAULT_CONTENT_CHARSET); } @Override public Component getComponent() { return this; } }