ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/datacomponents/UsersDataComponent.java
(Generate patch)

Comparing projects/cms/source/conient/uk/org/iscream/cms/conient/datacomponents/UsersDataComponent.java (file contents):
Revision 1.1 by tdb, Mon Jan 22 19:35:36 2001 UTC vs.
Revision 1.10 by ajm, Sun Feb 4 00:06:14 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 + package uk.ac.ukc.iscream.conient.datacomponents;
3  
4   //---IMPORTS---
5   import javax.swing.JLabel;
6   import java.awt.GridLayout;
7   import java.util.Date;
8 + import java.util.StringTokenizer;
9 + import javax.swing.JComboBox;
10   import java.text.DateFormat;
11 + import javax.swing.SwingUtilities;
12  
13   /**
14 < * This is DataComponent specifically for converting
15 < * time since epoc dates into a nice format.
14 > * This component displays the users currently logged
15 > * onto a system.  Currently it does this simply by
16 > * putting them all in a JCombobox.
17   *
13 * As this is essentially just string data we just
14 * extend StringDataComponent, intercepting the value
15 * to convert it.
16 *
17 * It uses the JProgressBar to display the value.
18 *
18   * @author  $Author$
19   * @version $Id$
20   */
21 < public class UsersDataComponent extends StringDataComponent {
21 > public class UsersDataComponent extends VisibleDataComponent {
22  
23   //---FINAL ATTRIBUTES---
24  
# Line 34 | Line 33 | public class UsersDataComponent extends StringDataComp
33       * that.
34       *
35       * @param name the friendly name
36 +     * @param attribute the data attribute we look after
37       */
38 <    public UsersDataComponent(String name) {
39 <        super(name);
38 >    public UsersDataComponent(String name, String attribute) {
39 >        _name = name;
40 >        _attribute = attribute;
41 >        _label = new JLabel(name + ": ");
42 >        _label.setHorizontalAlignment(JLabel.RIGHT);
43 >        setLayout(new GridLayout(1, 2));
44 >        _item.addItem("-uninitialised-");
45 >        add(_label);
46 >        add(_item);
47      }
48  
49   //---PUBLIC METHODS---
50 +    
51 +    /**
52 +     * This run method updates any Swing components
53 +     * The setValue() method adds this component
54 +     * to the Swing Event Dispatching Queue to
55 +     * run this method.
56 +     */
57 +    public void run() {
58 +            _item.removeAllItems();
59 +            if (_cache.equals(" ")) {
60 +                _item.addItem("no users logged on");
61 +        } else {
62 +            StringTokenizer st = new StringTokenizer(_cache);
63 +            while(st.hasMoreTokens()) {
64 +                _item.addItem(st.nextToken());
65 +            }
66 +        }
67 +    }
68  
69 +    /**
70 +     * Overrides the {@link java.lang.Object#toString() Object.toString()}
71 +     * method to provide clean logging (every class should have this).
72 +     *
73 +     * @return the name of this class and its CVS revision
74 +     */
75 +    public String toString() {
76 +        return _name + "(" + _attribute + ")";
77 +    }
78 +
79   //---PRIVATE METHODS---
80  
81   //---ACCESSOR/MUTATOR METHODS---
# Line 48 | Line 83 | public class UsersDataComponent extends StringDataComp
83      /**
84       * This takes the String value of the parameter that this component
85       * is monitoring direct from the packet, it then performs all
86 <     * approriate conversions and displays the data.
86 >     * approriate conversions and adds this class to the Swing Event
87 >     * Dispatching queue.
88       *
53     * In this case all we do is change string and pass it to our
54     * super class for displaying.
55     *
89       * @param value the value for this data component
90       * @throws DataFormatException if there was a problem converting the data for display
91       */
92      public void setValue(String value) throws DataFormatException {
93          try {
94 <            if (value.length() > 20) {
95 <                value = value.substring(0, 20);
94 >            if (!_cache.equals(value)) {
95 >                _cache = value;
96 >                SwingUtilities.invokeLater(this);
97              }
64            super.setValue(value);
98          } catch (Exception e) {
99 <            throw new DataFormatException("invalid data type for component");
99 >            throw new DataFormatException(value + " is an invalid data type for " + toString());
100          }
101 <    }        
101 >    }
102 >    
103 >    /**
104 >     * Returns the string showing the packet
105 >     * attribute that the component is looking after
106 >     *
107 >     * @return the packet reference
108 >     */
109 >    public String getPacketAttribute() {
110 >        return _attribute;
111 >    }
112  
113   //---ATTRIBUTES---
114 +
115 +    /**
116 +     * The friendly name of this component
117 +     */
118 +    private String _name;
119 +    
120 +    /**
121 +     * The attribute that this component is concerned with
122 +     */
123 +    private String _attribute;
124 +    
125 +    /**
126 +     * Remebers what the last value was, so we
127 +     * only update if we have to.
128 +     */
129 +    String _cache = "";
130 +
131 +    /**
132 +     * The friendly label for this component
133 +     */
134 +    protected JLabel _label;
135 +    
136 +    /**
137 +     * Just a JComboBox to display the users in
138 +     */
139 +    protected JComboBox _item = new JComboBox();
140  
141   //---STATIC ATTRIBUTES---
142  
143 < }
143 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines