diff options
Diffstat (limited to 'libjava/javax/swing/plaf/basic/BasicListUI.java')
-rw-r--r-- | libjava/javax/swing/plaf/basic/BasicListUI.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/libjava/javax/swing/plaf/basic/BasicListUI.java b/libjava/javax/swing/plaf/basic/BasicListUI.java new file mode 100644 index 00000000000..abac5045031 --- /dev/null +++ b/libjava/javax/swing/plaf/basic/BasicListUI.java @@ -0,0 +1,132 @@ +package javax.swing.plaf.basic; + +import javax.swing.plaf.*; +import javax.swing.*; +import java.awt.*; + + +public class BasicListUI extends ListUI +{ + int gap_between_cells; + Color textColor, disabledTextColor, pressedBackgroundColor, normalBackgroundColor; + + + public static ComponentUI createUI(final JComponent c) + { + return new BasicButtonUI(); + } + + + public void installUI(final JComponent c) + { + super.installUI(c); + + textColor = new Color(0,0,0); + disabledTextColor = new Color(130, 130, 130); + pressedBackgroundColor = new Color(150,150,150); + normalBackgroundColor = new Color(192,192,192); + } + + public Dimension getPreferredSize(JComponent c) + { + JList l = (JList) c; + + System.out.println("XXXXXXXXXXXXXXXxx getPreferredSize------------> " + l); + + + int rows = l.getVisibleRowCount(); + + ListCellRenderer render = l.getCellRenderer(); + + int width = 200; + int height = rows * 16; + + if (l.getModel().getSize() == 0) + { + return new Dimension(width, height); + } + + System.out.println("BASIC_LIST_UI ====-> " + l.getModel().getElementAt(0)); + + Component elt = render.getListCellRendererComponent(l, + l.getModel().getElementAt(0), + 0, + false, + false); + Dimension a = elt.getPreferredSize(); + if (a == null) + { + return new Dimension(width, height); + } + + return new Dimension(a.width, + a.height * rows); + } + + public void paintBackground(Graphics g, + JComponent c) + { + Dimension size = getPreferredSize(c); + + g.setColor(normalBackgroundColor); + g.fillRect(0,0,size.width, size.height); + } + + public void paint(Graphics g, + JComponent c) + { + JList l = (JList) c; + + int rows = l.getVisibleRowCount(); + + ListCellRenderer render = l.getCellRenderer(); + + System.out.println("RENDER-JLIST: " + rows + ", " + l.getModel().getSize()); + + paintBackground(g, c); + + if (l.getModel().getSize() == 0) + return; + + // use element 0 to figure out how big we are: + Component elt = render.getListCellRendererComponent(l, + l.getModel().getElementAt(0), + 0, + false, + false); + Dimension dim = elt.getPreferredSize(); + + Rectangle a = new Rectangle(0, + 0, + dim.width, + dim.height); + + for (int i=0;i<l.getModel().getSize();i++) + { + boolean is_sel = false; + boolean has_focus = false; + + Component comp = render.getListCellRendererComponent(l, + l.getModel().getElementAt(i), + i, + is_sel, + has_focus); + + //System.out.println("AAAAA=> " + a + ", " + comp + ", index = " + i); + + comp.setBounds(a); + + comp.paint(g); + + a.y += dim.height + gap_between_cells; + } + } +} + + + + + + + + |