01 
02 /**
03  * Title:        Advanced Network Client Sample<p>
04  * Description: <p>
05  * Copyright:    Copyright (C) 2009 Alexey Veremenko<p>
06  * Company:      <p>
07  @author Alexey Veremenko
08  @version 1.0
09  */
10 package networking.server.gui;
11 
12 import networking.protocol.*;
13 
14 import javax.swing.*;
15 import javax.swing.event.*;
16 import java.util.*;
17 
18 import java.awt.Dimension;
19 
20 /**
21  * JListEx extends List to allow associating user objects with List items
22  */
23 class JListEx extends JList
24 {
25     /**
26      * Mark for the leading client
27      */
28     private static final String s_mark = " (Leader)";
29 
30     /**
31      * Construct new JListEx object
32      @param rows number of visible rows
33      */
34     public JListEx(int rows)
35     {
36         setVisibleRowCount(rows);
37     }
38 
39     /**
40      * Remove all items
41      */
42     synchronized public void clear()
43     {
44         setListData(new Boolean[0]);
45     }
46 
47     /**
48      * Refill clients list
49      @param msg message
50      */
51     synchronized public void fill(List l)
52     {
53         if (l.size() == 0)
54         {
55             clear();
56             return;
57         }
58 
59         // Make list modifiable
60         List list = new ArrayList(l);
61 
62         // Set mark on leader
63         Client leader = (Client)list.get(0);
64         list.remove(leader);
65         list.add(new Client(leader.getName() + s_mark));
66         // Sort items
67         Collections.sort(list);
68         // Set data
69         setListData(list.toArray());
70     }
71 
72     /**
73      * Specify preferred size
74      */
75     public Dimension getPreferredSize()
76     {
77         Dimension d = super.getPreferredSize();
78 
79         d.height = Math.max(d.height, 200);
80         d.width = Math.max(d.width, 200);
81 
82         return d;
83     }
84 
85     /*
86      * Specify minimum size
87      */
88     public Dimension getMinimumSize()
89     {
90         return getPreferredSize();
91     }
92 }
Java2html