/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* 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:
* Emil Simeonov - initial API and implementation.
* Dimitar Donchev - initial API and implementation.
* Dimitar Tenev - initial API and implementation.
* Nevena Manova - initial API and implementation.
* Georgi Konstantinov - initial API and implementation.
*******************************************************************************/
package org.eclipse.wst.sse.sieditor.test.ui.v2.wsdltree;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wst.sse.sieditor.ui.v2.wsdltree.SITreeViewerEditorActivationStrategy;
import org.junit.Test;
public class TestSITreeViewerEditorActivationStrategy {
@Test
public void testEnableAndDisableEditorActivationWithKeyboard() {
Display display = Display.getDefault();
Composite composite = new Composite(new Shell(display), SWT.NONE);
TreeViewer viewer = new TreeViewer(composite);
SITreeViewerEditorActivationStrategy strategy = new SITreeViewerEditorActivationStrategy(viewer);
int numUpListeners = viewer.getControl().getListeners(SWT.KeyUp).length;
int numDownListeners = viewer.getControl().getListeners(SWT.KeyDown).length;
assertNull(strategy.getKeyListener());
strategy.setEnableEditorActivationWithKeyboard(true);
assertNotNull(strategy.getKeyListener());
assertEquals(numUpListeners + 1, viewer.getControl().getListeners(SWT.KeyUp).length);
assertEquals(numDownListeners + 1, viewer.getControl().getListeners(SWT.KeyDown).length);
strategy.setEnableEditorActivationWithKeyboard(false);
assertNull(strategy.getKeyListener());
assertEquals(numUpListeners, viewer.getControl().getListeners(SWT.KeyUp).length);
assertEquals(numDownListeners, viewer.getControl().getListeners(SWT.KeyDown).length);
}
@Test
public void testKeyboardListenerF2KeyEditElement() {
final Object firstElement = new Object();
final IStructuredSelection selection = createMock(IStructuredSelection.class);
expect(selection.getFirstElement()).andReturn(firstElement).anyTimes();
replay(selection);
Display display = Display.getDefault();
Composite composite = new Composite(new Shell(display), SWT.NONE);
final boolean[] editElement_Called = { false };
TreeViewer viewer = new TreeViewer(composite) {
@Override
public ISelection getSelection() {
return selection;
}
@Override
public void editElement(Object element, int column) {
editElement_Called[0] = true;
assertEquals(firstElement, element);
}
};
SITreeViewerEditorActivationStrategy strategy = new SITreeViewerEditorActivationStrategy(viewer);
assertNull(strategy.getKeyListener());
strategy.setEnableEditorActivationWithKeyboard(true);
assertNotNull(strategy.getKeyListener());
KeyListener keyListener = strategy.getKeyListener();
Event e = new Event();
e.widget = composite;
KeyEvent event = new KeyEvent(e);
event.keyCode = SWT.F2;
event.widget = composite;
keyListener.keyPressed(event);
assertTrue(editElement_Called[0]);
}
}