/*******************************************************************************
* Copyright (c) 2016 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.demo.controls;
import static org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration.TOOLBAR_GROUPS;
import org.eclipse.nebula.widgets.richtext.RichTextEditor;
import org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
public class NebulaRichTextTab extends ExampleTab {
private RichTextEditor editor;
private Button editableButton;
private boolean reorderToolbarGroups;
private boolean removeToolbarButtons;
public NebulaRichTextTab() {
super( "Nebula RichText" );
setDefaultStyle( SWT.BORDER );
}
@Override
protected void createStyleControls( Composite parent ) {
createStyleButton( "BORDER", SWT.BORDER, true );
createVisibilityButton();
createEditableButton( parent );
createReorderToolbarGroups( parent );
createRemoveToolbarButtons( parent );
createBgColorButton();
createFontChooser();
createText( parent );
createDispose( parent );
}
@Override
protected void createExampleControls( Composite parent ) {
parent.setLayout( new GridLayout( 1, false ) );
createRichTextEditor( parent );
registerControl( editor );
}
private void createRichTextEditor( Composite parent ) {
RichTextEditorConfiguration config = new RichTextEditorConfiguration();
if( removeToolbarButtons ) {
config.removeDefaultToolbarButton( "Subscript" );
config.removeDefaultToolbarButton( "Superscript" );
}
if( reorderToolbarGroups ) {
StringBuilder builder = new StringBuilder( "[" );
builder.append( "{\"name\":\"styles\"}," );
builder.append( "{\"name\":\"colors\" }," );
builder.append( "{\"name\":\"basicstyles\",\"groups\":[\"basicstyles\",\"cleanup\"]}" );
builder.append( "]" );
config.setOption( TOOLBAR_GROUPS, builder.toString() );
}
editor = new RichTextEditor( parent, config, getStyle() );
editor.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
editor.setFont( new Font( parent.getDisplay(), "fantasy", 19, 0 ) );
editor.setText( "Hello Fantasy Font" );
editor.setEditable( checkControl( editableButton ) ? editableButton.getSelection() : true );
}
private void createEditableButton( Composite parent ) {
editableButton = new Button( parent, SWT.CHECK );
editableButton.setText( "Editable" );
editableButton.setSelection( true );
editableButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
editor.setEditable( editableButton.getSelection() );
}
} );
}
private void createText( Composite parent ) {
Group group = new Group( parent, SWT.NONE );
group.setText( "Text" );
group.setLayout( new GridLayout( 2, false ) );
final Text setText = new Text( group, SWT.BORDER );
setText.setLayoutData( new GridData( 200, SWT.DEFAULT ) );
Button setButton = new Button( group, SWT.PUSH );
setButton.setText( "Set" );
setButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
editor.setText( setText.getText() );
}
} );
Button getButton = new Button( group, SWT.PUSH );
getButton.setText( "Get" );
getButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
log( editor.getText() );
}
} );
}
private void createDispose( Composite parent ) {
Button disposeButton = new Button( parent, SWT.PUSH );
disposeButton.setText( "Dispose" );
disposeButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
editor.dispose();
}
} );
}
private void createReorderToolbarGroups( Composite parent ) {
final Button reorderButton = new Button( parent, SWT.CHECK );
reorderButton.setText( "Remove and reorder toolbar groups" );
reorderButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
reorderToolbarGroups = reorderButton.getSelection();
createNew();
}
} );
}
private void createRemoveToolbarButtons( Composite parent ) {
final Button removeButton = new Button( parent, SWT.CHECK );
removeButton.setText( "Remove Subscript/Superscript toolbar buttons" );
removeButton.addListener( SWT.Selection, new Listener() {
@Override
public void handleEvent( Event event ) {
removeToolbarButtons = removeButton.getSelection();
createNew();
}
} );
}
}