author | wenzelm |
Fri, 15 Nov 2024 13:31:36 +0100 | |
changeset 81448 | 9b2e13b3ee43 |
parent 81443 | 7f3416f35b5d |
permissions | -rw-r--r-- |
72248 | 1 |
/* Title: Tools/jEdit/src/status_widget.scala |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
2 |
Author: Makarius |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
3 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
4 |
ML status bar: heap and garbage collection. |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
5 |
*/ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
6 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
7 |
package isabelle.jedit |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
8 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
9 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
10 |
import isabelle._ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
11 |
import java.awt.{Color, Dimension, Graphics, Graphics2D, Insets, RenderingHints} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
12 |
import java.awt.font.FontRenderContext |
72249 | 13 |
import java.awt.event.{ActionEvent, ActionListener, MouseAdapter, MouseEvent} |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
14 |
|
72249 | 15 |
import javax.swing.{JComponent, JLabel, Timer} |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
16 |
import org.gjt.sp.jedit.{View, jEdit} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
17 |
import org.gjt.sp.jedit.gui.statusbar.{StatusWidgetFactory, Widget} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
18 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
19 |
|
75393 | 20 |
object Status_Widget { |
72249 | 21 |
/** generic GUI **/ |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
22 |
|
72249 | 23 |
private val template = "ABC: 99999/99999MB" |
24 |
||
75393 | 25 |
abstract class GUI(view: View) extends JComponent { |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
26 |
/* init */ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
27 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
28 |
setFont(new JLabel().getFont) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
29 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
30 |
private val font_render_context = new FontRenderContext(null, true, false) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
31 |
private val line_metrics = getFont.getLineMetrics(template, font_render_context) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
32 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
33 |
{ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
34 |
val bounds = getFont.getStringBounds(template, font_render_context) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
35 |
val dim = new Dimension(bounds.getWidth.toInt, bounds.getHeight.toInt) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
36 |
setPreferredSize(dim) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
37 |
setMaximumSize(dim) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
38 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
39 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
40 |
setForeground(jEdit.getColorProperty("view.status.foreground")) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
41 |
setBackground(jEdit.getColorProperty("view.status.background")) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
42 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
43 |
def progress_foreground: Color = jEdit.getColorProperty("view.status.memory.foreground") |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
44 |
def progress_background: Color = jEdit.getColorProperty("view.status.memory.background") |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
45 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
46 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
47 |
/* paint */ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
48 |
|
72249 | 49 |
def get_status: (String, Double) |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
50 |
|
75393 | 51 |
override def paintComponent(gfx: Graphics): Unit = { |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
52 |
super.paintComponent(gfx) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
53 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
54 |
val insets = new Insets(0, 0, 0, 0) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
55 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
56 |
val width = getWidth - insets.left - insets.right |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
57 |
val height = getHeight - insets.top - insets.bottom - 1 |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
58 |
|
72249 | 59 |
val (text, fraction) = get_status |
72142 | 60 |
val width2 = (width * fraction).toInt |
72140 | 61 |
|
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
62 |
val text_bounds = gfx.getFont.getStringBounds(text, font_render_context) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
63 |
val text_x = insets.left + ((width - text_bounds.getWidth).toInt / 2) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
64 |
val text_y = (insets.top + line_metrics.getAscent).toInt |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
65 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
66 |
gfx.asInstanceOf[Graphics2D]. |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
67 |
setRenderingHint( |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
68 |
RenderingHints.KEY_TEXT_ANTIALIASING, |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
69 |
RenderingHints.VALUE_TEXT_ANTIALIAS_ON) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
70 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
71 |
gfx.setColor(progress_background) |
72142 | 72 |
gfx.fillRect(insets.left, insets.top, width2, height) |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
73 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
74 |
gfx.setColor(progress_foreground) |
72142 | 75 |
gfx.setClip(insets.left, insets.top, width2, height) |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
76 |
gfx.drawString(text, text_x, text_y) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
77 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
78 |
gfx.setColor(getForeground) |
72142 | 79 |
gfx.setClip(insets.left + width2, insets.top, getWidth - insets.left - width2, height) |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
80 |
gfx.drawString(text, text_x, text_y) |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
81 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
82 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
83 |
|
72249 | 84 |
/* mouse listener */ |
85 |
||
86 |
def action: String |
|
87 |
||
88 |
addMouseListener(new MouseAdapter { |
|
75393 | 89 |
override def mouseClicked(evt: MouseEvent): Unit = { |
81443
7f3416f35b5d
more careful isConsumed() / consume() for key and mouse events;
wenzelm
parents:
77708
diff
changeset
|
90 |
if (!evt.isConsumed() && evt.getClickCount == 2) { |
7f3416f35b5d
more careful isConsumed() / consume() for key and mouse events;
wenzelm
parents:
77708
diff
changeset
|
91 |
evt.consume() |
72249 | 92 |
view.getInputHandler.invokeAction(action) |
93 |
} |
|
94 |
} |
|
95 |
}) |
|
96 |
} |
|
97 |
||
98 |
||
99 |
||
100 |
/** Java **/ |
|
101 |
||
75393 | 102 |
class Java_GUI(view: View) extends GUI(view) { |
72249 | 103 |
/* component state -- owned by GUI thread */ |
104 |
||
72250 | 105 |
private var status = Java_Statistics.memory_status() |
72249 | 106 |
|
75393 | 107 |
def get_status: (String, Double) = { |
77708 | 108 |
val text = "JVM: " + status.heap_used.MiB.round + "/" + status.heap_size.MiB.round + "MiB" |
109 |
(text, status.heap_used_fraction) |
|
72249 | 110 |
} |
111 |
||
75393 | 112 |
private def update_status(new_status: Java_Statistics.Memory_Status): Unit = { |
72249 | 113 |
if (status != new_status) { |
114 |
status = new_status |
|
115 |
repaint() |
|
116 |
} |
|
117 |
} |
|
118 |
||
119 |
||
120 |
/* timer */ |
|
121 |
||
122 |
private val timer = |
|
123 |
new Timer(500, new ActionListener { |
|
73340 | 124 |
override def actionPerformed(e: ActionEvent): Unit = |
72250 | 125 |
update_status(Java_Statistics.memory_status()) |
72249 | 126 |
}) |
127 |
||
75393 | 128 |
override def addNotify(): Unit = { |
72249 | 129 |
super.addNotify() |
130 |
timer.start() |
|
131 |
} |
|
132 |
||
75393 | 133 |
override def removeNotify(): Unit = { |
72249 | 134 |
super.removeNotify() |
135 |
timer.stop() |
|
136 |
} |
|
137 |
||
138 |
||
139 |
/* action */ |
|
140 |
||
141 |
setToolTipText("Java heap memory (double-click for monitor application)") |
|
142 |
||
72976
51442c6dc296
more robust Java monitor: avoid odd warning about insecure connection;
wenzelm
parents:
72250
diff
changeset
|
143 |
override def action: String = "isabelle.java-monitor" |
72249 | 144 |
} |
145 |
||
75393 | 146 |
class Java_Factory extends StatusWidgetFactory { |
72249 | 147 |
override def getWidget(view: View): Widget = |
148 |
new Widget { override def getComponent: JComponent = new Java_GUI(view) } |
|
149 |
} |
|
150 |
||
151 |
||
152 |
||
153 |
/** ML **/ |
|
154 |
||
75393 | 155 |
class ML_GUI(view: View) extends GUI(view) { |
72249 | 156 |
/* component state -- owned by GUI thread */ |
157 |
||
158 |
private var status = ML_Statistics.memory_status(Nil) |
|
159 |
||
160 |
def get_status: (String, Double) = |
|
161 |
status.gc_progress match { |
|
162 |
case Some(p) => ("ML cleanup", 1.0 - p) |
|
163 |
case None => |
|
77708 | 164 |
val text = "ML: " + status.heap_used.MiB.round + "/" + status.heap_size.MiB.round + "MiB" |
165 |
(text, status.heap_used_fraction) |
|
72249 | 166 |
} |
167 |
||
75393 | 168 |
private def update_status(new_status: ML_Statistics.Memory_Status): Unit = { |
72249 | 169 |
if (status != new_status) { |
170 |
status = new_status |
|
171 |
repaint() |
|
172 |
} |
|
173 |
} |
|
174 |
||
175 |
||
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
176 |
/* main */ |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
177 |
|
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
178 |
private val main = |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
179 |
Session.Consumer[Session.Runtime_Statistics](getClass.getName) { |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
180 |
case stats => |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
181 |
val status = ML_Statistics.memory_status(stats.props) |
72249 | 182 |
GUI_Thread.later { update_status(status) } |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
183 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
184 |
|
75393 | 185 |
override def addNotify(): Unit = { |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
186 |
super.addNotify() |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
187 |
PIDE.session.runtime_statistics += main |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
188 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
189 |
|
75393 | 190 |
override def removeNotify(): Unit = { |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
191 |
super.removeNotify() |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
192 |
PIDE.session.runtime_statistics -= main |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
193 |
} |
72141 | 194 |
|
195 |
||
72249 | 196 |
/* action */ |
72141 | 197 |
|
72249 | 198 |
setToolTipText("ML heap memory (double-click for monitor panel)") |
199 |
||
200 |
override def action: String = "isabelle-monitor-float" |
|
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
201 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
202 |
|
75393 | 203 |
class ML_Factory extends StatusWidgetFactory { |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
204 |
override def getWidget(view: View): Widget = |
72249 | 205 |
new Widget { override def getComponent: JComponent = new ML_GUI(view) } |
72139
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
206 |
} |
f5c085dfa02f
ML status widget similar to org.gjt.sp.jedit.gui.statusbar.MemoryStatusWidgetFactory;
wenzelm
parents:
diff
changeset
|
207 |
} |