Package org.wiztools.restclient.ui.reqgo

Source Code of org.wiztools.restclient.ui.reqgo.UrlComboBox

package org.wiztools.restclient.ui.reqgo;

import com.jidesoft.swing.AutoCompletion;
import java.awt.Dimension;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.swing.JComboBox;
import javax.swing.JTextField;

/**
*
* @author subwiz
*/
public class UrlComboBox extends JComboBox<String> {
   
    private static final Logger LOG = Logger.getLogger(UrlComboBox.class.getName());
   
    private final int URL_COUNT_SIZE = 20;

    public UrlComboBox() {
        setToolTipText("URL");
        setEditable(true);
        final JTextField editorComponent = (JTextField) getEditor().getEditorComponent();
        editorComponent.addFocusListener(new FocusAdapter() {
            @Override
            public void focusGained(FocusEvent e) {
                editorComponent.selectAll();
            }
        });
       
        AutoCompletion ac = new AutoCompletion(this);
        ac.setStrict(false);
        ac.setStrictCompletion(false);
    }
   
    @PostConstruct
    protected void loadComboHistory() {
        try {
            List<String> urls = UrlListPersistUtil.load();
            if(!urls.isEmpty()) {
                // We need dimension for Issue 196:
                final Dimension d = this.getPreferredSize();
               
                for(String url: urls) {
                    this.addItem(url);
                }
               
                // Set the dimension for Issue 196:
                this.setPreferredSize(d);
            }
        }
        catch(IOException ex) {
            LOG.log(Level.WARNING, null, ex);
        }
    }
   
    @PostConstruct
    protected void registerShutdownHook() {
        Runtime.getRuntime().addShutdownHook(new Thread(){
            @Override
            public void run() {
                List<String> urls = new ArrayList<>();
                for(int i=0; i < getItemCount(); i++) {
                    String url = (String) getItemAt(i);
                    urls.add(url);
                }
                try {
                    UrlListPersistUtil.persist(urls);
                }
                catch(IOException ex) {
                    LOG.log(Level.WARNING, null, ex);
                }
            }
        });
    }
   
    public void push() {
        final String item = (String) getSelectedItem();
        final int count = getItemCount();
        final LinkedList<String> l = new LinkedList<>();
        for(int i=0; i<count; i++){
            l.add(getItemAt(i));
        }
        if(l.contains(item)){ // Item already present
            // Remove and add to bring it to the top
            removeItem(item);
            insertItemAt(item, 0);
        }
        else{ // Add new item
            if(item.trim().length() != 0 ) {
                // The total number of items should not exceed 20
                if(count >= URL_COUNT_SIZE){
                    // Remove last item to give place
                    // to new one
                    removeItemAt(count - 1);
                }
                //l.addFirst(item);
                insertItemAt(item, 0);
            }
        }
        // make the selected item is the item we want
        setSelectedItem(item);
    }
}
TOP

Related Classes of org.wiztools.restclient.ui.reqgo.UrlComboBox

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.