blob: 1cc5c490dd961ae7b01a8007ea6cae0243d6b42e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 IBM Corporation 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:
* IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.jface.tests.fieldassist;
//import org.eclipse.jface.bindings.keys.KeyStroke;
//import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.swt.SWT;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.Shell;
/**
* This class contains test cases appropriate for generic field assist
* tests in various controls. Tests that are not appropriate for the
* pre-configured content assist command adapter should go here.
*
* @since 3.6
*
*/
public abstract class FieldAssistTestCase extends AbstractFieldAssistTestCase {
static final String SAMPLE_CONTENT = "s";
static final char ACTIVATE_CHAR = 'i';
static final char EXTRA_CHAR = 'b';
// public void testAutoactivateNoDelay() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationDelay(0);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// }
//
// public void testAutoactivateWithDelay() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationDelay(600);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// }
//
// public void testExplicitActivate() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// KeyStroke stroke = KeyStroke.getInstance(SWT.F4);
// window.setKeyStroke(stroke);
// window.open();
// sendKeyDownToControl(stroke);
// assertTwoShellsUp();
// }
//
// public void testPopupDeactivates() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationDelay(0);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// sendFocusElsewhere();
// spinEventLoop();
// assertOneShellUp();
// }
//
// public void testPropagateKeysOff() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// sendKeyDownToControl(EXTRA_CHAR);
// assertEquals("1.0", SAMPLE_CONTENT + new String(new char [] {ACTIVATE_CHAR}), getControlContent());
// }
//
// public void testPropagateKeysOn() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(true);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// sendKeyDownToControl(EXTRA_CHAR);
// assertEquals("1.0", SAMPLE_CONTENT + new String(new char [] {ACTIVATE_CHAR, EXTRA_CHAR}), getControlContent());
// }
//
// public void testBug262022() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// // cursor key down will cause an asyncExec that recomputes proposals. Before we process the event, let's
// // kill the window in an async. That should cause the event to be processed and then the window killed before
// // the subsequent async.
// Event event = new Event();
// event.type = SWT.KeyDown;
// event.keyCode = SWT.ARROW_LEFT;
// window.getDisplay().post(event);
// window.getDisplay().asyncExec(new Runnable() {
// public void run() {
// closeFieldAssistWindow();
// }
// });
// spinEventLoop();
// }
//
// public void testBug279953() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.open();
// assertOneShellUp();
// ControlDecoration decoration = new ControlDecoration(getFieldAssistWindow().getFieldAssistControl(), SWT.RIGHT);
// decoration.setImage(FieldDecorationRegistry.getDefault()
// .getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage());
// decoration.setDescriptionText("");
// decoration.showHoverText("");
// assertOneShellUp();
// }
public void testDecorationIsVisible() {
AbstractFieldAssistWindow window = getFieldAssistWindow();
window.setPropagateKeys(false);
window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
window.open();
assertOneShellUp();
ControlDecoration decoration = new ControlDecoration(getFieldAssistWindow().getFieldAssistControl(), SWT.RIGHT);
decoration.setImage(FieldDecorationRegistry.getDefault()
.getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage());
decoration.setDescriptionText("foo");
spinEventLoop();
assertTrue("1.0", decoration.isVisible());
decoration.hide();
assertFalse("1.1", decoration.isVisible());
decoration.setShowOnlyOnFocus(true);
sendFocusElsewhere();
sendFocusInToControl();
spinEventLoop();
assertFalse("1.2", decoration.isVisible());
decoration.show();
assertTrue("1.3", decoration.isVisible());
sendFocusElsewhere();
spinEventLoop();
assertFalse("1.4", decoration.isVisible());
decoration.setShowOnlyOnFocus(false);
assertTrue("1.5", decoration.isVisible());
window.getFieldAssistControl().setVisible(false);
assertFalse("1.6", decoration.isVisible());
decoration.hide();
window.getFieldAssistControl().setVisible(true);
assertFalse("1.7", decoration.isVisible());
decoration.show();
assertTrue("1.8", decoration.isVisible());
}
// public void testPopupFocus() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// KeyStroke stroke = KeyStroke.getInstance(SWT.F4);
// window.setKeyStroke(stroke);
// window.open();
// sendKeyDownToControl(stroke);
// assertTwoShellsUp();
//
// // Send focus to the control (not the popup)
// window.getFieldAssistControl().setFocus();
// spinEventLoop();
// assertFalse("1.0", window.getContentProposalAdapter().hasProposalPopupFocus());
// window.getContentProposalAdapter().setProposalPopupFocus();
// spinEventLoop();
// assertTrue("1.1", window.getContentProposalAdapter().hasProposalPopupFocus());
//
// // Setting focus to another shell deactivates the popup
// sendFocusElsewhere();
// spinEventLoop();
// assertOneShellUp();
// assertFalse("1.2", window.getContentProposalAdapter().hasProposalPopupFocus());
// }
//
// public void testPopupIsOpen() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// KeyStroke stroke = KeyStroke.getInstance(SWT.F4);
// window.setKeyStroke(stroke);
// window.open();
//
// assertFalse("1.0", window.getContentProposalAdapter().isProposalPopupOpen());
// sendKeyDownToControl(stroke);
// assertTwoShellsUp();
// assertTrue("1.1", window.getContentProposalAdapter().isProposalPopupOpen());
//
// // Setting focus to another shell deactivates the popup
// sendFocusElsewhere();
// spinEventLoop();
// assertOneShellUp();
// assertFalse("1.2", window.getContentProposalAdapter().isProposalPopupOpen());
// }
//
// /**
// * Replace mode is easier to test because we can check that the bounds
// * does not intersect the control. In insertion mode, the popup is
// * supposed to overlap the control (using the insertion cursor to track
// * position).
// */
// public void testBug256651ReplaceMode() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
// window.open();
// Display display = getDisplay();
// Rectangle displayBounds = display.getBounds();
// window.getShell().setLocation(0, displayBounds.height - window.getShell().getBounds().height);
// assertOneShellUp();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// sendFocusToPopup();
// Shell popupShell = display.getActiveShell();
// Rectangle popupBounds = popupShell.getBounds();
// Rectangle controlBounds = getFieldAssistWindow().getFieldAssistControl().getBounds();
// controlBounds = getDisplay().map(getFieldAssistWindow().getFieldAssistControl().getParent(), null, controlBounds);
// assertFalse("Popup is blocking the control", popupBounds.intersects(controlBounds));
// }
//
// /**
// * Replace mode is easier to test because we can check that the bounds
// * does not intersect the control. In insertion mode, the popup is
// * supposed to overlap the control (using the insertion cursor to track
// * position).
// */
// public void testDefaultPopupPositioningReplaceMode() {
// AbstractFieldAssistWindow window = getFieldAssistWindow();
// window.setPropagateKeys(false);
// window.setAutoActivationCharacters(new char [] {ACTIVATE_CHAR});
// window.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
// window.open();
// Display display = getDisplay();
// window.getShell().setLocation(0, 0);
// assertOneShellUp();
// setControlContent(SAMPLE_CONTENT);
// sendKeyDownToControl(ACTIVATE_CHAR);
// ensurePopupIsUp();
// assertTwoShellsUp();
// sendFocusToPopup();
// Shell popupShell = display.getActiveShell();
// Rectangle popupBounds = popupShell.getBounds();
// Rectangle controlBounds = getFieldAssistWindow().getFieldAssistControl().getBounds();
// controlBounds = getDisplay().map(getFieldAssistWindow().getFieldAssistControl().getParent(), null, controlBounds);
// assertFalse("Popup is blocking the control", popupBounds.intersects(controlBounds));
// }
}