in src/application/org.openjdk.jmc.joverflow.ui/src/main/java/org/openjdk/jmc/joverflow/ui/viewers/ClusterGroupViewer.java [78:244]
public ClusterGroupViewer(Composite parent, int style) {
mContainer = new SashForm(parent, style);
{
Composite leftContainer = new Composite(mContainer, SWT.BORDER);
leftContainer.setLayout(new FormLayout());
mTitle = new Label(leftContainer, SWT.NONE);
{
FormData data = new FormData();
data.top = new FormAttachment(0, 10);
data.left = new FormAttachment(0, 10);
mTitle.setLayoutData(data);
}
{
SashForm container = new SashForm(leftContainer, SWT.VERTICAL);
{
FormData fd_sashForm = new FormData();
fd_sashForm.top = new FormAttachment(mTitle, 10);
fd_sashForm.right = new FormAttachment(100, -10);
fd_sashForm.bottom = new FormAttachment(100, -10);
fd_sashForm.left = new FormAttachment(0, 10);
container.setLayoutData(fd_sashForm);
}
mPieChart = new PieChartViewer(container, SWT.NONE);
mPieChart.setContentProvider(ArrayContentProvider.getInstance());
ColorIndexedArcAttributeProvider provider = new ColorIndexedArcAttributeProvider() {
@Override
public int getWeight(Object element) {
return (int) ((MemoryStatisticsItem) element).getMemory();
}
};
provider.setMinimumArcAngle(5);
mPieChart.setArcAttributeProvider(provider);
mPieChart.setMinimumArcAngle(5);
mPieChart.getPieChart().setZoomRatio(1.2);
mPieChart.setComparator(new ViewerComparator() {
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
return (int) (((MemoryStatisticsItem) e2).getMemory()
- ((MemoryStatisticsItem) e1).getMemory());
}
});
mFilterList = new FilterList<>(container, SWT.NONE);
mFilterList.addFilterChangedListener(this::notifyFilterChangedListeners);
container.setWeights(new int[] {3, 2});
}
}
{
Composite tableContainer = new Composite(mContainer, SWT.BORDER);
tableContainer.setLayout(new FillLayout(SWT.HORIZONTAL));
mTableViewer = new MemoryStatisticsTableViewer(tableContainer, SWT.NONE);
BiConsumer<MemoryStatisticsItem, Boolean> addFilter = (item, exclusion) -> {
if (item.getId() == null) {
return;
}
mFilterList.addFilter(new Predicate<ObjectCluster>() {
final String qualifierName = mQualifierName;
final String itemName = item.getId().toString();
final boolean excluded = exclusion;
@Override
public boolean test(ObjectCluster oc) {
if (qualifierName == null) {
return itemName.equals(oc.getClassName()) ^ excluded;
}
if (oc.getQualifier() == null) {
return true;
}
return itemName.equals(oc.getQualifier()) ^ excluded;
}
@Override
public String toString() {
return (qualifierName == null ? "Class" : mQualifierName) + (excluded ? " ≠ " : " = ") //$NON-NLS-1$ //$NON-NLS-2$
+ item.getId().toString();
}
@Override
public int hashCode() {
return itemName.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
return hashCode() == obj.hashCode();
}
});
};
mPieChart.getPieChart().addMouseListener(new MouseListener() {
@Override
public void mouseDoubleClick(MouseEvent e) {
// no op
}
@Override
public void mouseDown(MouseEvent e) {
// no op
}
@Override
public void mouseUp(MouseEvent e) {
ArcItem item = mPieChart.getPieChart().getHighlightedItem();
if (item == null) {
return;
}
if (item.getData() == null) {
return;
}
addFilter.accept((MemoryStatisticsItem) item.getData(), e.button != 1);
}
});
mTableViewer.getTable().addMouseListener(new MouseListener() {
@Override
public void mouseDoubleClick(MouseEvent e) {
// no op
}
@Override
public void mouseDown(MouseEvent e) {
// no op
}
@Override
public void mouseUp(MouseEvent e) {
if (e.button != 1 && e.button != 3) {
return;
}
if (mTableViewer.getSelection().isEmpty()) {
return;
}
IStructuredSelection selection = (IStructuredSelection) mTableViewer.getSelection();
MemoryStatisticsItem item = (MemoryStatisticsItem) selection.getFirstElement();
addFilter.accept(item, e.button != 1);
}
});
}
mContainer.setWeights(new int[] {1, 2});
mTableViewer.setPieChartViewer(mPieChart);
mPieChart.setTableViewer(mTableViewer);
}