public PermDetailForm()

in src/main/java/org/apache/directory/fortress/web/panel/PermDetailPanel.java [121:443]


        public PermDetailForm( String id, final IModel<Permission> model )
        {
            super( id, model );
            add( addPB = new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.ADMIN_MGR, "addPermission" )
            {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;


                @Override
                protected void onSubmit( AjaxRequestTarget target )
                {
                    LOG.debug( ".onSubmit Add" );
                    Permission perm = ( Permission ) getForm().getModel().getObject();
                    perm.setAdmin( isAdmin );
                    updateEntityWithComboData( perm );
                    try
                    {
                        adminMgr.addPermission( perm );
                        roles.add( rolesSelection );
                        rolesSelection = "";
                        component = editForm;
                        SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.ADD );
                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
                            + " has been added";
                        display.setMessage( msg );
                    }
                    catch ( org.apache.directory.fortress.core.SecurityException se )
                    {
                        String error = ".onSubmit caught SecurityException=" + se;
                        LOG.error( error );
                        display.setMessage( error );
                        display.display();
                    }
                }


                @Override
                public void onError( AjaxRequestTarget target )
                {
                    LOG.info( "PermDetailPanel.add.onError caught" );
                    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 );
                }
            } );
            add( new SecureIndicatingAjaxButton( GlobalIds.COMMIT, GlobalIds.ADMIN_MGR, "updatePermission" )
            {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;


                @Override
                protected void onSubmit( AjaxRequestTarget target )
                {
                    LOG.debug( ".onSubmit Commit" );
                    Permission perm = ( Permission ) getForm().getModel().getObject();
                    perm.setAdmin( isAdmin );
                    updateEntityWithComboData( perm );
                    try
                    {
                        if ( isAdmin )
                        {
                            if ( StringUtils.isNotEmpty( rolesSelection ) )
                            {
                                delAdminMgr.grantPermission( perm, new AdminRole( rolesSelection ) );
                            }
                            else
                            {
                                delAdminMgr.updatePermission( perm );
                            }
                        }
                        else
                        {
                            adminMgr.updatePermission( perm );
                        }
                        roles.add( rolesSelection );
                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
                            + " has been updated";
                        SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.UPDATE );
                        rolesSelection = "";
                        component = editForm;
                        display.setMessage( msg );
                    }
                    catch ( org.apache.directory.fortress.core.SecurityException se )
                    {
                        String error = ".onSubmit caught SecurityException=" + se;
                        LOG.error( error );
                        display.setMessage( error );
                        display.display();
                    }
                }


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


                @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 );
                }
            } );
            add( new SecureIndicatingAjaxButton( GlobalIds.DELETE, GlobalIds.ADMIN_MGR, "deletePermission" )
            {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;


                @Override
                protected void onSubmit( AjaxRequestTarget target )
                {
                    LOG.debug( ".onSubmit Delete" );
                    Permission perm = ( Permission ) getForm().getModel().getObject();
                    perm.setAdmin( isAdmin );
                    try
                    {
                        adminMgr.deletePermission( perm );
                        clearDetailFields();
                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
                            + " has been deleted";
                        SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.DELETE );
                        component = editForm;
                        display.setMessage( msg );
                    }
                    catch ( org.apache.directory.fortress.core.SecurityException se )
                    {
                        String error = ".onSubmit caught SecurityException=" + se;
                        LOG.error( error );
                        display.setMessage( error );
                        display.display();
                    }
                }


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


                @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 );
                }
            } );
            add( new AjaxSubmitLink( GlobalIds.CANCEL )
            {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;


                @Override
                protected void onSubmit( AjaxRequestTarget target )
                {
                    clearDetailFields();
                    String msg = "Perm cancelled input form";
                    component = editForm;
                    display.setMessage( msg );
                }


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


                @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 );
                }
            } );

            objectTF = new TextField( GlobalIds.OBJ_NAME );
            // making this required prevents the object modal from opening when field empty:
            //objectTF.setRequired( true );
            objectTF.setOutputMarkupId( true );
            add( objectTF );
            addObjectSearchModal();

            if ( isAdmin )
            {
                add( new Label( "permDetailLabel", "Administrative Permission Operation Detail" ) );
            }
            else
            {
                add( new Label( "permDetailLabel", "RBAC Permission Operation Detail" ) );
            }

            opNameTF = new TextField( GlobalIds.OP_NAME );
            add( opNameTF );
            opNameTF.setRequired( false );
            objIdTF = new TextField( GlobalIds.OBJECT_ID );
            add( objIdTF );
            TextField description = new TextField( GlobalIds.DESCRIPTION );
            add( description );
            Label internalId = new Label( "internalId" );
            add( internalId );
            rolesCB = new ComboBox<>( "roles", new PropertyModel<String>( this, ROLES_SELECTION ), roles );
            add( rolesCB );
            setOutputMarkupId( true );
            addRoleSearchModal();
            add( new AjaxButton( "roles.delete" )
            {
                private static final long serialVersionUID = 1L;


                @Override
                protected void onSubmit( AjaxRequestTarget target )
                {
                    String msg = "clicked on roles.delete";
                    if ( StringUtils.isNotEmpty( rolesSelection ) )
                    {
                        msg += " selection:" + rolesSelection;
                        Permission perm = ( Permission ) getForm().getModel().getObject();
                        if ( perm.getRoles() != null )
                        {
                            perm.getRoles().remove( rolesSelection );
                            roles.remove( rolesSelection );
                            rolesSelection = "";
                            component = editForm;
                            msg += ", was removed from local, commit to persist changes on server";
                        }
                        else
                        {
                            msg += ", no action taken because permission does not have role set";
                        }
                    }
                    else
                    {
                        msg += ", no action taken because role selection is empty";
                    }
                    display.setMessage( msg );
                    LOG.debug( msg );
                }


                @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 );
                }
            } );
        }