Java JComboBox generateComboBoxFor(Object... objs)

Here you can find the source of generateComboBoxFor(Object... objs)

Description

generate Combo Box For

License

Open Source License

Declaration

public static JComboBox generateComboBoxFor(Object... objs) 

Method Source Code

//package com.java2s;
//License from project: Open Source License 

import java.awt.event.ComponentListener;
import java.awt.event.ContainerListener;
import java.awt.event.FocusListener;
import java.awt.event.HierarchyBoundsListener;
import java.awt.event.HierarchyListener;
import java.awt.event.InputMethodListener;

import java.awt.event.KeyListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;

import java.util.Vector;

import javax.swing.ComboBoxModel;

import javax.swing.JComboBox;
import javax.swing.JComponent;

import javax.swing.border.Border;
import javax.swing.event.AncestorListener;

import javax.swing.plaf.ComboBoxUI;

import java.awt.Color;
import java.awt.Container;
import java.awt.Component;

public class Main {
    public static JComboBox generateComboBoxFor(Object... objs) {
        Container c = search(objs, Container.class);
        ComboBoxModel model = null;
        Vector items = null;//from  w ww.j av a  2s  . c  o m
        Object[] itms = null;
        Border border = search(objs, Border.class);
        Color color = search(objs, Color.class);
        ComboBoxUI ui = search(objs, ComboBoxUI.class);
        JComboBox combo = (model = search(objs, ComboBoxModel.class)) == null
                ? (items = search(objs, Vector.class)) == null ? new JComboBox(itms = search(objs, Object[].class))
                        : new JComboBox(items)
                : new JComboBox(model);
        if (border != null)
            combo.setBorder(border);
        if (ui != null)
            combo.setUI(ui);
        if (color != null)
            combo.setBackground(color);
        addJContainerListeners(combo, objs);
        addToContainer(c, combo);
        return combo;
    }

    public static <T extends Component> T search(String name, Component comp) {
        if (name.equals(comp.getName())) {
            return (T) comp;
        } else if (comp instanceof Container) {
            for (Component c : ((Container) comp).getComponents())
                if ((c = search(name, c)) != null)
                    return (T) c;
        }
        return null;
    }

    private static <T> T search(Object[] objs, Class c) {
        for (Object o : objs) {
            if (c.isInstance(o))
                return (T) o;
        }
        return null;
    }

    private static void addJContainerListeners(JComponent c, Object... objs) {
        if (c == null)
            return;
        addContainerListeners(c, objs);
        AncestorListener ancestorListener = search(objs, AncestorListener.class);
        VetoableChangeListener vetoableChangeListener = search(objs, VetoableChangeListener.class);
        if (ancestorListener != null)
            c.addAncestorListener(ancestorListener);
        if (vetoableChangeListener != null)
            c.addVetoableChangeListener(vetoableChangeListener);
    }

    private static void addToContainer(Container c, Component element) {
        if (c == null)
            return;
        c.add(element);
    }

    private static void addContainerListeners(Container c, Object... objs) {
        if (c == null)
            return;
        addComponentListeners(c, objs);
        ContainerListener containerListener = search(objs, ContainerListener.class);
        PropertyChangeListener propertyChangeListener = search(objs, PropertyChangeListener.class);
        if (containerListener != null)
            c.addContainerListener(containerListener);
        if (propertyChangeListener != null)
            c.addPropertyChangeListener(propertyChangeListener);
    }

    private static void addComponentListeners(Component c, Object... objs) {
        if (c == null)
            return;
        ComponentListener componentListener = search(objs, ComponentListener.class);
        FocusListener focusListener = search(objs, FocusListener.class);
        HierarchyBoundsListener hierarchyBoundsListener = search(objs, HierarchyBoundsListener.class);
        HierarchyListener hierarchyListener = search(objs, HierarchyListener.class);
        InputMethodListener inputMethodListener = search(objs, InputMethodListener.class);
        KeyListener keyListener = search(objs, KeyListener.class);
        MouseListener mouseListener = search(objs, MouseListener.class);
        MouseMotionListener mouseMotionListener = search(objs, MouseMotionListener.class);
        MouseWheelListener mouseWheelListener = search(objs, MouseWheelListener.class);
        if (componentListener != null)
            c.addComponentListener(componentListener);
        if (focusListener != null)
            c.addFocusListener(focusListener);
        if (hierarchyBoundsListener != null)
            c.addHierarchyBoundsListener(hierarchyBoundsListener);
        if (hierarchyListener != null)
            c.addHierarchyListener(hierarchyListener);
        if (inputMethodListener != null)
            c.addInputMethodListener(inputMethodListener);
        if (keyListener != null)
            c.addKeyListener(keyListener);
        if (mouseListener != null)
            c.addMouseListener(mouseListener);
        if (mouseMotionListener != null)
            c.addMouseMotionListener(mouseMotionListener);
        if (mouseWheelListener != null)
            c.addMouseWheelListener(mouseWheelListener);
    }
}

Related

  1. createLabelCombo(String label, JComboBox comboBox)
  2. disableListenersForComboBox(JComboBox comboBox)
  3. ensureCustomBackgroundStored(JComboBox comp)
  4. exist(JComboBox x)
  5. fixComboOrientation(JComboBox combo)
  6. getAgeComboBox()
  7. getComboBoxDisabledBackground()
  8. getEOL(JComboBox eolCombo)
  9. getJComboBoxString(JComboBox comboBox)