| /******************************************************************************* |
| * Copyright (c) 2007, 2012 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 org.eclipse.jface.dialogs.MessageDialog; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| 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.Label; |
| import org.eclipse.swt.widgets.Link; |
| import org.eclipse.swt.widgets.Menu; |
| import org.eclipse.swt.widgets.MenuItem; |
| import org.eclipse.swt.widgets.Text; |
| |
| |
| public class LinkTab extends ExampleTab { |
| |
| private static final String PROP_CONTEXT_MENU = "contextMenu"; |
| |
| private Link link1; |
| private Link customLink; |
| private Link fixedSizeLink; |
| |
| public LinkTab() { |
| super( "Link" ); |
| } |
| |
| @Override |
| protected void createStyleControls( final Composite parent ) { |
| createStyleButton( "BORDER", SWT.BORDER ); |
| createVisibilityButton(); |
| createEnablementButton(); |
| createFgColorButton(); |
| createBgColorButton(); |
| createBgImageButton(); |
| createFontChooser(); |
| createCustomLinkControl( parent ); |
| createPropertyCheckbox( "Add Context Menu On First Link", |
| PROP_CONTEXT_MENU ); |
| } |
| |
| @Override |
| protected void createExampleControls( final Composite parent ) { |
| parent.setLayout( new GridLayout() ); |
| int style = getStyle(); |
| link1 = new Link( parent, style ); |
| link1.setText( "Lorem <a>ipsum</a> dolor <a>sit amet</a>" ); |
| link1.addSelectionListener( new SelectionAdapter() { |
| @Override |
| public void widgetSelected( final SelectionEvent event ) { |
| String msg = "Link widget selected, text=" + event.text; |
| MessageDialog.openInformation( getShell(), "Information", msg ); |
| } |
| } ); |
| if( hasCreateProperty( PROP_CONTEXT_MENU ) ) { |
| Menu linkMenu = new Menu( link1 ); |
| MenuItem linkMenuItem = new MenuItem( linkMenu, SWT.PUSH ); |
| linkMenuItem.addSelectionListener( new SelectionAdapter() { |
| @Override |
| public void widgetSelected( final SelectionEvent event ) { |
| String message = "You requested a context menu for the Link"; |
| MessageDialog.openInformation( link1.getShell(), |
| "Information", |
| message ); |
| } |
| } ); |
| linkMenuItem.setText( "Link context menu item" ); |
| link1.setMenu( linkMenu ); |
| } |
| Link link2 = new Link( parent, style ); |
| link2.setText( "Link without href" ); |
| Link link3 = new Link( parent, style ); |
| link3.setText( "<a>Link with one href \"&&<>\\\"</a>" ); |
| customLink = new Link( parent, style ); |
| customLink.setText( "Custom link, use controls to your right to change" ); |
| customLink.addSelectionListener( new SelectionAdapter() { |
| @Override |
| public void widgetSelected( final SelectionEvent event ) { |
| String msg = "Link widget selected, text=" + event.text; |
| MessageDialog.openInformation( getShell(), "Information", msg ); |
| } |
| } ); |
| fixedSizeLink = new Link( parent, style ); |
| fixedSizeLink.setText( "Fixed size Link with some very long text <a>that should be wrapped.</a>" ); |
| fixedSizeLink.setLayoutData( new GridData( 100, 100 ) ); |
| registerControl( link1 ); |
| registerControl( link2 ); |
| registerControl( link3 ); |
| registerControl( customLink ); |
| registerControl( fixedSizeLink ); |
| } |
| |
| private void createCustomLinkControl( final Composite parent ) { |
| Composite composite = new Composite( parent, SWT.NONE ); |
| composite.setLayout( new GridLayout( 3, false ) ); |
| Label lblText = new Label( composite, SWT.NONE ); |
| lblText.setText( "Text" ); |
| final Text txtText = new Text( composite, SWT.BORDER ); |
| Button btnChange = new Button( composite, SWT.PUSH ); |
| btnChange.setText( "Change" ); |
| btnChange.addSelectionListener( new SelectionAdapter() { |
| @Override |
| public void widgetSelected( final SelectionEvent event ) { |
| customLink.setText( txtText.getText() ); |
| customLink.getParent().layout(); |
| } |
| } ); |
| |
| } |
| } |