{
for ( final File root : files )
{
if ( root.isDirectory () )
{
final WebMenuItem menuItem = new WebMenuItem ( FileUtils.getDisplayFileName ( root ) );
menuItem.setIcon ( FileUtils.getFileIcon ( root, false ) );
menuItem.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
folderSelected ( root );
}
} );
menu.add ( menuItem );
childsCount++;
}
}
}
if ( !SystemUtils.isWindows () && first )
{
setRootsMenu ( menu, childsCount );
}
final WebToggleButton childs = new WebToggleButton ();
childs.setIcon ( ltr ? right : left );
childs.setSelectedIcon ( down );
childs.setShadeToggleIcon ( false );
childs.setRound ( 0 );
childs.setShadeWidth ( 0 );
childs.setRolloverDecoratedOnly ( true );
childs.setRolloverDarkBorderOnly ( false );
childs.setFocusable ( false );
childs.setComponentPopupMenu ( menu );
childs.setMargin ( 0 );
childs.setLeftRightSpacing ( 0 );
childs.setEnabled ( childsCount > 0 );
childs.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
// todo Apply orientation globally on change, not here
WebPathField.this.transferFocus ();
SwingUtils.applyOrientation ( menu );
menu.showBelowMiddle ( childs );
}
} );
contentPanel.add ( childs );
menu.addPopupMenuListener ( new PopupMenuListener ()
{
@Override
public void popupMenuWillBecomeVisible ( final PopupMenuEvent e )
{
//
}
@Override
public void popupMenuWillBecomeInvisible ( final PopupMenuEvent e )
{
childs.setSelected ( false );
}
@Override
public void popupMenuCanceled ( final PopupMenuEvent e )
{
childs.setSelected ( false );
}
} );
first = false;
}
}
// Filling space
contentPanel.add ( new JLabel () );
// Shortening long elemets
if ( !SystemUtils.isWindows () )
{
while ( getRootsMenu ().getComponentCount () > getRootsMenuItemsCount () )
{
getRootsMenu ().remove ( 0 );
}
}
if ( canShortenPath () )
{
getRootsMenu ().addSeparator ( 0 );
}
while ( canShortenPath () )
{
// Andding menu element
final WebButton wb = ( WebButton ) contentPanel.getComponent ( 2 );
final WebMenuItem menuItem = new WebMenuItem ();
menuItem.setIcon ( ( Icon ) wb.getClientProperty ( FILE_ICON ) );
menuItem.setText ( wb.getText () );
menuItem.addActionListener ( wb.getActionListeners ()[ 0 ] );
getRootsMenu ().add ( menuItem, 0 );
// Removing hidden path and menu buttons from panel
contentPanel.remove ( 2 );
contentPanel.remove ( 2 );