/******************************************************************************* * Copyright (c) 2002, 2015 Innoopract Informationssysteme GmbH 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: * Innoopract Informationssysteme GmbH - initial API and implementation * EclipseSource - ongoing development ******************************************************************************/ package org.eclipse.rap.demo.controls; import java.util.Iterator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowData; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Text; public class ButtonTab extends ExampleTab { private static final String PROP_SELECTION_LISTENER = "selectionListener"; private static final String BUTTON_IMAGE_PATH = "resources/button-image.gif"; private Image buttonImage; private boolean showImage; private boolean setGrayed; private boolean markupEnabled; private Button pushButton; private Button toggleButton; private Button arrowButton; private Button checkButton1; private Button checkButton2; private Button radioButton1; private Button radioButton2; private Button radioButton3; private Button defaultButton; public ButtonTab() { super( "Button" ); } @Override protected void createStyleControls( Composite parent ) { createStyleButton( "BORDER", SWT.BORDER ); createStyleButton( "FLAT", SWT.FLAT ); createStyleButton( "LEFT", SWT.LEFT ); createStyleButton( "CENTER", SWT.CENTER ); createStyleButton( "RIGHT", SWT.RIGHT ); createStyleButton( "UP", SWT.UP ); createStyleButton( "DOWN", SWT.DOWN ); createStyleButton( "WRAP", SWT.WRAP ); createOrientationButton(); createVisibilityButton(); createEnablementButton(); createImageButton( parent ); createMarkupButton( parent ); createGrayedButton( parent ); createFgColorButton(); createBgColorButton(); createBgImageButton(); createFontChooser(); createCursorCombo(); createBadgeComposite( parent ); createPropertyCheckbox( "Add Selection Listener", PROP_SELECTION_LISTENER ); Button button = createPropertyButton( "Toggle Button", SWT.PUSH ); button.setToolTipText( "Remote control the toggle button" ); button.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent event ) { toggleButton.setSelection( !toggleButton.getSelection() ); } } ); } @Override protected void createExampleControls( Composite parent ) { parent.setLayout( new GridLayout( 1, false ) ); int style = getStyle(); pushButton = new Button( parent, style | SWT.PUSH ); pushButton.setText( markupEnabled ? "<b>Push</b> <i>Button</i>" : "Push\n Button" ); pushButton.setData( RWT.MARKUP_ENABLED, markupEnabled ? Boolean.TRUE : null ); updateButtonImage( pushButton ); toggleButton = new Button( parent, style | SWT.TOGGLE ); toggleButton.setText( "Toggle" ); checkButton1 = new Button( parent, style | SWT.CHECK ); checkButton1.setText( "Check" ); checkButton2 = new Button( parent, style | SWT.CHECK ); checkButton2.setText( "Check with image" ); createButtonImage( parent.getDisplay() ); checkButton2.setImage( buttonImage ); radioButton1 = new Button( parent, style | SWT.RADIO ); radioButton1.setText( "Radio 1" ); radioButton2 = new Button( parent, style | SWT.RADIO ); radioButton2.setText( "Radio 2" ); radioButton3 = new Button( parent, style | SWT.RADIO ); radioButton3.setText( "Radio 3" ); arrowButton = new Button( parent, style | SWT.ARROW ); arrowButton.setToolTipText( getToolTipText() ); arrowButton.setData( RWT.TOOLTIP_MARKUP_ENABLED, Boolean.TRUE ); if( hasCreateProperty( PROP_SELECTION_LISTENER ) ) { Listener listener = new Listener() { @Override public void handleEvent( Event event ) { log( event.toString() ); } }; pushButton.addListener( SWT.Selection, listener ); toggleButton.addListener( SWT.Selection, listener ); checkButton1.addListener( SWT.Selection, listener ); checkButton2.addListener( SWT.Selection, listener ); radioButton1.addListener( SWT.Selection, listener ); radioButton2.addListener( SWT.Selection, listener ); radioButton3.addListener( SWT.Selection, listener ); arrowButton.addListener( SWT.Selection, listener ); } registerControl( pushButton ); registerControl( toggleButton ); registerControl( checkButton1 ); registerControl( checkButton2 ); registerControl( radioButton1 ); registerControl( radioButton2 ); registerControl( radioButton3 ); registerControl( arrowButton ); // default button final Group group = new Group( parent, SWT.NONE ); group.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) ); group.setText( "Default Button" ); group.setLayout( new RowLayout( SWT.HORIZONTAL ) ); final Label label = new Label( group, SWT.NONE ); label.setText( "Enter some text and press Return" ); final Text text = new Text( group, SWT.BORDER | SWT.SINGLE ); text.setLayoutData( new RowData( 100, SWT.DEFAULT ) ); defaultButton = new Button( group, style | SWT.PUSH ); defaultButton.setText( "Default Button" ); defaultButton.getShell().setDefaultButton( defaultButton ); defaultButton.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { String message = "The text You entered: " + text.getText(); MessageDialog.openInformation( group.getShell(), "Information", message ); } } ); // Set a context menu Menu menu = new Menu( parent ); for( int i = 0; i < 5; i++ ) { MenuItem item = new MenuItem( menu, SWT.PUSH ); item.setText( "Item " + ( i + 1 ) ); } parent.setMenu( menu ); } private String getToolTipText() { StringBuilder builder = new StringBuilder(); builder.append( "<span style='color:yellow; font-weight:bold;'>" ); builder.append( "This is tooltip with markup <br/> & <br/> <i>additional line</i>" ); builder.append( "</span>" ); return builder.toString(); } private void createButtonImage( Display display ) { if( buttonImage == null ) { buttonImage = Util.loadImage( display, BUTTON_IMAGE_PATH ); } } private Button createMarkupButton( Composite parent ) { final Button button = new Button( parent, SWT.CHECK ); button.setText( "Push Button with markup" ); button.setSelection( markupEnabled ); button.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { markupEnabled = button.getSelection(); createNew(); } } ); return button; } private void createImageButton( Composite parent ) { final Button imageButton = new Button( parent, SWT.CHECK ); imageButton.setText( "Push Button with image" ); imageButton.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { showImage = imageButton.getSelection(); updateButtonImage( pushButton ); pushButton.getParent().layout(); } } ); } private void updateButtonImage( Button button ) { if( showImage ) { createButtonImage( button.getDisplay() ); button.setImage( buttonImage ); } else { button.setImage( null ); } } private void createGrayedButton( Composite parent ) { final Button grayedButton = new Button( parent, SWT.CHECK ); grayedButton.setText( "Grayed Check Buttons" ); grayedButton.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { setGrayed = grayedButton.getSelection(); updateButtonGrayed(); } } ); } private void updateButtonGrayed( ) { Iterator<Control> iter = controls.iterator(); while( iter.hasNext() ) { Button button = ( Button )iter.next(); button.setGrayed( setGrayed ); } } private void createBadgeComposite( Composite parent ) { Composite composite = new Composite( parent, SWT.NONE ); composite.setLayout( new GridLayout( 3, false ) ); new Label( composite, SWT.NONE ).setText( "Badge:" ); final Text text = new Text( composite, SWT.BORDER ); Listener setBadgeListener = new Listener() { @Override public void handleEvent( Event event ) { pushButton.setData( RWT.BADGE, text.getText() ); } }; Button button = new Button( composite, SWT.PUSH ); button.setText( "Set" ); button.addListener( SWT.Selection, setBadgeListener ); text.addListener( SWT.DefaultSelection, setBadgeListener ); } }