Package org.richfaces.component.state

Examples of org.richfaces.component.state.TreeState


    TreeRowKey rowKey = (TreeRowKey) getRowKey();
    if (rowKey == null) {
      return;
    }
   
    TreeState state = (TreeState) getComponentState();
    state.clearSubState(rowKey);
  }
View Full Code Here


  public Object getParentRowKey(Object rowKey) {
    return ((AbstractTreeDataModel) getExtendedDataModel()).getParentRowKey(rowKey);
  }

  public void transferQueuedNode() {
    TreeState treeState = (TreeState) getComponentState();
    treeState.transferQueuedNodes((TreeRowKey) getRowKey());
  }
View Full Code Here

      isLastElement = false;
      navigator.resetLastElement();
    }

    public void processAdvisors(FacesContext context, TreeRowKey rowKey) throws IOException {
      TreeState state = (TreeState) tree.getComponentState();
      TreeStateAdvisor stateAdvisor = (TreeStateAdvisor)tree.getStateAdvisor();

      if (null == stateAdvisor) {
        if (null == methodBindingAdvisor) {
          methodBindingAdvisor = new TreeStateAdvisor() {
            public Boolean adviseNodeOpened(UITree tree) {
              MethodBinding adviseNodeOpened = tree.getAdviseNodeOpened();
              if (null != adviseNodeOpened) {
                return (Boolean) adviseNodeOpened.invoke(FacesContext.getCurrentInstance(), new Object[] {tree});
              }
              return null;
            }

            public Boolean adviseNodeSelected(UITree tree) {
              MethodBinding adviseNodeSelected = tree.getAdviseNodeSelected();
              if (null != adviseNodeSelected) {
                return (Boolean) adviseNodeSelected.invoke(FacesContext.getCurrentInstance(), new Object [] {tree});
              }
              return null;
            }
          };
        }
        stateAdvisor = methodBindingAdvisor;
      }

      Boolean adviseOpened = stateAdvisor.adviseNodeOpened(tree);
      if (null != adviseOpened) {
        if (adviseOpened.booleanValue()) {
          state.makeExpanded(rowKey);
        } else {
          state.makeCollapsed(rowKey);
        }
      }
     
      Boolean adviseSelected = stateAdvisor.adviseNodeSelected(tree);
      if (null != adviseSelected) {
        if (adviseSelected.booleanValue()) {
          if (!state.isSelected(rowKey)) {
            state.setSelected(rowKey);
          }
        }
        else {
          if (state.isSelected(rowKey)) {
            state.setSelected(null);
          }
        }
      }
    }
View Full Code Here

  public void resetDataModel() {
    this.allowCachedModel = false;
   
    super.resetDataModel();

    TreeState state = (TreeState) getComponentState();
    // re-set stopInCollapsed to handle AJAX switch type change
    state.setStopInCollapsed(isStopInCollapsed());
  }
View Full Code Here

    try {
      super.processDecodes(faces, null);

      if (null != getAttributes().get(SELECTION_INPUT_ATTRIBUTE)) {
        TreeState state = (TreeState) getComponentState();

        if (!state.isSelected(null)) {
          new NodeSelectedEvent(this, state.getSelectedNode()).queue();
        }
      }

    } finally {
      getAttributes().remove(SELECTION_INPUT_ATTRIBUTE);
View Full Code Here

    UITreeNode node = (UITreeNode) component;
    UITree tree = node.getUITree();
    TreeRowKey key = (TreeRowKey) tree.getRowKey();
    Map requestMap = context.getExternalContext().getRequestParameterMap();
    String id = node.getClientId(context);
    TreeState componentState = (TreeState) tree.getComponentState();

    String nodeExpandedId = id + NODE_EXPANDED_INPUT_SUFFIX;
    Object nodeExpandedValue = requestMap.get(nodeExpandedId);
    if (nodeExpandedValue != null) {
      boolean nodeExpanded = Boolean.valueOf(nodeExpandedValue.toString()).booleanValue();
      if (tree.isExpanded() ^ nodeExpanded) {
        if (nodeExpanded) {
          new ExpandNodeCommandEvent(tree, key).queue();
        } else {
          new CollapseNodeCommandEvent(tree, key).queue();
        }

        if (Boolean.valueOf((String) requestMap.get(id + AJAX_EXPANDED_SUFFIX)).booleanValue()) {
          new AjaxExpandedEvent(node).queue();
          new AjaxExpandedEvent(tree).queue();
        } else {
          new NodeExpandedEvent(node).queue();
          new NodeExpandedEvent(tree).queue();
        }
      }
    }

    if (id.equals(tree.getAttributes()
        .get(UITree.SELECTION_INPUT_ATTRIBUTE))) {
      if (!componentState.isSelected(key)) {

        if (tree.getAttributes().get(
            UITree.SELECTED_NODE_PARAMETER_NAME) == null) {

          new NodeSelectedEvent(tree, componentState.getSelectedNode()).queue();
          new NodeSelectedEvent(node, componentState.getSelectedNode()).queue();
        } else {
          new AjaxSelectedEvent(tree, componentState.getSelectedNode()).queue();
          new AjaxSelectedEvent(node, componentState.getSelectedNode()).queue();
        }
      }

      tree.getAttributes().remove(UITree.SELECTION_INPUT_ATTRIBUTE);
    }
View Full Code Here

    Set<ResourceTreeNode> openNodes = new HashSet<ResourceTreeNode>();
   
    public void changeExpandListener(org.richfaces.event.NodeExpandedEvent e) {
        HtmlTree tree = (HtmlTree) e.getComponent();
        TreeState state = (TreeState) tree.getComponentState();

        //check if we're collapsing a parent of currently selected node.
        //if we do, change the focus to the parent
        if (state.getSelectedNode() != null) {
            boolean closingParent = false;

            TreeRowKey<?> key = (TreeRowKey<?>) tree.getRowKey();
            ResourceTreeNode node = (ResourceTreeNode) tree.getRowData(key);
            ResourceTreeNode selectedNode = (ResourceTreeNode) tree.getRowData(state.getSelectedNode());

            ResourceTreeNode traverseCheckNode = selectedNode.getParent();
            while (traverseCheckNode != null) {
                if (node.equals(traverseCheckNode)) {
                    closingParent = true;
                    break;
                }
                traverseCheckNode = traverseCheckNode.getParent();
            }

            if (closingParent) {
                if (redirectTo(node)) {
                    state.setSelected(key);
                    openNodes.remove(node);
                   
                    //this is nasty hack. We need some kind of flag that would persist only for the remainder
                    //of this request to advertise that no more open/closed states should be made in this request.
                    //The tree is request scoped, so setting this flag will not persist to the next request.
View Full Code Here

        }
    }

    public void nodeSelectListener(org.richfaces.event.NodeSelectedEvent e) {
        HtmlTree tree = (HtmlTree) e.getComponent();
        TreeState state = (TreeState) ((HtmlTree) tree).getComponentState();

        ResourceTreeNode node = (ResourceTreeNode) tree.getRowData(tree.getRowKey());

        if (node != null && !redirectTo(node)) {
            state.setSelected(e.getOldSelection());
        }
    }
View Full Code Here

        }
        return ret;
    }

    public Boolean adviseNodeSelected(UITree tree) {
        TreeState state = (TreeState) ((HtmlTree) tree).getComponentState();
        String id = FacesContextUtility.getOptionalRequestParameter("id");
        String parent = FacesContextUtility.getOptionalRequestParameter("parent");
        String type = FacesContextUtility.getOptionalRequestParameter("type");
        ResourceTreeNode node = (ResourceTreeNode) tree.getRowData(tree.getRowKey());

        if (node.getData() instanceof AutoGroupCompositeFlyweight) {
            AutoGroupCompositeFlyweight ag = (AutoGroupCompositeFlyweight) node.getData();
            if (ag.getParentResource() != null && ag.getResourceType() != null
                && String.valueOf(ag.getParentResource().getId()).equals(parent)
                && String.valueOf(ag.getResourceType().getId()).equals(type)) {
                return true;
            }
        } else if (node.getData() instanceof ResourceFlyweight) {
            if (String.valueOf(((ResourceFlyweight) node.getData()).getId()).equals(id)) {
                return Boolean.TRUE;
            }
        }

       
        return tree.getRowKey().equals(state.getSelectedNode());
    }
View Full Code Here

        return Integer.parseInt(groupId);
    }

    public void changeExpandListener(org.richfaces.event.NodeExpandedEvent e) {
        HtmlTree tree = (HtmlTree) e.getComponent();
        TreeState state = (TreeState) tree.getComponentState();

        //check if we're collapsing a parent of currently selected node.
        //if we do, change the focus to the parent
        if (state.getSelectedNode() != null) {
            boolean closingParent = false;

            TreeRowKey<?> key = (TreeRowKey<?>) tree.getRowKey();
            ResourceGroupTreeNode node = (ResourceGroupTreeNode) tree.getRowData(key);
            ResourceGroupTreeNode selectedNode = (ResourceGroupTreeNode) tree.getRowData(state.getSelectedNode());

            ResourceGroupTreeNode traverseCheckNode = selectedNode.getParent();
            while (traverseCheckNode != null) {
                if (node.equals(traverseCheckNode)) {
                    closingParent = true;
                    break;
                }
                traverseCheckNode = traverseCheckNode.getParent();
            }

            if (closingParent) {
                if (redirectTo(node)) {
                    state.setSelected(key);
                    openNodes.remove(node);
                   
                    //this is nasty hack. We need some kind of flag that would persist only for the remainder
                    //of this request to advertise that no more open/closed states should be made in this request.
                    //The tree is request scoped, so setting this flag will not persist to the next request.
View Full Code Here

TOP

Related Classes of org.richfaces.component.state.TreeState

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.