1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.chainsaw;
19
20 import org.apache.log4j.Level;
21
22 import javax.swing.*;
23 import java.util.Arrays;
24 import java.util.Hashtable;
25 import java.util.List;
26
27
28
29
30
31
32
33
34
35 final class ThresholdSlider extends JSlider {
36 final List priorityList;
37
38 ThresholdSlider() {
39 Level[] levels =
40 new Level[]{
41 Level.OFF, Level.FATAL, Level.ERROR, Level.WARN, Level.INFO,
42 Level.DEBUG, Level.TRACE, Level.ALL
43 };
44
45 priorityList = Arrays.asList(levels);
46
47 priorityList.sort((o1, o2) -> {
48 Level p1 = (Level) o1;
49 Level p2 = (Level) o2;
50
51 if (p1.toInt() == p2.toInt()) {
52 return 0;
53 } else if (p1.toInt() < p2.toInt()) {
54 return -1;
55 }
56
57 return 1;
58 });
59
60 setModel(
61 new DefaultBoundedRangeModel(
62 priorityList.indexOf(Level.TRACE), 0, 0, priorityList.size() - 1));
63
64 Hashtable<Integer, JLabel> labelMap = new Hashtable<>();
65
66 for (Object aPriorityList : priorityList) {
67 Level item = (Level) aPriorityList;
68 labelMap.put(
69 priorityList.indexOf(item), new JLabel(item.toString()));
70
71
72 }
73
74 setOrientation(SwingConstants.VERTICAL);
75 setInverted(true);
76 setLabelTable(labelMap);
77
78 setPaintLabels(true);
79
80
81 setSnapToTicks(true);
82
83
84
85 }
86
87 void setChosenLevel(Level level) {
88 setValue(priorityList.indexOf(level));
89 }
90
91
92
93
94
95
96 Level getSelectedLevel() {
97 Level level = (Level) priorityList.get(getValue());
98
99 if (level == null) {
100 level = Level.TRACE;
101 }
102
103 return level;
104 }
105 }