EMMA Coverage Report (generated Mon Mar 20 21:34:30 PST 2006)
[all classes][com.moesol.ui.log.manager]

COVERAGE SUMMARY FOR SOURCE FILE [LogManagerPanel.java]

nameclass, %method, %block, %line, %
LogManagerPanel.java0%   (0/3)0%   (0/20)0%   (0/349)0%   (0/89)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class LogManagerPanel0%   (0/1)0%   (0/3)0%   (0/145)0%   (0/33)
LogManagerPanel (): void 0%   (0/1)0%   (0/29)0%   (0/7)
build (): void 0%   (0/1)0%   (0/112)0%   (0/24)
reload (): void 0%   (0/1)0%   (0/4)0%   (0/2)
     
class LogManagerPanel$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class LogManagerPanel$LoggerTableModel0%   (0/1)0%   (0/17)0%   (0/204)0%   (0/56)
<static initializer> 0%   (0/1)0%   (0/15)0%   (0/1)
LogManagerPanel$LoggerTableModel (): void 0%   (0/1)0%   (0/3)0%   (0/1)
buildLoggersCache (): void 0%   (0/1)0%   (0/19)0%   (0/5)
getColumnCount (): int 0%   (0/1)0%   (0/2)0%   (0/1)
getColumnName (int): String 0%   (0/1)0%   (0/16)0%   (0/5)
getHandlerLevel (int): Object 0%   (0/1)0%   (0/15)0%   (0/4)
getLoggerAt (int): Logger 0%   (0/1)0%   (0/7)0%   (0/1)
getLoggerLevel (int): Object 0%   (0/1)0%   (0/5)0%   (0/1)
getLoggerName (int): Object 0%   (0/1)0%   (0/14)0%   (0/4)
getLoggers (): Vector 0%   (0/1)0%   (0/8)0%   (0/3)
getRowCount (): int 0%   (0/1)0%   (0/4)0%   (0/1)
getValueAt (int, int): Object 0%   (0/1)0%   (0/22)0%   (0/5)
isCellEditable (int, int): boolean 0%   (0/1)0%   (0/16)0%   (0/5)
reload (): void 0%   (0/1)0%   (0/5)0%   (0/3)
setHandlerLevel (Object, int): void 0%   (0/1)0%   (0/24)0%   (0/6)
setLoggerLevel (Object, int): void 0%   (0/1)0%   (0/11)0%   (0/4)
setValueAt (Object, int, int): void 0%   (0/1)0%   (0/18)0%   (0/7)

1/*
2 * $Id: LogManagerPanel.java,v 1.2 2005/12/01 06:10:00 hastings Exp $
3 *
4 * (c) Copyright, Moebius Solutions, Inc., 2004
5 *
6 *                       All Rights Reserved
7 *
8 * This material may be reproduced by or for the U. S. Government
9 * pursuant to the copyright license under the clause at
10 * DFARS 252.227-7014 (OCT 2001).
11 */
12 
13package com.moesol.ui.log.manager;
14 
15import java.awt.Dimension;
16import java.awt.event.ActionListener;
17import java.beans.EventHandler;
18import java.util.Enumeration;
19import java.util.Vector;
20import java.util.logging.Handler;
21import java.util.logging.Level;
22import java.util.logging.LogManager;
23import java.util.logging.Logger;
24 
25import javax.swing.BoxLayout;
26import javax.swing.DefaultCellEditor;
27import javax.swing.JButton;
28import javax.swing.JComboBox;
29import javax.swing.JPanel;
30import javax.swing.JScrollPane;
31import javax.swing.JTable;
32import javax.swing.table.AbstractTableModel;
33import javax.swing.table.TableColumn;
34 
35/**
36 * @author robert
37 */
38public class LogManagerPanel extends JPanel {
39        private static final long serialVersionUID = 6532034117695529289L;
40        private static final int NAME_COLUMN = 0;
41        private static final int LEVEL_COLUMN = 1;
42        private static final int HANDLER_LEVEL_COLUMN = 2;
43        
44        private LoggerTableModel m_table_model = new LoggerTableModel();
45        private JTable m_table = new JTable();
46        private JButton m_reload = new JButton("Reload");
47 
48        /** Create the UI, calls build */
49        public LogManagerPanel() {
50                setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
51                build();
52        }
53        
54        private static class LoggerTableModel extends AbstractTableModel {
55                private static final long serialVersionUID = 2127550014380299934L;
56 
57                /**
58                 * @return 3 
59                 * @see javax.swing.table.TableModel#getColumnCount()
60                 */
61                public int getColumnCount() {
62                        return 3;
63                }
64 
65                /**
66                 * @return number of rows
67                 * @see javax.swing.table.TableModel#getRowCount()
68                 */
69                public int getRowCount() {
70                        return getLoggers().size();
71                }
72                
73                
74                /**
75                 * 
76                 * @param row
77                 * @param col
78                 * @return Object value at {@code row, col}.
79                 */
80                public Object getValueAt(int row, int col) {
81                        switch (col) {
82                        case NAME_COLUMN: return getLoggerName(row);
83                        case LEVEL_COLUMN: return getLoggerLevel(row);
84                        case HANDLER_LEVEL_COLUMN: return getHandlerLevel(row);
85                        default: assert (false); return null;
86                        }
87                }
88 
89                /**
90                 * @param rowIndex
91                 * @param columnIndex
92                 * @return true if the cell is editable.
93                 */
94                public boolean isCellEditable(int rowIndex, int columnIndex) {
95                        switch (columnIndex) {
96                        case NAME_COLUMN: return false;
97                        case LEVEL_COLUMN: return true;
98                        case HANDLER_LEVEL_COLUMN: return true;
99                        default: assert(false); return false;
100                        }
101                }
102                
103                /**
104                 * @param aValue
105                 * @param rowIndex
106                 * @param columnIndex
107                 */                
108                public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
109                        switch (columnIndex) {
110                        case LEVEL_COLUMN: 
111                                setLoggerLevel(aValue, rowIndex);
112                                break;
113                        case HANDLER_LEVEL_COLUMN:
114                                setHandlerLevel(aValue, rowIndex);
115                                break;
116                        default:
117                                throw new AssertionError("bad column index");
118                        }
119                }
120                
121                private void setLoggerLevel(Object aValue, int rowIndex) {
122                        Level level = (Level)aValue;
123                        Logger target = getLoggerAt(rowIndex);
124                        
125                        target.setLevel(level);
126                }
127                
128                private void setHandlerLevel(Object aValue, int rowIndex) {
129                        Level level = (Level)aValue;
130                        Logger target = getLoggerAt(rowIndex);
131                        
132                        Handler[] h = target.getHandlers();
133                        for (int i = 0; i < h.length; i++) {
134                                h[i].setLevel(level);
135                        }
136                }
137                /**
138                 * @param column
139                 * @return name of {@code column}.
140                 */
141                public String getColumnName(int column) {
142                        switch (column) {
143                        case NAME_COLUMN: return "Logger";
144                        case LEVEL_COLUMN: return "Level";
145                        case HANDLER_LEVEL_COLUMN: return "Handler";
146                        default: assert(false); return null;
147                        }
148                }
149                private Object getLoggerName(int row) {
150                        String name = (String)getLoggers().get(row);
151                        if (name.equals("")) {
152                                return "<annonymous>";
153                        }
154                        return name;
155                }
156                private Object getLoggerLevel(int row) {
157                        return getLoggerAt(row).getLevel();
158                }
159                private Object getHandlerLevel(int row) {
160                        Handler[] h = getLoggerAt(row).getHandlers();
161                        if (h.length == 0) {
162                                return null;
163                        }
164                        return h[0].getLevel();
165                }
166                
167                private Logger getLoggerAt(int row) {
168                        return Logger.getLogger((String)getLoggers().get(row));
169                }
170                
171                private Vector getLoggers() {
172                        if (m_loggers_cache == null) {
173                                buildLoggersCache();
174                        }
175                        return m_loggers_cache;
176                }
177                private void buildLoggersCache() {
178                        m_loggers_cache = new Vector();
179                        Enumeration e = LogManager.getLogManager().getLoggerNames();
180                        while (e.hasMoreElements()) {
181                                m_loggers_cache.add(e.nextElement());
182                        }
183                }
184                
185                public void reload() {
186                        buildLoggersCache();
187                        fireTableDataChanged();
188                }
189                
190                private Vector m_loggers_cache;
191        }
192        
193        /** Create the UI */
194        public void build() {
195                TableSorter sorter = new TableSorter(m_table_model);
196                m_table.setModel(sorter);
197                sorter.setTableHeader(m_table.getTableHeader());
198                
199                JComboBox comboBox = new JComboBox();
200                comboBox.addItem(Level.ALL);
201                comboBox.addItem(Level.SEVERE);
202                comboBox.addItem(Level.WARNING);
203                comboBox.addItem(Level.INFO);
204                comboBox.addItem(Level.CONFIG);
205                comboBox.addItem(Level.FINE);
206                comboBox.addItem(Level.FINER);
207                comboBox.addItem(Level.FINEST);
208                comboBox.addItem(Level.OFF);
209                comboBox.addItem(null);
210 
211                TableColumn level_colum; 
212                level_colum = m_table.getColumnModel().getColumn(LEVEL_COLUMN);
213                level_colum.setCellEditor(new DefaultCellEditor(comboBox));
214                level_colum = m_table.getColumnModel().getColumn(HANDLER_LEVEL_COLUMN);
215                level_colum.setCellEditor(new DefaultCellEditor(comboBox));
216                
217                JScrollPane scrollPane = new JScrollPane(m_table);
218                m_table.setPreferredScrollableViewportSize(new Dimension(500, 70));
219                add(scrollPane);
220                add(m_reload);
221                m_reload.addActionListener(
222                            (ActionListener)EventHandler.create(ActionListener.class, this, "reload"));
223        }
224        public void reload() {
225                m_table_model.reload();
226        }
227}

[all classes][com.moesol.ui.log.manager]
EMMA 2.0.5312 (C) Vladimir Roubtsov