settings.setDrawFocus ( false );
settings.setRolloverDecoratedOnly ( true );
final WebButtonPopup wbp = new WebButtonPopup ( settings, PopupWay.downLeft );
final WebPanel popupContent = new WebPanel ( new VerticalFlowLayout ( 5, 5 ) );
popupContent.setMargin ( 5 );
popupContent.setOpaque ( false );
wbp.setContent ( popupContent );
theme = new WebComboBox ( EditorTheme.values () );
theme.registerSettings ( SETTINGS_PREFIX + "theme", 0 );
theme.setRenderer ( new WebComboBoxCellRenderer ()
{
@Override
public Component getListCellRendererComponent ( final JList list, final Object value, final int index, final boolean isSelected,
final boolean cellHasFocus )
{
final EditorTheme editorTheme = ( EditorTheme ) value;
final WebComboBoxElement renderer =
( WebComboBoxElement ) super.getListCellRendererComponent ( list, value, index, isSelected, cellHasFocus );
renderer.setIcon ( editorTheme.getIcon () );
renderer.setText ( editorTheme.getName () );
return renderer;
}
} );
theme.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
synchronized ( activeEditorsLock )
{
final String themeName = theme.getSelectedItem ().toString ().toLowerCase ();
for ( final Map.Entry<JarEntry, RSyntaxTextArea> entry : activeEditors.entrySet () )
{
loadTheme ( themeName, entry.getValue () );
}
}
}
} );
popupContent.add ( theme );
allowCodeFolding = new WebToggleButton ( loadEditorIcon ( "allowCodeFolding" ) );
allowCodeFolding.registerSettings ( SETTINGS_PREFIX + "allowCodeFolding", false );
allowCodeFolding.addItemListener ( new ItemListener ()
{
@Override
public void itemStateChanged ( final ItemEvent e )
{
synchronized ( activeEditorsLock )
{
for ( final Map.Entry<JarEntry, RSyntaxTextArea> entry : activeEditors.entrySet () )
{
entry.getValue ().setCodeFoldingEnabled ( allowCodeFolding.isSelected () );
}
}
}
} );
final WebLabel allowCodeFoldingLabel = new WebLabel ( "Allow code folding" );
allowCodeFoldingLabel.setDrawShade ( true );
allowCodeFoldingLabel.addMouseListener ( new MouseAdapter ()
{
@Override
public void mousePressed ( final MouseEvent e )
{
if ( SwingUtils.isLeftMouseButton ( e ) )
{
allowCodeFolding.requestFocusInWindow ();
allowCodeFolding.doClick ();
}
}
} );
popupContent.add ( new GroupPanel ( 5, allowCodeFolding, allowCodeFoldingLabel ) );
paintTabLines = new WebToggleButton ( loadEditorIcon ( "paintTabLines" ) );
paintTabLines.registerSettings ( SETTINGS_PREFIX + "paintTabLines", false );
paintTabLines.addItemListener ( new ItemListener ()
{
@Override
public void itemStateChanged ( final ItemEvent e )
{
synchronized ( activeEditorsLock )
{
for ( final Map.Entry<JarEntry, RSyntaxTextArea> entry : activeEditors.entrySet () )
{
entry.getValue ().setPaintTabLines ( paintTabLines.isSelected () );
}
}
}
} );
final WebLabel paintTabLinesLabel = new WebLabel ( "Paint tab lines" );
paintTabLinesLabel.setDrawShade ( true );
paintTabLinesLabel.addMouseListener ( new MouseAdapter ()
{
@Override
public void mousePressed ( final MouseEvent e )
{
if ( SwingUtils.isLeftMouseButton ( e ) )
{
paintTabLines.requestFocusInWindow ();
paintTabLines.doClick ();
}
}
} );
popupContent.add ( new GroupPanel ( 5, paintTabLines, paintTabLinesLabel ) );
showWhitespaces = new WebToggleButton ( loadEditorIcon ( "showWhitespaces" ) );
showWhitespaces.registerSettings ( SETTINGS_PREFIX + "showWhitespaces", false );
showWhitespaces.addItemListener ( new ItemListener ()
{
@Override
public void itemStateChanged ( final ItemEvent e )
{
synchronized ( activeEditorsLock )
{
for ( final Map.Entry<JarEntry, RSyntaxTextArea> entry : activeEditors.entrySet () )
{
entry.getValue ().setWhitespaceVisible ( showWhitespaces.isSelected () );
}
}
}
} );
final WebLabel showWhitespacesLabel = new WebLabel ( "Show whitespaces" );
showWhitespacesLabel.setDrawShade ( true );
showWhitespacesLabel.addMouseListener ( new MouseAdapter ()
{
@Override
public void mousePressed ( final MouseEvent e )
{
if ( SwingUtils.isLeftMouseButton ( e ) )
{
showWhitespaces.requestFocusInWindow ();
showWhitespaces.doClick ();
}
}
} );
popupContent.add ( new GroupPanel ( 5, showWhitespaces, showWhitespacesLabel ) );
showEol = new WebToggleButton ( loadEditorIcon ( "showEol" ) );
showEol.registerSettings ( SETTINGS_PREFIX + "showEol", false );
showEol.addItemListener ( new ItemListener ()
{
@Override
public void itemStateChanged ( final ItemEvent e )
{
synchronized ( activeEditorsLock )
{
for ( final Map.Entry<JarEntry, RSyntaxTextArea> entry : activeEditors.entrySet () )
{
entry.getValue ().setEOLMarkersVisible ( showEol.isSelected () );
}
}
}
} );
final WebLabel showEolLabel = new WebLabel ( "Show end of line" );
showEolLabel.setDrawShade ( true );
showEolLabel.addMouseListener ( new MouseAdapter ()
{
@Override
public void mousePressed ( final MouseEvent e )
{
if ( SwingUtils.isLeftMouseButton ( e ) )
{
showEol.requestFocusInWindow ();
showEol.doClick ();
}
}
} );
popupContent.add ( new GroupPanel ( 5, showEol, showEolLabel ) );
return settings;
}