Package org.wiztools.restclient.ui.option

Source Code of org.wiztools.restclient.ui.option.OptionsEtcPanel

package org.wiztools.restclient.ui.option;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.util.List;
import java.util.logging.Logger;

import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JSpinner.DefaultEditor;

import org.wiztools.restclient.IGlobalOptions;
import org.wiztools.restclient.ServiceLocator;
import org.wiztools.restclient.ui.RESTViewImpl;

/**
*
* @author subwiz
*/
public class OptionsEtcPanel extends JPanel implements IOptionsPanel{

    private static final Logger LOG = Logger.getLogger(OptionsEtcPanel.class.getName());
    private static final String INDENT_KEY = "response.body.indent";
    private static final String SYNTAX_COLOR_RESPONSE = "response.body.syntax.color";
    private static final String SYNTAX_COLOR_REQUEST = "request.body.syntax.color";
    private static final String SCROLL_SPEED = "textarea.scrollspeed";

    private JCheckBox jcb_indentResponse = new JCheckBox("Auto-indent Response Body");
    private JCheckBox jcb_syntaxResponse = new JCheckBox("Default enable Response Body syntax coloring?");
    private JCheckBox jcb_syntaxRequest = new JCheckBox("Default enable Request Body syntax coloring?");
    private JSpinner js_scrollSpeed = new JSpinner();

    OptionsEtcPanel(){
        this.setLayout(new FlowLayout(FlowLayout.LEFT));
        jcb_indentResponse.setMnemonic('a');

        jcb_syntaxRequest.setToolTipText("Requires RESTClient restart!");
        jcb_syntaxResponse.setToolTipText("Requires RESTClient restart!");
       
        JPanel jp = new JPanel();
        jp.setLayout(new GridLayout(4, 1));
       
        jp.add(jcb_indentResponse);
        jp.add(jcb_syntaxRequest);
        jp.add(jcb_syntaxResponse);
        JPanel jp_scrollSpeed = new JPanel(new BorderLayout());
        JPanel jp_scrollSpeed_inner = new JPanel(new FlowLayout());
        jp_scrollSpeed_inner.add(new JLabel("Text areas scroll speed"));
        jp_scrollSpeed_inner.add(js_scrollSpeed);
        jp_scrollSpeed.add(BorderLayout.WEST, jp_scrollSpeed_inner);
        jp.add(jp_scrollSpeed);
        ((JSpinner.DefaultEditor)js_scrollSpeed.getEditor()).getTextField().setColumns(2);
       
        this.add(jp);
    }

    private boolean isIndentSetInGlobalOptions(){
        IGlobalOptions options = ServiceLocator.getInstance(IGlobalOptions.class);
        String indentStr = options.getProperty(INDENT_KEY);
        return indentStr==null? false: (indentStr.equals("true")? true: false);
    }

    private boolean isResponseSyntaxSetInGlobalOptions() {
        IGlobalOptions options = ServiceLocator.getInstance(IGlobalOptions.class);
        String syntaxResponse = options.getProperty(SYNTAX_COLOR_RESPONSE);
        return syntaxResponse==null? true: Boolean.valueOf(syntaxResponse);
    }

    private boolean isRequestSyntaxSetInGlobalOptions() {
        IGlobalOptions options = ServiceLocator.getInstance(IGlobalOptions.class);
        String syntaxRequest = options.getProperty(SYNTAX_COLOR_REQUEST);
        return syntaxRequest==null? true: Boolean.valueOf(syntaxRequest);
    }

    @Override
    public void initOptions() {
        if(isIndentSetInGlobalOptions()){
            jcb_indentResponse.setSelected(true);
        }
        else{
            jcb_indentResponse.setSelected(false);
        }

        if(isResponseSyntaxSetInGlobalOptions()) {
            jcb_syntaxResponse.setSelected(true);
        }
        else {
            jcb_syntaxResponse.setSelected(false);
        }

        if(isRequestSyntaxSetInGlobalOptions()) {
            jcb_syntaxRequest.setSelected(true);
        }
        else {
            jcb_syntaxRequest.setSelected(false);
        }

        int scrollSpeed = 1;
        String scrollSpeedStr = ServiceLocator.getInstance(IGlobalOptions.class).getProperty(SCROLL_SPEED);
        if (scrollSpeedStr != null) {
            try {
                scrollSpeed = Integer.parseInt(scrollSpeedStr);
            } catch(NumberFormatException ex) {
                // leave the default font size of 12
            }
        }
        js_scrollSpeed.setValue(scrollSpeed);

        ServiceLocator.getInstance(RESTViewImpl.class).setTextAreaScrollSpeed(getScrollSpeed());
    }

    @Override
    public void shutdownOptions() {
        ServiceLocator.getInstance(IGlobalOptions.class).setProperty(SCROLL_SPEED, String.valueOf(js_scrollSpeed.getValue()));
    }

    @Override
    public List<String> validateInput() {
        return null;
    }

    @Override
    public boolean saveOptions() {
        IGlobalOptions options = ServiceLocator.getInstance(IGlobalOptions.class);
        options.setProperty(INDENT_KEY, String.valueOf(jcb_indentResponse.isSelected()));

        options.setProperty(SYNTAX_COLOR_REQUEST, String.valueOf(jcb_syntaxRequest.isSelected()));
        options.setProperty(SYNTAX_COLOR_RESPONSE, String.valueOf(jcb_syntaxResponse.isSelected()));

        options.setProperty(SCROLL_SPEED, String.valueOf(js_scrollSpeed.getValue()));
        ServiceLocator.getInstance(RESTViewImpl.class).setTextAreaScrollSpeed(getScrollSpeed());
        return true;
    }

    @Override
    public boolean revertOptions() {
        initOptions();
        return true;
    }

    private int getScrollSpeed() {
        return (Integer) js_scrollSpeed.getValue();
    }
}
TOP

Related Classes of org.wiztools.restclient.ui.option.OptionsEtcPanel

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.