package org.wiztools.restclient.ui.resbody;
import java.awt.Font;
import java.awt.GridLayout;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.swing.JScrollPane;
import org.wiztools.commons.StringUtil;
import org.wiztools.restclient.bean.ContentType;
import org.wiztools.restclient.ui.FontableEditor;
import org.wiztools.restclient.ui.ScrollableComponent;
import org.wiztools.restclient.util.HttpUtil;
/**
*
* @author subwiz
*/
public class ResBodyPanelImpl extends AbstractResBody implements FontableEditor, ScrollableComponent {
@Inject private ResBodyTextPanel jp_text;
@Inject private ResBodyImagePanel jp_image;
@Inject private ResBodyBinaryPanel jp_binary;
@Inject private ResBodyNonePanel jp_none;
private JScrollPane jsp = new JScrollPane();
@PostConstruct
protected void init() {
jsp.setViewportView(jp_none);
setLayout(new GridLayout());
add(jsp);
}
@Override
public void setBody(byte[] body, ContentType type) {
// Call super:
super.setBody(body, type);
// Display the new body:
if(type != null && StringUtil.isNotEmpty(type.getContentType())) {
if(HttpUtil.isTextContentType(type.getContentType())) {
jp_text.setBody(body, type);
jsp.setViewportView(jp_text);
}
else if(HttpUtil.isWebImageContentType(type.getContentType())) {
jp_image.setBody(body, type);
jsp.setViewportView(jp_image);
}
else {
setBinaryBody();
}
}
else {
setBinaryBody();
}
}
private void setBinaryBody() {
jp_binary.setBody(body, type);
jsp.setViewportView(jp_binary);
}
@Override
public void setEditorFont(Font font) {
jp_text.setEditorFont(font);
}
@Override
public Font getEditorFont() {
return jp_text.getEditorFont();
}
@Override
public void setScrollSpeed(int scrollSpeed) {
jsp.getVerticalScrollBar().setUnitIncrement(scrollSpeed);
}
@Override
public void clearUI() {
jp_text.clear();
jp_image.clear();
jp_binary.clear();
jsp.setViewportView(jp_none);
}
}