package org.wiztools.restclient.ui.reqbody;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.inject.Inject;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.wiztools.restclient.bean.MultipartMode;
import org.wiztools.restclient.bean.MultipartSubtype;
import org.wiztools.restclient.ui.EscapableDialog;
import org.wiztools.restclient.ui.RESTUserInterface;
/**
*
* @author subwiz
*/
public class MultipartOptionsDialog extends EscapableDialog {
protected final RESTUserInterface rest_ui;
private static final MultipartMode DEFAULT_MODE = MultipartMode.BROWSER_COMPATIBLE;
private static final MultipartSubtype DEFAULT_SUBTYPE = MultipartSubtype.FORM_DATA;
private final JComboBox<MultipartSubtype> jcb_subtype = new JComboBox<>(MultipartSubtype.values());
private final JComboBox<MultipartMode> jcb_mode = new JComboBox<>(MultipartMode.values());
private final JButton jb_ok = new JButton("Ok");
private final JButton jb_cancel = new JButton("Cancel");
private MultipartSubtype selectedSubtype = DEFAULT_SUBTYPE;
private MultipartMode selectedMode = DEFAULT_MODE;
@Inject
public MultipartOptionsDialog(RESTUserInterface ui) {
super(ui.getFrame(), true);
rest_ui = ui;
setTitle("Multipart Options");
initComponents();
initLayout();
this.pack();
}
private void initComponents() {
jcb_subtype.setSelectedItem(DEFAULT_SUBTYPE);
jcb_mode.setSelectedItem(DEFAULT_MODE);
this.getRootPane().setDefaultButton(jb_ok);
jb_ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
onOk();
}
});
jb_cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
onCancel();
}
});
}
private void initLayout() {
Container c = this.getContentPane();
c.setLayout(new BorderLayout(5, 5));
// West:
{
JPanel jp = new JPanel(new GridLayout(2, 1));
jp.add(new JLabel(" Subtype (multipart/?): "));
jp.add(new JLabel(" Mode: "));
c.add(jp, BorderLayout.WEST);
}
// Center:
{
JPanel jp = new JPanel(new GridLayout(2, 1));
jp.add(jcb_subtype);
jp.add(jcb_mode);
c.add(jp, BorderLayout.CENTER);
}
// South:
{
JPanel jp = new JPanel(new FlowLayout(FlowLayout.RIGHT));
jp.add(jb_cancel);
jp.add(jb_ok);
c.add(jp, BorderLayout.SOUTH);
}
}
@Override
public void doEscape(AWTEvent event) {
onCancel();
}
private void onOk() {
selectedMode = (MultipartMode) jcb_mode.getSelectedItem();
selectedSubtype = (MultipartSubtype) jcb_subtype.getSelectedItem();
this.setVisible(false);
}
private void onCancel() {
jcb_mode.setSelectedItem(selectedMode);
jcb_subtype.setSelectedItem(selectedSubtype);
this.setVisible(false);
}
// clear:
public void clear() {
selectedMode = DEFAULT_MODE;
selectedSubtype = DEFAULT_SUBTYPE;
jcb_mode.setSelectedItem(DEFAULT_MODE);
jcb_subtype.setSelectedItem(DEFAULT_SUBTYPE);
}
// Bean methods:
public MultipartSubtype getSelectedSubtype() {
return selectedSubtype;
}
public void setSelectedSubtype(MultipartSubtype selectedSubtype) {
this.selectedSubtype = selectedSubtype;
jcb_subtype.setSelectedItem(selectedSubtype);
}
public MultipartMode getSelectedMode() {
return selectedMode;
}
public void setSelectedMode(MultipartMode selectedMode) {
this.selectedMode = selectedMode;
jcb_mode.setSelectedItem(selectedMode);
}
}