package examples.roles;
import net.sourceforge.tapestry_jsmenu.api.IDisplayModeProvider;
import org.apache.tapestry.IAsset;
import org.apache.tapestry.IExternalPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.annotations.Asset;
import org.apache.tapestry.annotations.InitialValue;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
import java.util.Collection;;
public abstract class RoleBasedHiding extends BasePage{
@Asset("classpath:/examples/roles/menu.xml")
public abstract IAsset getModel();
@InitialValue("literal:admin")
@Persist("session")
public abstract String getRole();
public abstract void setRole(String role);
private IDisplayModeProvider displayMode = null;
public IDisplayModeProvider getDisplayMode(){
if(displayMode == null) displayMode =
new IDisplayModeProvider(){
public boolean getDisplayMode(String id, Collection<String> roles) {
if(roles.size() == 0) return true;
return roles.contains(getRole());
}
};
return displayMode;
}
/**
* This is called when one of the menu items is clicked
*/
public void onNavigate(IRequestCycle cycle, String id){
String msg = "This page was called via DirectLink from menuitem '" + id + "'";
System.out.println(msg);
}
public void changeRole(IRequestCycle cycle, String newRole){
setRole(newRole);
}
}
|