Skip to content

Instantly share code, notes, and snippets.

@kevindoran
Created February 1, 2013 01:06
Show Gist options
  • Select an option

  • Save kevindoran/4688288 to your computer and use it in GitHub Desktop.

Select an option

Save kevindoran/4688288 to your computer and use it in GitHub Desktop.
MenuTable back bean
public class MenuTable<T> {
public List<Row<T>> rows;
private List<Subscriber<T>> subscribers = new ArrayList<>();
private int noOfColumns;
public MenuTable(int noOfColumns) {
this.noOfColumns = noOfColumns;
}
public void setContents(Collection<T> objects) {
rows = new ArrayList<>();
int count = objects.size();
int maxColumnLength = (int) Math.ceil(((double)count) / noOfColumns);
for(int i=0; i<maxColumnLength; i++) {
rows.add(new Row<T>());
}
Iterator<T> it = objects.iterator();
for(int col = 0; col < noOfColumns; col++) {
double left = count - col;
double temp = left / noOfColumns;
int columnLength = (int) Math.ceil(temp);
for(int i=0; i<columnLength; i++){
rows.get(i).add(it.next());
}
}
}
public void setSelected(T selected) {
updateSubscribers(selected);
}
private void updateSubscribers(T latest) {
for(Subscriber<T> s : subscribers) {
s.update(latest);
}
}
public List<Row<T>> getRows() {
return rows;
}
public int getNoOfColumns() {
return noOfColumns;
}
public void addSubscriber(Subscriber<T> subscriber) {
subscribers.add(subscriber);
}
public class Row<T> {
private List<T> contents = new ArrayList<>();
public List<T> getContents() {
return contents;
}
public void add(T object) {
contents.add(object);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment