@Override public void disabledItemFilterChanged(ListButton listButton, Filter<?> previousDisabledItemFilter) { listView.setDisabledItemFilter(listButton.getDisabledItemFilter()); }
@Override public void install(Component component) { super.install(component); ListButton listButton = (ListButton)component; listButton.getListButtonListeners().add(this); listButton.getListButtonSelectionListeners().add(this); listView.setListData(listButton.getListData()); listView.setItemRenderer(listButton.getItemRenderer()); }
@Override public void selectedIndexChanged(ListButton listButton, int previousSelectedIndex) { int selectedIndex = listButton.getSelectedIndex(); if (selectedIndex != previousSelectedIndex) { // This was not an indirect selection change Object buttonData = (selectedIndex == -1) ? null : listButton.getListData().get(selectedIndex); listButton.setButtonData(buttonData); listView.setSelectedIndex(selectedIndex); } }
/** * Creates a list button with the given button and list data. * * @param buttonData * @param listData */ public ListButton(Object buttonData, List<?> listData) { super(buttonData); setDataRenderer(DEFAULT_DATA_RENDERER); setItemRenderer(DEFAULT_ITEM_RENDERER); setListData(listData); installSkin(ListButton.class); }
@Override public void listDataChanged(ListButton listButton, List<?> previousListData) { listButton.setButtonData(null); listView.setListData(listButton.getListData()); invalidateComponent(); }
/** * Select the next enabled list item where the first character of the * rendered text matches the typed key (case insensitive). */ @Override public boolean keyTyped(Component component, char character) { boolean consumed = super.keyTyped(component, character); ListButton listButton = (ListButton)getComponent(); List<?> listData = listButton.getListData(); ListView.ItemRenderer itemRenderer = listButton.getItemRenderer(); character = Character.toUpperCase(character); for (int i = listButton.getSelectedIndex() + 1, n = listData.getLength(); i < n; i++) { if (!listButton.isItemDisabled(i)) { String string = itemRenderer.toString(listData.get(i)); if (string != null && string.length() > 0) { char first = Character.toUpperCase(string.charAt(0)); if (first == character) { listButton.setSelectedIndex(i); consumed = true; break; } } } } return consumed; }
} else if (!listButton.isRepeatable()){ listViewPopup.open(component.getWindow()); int index = listButton.getSelectedIndex(); && listButton.isItemDisabled(index)); listButton.setSelectedIndex(index); consumed = true; int index = listButton.getSelectedIndex(); int count = listButton.getListData().getLength(); listButton.setSelectedIndex(index); consumed = true;
public Object getSelectedItem() { int index = getSelectedIndex(); Object item = null; if (index >= 0) { item = listData.get(index); } return item; }
@Override public void listCleared(List<Object> list) { int previousSelectedIndex = selectedIndex; selectedIndex = -1; listButtonItemListeners.itemsCleared(ListButton.this); if (previousSelectedIndex != selectedIndex) { listButtonSelectionListeners.selectedIndexChanged(ListButton.this, selectedIndex); listButtonSelectionListeners.selectedItemChanged(ListButton.this, getSelectedItem()); } }
/** * @return the popup window associated with this components skin */ public Window getListPopup() { return ((ListButton.Skin) getSkin()).getListViewPopup(); }
@Override public void itemRendererChanged(ListButton listButton, ListView.ItemRenderer previousItemRenderer) { listView.setItemRenderer(listButton.getItemRenderer()); }
/** * Sets the selection. * * @param selectedIndex * The index of the list item to select, or <tt>-1</tt> to clear the * selection. */ public void setSelectedIndex(int selectedIndex) { indexBoundsCheck("selectedIndex", selectedIndex, -1, listData.getLength() - 1); int previousSelectedIndex = this.selectedIndex; if (previousSelectedIndex != selectedIndex) { this.selectedIndex = selectedIndex; listButtonSelectionListeners.selectedIndexChanged(this, previousSelectedIndex); listButtonSelectionListeners.selectedItemChanged(this, (previousSelectedIndex == -1) ? null : listData.get(previousSelectedIndex)); } }
/** * Select the next enabled list item where the first character of the * rendered text matches the typed key (case insensitive). */ @Override public boolean keyTyped(Component component, char character) { boolean consumed = super.keyTyped(component, character); ListButton listButton = (ListButton)getComponent(); List<?> listData = listButton.getListData(); ListView.ItemRenderer itemRenderer = listButton.getItemRenderer(); char characterUpper = Character.toUpperCase(character); for (int i = listButton.getSelectedIndex() + 1, n = listData.getLength(); i < n; i++) { if (!listButton.isItemDisabled(i)) { String string = itemRenderer.toString(listData.get(i)); if (string != null && string.length() > 0) { char first = Character.toUpperCase(string.charAt(0)); if (first == characterUpper) { listButton.setSelectedIndex(i); consumed = true; break; } } } } return consumed; }
} else if (!listButton.isRepeatable()){ listViewPopup.open(component.getWindow()); int index = listButton.getSelectedIndex(); && listButton.isItemDisabled(index)); listButton.setSelectedIndex(index); consumed = true; int index = listButton.getSelectedIndex(); int count = listButton.getListData().getLength(); listButton.setSelectedIndex(index); consumed = true;
/** * Creates a list button with the given button and list data. * <p> * Note that the default renderer uses (as last option) the toString method on list elements, * so override it to return whatever you want to display in the ListView, * or implement your own custom renderer. * * @param buttonData * The button data. * * @param listData * The data to set. * * @see ListButtonDataRenderer * @see ListViewItemRenderer */ public ListButton(Object buttonData, List<?> listData) { super(buttonData); setDataRenderer(DEFAULT_DATA_RENDERER); setItemRenderer(DEFAULT_ITEM_RENDERER); setListData(listData); installSkin(ListButton.class); }
@Override public void listDataChanged(ListButton listButton, List<?> previousListData) { listButton.setButtonData(null); listView.setListData(listButton.getListData()); invalidateComponent(); }
public Object getSelectedItem() { int index = getSelectedIndex(); Object item = null; if (index >= 0) { item = listData.get(index); } return item; }
@Override public void listCleared(List<Object> list) { int previousSelectedIndex = selectedIndex; selectedIndex = -1; listButtonItemListeners.itemsCleared(ListButton.this); if (previousSelectedIndex != selectedIndex) { listButtonSelectionListeners.selectedIndexChanged(ListButton.this, selectedIndex); listButtonSelectionListeners.selectedItemChanged(ListButton.this, getSelectedItem()); } }
/** * @return the popup window associated with this components skin */ public Window getListPopup() { return ((ListButton.Skin) getSkin()).getListViewPopup(); }
@Override public void itemRendererChanged(ListButton listButton, ListView.ItemRenderer previousItemRenderer) { listView.setItemRenderer(listButton.getItemRenderer()); }