/******************************************************************************* * Copyright (c) 2009 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.ui.forms.internal.widgets.hyperlinkkit; import org.eclipse.rwt.Fixture; import org.eclipse.rwt.graphics.Graphics; import org.eclipse.rwt.internal.lifecycle.JSConst; import org.eclipse.rwt.lifecycle.IWidgetAdapter; import org.eclipse.rwt.lifecycle.WidgetUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.HyperlinkSettings; import org.eclipse.ui.forms.internal.widgets.FormsControlLCA_AbstractTest; import org.eclipse.ui.forms.internal.widgets.IHyperlinkAdapter; import org.eclipse.ui.forms.widgets.Hyperlink; public class HyperlinkLCA_Test extends FormsControlLCA_AbstractTest { public void testPreserveValues() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); Hyperlink hyperlink = new Hyperlink( shell, SWT.NONE ); Fixture.markInitialized( display ); Fixture.preserveWidgets(); IWidgetAdapter adapter = WidgetUtil.getAdapter( hyperlink ); String text = ( String )adapter.getPreserved( HyperlinkLCA.PROP_TEXT ); assertEquals( "", text ); Boolean underlined = ( Boolean )adapter.getPreserved( HyperlinkLCA.PROP_UNDERLINED ); assertEquals( Boolean.FALSE, underlined ); Boolean hasListener = ( Boolean )adapter.getPreserved( HyperlinkLCA.PROP_SELECTION_LISTENERS ); assertEquals( Boolean.TRUE, hasListener ); Color activeForeground = ( Color )adapter.getPreserved( HyperlinkLCA.PROP_ACTIVE_FOREGROUND ); assertEquals( null, activeForeground ); Color activeBackground = ( Color )adapter.getPreserved( HyperlinkLCA.PROP_ACTIVE_BACKGROUND ); assertEquals( null, activeBackground ); Integer underlineMode = ( Integer )adapter.getPreserved( HyperlinkLCA.PROP_UNDERLINE_MODE ); assertEquals( 0, underlineMode.intValue() ); Fixture.clearPreserved(); String newText = "click me"; hyperlink.setText( newText ); hyperlink.setUnderlined( true ); Color newActiveForeground = Graphics.getColor( 0, 0, 255 ); getAdapter( hyperlink ).setActiveForeground( newActiveForeground ); Color newActiveBackground = Graphics.getColor( 0, 0, 128 ); getAdapter( hyperlink ).setActiveBackground( newActiveBackground ); int newUnderlineMode = HyperlinkSettings.UNDERLINE_HOVER; getAdapter( hyperlink ).setUnderlineMode( newUnderlineMode ); Fixture.preserveWidgets(); text = ( String )adapter.getPreserved( HyperlinkLCA.PROP_TEXT ); assertEquals( newText, text ); underlined = ( Boolean )adapter.getPreserved( HyperlinkLCA.PROP_UNDERLINED ); assertEquals( Boolean.TRUE, underlined ); activeForeground = ( Color )adapter.getPreserved( HyperlinkLCA.PROP_ACTIVE_FOREGROUND ); assertEquals( newActiveForeground, activeForeground ); activeBackground = ( Color )adapter.getPreserved( HyperlinkLCA.PROP_ACTIVE_BACKGROUND ); assertEquals( newActiveBackground, activeBackground ); underlineMode = ( Integer )adapter.getPreserved( HyperlinkLCA.PROP_UNDERLINE_MODE ); assertEquals( newUnderlineMode, underlineMode.intValue() ); // Test preserved control properties testPreserveControlProperties( hyperlink ); display.dispose(); } public void testSelectionEvent() { Display display = new Display(); Composite shell = new Shell( display, SWT.NONE ); Hyperlink hyperlink = new Hyperlink( shell, SWT.NONE ); testDefaultSelectionEvent( hyperlink ); } private void testDefaultSelectionEvent( final Hyperlink hyperlink ) { final StringBuffer log = new StringBuffer(); Listener listener = new Listener() { public void handleEvent( Event event ) { assertEquals( hyperlink, event.widget ); assertEquals( null, event.item ); assertEquals( SWT.NONE, event.detail ); assertEquals( 0, event.x ); assertEquals( 0, event.y ); assertEquals( 0, event.width ); assertEquals( 0, event.height ); assertEquals( true, event.doit ); log.append( "widgetDefaultSelected" ); } }; hyperlink.addListener( SWT.DefaultSelection, listener ); String hyperlinkId = WidgetUtil.getId( hyperlink ); Fixture.fakeRequestParam( JSConst.EVENT_WIDGET_DEFAULT_SELECTED, hyperlinkId ); Fixture.readDataAndProcessAction( hyperlink ); assertEquals( "widgetDefaultSelected", log.toString() ); } private static IHyperlinkAdapter getAdapter( final Hyperlink hyperlink ) { Object adapter = hyperlink.getAdapter( IHyperlinkAdapter.class ); return ( IHyperlinkAdapter )adapter; } }