
com.jidesoft.plaf.basic.BasicCheckBoxListUI Maven / Gradle / Ivy
/*
* @(#)BasicCheckBoxListUI.java 3/18/2009
*
* Copyright 2002 - 2009 JIDE Software Inc. All rights reserved.
*
*/
package com.jidesoft.plaf.basic;
import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicListUI;
import java.awt.*;
public class BasicCheckBoxListUI extends BasicListUI {
public BasicCheckBoxListUI() {
}
@SuppressWarnings({"UnusedDeclaration"})
public static ComponentUI createUI(JComponent c) {
return new BasicCheckBoxListUI();
}
@Override
public int locationToIndex(JList aList, Point location) {
int index = super.locationToIndex(aList, location);
int size = list.getModel().getSize();
if (index < size - 1) {
return index;
}
// To avoid the behavior that clicking on the blank area selects the last item in the list.
int y = location.y;
Insets insets = list.getInsets();
int maxRow = size - 1; // it is only valid for JList.VERTICAL scenario, no good solution for other orientations
int row;
if (cellHeights == null) {
row = (cellHeight == 0) ? 0 :
((y - insets.top) / cellHeight);
}
else if (size > cellHeights.length) {
return index;
}
else {
int rowYOffset = insets.top;
for (row = 0; row < size; row++) {
if (y >= rowYOffset && y < rowYOffset + cellHeights[row]) {
break;
}
rowYOffset += cellHeights[row];
}
}
if (row > maxRow) {
return -1;
}
else {
return index;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy