use of org.apache.pivot.collections.List in project pivot by apache.
the class TerraListViewSkin method layout.
@Override
public void layout() {
ListView listView = (ListView) getComponent();
@SuppressWarnings("unchecked") List<Object> listData = (List<Object>) listView.getListData();
ListView.ItemRenderer itemRenderer = listView.getItemRenderer();
if (variableItemHeight) {
int width = getWidth();
int checkboxHeight = 0;
if (listView.getCheckmarksEnabled()) {
checkboxHeight = CHECKBOX.getHeight() + checkboxPadding.getHeight();
}
int n = listData.getLength();
itemBoundaries = new ArrayList<>(n);
int itemY = 0;
for (int i = 0; i < n; i++) {
Object item = listData.get(i);
int itemWidth = width;
int itemX = 0;
Button.State state = Button.State.UNSELECTED;
if (listView.getCheckmarksEnabled()) {
if (listView.getAllowTriStateCheckmarks()) {
state = listView.getItemCheckmarkState(i);
} else {
state = listView.isItemChecked(i) ? Button.State.SELECTED : Button.State.UNSELECTED;
}
itemX = CHECKBOX.getWidth() + checkboxPadding.getWidth();
itemWidth -= itemX;
}
itemRenderer.render(item, i, listView, false, state, false, false);
int itemHeight = itemRenderer.getPreferredHeight(itemWidth);
if (listView.getCheckmarksEnabled()) {
itemHeight = Math.max(itemHeight, checkboxHeight);
}
itemY += itemHeight;
itemBoundaries.add(itemY);
}
} else {
itemRenderer.render(null, -1, listView, false, Button.State.UNSELECTED, false, false);
fixedItemHeight = itemRenderer.getPreferredHeight(-1);
if (listView.getCheckmarksEnabled()) {
fixedItemHeight = Math.max(CHECKBOX.getHeight() + checkboxPadding.getHeight(), fixedItemHeight);
}
}
if (validateSelection) {
// Ensure that the selection is visible
Sequence<Span> selectedRanges = listView.getSelectedRanges();
if (selectedRanges.getLength() > 0) {
int rangeStart = selectedRanges.get(0).start;
int rangeEnd = selectedRanges.get(selectedRanges.getLength() - 1).end;
Bounds selectionBounds = getItemBounds(rangeStart);
selectionBounds = selectionBounds.union(getItemBounds(rangeEnd));
Bounds visibleSelectionBounds = listView.getVisibleArea(selectionBounds);
if (visibleSelectionBounds != null && visibleSelectionBounds.height < selectionBounds.height) {
listView.scrollAreaToVisible(selectionBounds);
}
}
}
validateSelection = false;
}
use of org.apache.pivot.collections.List in project pivot by apache.
the class TerraListViewSkin method getBaseline.
@Override
public int getBaseline(int width, int height) {
ListView listView = (ListView) getComponent();
int baseline = -1;
int clientWidth = width;
if (listView.getCheckmarksEnabled()) {
clientWidth = Math.max(clientWidth - (CHECKBOX.getWidth() + checkboxPadding.getWidth()), 0);
}
ListView.ItemRenderer itemRenderer = listView.getItemRenderer();
@SuppressWarnings("unchecked") List<Object> listData = (List<Object>) listView.getListData();
if (variableItemHeight && listData.getLength() > 0) {
itemRenderer.render(listData.get(0), 0, listView, false, Button.State.UNSELECTED, false, false);
int itemHeight = itemRenderer.getPreferredHeight(clientWidth);
if (listView.getCheckmarksEnabled()) {
itemHeight = Math.max(CHECKBOX.getHeight() + checkboxPadding.getHeight(), itemHeight);
}
baseline = itemRenderer.getBaseline(clientWidth, itemHeight);
} else {
itemRenderer.render(null, -1, listView, false, Button.State.UNSELECTED, false, false);
int fixedItemHeightLocal = itemRenderer.getPreferredHeight(-1);
if (listView.getCheckmarksEnabled()) {
fixedItemHeightLocal = Math.max(CHECKBOX.getHeight() + checkboxPadding.getHeight(), fixedItemHeightLocal);
}
baseline = itemRenderer.getBaseline(clientWidth, fixedItemHeightLocal);
}
return baseline;
}
use of org.apache.pivot.collections.List in project pivot by apache.
the class ComponentPropertyInspectorSkin method sourceChanged.
@Override
public void sourceChanged(ComponentInspector componentInspector, Component previousSource) {
Component source = componentInspector.getSource();
clearControls();
Form.SectionSequence sections = form.getSections();
sections.remove(0, sections.getLength());
if (previousSource != null) {
beanMonitor.getPropertyChangeListeners().remove(propertyChangeListener);
}
if (source == null) {
beanMonitor = null;
} else {
beanMonitor = new BeanMonitor(source);
beanMonitor.getPropertyChangeListeners().add(propertyChangeListener);
Class<?> sourceType = source.getClass();
HashMap<Class<?>, List<String>> declaringClassPartitions = new HashMap<>(classComparator);
// Partition the properties by their declaring class
BeanAdapter beanAdapter = new BeanAdapter(source);
for (String propertyName : beanAdapter) {
if (beanMonitor.isNotifying(propertyName) && !beanAdapter.isReadOnly(propertyName)) {
Method method = BeanAdapter.getGetterMethod(sourceType, propertyName);
Class<?> declaringClass = method.getDeclaringClass();
List<String> propertyNames = declaringClassPartitions.get(declaringClass);
if (propertyNames == null) {
propertyNames = new ArrayList<>(nameComparator);
declaringClassPartitions.put(declaringClass, propertyNames);
}
propertyNames.add(propertyName);
}
}
// Add the controls
for (Class<?> declaringClass : declaringClassPartitions) {
Form.Section section = new Form.Section();
section.setHeading(declaringClass.getSimpleName());
sections.add(section);
List<String> propertyNames = declaringClassPartitions.get(declaringClass);
for (String propertyName : propertyNames) {
Class<?> type = beanAdapter.getType(propertyName);
addControl(beanAdapter, propertyName, type, section);
}
}
}
}
use of org.apache.pivot.collections.List in project pivot by apache.
the class EventLoggerSkin method setEventIncluded.
private void setEventIncluded(Method event, boolean included) {
@SuppressWarnings("unchecked") List<TreeNode> treeData = (List<TreeNode>) declaredEventsTreeView.getTreeData();
Sequence.Tree.ItemIterator<TreeNode> iter = Sequence.Tree.depthFirstIterator(treeData);
while (iter.hasNext()) {
TreeNode treeNode = iter.next();
if (treeNode instanceof EventNode) {
EventNode eventNode = (EventNode) treeNode;
if (eventNode.getEvent() == event) {
declaredEventsTreeView.setNodeChecked(iter.getPath(), included);
break;
}
}
}
}
use of org.apache.pivot.collections.List in project pivot by apache.
the class ExpensesWindow method deleteSelectedExpense.
private void deleteSelectedExpense() {
Object expense = expenseTableView.getSelectedRow();
final int id = JSON.getInt(expense, "id");
deleteConfirmationPrompt.open(this, new SheetCloseListener() {
@Override
public void sheetClosed(Sheet sheet) {
if (sheet.getResult() && ((Prompt) sheet).getSelectedOptionIndex() == 1) {
// DELETE expense from server and then remove from table
Expenses expensesApplicationLocal = getExpensesApplication();
DeleteQuery deleteExpenseQuery = new DeleteQuery(expensesApplicationLocal.getHostname(), expensesApplicationLocal.getPort(), "/pivot-tutorials/expenses/" + id, expensesApplicationLocal.isSecure());
activityIndicatorBoxPane.setVisible(true);
activityIndicator.setActive(true);
deleteExpenseQuery.execute(new TaskAdapter<>(new TaskListener<Void>() {
@Override
public void taskExecuted(Task<Void> task) {
activityIndicatorBoxPane.setVisible(false);
activityIndicator.setActive(false);
// Find matching row and remove
@SuppressWarnings("unchecked") List<Object> expenses = (List<Object>) expenseTableView.getTableData();
for (int i = 0, n = expenses.getLength(); i < n; i++) {
if (JSON.get(expenses.get(i), "id").equals(id)) {
expenses.remove(i, 1);
break;
}
}
}
@Override
public void executeFailed(Task<Void> task) {
activityIndicatorBoxPane.setVisible(false);
activityIndicator.setActive(false);
Prompt.prompt(MessageType.ERROR, task.getFault().getMessage(), ExpensesWindow.this);
}
}));
}
}
});
}
Aggregations