You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/10/05 19:09:49 UTC
svn commit: r821923 - in
/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: ListView.java
ListViewListener.java skin/terra/TerraListViewSkin.java
skin/terra/TerraTreeViewSkin.java
Author: tvolkert
Date: Mon Oct 5 17:09:49 2009
New Revision: 821923
URL: http://svn.apache.org/viewvc?rev=821923&view=rev
Log:
PIVOT-303 :: Add disabled checkmark filter to list view
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListViewListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java?rev=821923&r1=821922&r2=821923&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java Mon Oct 5 17:09:49 2009
@@ -390,13 +390,22 @@
}
@Override
- public void disabledItemFilterChanged(ListView listView, Filter<?> previousDisabledItemFilter) {
+ public void disabledItemFilterChanged(ListView listView,
+ Filter<?> previousDisabledItemFilter) {
for (ListViewListener listener : this) {
listener.disabledItemFilterChanged(listView, previousDisabledItemFilter);
}
}
@Override
+ public void disabledCheckmarkFilterChanged(ListView listView,
+ Filter<?> previousDisabledCheckmarkFilter) {
+ for (ListViewListener listener : this) {
+ listener.disabledCheckmarkFilterChanged(listView, previousDisabledCheckmarkFilter);
+ }
+ }
+
+ @Override
public void selectedItemKeyChanged(ListView listView, String previousSelectedItemKey) {
for (ListViewListener listener : this) {
listener.selectedItemKeyChanged(listView, previousSelectedItemKey);
@@ -587,6 +596,7 @@
private ArrayList<Integer> checkedIndexes = new ArrayList<Integer>();
private Filter<?> disabledItemFilter = null;
+ private Filter<?> disabledCheckmarkFilter = null;
private String selectedItemKey = null;
private String selectedItemsKey = null;
@@ -1273,6 +1283,70 @@
}
/**
+ * Tells whether or not an item's checkmark is disabled.
+ *
+ * @param index
+ * The index of the item whose disabled checkmark state is to be tested.
+ *
+ * @return
+ * <tt>true</tt> if the item's checkmark is disabled; <tt>false</tt>
+ * otherwise.
+ */
+ @SuppressWarnings("unchecked")
+ public boolean isCheckmarkDisabled(int index) {
+ boolean disabled = false;
+
+ if (disabledCheckmarkFilter != null) {
+ Object item = listData.get(index);
+ disabled = ((Filter<Object>)disabledCheckmarkFilter).include(item);
+ }
+
+ return disabled;
+ }
+
+ /**
+ * Returns the disabled checkmark filter, which determines which checkboxes
+ * are interactive and which are not. Note that this filter only affects
+ * user interaction; items may still be checked programatically despite
+ * their inclusion in this filter. If this filter is set to <tt>null</tt>,
+ * all checkboxes will be interactive.
+ * <p>
+ * <b>Note:</b> this filter is only relavent if
+ * {@link #setCheckmarksEnabled(boolean) checkmarksEnabled} is set to true.
+ *
+ * @return
+ * The disabled checkmark filter, or <tt>null</tt> if no disabled checkmark
+ * filter is set
+ */
+ public Filter<?> getDisabledCheckmarkFilter() {
+ return disabledCheckmarkFilter;
+ }
+
+ /**
+ * Sets the disabled checkmark filter, which determines which checkboxes
+ * are interactive and which are not. Note that this filter only affects
+ * user interaction; items may still be checked programatically despite
+ * their inclusion in this filter. If this filter is set to <tt>null</tt>,
+ * all checkboxes will be interactive.
+ * <p>
+ * <b>Note:</b> this filter is only relavent if
+ * {@link #setCheckmarksEnabled(boolean) checkmarksEnabled} is set to true.
+ * enabled.
+ *
+ * @param disabledCheckmarkFilter
+ * The disabled checkmark filter, or <tt>null</tt> for no disabled
+ * checkmark filter
+ */
+ public void setDisabledCheckmarkFilter(Filter<?> disabledCheckmarkFilter) {
+ Filter<?> previousDisabledCheckmarkFilter = this.disabledCheckmarkFilter;
+
+ if (previousDisabledCheckmarkFilter !=disabledCheckmarkFilter ) {
+ this.disabledCheckmarkFilter = disabledCheckmarkFilter;
+ listViewListeners.disabledCheckmarkFilterChanged(this, previousDisabledCheckmarkFilter);
+ }
+ }
+
+ /**
* Returns an item's disabled state.
*
* @param index
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListViewListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListViewListener.java?rev=821923&r1=821922&r2=821923&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListViewListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListViewListener.java Mon Oct 5 17:09:49 2009
@@ -48,7 +48,13 @@
}
@Override
- public void disabledItemFilterChanged(ListView listView, Filter<?> previousDisabledItemFilter) {
+ public void disabledItemFilterChanged(ListView listView,
+ Filter<?> previousDisabledItemFilter) {
+ }
+
+ @Override
+ public void disabledCheckmarkFilterChanged(ListView listView,
+ Filter<?> previousDisabledCheckmarkFilter) {
}
@Override
@@ -108,6 +114,15 @@
public void disabledItemFilterChanged(ListView listView, Filter<?> previousDisabledItemFilter);
/**
+ * Called when a list view's disabled checkmark filter has changed.
+ *
+ * @param listView
+ * @param previousDisabledCheckmarkFilter
+ */
+ public void disabledCheckmarkFilterChanged(ListView listView,
+ Filter<?> previousDisabledCheckmarkFilter);
+
+ /**
* Called when a list view's selected item key has changed.
*
* @param listView
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java?rev=821923&r1=821922&r2=821923&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java Mon Oct 5 17:09:49 2009
@@ -206,7 +206,7 @@
itemY + checkboxY, CHECKBOX.getWidth(), CHECKBOX.getHeight());
CHECKBOX.setSelected(checked);
- CHECKBOX.setEnabled(!disabled);
+ CHECKBOX.setEnabled(!disabled && !listView.isCheckmarkDisabled(itemIndex));
CHECKBOX.paint(checkboxGraphics);
checkboxGraphics.dispose();
@@ -673,6 +673,7 @@
int itemY = itemIndex * itemHeight;
if (listView.getCheckmarksEnabled()
+ && !listView.isCheckmarkDisabled(itemIndex)
&& x > checkboxPadding.left
&& x < checkboxPadding.left + CHECKBOX.getWidth()
&& y > itemY + checkboxPadding.top
@@ -790,8 +791,12 @@
if (listView.getCheckmarksEnabled()
&& listView.getSelectMode() == ListView.SelectMode.SINGLE) {
int selectedIndex = listView.getSelectedIndex();
- listView.setItemChecked(selectedIndex, !listView.isItemChecked(selectedIndex));
- consumed = true;
+
+ if (!listView.isCheckmarkDisabled(selectedIndex)) {
+ listView.setItemChecked(selectedIndex,
+ !listView.isItemChecked(selectedIndex));
+ consumed = true;
+ }
}
break;
@@ -848,6 +853,12 @@
}
@Override
+ public void disabledCheckmarkFilterChanged(ListView listView,
+ Filter<?> previousDisabledCheckmarkFilter) {
+ repaintComponent();
+ }
+
+ @Override
public void selectedItemKeyChanged(ListView listView, String previousSelectedItemKey) {
// No-op
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java?rev=821923&r1=821922&r2=821923&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java Mon Oct 5 17:09:49 2009
@@ -660,7 +660,7 @@
}
CHECKBOX.setState(state);
- CHECKBOX.setEnabled(!nodeInfo.isCheckmarkDisabled());
+ CHECKBOX.setEnabled(!disabled && !nodeInfo.isCheckmarkDisabled());
CHECKBOX.paint(checkboxGraphics);
checkboxGraphics.dispose();