in src/main/java/org/apache/directory/fortress/web/panel/SDListPanel.java [87:279]
public SDListPanel( String id, final boolean isStatic )
{
super( id );
SDSet sdSet = new SDSet();
sdSet.setName( "" );
String searchLabel;
String opName;
if ( isStatic )
{
sdSet.setType( SDSet.SDType.STATIC );
searchLabel = "SSD Name";
opName = "ssdRoleSets";
}
else
{
sdSet.setType( SDSet.SDType.DYNAMIC );
searchLabel = "DSD Name";
opName = "dsdRoleSets";
}
SDListModel sdListModel = new SDListModel( sdSet, SecUtils.getSession( this ) );
setDefaultModel( sdListModel );
List<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>> columns =
new ArrayList<>();
columns.add( new PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, String, String>(
Model.of( searchLabel ), "userObject.name" ) );
PropertyColumn description = new PropertyColumn<>(
Model.of( "Description" ), "userObject.Description" );
description.setInitialSize( 300 );
columns.add( description );
PropertyColumn cardinality = new PropertyColumn<>(
Model.of( "Cardinality" ), "userObject.Cardinality" );
cardinality.setInitialSize( 100 );
columns.add( cardinality );
PropertyColumn members = new PropertyColumn<>(
Model.of( "Members" ), "userObject.members" );
members.setInitialSize( 600 );
columns.add( members );
List<SDSet> sdSets = ( List<SDSet> ) getDefaultModel().getObject();
treeModel = createTreeModel( sdSets );
grid = new TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String>( "sdtreegrid", 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() )
{
SDSet sdSet = ( SDSet ) node.getUserObject();
LOG.debug( "TreeGrid.addGrid.selectItem selected sdSet =" + sdSet.getName() );
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, sdSet );
}
}
}
};
//grid.setContentHeight( 50, SizeUnit.EM );
grid.setAllowSelectMultiple( false );
grid.setClickRowToSelect( true );
grid.setClickRowToDeselect( false );
grid.setSelectToEdit( false );
// expand the root node
grid.getTreeState().expandAll();
this.listForm = new Form( "form" );
this.listForm.add( grid );
grid.setOutputMarkupId( true );
radioGroup = new RadioGroup( "searchOptions", new PropertyModel( this, "selectedRadioButton" ) );
add( radioGroup );
Radio nameRb = new Radio( "nameRb", new Model( Character.valueOf( NAMES ) ) );
radioGroup.add( nameRb );
Radio roleRb = new Radio( "roleRb", new Model( Character.valueOf( ROLES ) ) );
radioGroup.add( roleRb );
addRoleSearchModal( roleRb );
radioGroup.setOutputMarkupId( true );
radioGroup.setRenderBodyOnly( false );
searchValFld = new TextField( GlobalIds.SEARCH_VAL, new PropertyModel<String>( this, GlobalIds.SEARCH_VAL ) );
searchValFld.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( searchValFld );
}
};
searchValFld.add( ajaxUpdater );
radioGroup.add( searchValFld );
this.listForm.add( radioGroup );
selectedRadioButton = NAMES;
this.listForm.add( new SecureIndicatingAjaxButton( GlobalIds.SEARCH, GlobalIds.REVIEW_MGR, opName )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
//protected void onSubmit( AjaxRequestTarget target, Form form )
{
LOG.debug( ".search onSubmit" );
info( "Searching SDSets..." );
if ( !StringUtils.isNotBlank( searchVal ) )
{
searchVal = "";
}
final SDSet srchSd = new SDSet();
if ( isStatic )
{
srchSd.setType( SDSet.SDType.STATIC );
}
else
{
srchSd.setType( SDSet.SDType.DYNAMIC );
}
switch ( selectedRadioButton )
{
case NAMES:
LOG.debug( ".onSubmit NAMES RB selected" );
srchSd.setName( searchVal );
break;
case ROLES:
LOG.debug( ".onSubmit ROLES RB selected" );
srchSd.setMember( searchVal );
break;
}
setDefaultModel( new SDListModel( srchSd, SecUtils.getSession( this ) ) );
treeModel.reload();
rootNode.removeAllChildren();
List<SDSet> sdSets = ( List<SDSet> ) getDefaultModelObject();
if ( CollectionUtils.isNotEmpty( sdSets ) )
{
for ( SDSet sdSet : sdSets )
rootNode.add( new DefaultMutableTreeNode( sdSet ) );
info( "Search returned " + sdSets.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 );
}
} );
add( this.listForm );
}