Skip to content

Commit b6a90cc

Browse files
committed
GH-392 SimpleXYChartDescriptor.setLimitYValue() added
1 parent 1c2a88d commit b6a90cc

File tree

8 files changed

+47
-6
lines changed

8 files changed

+47
-6
lines changed

visualvm/applicationviews/nbproject/project.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<compile-dependency/>
2222
<run-dependency>
2323
<release-version>2</release-version>
24-
<specification-version>2.0</specification-version>
24+
<specification-version>2.1</specification-version>
2525
</run-dependency>
2626
</dependency>
2727
<dependency>

visualvm/applicationviews/src/org/graalvm/visualvm/application/views/monitor/ApplicationMonitorView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ private void initModels(ApplicationMonitorModel model) {
434434

435435
chartDescriptor.addLineFillItems(HEAP_SIZE_LEG, USED_HEAP_LEG);
436436
chartDescriptor.setDetailsItems(new String[] { HEAP_SIZE, USED_HEAP, MAX_HEAP });
437+
chartDescriptor.setLimitYValue(model.getMaxHeap());
437438

438439
chartSupport = ChartFactory.createSimpleXYChart(chartDescriptor);
439440
model.registerHeapChartSupport(chartSupport);
@@ -508,6 +509,7 @@ private void initModels(ApplicationMonitorModel model) {
508509

509510
chartDescriptor.addLineFillItems(PERM_SIZE_LEG, USED_PERM_LEG);
510511
chartDescriptor.setDetailsItems(new String[] { PERM_SIZE, USED_PERM, MAX_PERM });
512+
chartDescriptor.setLimitYValue(model.getPermgenMax());
511513

512514
chartSupport = ChartFactory.createSimpleXYChart(chartDescriptor);
513515
model.registerPermGenChartSupport(chartSupport);

visualvm/charts/src/org/graalvm/visualvm/charts/ChartFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public static SimpleXYChartSupport createSimpleXYChart(SimpleXYChartDescriptor d
5656
descriptor.getCustomFormat(),
5757
descriptor.areItemsHideable(),
5858
descriptor.getValuesBuffer(),
59-
descriptor.getDetailsItems());
59+
descriptor.getDetailsItems(),
60+
descriptor.getLimitYValue());
6061
}
6162

6263

visualvm/charts/src/org/graalvm/visualvm/charts/SimpleXYChartDescriptor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ public void setDetailsItems(String[] detailNames) {
229229
this.detailNames = detailNames != null ? detailNames.clone() : null;
230230
}
231231

232+
public void setLimitYValue(long limit) {
233+
limitYValue = limit;
234+
}
232235

233236
// --- Axes description ----------------------------------------------------
234237

@@ -310,6 +313,9 @@ String getYAxisDescription() {
310313
return yAxisDescription;
311314
}
312315

316+
long getLimitYValue() {
317+
return limitYValue;
318+
}
313319

314320
// --- Private implementation ----------------------------------------------
315321

@@ -333,6 +339,7 @@ String getYAxisDescription() {
333339
private String chartTitle;
334340
private String xAxisDescription;
335341
private String yAxisDescription;
342+
private long limitYValue;
336343

337344

338345
private SimpleXYChartDescriptor(int chartType,

visualvm/charts/src/org/graalvm/visualvm/charts/SimpleXYChartSupport.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public final class SimpleXYChartSupport {
6868
private final String[] detailsItems;
6969
private final double chartFactor;
7070
private final NumberFormat customFormat;
71+
private final long limitYValue;
7172

7273
private final XYStorage storage;
7374
private final SynchronousXYItemsModel itemsModel;
@@ -95,7 +96,8 @@ public JComponent getChart() {
9596
hideItems, legendVisible,
9697
zoomingEnabled, chartFactor,
9798
customFormat, storage,
98-
itemsModel, paintersModel);
99+
itemsModel, paintersModel,
100+
limitYValue);
99101
if (detailsItems != null)
100102
detailsHandle = SimpleXYChartUtils.createDetailsArea(detailsItems,
101103
chartUI);
@@ -294,7 +296,7 @@ public String formatTime(long value) {
294296
int chartType, long initialYMargin, String[] itemNames, Color[] itemColors,
295297
float[] lineWidths, Color[] lineColors, Color[] fillColors1, Color[] fillColors2,
296298
long minValue, long maxValue, double chartFactor, NumberFormat customFormat,
297-
boolean hideItems, int valuesBuffer, String[] detailsItems) {
299+
boolean hideItems, int valuesBuffer, String[] detailsItems, long limit) {
298300

299301
this.chartTitle = chartTitle;
300302
this.xAxisDescription = xAxisDescription;
@@ -307,6 +309,7 @@ public String formatTime(long value) {
307309
this.detailsItems = detailsItems;
308310
this.chartFactor = chartFactor;
309311
this.customFormat = customFormat;
312+
this.limitYValue = limit;
310313

311314
storage = SimpleXYChartUtils.createStorage(valuesBuffer);
312315
itemsModel = SimpleXYChartUtils.createItemsModel(storage, itemNames, minValue, maxValue);

visualvm/charts/src/org/graalvm/visualvm/charts/xy/SimpleXYChartUtils.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
import javax.swing.JScrollBar;
5353
import javax.swing.SwingConstants;
5454
import javax.swing.plaf.LabelUI;
55+
import org.graalvm.visualvm.lib.charts.ChartContext;
56+
import org.graalvm.visualvm.lib.charts.ChartDecorator;
5557
import org.graalvm.visualvm.lib.charts.ChartItem;
5658
import org.graalvm.visualvm.lib.charts.ChartItemChange;
5759
import org.graalvm.visualvm.lib.charts.ChartSelectionModel;
@@ -66,6 +68,7 @@
6668
import org.graalvm.visualvm.lib.charts.axis.TimelineMarksComputer;
6769
import org.graalvm.visualvm.lib.charts.swing.CrossBorderLayout;
6870
import org.graalvm.visualvm.lib.charts.swing.LongRect;
71+
import org.graalvm.visualvm.lib.charts.swing.Utils;
6972
import org.graalvm.visualvm.lib.charts.xy.BytesXYItemMarksComputer;
7073
import org.graalvm.visualvm.lib.charts.xy.DecimalXYItemMarksComputer;
7174
import org.graalvm.visualvm.lib.charts.xy.XYItemPainter;
@@ -175,7 +178,8 @@ public static JComponent createChartUI(String chartTitle, String xAxisDescriptio
175178
boolean supportsZooming, double chartFactor,
176179
NumberFormat customFormat, XYStorage storage,
177180
SynchronousXYItemsModel itemsModel,
178-
XYPaintersModel paintersModel) {
181+
XYPaintersModel paintersModel,
182+
long limitYValue) {
179183

180184
// Chart
181185
final boolean hasAxisLabel = xAxisDescription != null || yAxisDescription != null;
@@ -206,6 +210,9 @@ public void setBounds(int x, int y, int w, int h) {
206210
2500, initialYMargin));
207211

208212
chart.addPreDecorator(new XYBackground());
213+
if (limitYValue != 0) {
214+
chart.addPreDecorator(createMaxHeapDecorator(limitYValue));
215+
}
209216

210217
// Horizontal axis
211218
TimelineMarksComputer hComputer = new TimelineMarksComputer(storage,
@@ -636,6 +643,26 @@ private static JLabel createRotatedLabel(String text, final LabelUI labelUI) {
636643
};
637644
}
638645

646+
private static final Color HEAP_LIMIT_FILL_COLOR = !UISupport.isDarkResultsBackground() ?
647+
new Color(220, 220, 220) : new Color(100, 100, 100);
648+
649+
private static ChartDecorator createMaxHeapDecorator(final long limitYValue) {
650+
return new ChartDecorator() {
651+
public void paint(Graphics2D g, Rectangle dirtyArea,
652+
ChartContext context) {
653+
654+
int limitHeight = Utils.checkedInt(context.getViewY(limitYValue));
655+
if (limitHeight <= context.getViewportHeight()) {
656+
g.setColor(HEAP_LIMIT_FILL_COLOR);
657+
if (context.isBottomBased())
658+
g.fillRect(0, 0, context.getViewportWidth(), limitHeight);
659+
else
660+
g.fillRect(0, limitHeight, context.getViewportWidth(),
661+
context.getViewportHeight() - limitHeight);
662+
}
663+
}
664+
};
665+
}
639666

640667
// --- DetailsHandle -------------------------------------------------------
641668

visualvm/graalvm/nbproject/project.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<compile-dependency/>
3131
<run-dependency>
3232
<release-version>2</release-version>
33-
<specification-version>2.0</specification-version>
33+
<specification-version>2.1</specification-version>
3434
</run-dependency>
3535
</dependency>
3636
<dependency>

visualvm/graalvm/src/org/graalvm/visualvm/graalvm/libgraal/MemoryViewComponent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ private void initModels(final MemoryModel model) {
9191

9292
chartDescriptor.addLineFillItems(HEAP_SIZE_LEG, USED_HEAP_LEG);
9393
chartDescriptor.setDetailsItems(new String[]{HEAP_SIZE, USED_HEAP, MAX_HEAP});
94+
chartDescriptor.setLimitYValue(model.getMaxHeap());
9495

9596
chartSupport = ChartFactory.createSimpleXYChart(chartDescriptor);
9697
model.registerHeapChartSupport(chartSupport);

0 commit comments

Comments
 (0)