package org.richfaces.sandbox.component; import javax.faces.context.FacesContext; import org.richfaces.model.DataVisitResult; import org.richfaces.model.DataVisitor; public class AbstractTogglePanelItemVisitor implements DataVisitor { // ------------------------------ FIELDS ------------------------------ private TabVisitorCallback callback; private AbstractTogglePanel panel; // --------------------------- CONSTRUCTORS --------------------------- public AbstractTogglePanelItemVisitor(AbstractTogglePanel panel, TabVisitorCallback callback) { this.panel = panel; this.callback = callback; } // ------------------------ INTERFACE METHODS ------------------------ // --------------------- Interface DataVisitor --------------------- @Override public DataVisitResult process(FacesContext context, Object rowKey, Object argument) { panel.setRowKey(context, rowKey); if (panel.isRowAvailable()) { if (panel.getChildCount() > 0) { for (AbstractTogglePanelItemInterface item : panel.getRenderedItems()) { if(DataVisitResult.STOP.equals(callback.visit(item))) { return DataVisitResult.STOP; } } } } return DataVisitResult.CONTINUE; } // -------------------------- INNER CLASSES -------------------------- public abstract static class TabVisitorCallback { // -------------------------- OTHER METHODS -------------------------- public abstract DataVisitResult visit(AbstractTogglePanelItemInterface item); } }