public PermListPanel()

in src/main/java/org/apache/directory/fortress/web/panel/PermListPanel.java [83:260]


    public PermListPanel( String id, final boolean isAdmin )
    {
        super( id );

        this.isAdmin = isAdmin;
        PermListModel permListModel = new PermListModel( new Permission( "", "" ),
            isAdmin, SecUtils.getSession( this ) );
        setDefaultModel( permListModel );
        List<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>> columns =
            new ArrayList<>();
        PropertyColumn objName = new PropertyColumn( new Model( "Object Name" ), "userObject.ObjName" );
        objName.setInitialSize( 350 );
        columns.add( objName );
        columns.add( new PropertyColumn( new Model( "Object Id" ), "userObject.ObjId" ) );
        columns.add( new PropertyColumn( new Model( "Operation Name" ), "userObject.OpName" ) );

        PropertyColumn description = new PropertyColumn( new Model( "Description" ),
            "userObject.Description" );
        description.setInitialSize( 300 );
        columns.add( description );

        String roleAssignLabel;
        if ( isAdmin )
        {
            roleAssignLabel = "Admin Role Assignments";
        }
        else
        {
            roleAssignLabel = "RBAC Role Assignments";
        }
        PropertyColumn roles = new PropertyColumn( new Model( roleAssignLabel ), "userObject.Roles" );
        roles.setInitialSize( 500 );
        columns.add( roles );

        List<Permission> perms = ( List<Permission> ) getDefaultModel().getObject();
        treeModel = createTreeModel( perms );

        grid = new TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String>( "permtreegrid", treeModel, columns )
        {
            /** Default serialVersionUID */
            private static final long serialVersionUID = 1L;


            @Override
            public void selectItem( IModel itemModel, boolean selected )
            {
                node = ( DefaultMutableTreeNode ) itemModel.getObject();

                if ( !node.isRoot() )
                {
                    Permission perm = ( Permission ) node.getUserObject();
                    LOG.debug( "TreeGrid.addGrid.selectItem selected perm objNm: " + perm.getObjName() + " opNm: "
                        + perm.getOpName() );

                    if ( super.isItemSelected( itemModel ) )
                    {
                        LOG.debug( "TreeGrid.addGrid.selectItem item is selected" );
                        super.selectItem( itemModel, false );
                    }
                    else
                    {
                        super.selectItem( itemModel, true );
                        SelectModelEvent.send( getPage(), this, perm );
                    }
                }
            }
        };

        //grid.setContentHeight( 50, SizeUnit.EM );
        grid.setAllowSelectMultiple( false );
        grid.setClickRowToSelect( true );
        grid.setClickRowToDeselect( false );
        grid.setSelectToEdit( false );
        // expand the root node
        grid.getTreeState().expandAll();
        listForm = new Form( "form" );
        listForm.add( grid );
        grid.setOutputMarkupId( true );
        add( listForm );
        permObjectFld = new TextField( "permObject", new PropertyModel<String>( this, "permObject" ) );
        permObjectFld.setOutputMarkupId( true );

        AjaxFormComponentUpdatingBehavior ajaxUpdater = new AjaxFormComponentUpdatingBehavior( GlobalIds.ONBLUR )
        {
            /** Default serialVersionUID */
            private static final long serialVersionUID = 1L;


            @Override
            protected void onUpdate( final AjaxRequestTarget target )
            {
                target.add( permObjectFld );
            }
        };

        permObjectFld.add( ajaxUpdater );
        this.listForm.add( permObjectFld );
        TextField permOperationFld = new TextField( "permOperation", new PropertyModel<String>( this, "permOperation" ) );
        this.listForm.add( permOperationFld );
        addObjectSearchModal();

        this.listForm.add( new SecureIndicatingAjaxButton( GlobalIds.SEARCH, GlobalIds.REVIEW_MGR,
            GlobalIds.FIND_PERMISSIONS )
        {
            /** Default serialVersionUID */
            private static final long serialVersionUID = 1L;


            @Override
            protected void onSubmit( AjaxRequestTarget target )
            {
                LOG.debug( ".search onSubmit" );
                info( "Searching Perms..." );

                if ( !StringUtils.isNotEmpty( permObject ) )
                {
                    permObject = "";
                }

                if ( !StringUtils.isNotEmpty( permOperation ) )
                {
                    permOperation = "";
                }

                Permission srchPerm = new Permission( permObject, permOperation );
                setDefaultModel( new PermListModel( srchPerm, isAdmin, SecUtils.getSession( this ) ) );
                treeModel.reload();
                rootNode.removeAllChildren();
                List<Permission> perms = ( List<Permission> ) getDefaultModelObject();

                if ( CollectionUtils.isNotEmpty( perms ) )
                {
                    for ( Permission perm : perms )
                    {
                        rootNode.add( new DefaultMutableTreeNode( perm ) );
                    }

                    info( "Search returned " + perms.size() + " matching objects" );
                }
                else
                {
                    info( "No matching objects found" );
                }

                target.add( grid );
            }


            @Override
            public void onError( AjaxRequestTarget target )
            {
                LOG.warn( ".search.onError" );
                target.add();
            }


            @Override
            protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
            {
                super.updateAjaxAttributes( attributes );

                AjaxCallListener ajaxCallListener = new AjaxCallListener()
                {
                    /** Default serialVersionUID */
                    private static final long serialVersionUID = 1L;


                    @Override
                    public CharSequence getFailureHandler( Component component )
                    {
                        return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                    }
                };

                attributes.getAjaxCallListeners().add( ajaxCallListener );
            }
        } );
    }