Package org.wiztools.restclient.ui.reqbody

Source Code of org.wiztools.restclient.ui.reqbody.ReqBodyPanelFile

package org.wiztools.restclient.ui.reqbody;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.dnd.DropTarget;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.wiztools.restclient.bean.ReqEntity;
import org.wiztools.restclient.bean.ReqEntityFile;
import org.wiztools.restclient.bean.ReqEntityFileBean;
import org.wiztools.restclient.ui.FileChooserType;
import org.wiztools.restclient.ui.RCFileView;
import org.wiztools.restclient.ui.RESTUserInterface;
import org.wiztools.restclient.ui.UIUtil;
import org.wiztools.restclient.ui.dnd.DndAction;
import org.wiztools.restclient.ui.dnd.FileDropTargetListener;

/**
*
* @author subwiz
*/
public class ReqBodyPanelFile extends JPanel implements ReqBodyPanel {
   
    @Inject
    private RESTUserInterface rest_ui;
   
    @Inject
    private ContentTypeCharsetComponent jp_content_type_charset;
   
    private JButton jb_body_file = new JButton(UIUtil.getIconFromClasspath(RCFileView.iconBasePath + "load_from_file.png"));
    private JTextField jtf_file = new JTextField(ContentTypeCharsetComponent.TEXT_FIELD_LENGTH);
   
    @PostConstruct
    public void init() {
        // DnD:
        FileDropTargetListener l = new FileDropTargetListener();
        l.addDndAction(new DndAction() {
            @Override
            public void onDrop(List<File> files) {
                selectFile(files.get(0));
            }
        });
        new DropTarget(jtf_file, l);
        new DropTarget(jb_body_file, l);
       
        setLayout(new BorderLayout());
       
        // North
        JPanel jp_north = new JPanel(new FlowLayout(FlowLayout.LEFT));
        jp_north.add(jp_content_type_charset.getComponent());
       
        add(jp_north, BorderLayout.NORTH);
       
        // Center
        jb_body_file.setToolTipText("Select file");
        jb_body_file.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                selectFile();
            }
        });
        JPanel jp_center = new JPanel(new FlowLayout(FlowLayout.LEFT));
        jp_center.add(jtf_file);
        jp_center.add(jb_body_file);
       
        add(UIUtil.getFlowLayoutPanelLeftAligned(jp_center), BorderLayout.CENTER);
    }
   
    private void selectFile() {
        File f = rest_ui.getOpenFile(FileChooserType.OPEN_REQUEST_BODY);
        selectFile(f);
    }
   
    private void selectFile(File f) {
        if(f == null){ // Pressed cancel?
            return;
        }
        if(!f.canRead()){
            JOptionPane.showMessageDialog(rest_ui.getFrame(),
                    "File not readable: " + f.getAbsolutePath(),
                    "IO Error",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }
        ContentTypeSelectorOnFile.select(jp_content_type_charset, f, rest_ui.getFrame());
        jtf_file.setText(f.getAbsolutePath());
    }
   
    @Override
    public void enableBody() {
        jp_content_type_charset.enableComponent();
        jtf_file.setEnabled(true);
        jb_body_file.setEnabled(true);
    }
   
    @Override
    public void disableBody() {
        jp_content_type_charset.disableComponent();
        jtf_file.setEnabled(false);
        jb_body_file.setEnabled(false);
    }
   
    @Override
    public void clear() {
        jp_content_type_charset.clear();
        jtf_file.setText("");
    }

    @Override
    public void setEntity(ReqEntity entity) {
        if(entity instanceof ReqEntityFile) {
            ReqEntityFile e = (ReqEntityFile) entity;
            jp_content_type_charset.setContentTypeCharset(e.getContentType());
            File body = e.getBody();
            jtf_file.setText(body.getAbsolutePath());
        }
    }
   
    @Override
    public ReqEntity getEntity() {
        File file = new File(jtf_file.getText());
       
        ReqEntityFileBean entity = new ReqEntityFileBean(file,
                jp_content_type_charset.getContentType());
        return entity;
    }

    @Override
    public void requestFocus() {
        jp_content_type_charset.requestFocus();
    }

    @Override
    public Component getComponent() {
        return this;
    }
}
TOP

Related Classes of org.wiztools.restclient.ui.reqbody.ReqBodyPanelFile

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.