    public void handle(final ActionContext actionContext) throws Exception {
	ComponentContainer displayArea = actionContext.getTargetContainer();
	displayArea.removeAllComponents();
	UserActionList ual = (UserActionList) actionContext.getUserAction();
	final OpenGroupsApplication app = actionContext.getApp();
	final Entity entity = actionContext.getEntity();
	final TabSheet actionsTabSheet = new TabSheet();
	actionsTabSheet.addStyleName(Reindeer.TABSHEET_MINIMAL);
	actionsTabSheet.addStyleName(OpenGroupsStyles.USER_ACTIONS_TABSHEET);
	actionsTabSheet.addListener(new SelectedTabChangeListener() {
	    @Override
	    public void selectedTabChange(SelectedTabChangeEvent event) {
		TabSheet tabSheet = event.getTabSheet();
		AbstractComponentContainer selectedTabContent = (AbstractComponentContainer) tabSheet.getSelectedTab();
		UserAction ua = (UserAction) selectedTabContent.getData();
		if (entity != null) {
		    Deque<String> desiredActionsQueue = entity.getState().getDesiredActionTabsQueue();
		    if (desiredActionsQueue.size() != 0) {
			String nextAction = desiredActionsQueue.peek();
			if (nextAction.equals(ua.getActionName())) {
			    desiredActionsQueue.remove();
			} else {
			    return;
			}
		    }
		}
		if (ua instanceof UserActionList) {
		    ua.executeHandler(entity, app, selectedTabContent, false, actionContext);
		} else {
		    if (entity != null) {
			entity.getState().setCurrentTabAction(ua);
			entity.getState().setCurrentTabActionContainer(selectedTabContent);
			entity.getState().setCurrentActionsPath(ua.getFullActionPath());
			actionContext.getWindow().setFragmentToEntity(entity);
		    }
		    ua.executeHandler(entity, app, selectedTabContent, false, actionContext);
		}
	    }
	});
	Map<String, ComponentContainer> actionPathContainers = new HashMap<String, ComponentContainer>();
	List<UserAction> actionsList = new ArrayList<UserAction>(ual.getActions().values());
	for (UserAction cua : actionsList) {
	    if(!cua.isVisible(actionContext)) {
		continue;
	    }
	    CssLayout tabContent = new CssLayout();
	    if (cua instanceof UserActionList) {
	    } else {
		tabContent.setMargin(true);
	    }
	    tabContent.addStyleName(OpenGroupsStyles.USER_ACTION_CONTENT_PANE);
	    actionPathContainers.put(cua.getActionName(), tabContent);
	    tabContent.setData(cua);
	    actionsTabSheet.addTab(tabContent, cua.getDisplayName(), null);
	}
	displayArea.addComponent(actionsTabSheet);
	if (entity != null) {
	    Deque<String> desiredActionsQueue = entity.getState().getDesiredActionTabsQueue();
	    if (desiredActionsQueue.size() != 0) {
		actionsTabSheet.setSelectedTab(actionPathContainers.get(desiredActionsQueue.peek()));
	    }
	}
    }

    public void handle(final ActionContext actionContext) throws Exception {
	ComponentContainer displayArea = actionContext.getTargetContainer();
	displayArea.removeAllComponents();
	UserActionList ual = (UserActionList) actionContext.getUserAction();
	final OpenGroupsApplication app = actionContext.getApp();
	final Entity entity = actionContext.getEntity();
	final TabSheet actionsTabSheet = new TabSheet();
	actionsTabSheet.addStyleName(Reindeer.TABSHEET_MINIMAL);
	actionsTabSheet.addStyleName(OpenGroupsStyles.USER_ACTIONS_TABSHEET);
	actionsTabSheet.addListener(new SelectedTabChangeListener() {
	    @Override
	    public void selectedTabChange(SelectedTabChangeEvent event) {
		TabSheet tabSheet = event.getTabSheet();
		AbstractComponentContainer selectedTabContent = (AbstractComponentContainer) tabSheet.getSelectedTab();
		UserAction ua = (UserAction) selectedTabContent.getData();
		if (entity != null) {
		    Deque<String> desiredActionsQueue = entity.getState().getDesiredActionTabsQueue();
		    if (desiredActionsQueue.size() != 0) {
			String nextAction = desiredActionsQueue.peek();
			if (nextAction.equals(ua.getActionName())) {
			    desiredActionsQueue.remove();
			} else {
			    return;
			}
		    }
		    else{
			entity.getState().resetPageInfo();
		    }
		}
		if (ua instanceof UserActionList) {
		    ua.executeHandler(entity, app, selectedTabContent, false, actionContext);
		} else {
		    if (entity != null) {
			entity.getState().setCurrentTabAction(ua);
			entity.getState().setCurrentTabActionContainer(selectedTabContent);
			entity.getState().setCurrentActionsPath(ua.getFullActionPath());
			actionContext.getWindow().setFragmentToEntity(entity);
		    }
		    ua.executeHandler(entity, app, selectedTabContent, false, actionContext);
		}
	    }
	});
	Map<String, ComponentContainer> actionPathContainers = new HashMap<String, ComponentContainer>();
	List<UserAction> actionsList = new ArrayList<UserAction>(ual.getActions().values());
	for (UserAction cua : actionsList) {
	    if(!cua.isVisible(actionContext)) {
		continue;
	    }
	    CssLayout tabContent = new CssLayout();
	    if (cua instanceof UserActionList) {
	    } else {
		tabContent.setMargin(true);
	    }
	    tabContent.addStyleName(OpenGroupsStyles.USER_ACTION_CONTENT_PANE);
	    actionPathContainers.put(cua.getActionName(), tabContent);
	    tabContent.setData(cua);
	    actionsTabSheet.addTab(tabContent, cua.getDisplayName(), null);
	}
	displayArea.addComponent(actionsTabSheet);
	if (entity != null) {
	    Deque<String> desiredActionsQueue = entity.getState().getDesiredActionTabsQueue();
	    if (desiredActionsQueue.size() != 0) {
		actionsTabSheet.setSelectedTab(actionPathContainers.get(desiredActionsQueue.peek()));
	    }
	}
    }
