Project: BMach
/*
 * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License 
 *       at http://www.apache.org/licenses/LICENSE-2.0 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 */
package jsyntaxpane.actions.gui; 
 
import java.awt.Color; 
import java.awt.Component; 
import java.lang.reflect.Constructor; 
import java.lang.reflect.Field; 
import java.lang.reflect.Method; 
import javax.swing.DefaultListCellRenderer; 
import javax.swing.JList; 
 
class MembersListRenderer extends DefaultListCellRenderer { 
 
    static final Color evensColor = new Color(0xeeffee); 
    private ReflectCompletionDialog dlg; 
 
    public MembersListRenderer(ReflectCompletionDialog dlg) { 
        this.dlg = dlg; 
    } 
 
    @Override 
    public Component getListCellRendererComponent(final JList list, Object value, final int index, 
            final boolean isSelected, boolean cellHasFocus) { 
        Color back = (index % 2 == 1) ? list.getBackground() : evensColor; 
        if (value instanceof Method) { 
            final Method method = (Method) value; 
            return new MethodCell(list, isSelected, back, method, dlg.getTheClass()); 
        } else if (value instanceof Field) { 
            Field field = (Field) value; 
            return new FieldCell(list, isSelected, back, field, dlg.getTheClass()); 
        } else if (value instanceof Constructor) { 
            Constructor cons = (Constructor) value; 
            return new ConstructorCell(list, isSelected, back, cons, dlg.getTheClass()); 
        } else { 
            Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
            comp.setBackground(back); 
            return comp; 
        } 
    } 
}