/*******************************************************************************
* Copyright (c) 2013 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 com.eclipsesource.tabris.demos.entrypoints;
import static com.eclipsesource.tabris.widgets.enhancement.Widgets.onToolItem;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.rap.rwt.application.EntryPoint;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import com.eclipsesource.tabris.widgets.ScrollingComposite;
import com.eclipsesource.tabris.widgets.enhancement.TextDecorator;
import com.eclipsesource.tabris.widgets.enhancement.TextReplacementData;
import com.eclipsesource.tabris.widgets.enhancement.Widgets;
public class KeyboardDemo implements EntryPoint {
Display display;
public int createUI() {
display = new Display();
final Shell shell = createShell();
createToolBar( shell );
Composite comp = createParentComposite( shell );
createTextFields( comp );
createNoteLabel( comp );
shell.open();
return 0;
}
private Shell createShell() {
final Shell shell = new Shell( display, SWT.NONE );
shell.setMaximized( true );
GridLayout shellLayout = new GridLayout( 1, false );
shellLayout.marginHeight = 0;
shellLayout.marginWidth = 0;
shell.setLayout( shellLayout );
return shell;
}
private void createToolBar( final Composite parent ) {
ToolBar toolBar = new ToolBar( parent, SWT.NONE );
toolBar.setLayoutData( GridDataFactory.fillDefaults().align( SWT.FILL, SWT.TOP ).grab( true, false ).create() );
ToolItem toolItem = new ToolItem( toolBar, SWT.NONE );
toolItem.setText( "Keyboard Types" );
onToolItem( toolItem ).useAsTitle();
}
private Composite createParentComposite( final Shell shell ) {
ScrollingComposite comp = new ScrollingComposite( shell, SWT.VERTICAL );
GridLayout compLayout = new GridLayout( 2, false );
compLayout.marginWidth = 16;
compLayout.horizontalSpacing = 16;
comp.setLayout( compLayout );
comp.setLayoutData( GridDataFactory.fillDefaults().align( SWT.FILL, SWT.FILL ).grab( true, true ).create() );
return comp;
}
private void createTextFields( Composite comp ) {
createLabelText( comp, "Captialize On" ).setAutoCapitalizationEnabled( true );
createLabelText( comp, "Captialize Off" ).setAutoCapitalizationEnabled( false );
createLabelText( comp, "AutoCorrect On" ).setAutoCorrectionEnabled( true );
createLabelText( comp, "AutoCorrect Off" ).setAutoCorrectionEnabled( false );
createLabelText( comp, "ASCII" ).useAsciiKeyboard();
createLabelText( comp, "Decimal" ).useDecimalKeyboard();
createLabelText( comp, "E-Mail" ).useEmailKeyboard();
createLabelText( comp, "Numbers" ).useNumberKeyboard();
createLabelText( comp, "Numbers &\nPunctuation" ).useNumbersAndPunctuationKeyboard();
createLabelText( comp, "Phone" ).usePhoneKeyboard();
createLabelText( comp, "URL" ).useUrlKeyboard();
createLabelTextReplacement( comp, "Replace" );
}
private TextDecorator createLabelText( Composite parent, String title ) {
Label titleLabel = new Label( parent, SWT.NONE );
titleLabel.setText( title );
Text text = new Text( parent, SWT.BORDER );
text.setLayoutData( GridDataFactory.fillDefaults().align( SWT.FILL, SWT.TOP ).grab( true, false ).create() );
return Widgets.onText( text );
}
private void createLabelTextReplacement( Composite parent, String title ) {
Label titleLabel = new Label( parent, SWT.NONE );
titleLabel.setText( title );
Text text = new Text( parent, SWT.BORDER | SWT.MULTI );
text.setLayoutData( GridDataFactory.fillDefaults().align( SWT.FILL, SWT.TOP ).hint( SWT.DEFAULT, 200 ).grab( true, false ).create() );
TextReplacementData data = new TextReplacementData();
data.put( "yolo", "You only live once" );
data.put( "hodor", "hodor hodor hodor hodor" );
data.put( "rap", "Remote Application Platform" );
data.put( "tabris", "Tabris Rocks!" );
Widgets.onText( text ).setTextReplacement( data );
}
private void createNoteLabel( Composite comp ) {
Label labelNote = new Label( comp, SWT.CENTER | SWT.WRAP );
labelNote.setText( "Tab on the text input fields to show different keyboards." );
GridData gridData = new GridData( SWT.CENTER, SWT.CENTER, true, false );
gridData.verticalIndent = 24;
gridData.horizontalSpan = 2;
labelNote.setLayoutData( gridData );
}
}