Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//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.JComponent;
import javax.swing.JList;

import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;

import javax.swing.event.AncestorListener;

import javax.swing.event.ListSelectionListener;

import javax.swing.plaf.ListUI;

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

public class Main {
    public static JList generateListFor(Object... objs) {
        Container c = search(objs, Container.class);
        String[] name_value = search(objs, String[].class);
        ListModel model = search(objs, ListModel.class);
        Object[] dataObjects = search(objs, Object[].class);
        Vector dataVector = search(objs, Vector.class);
        ListSelectionListener selectionListener = search(objs, ListSelectionListener.class);
        ListUI ui = search(objs, ListUI.class);
        ListSelectionModel selectionModel = search(objs, ListSelectionModel.class);
        ListCellRenderer cellRenderer = search(objs, ListCellRenderer.class);
        JList list = model == null
                ? (dataObjects == null ? (dataVector == null ? new JList() : new JList(dataVector))
                        : new JList(dataObjects))
                : new JList(model);
        list.setName(name_value == null ? "" : name_value[0]);
        if (selectionListener != null)
            list.addListSelectionListener(selectionListener);
        if (ui != null)
            list.setUI(ui);
        if (selectionModel != null)
            list.setSelectionModel(selectionModel);
        if (cellRenderer != null)
            list.setCellRenderer(cellRenderer);
        addJContainerListeners(list, objs);
        if (c != null)
            addToContainer(c, list);
        return list;
    }

    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);
    }
}