Skip to content

Commit

Permalink
Added clicked listeners.
Browse files Browse the repository at this point in the history
  • Loading branch information
yuri.kanivets committed Jan 31, 2011
1 parent 1cb4ab0 commit a6e2cfc
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 4 deletions.
10 changes: 9 additions & 1 deletion wheel/src/kankan/wheel/demo/TimeActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import kankan.wheel.R;
import kankan.wheel.widget.OnWheelChangedListener;
import kankan.wheel.widget.OnWheelClickedListener;
import kankan.wheel.widget.OnWheelScrollListener;
import kankan.wheel.widget.WheelView;
import kankan.wheel.widget.adapters.NumericWheelAdapter;
Expand Down Expand Up @@ -64,9 +65,16 @@ public void onChanged(WheelView wheel, int oldValue, int newValue) {
}
}
};

hours.addChangingListener(wheelListener);
mins.addChangingListener(wheelListener);

OnWheelClickedListener click = new OnWheelClickedListener() {
public void onItemClicked(WheelView wheel, int itemIndex) {
wheel.setCurrentItem(itemIndex, true);
}
};
hours.addClickingListener(click);
mins.addClickingListener(click);

OnWheelScrollListener scrollListener = new OnWheelScrollListener() {
public void onScrollingStarted(WheelView wheel) {
Expand Down
4 changes: 2 additions & 2 deletions wheel/src/kankan/wheel/widget/OnWheelChangedListener.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2010 Yuri Kanivets
* Copyright 2011 Yuri Kanivets
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -18,7 +18,7 @@

/**
* Wheel changed listener interface.
* <p>The currentItemChanged() method is called whenever current wheel positions is changed:
* <p>The onChanged() method is called whenever current wheel positions is changed:
* <li> New Wheel position is set
* <li> Wheel view is scrolled
*/
Expand Down
32 changes: 32 additions & 0 deletions wheel/src/kankan/wheel/widget/OnWheelClickedListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright 2011 Yuri Kanivets
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package kankan.wheel.widget;

/**
* Wheel clicked listener interface.
* <p>The onItemClicked() method is called whenever a wheel item is clicked
* <li> New Wheel position is set
* <li> Wheel view is scrolled
*/
public interface OnWheelClickedListener {
/**
* Callback method to be invoked when current item clicked
* @param wheel the wheel view
* @param itemIndex the index of clicked item
*/
void onItemClicked(WheelView wheel, int itemIndex);
}
28 changes: 27 additions & 1 deletion wheel/src/kankan/wheel/widget/WheelView.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ public class WheelView extends View {
// Listeners
private List<OnWheelChangedListener> changingListeners = new LinkedList<OnWheelChangedListener>();
private List<OnWheelScrollListener> scrollingListeners = new LinkedList<OnWheelScrollListener>();
private List<OnWheelClickedListener> clickingListeners = new LinkedList<OnWheelClickedListener>();

/**
* Constructor
Expand Down Expand Up @@ -366,6 +367,31 @@ protected void notifyScrollingListenersAboutEnd() {
}
}

/**
* Adds wheel clicking listener
* @param listener the listener
*/
public void addClickingListener(OnWheelClickedListener listener) {
clickingListeners.add(listener);
}

/**
* Removes wheel clicking listener
* @param listener the listener
*/
public void removeClickingListener(OnWheelClickedListener listener) {
clickingListeners.remove(listener);
}

/**
* Notifies listeners about clicking
*/
protected void notifyClickListenersAboutClick(int item) {
for (OnWheelClickedListener listener : clickingListeners) {
listener.onItemClicked(this, item);
}
}

/**
* Gets current value
*
Expand Down Expand Up @@ -764,7 +790,7 @@ public boolean onTouchEvent(MotionEvent event) {
}
int items = distance / getItemHeight();
if (items != 0 && isValidItemIndex(currentItem + items)) {
scroll(items, 0);
notifyClickListenersAboutClick(currentItem + items);
}
}
break;
Expand Down

0 comments on commit a6e2cfc

Please sign in to comment.