blob: 6488993f06b445cf20bcddeb1a47526f532b06a9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.ui.tests.reorg;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IResource;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.widgets.Display;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.ui.tests.refactoring.MySetup;
import org.eclipse.jdt.ui.tests.refactoring.RefactoringTest;
import org.eclipse.jdt.ui.tests.refactoring.infra.MockWorkbenchSite;
import org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction;
import org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction;
public class PasteActionTest extends RefactoringTest{
private Clipboard fClipboard;
private static final Class clazz= PasteActionTest.class;
public PasteActionTest(String name) {
super(name);
}
public static Test suite() {
return new MySetup(new TestSuite(clazz));
}
protected void setUp() throws Exception {
super.setUp();
fClipboard= new Clipboard(Display.getDefault());
}
protected void tearDown() throws Exception {
super.tearDown();
fClipboard.dispose();
}
private static Object[] merge(Object[] array1, Object[] array2) {
Set elements= new HashSet(array1.length + array2.length);
elements.addAll(Arrays.asList(array1));
elements.addAll(Arrays.asList(array2));
return elements.toArray();
}
private void verifyDisabled(IResource[] copySelectedResources, IJavaElement[] copySelectedJavaElements, IResource[] pasteSelectedResources, IJavaElement[] pasteSelectedJavaElements) throws JavaModelException {
Object[] pasteSelection= merge(pasteSelectedResources, pasteSelectedJavaElements);
PasteAction pasteAction= new PasteAction(new MockWorkbenchSite(pasteSelection), fClipboard);
CopyToClipboardAction copyToClipboardAction= new CopyToClipboardAction(new MockWorkbenchSite(merge(copySelectedResources, copySelectedJavaElements)), fClipboard, pasteAction);
copyToClipboardAction.update(copyToClipboardAction.getSelection());
assertTrue("copy not enabled", copyToClipboardAction.isEnabled());
copyToClipboardAction.run();
pasteAction.update(pasteAction.getSelection());
assertTrue("paste should be disabled", ! pasteAction.isEnabled());
}
private void verifyEnabled(IResource[] copySelectedResources, IJavaElement[] copySelectedJavaElements, IResource[] pasteSelectedResources, IJavaElement[] pasteSelectedJavaElements) throws JavaModelException {
Object[] pasteSelection= merge(pasteSelectedResources, pasteSelectedJavaElements);
PasteAction pasteAction= new PasteAction(new MockWorkbenchSite(pasteSelection), fClipboard);
CopyToClipboardAction copyToClipboardAction= new CopyToClipboardAction(new MockWorkbenchSite(merge(copySelectedResources, copySelectedJavaElements)), fClipboard, pasteAction);
copyToClipboardAction.update(copyToClipboardAction.getSelection());
assertTrue("copy not enabled", copyToClipboardAction.isEnabled());
copyToClipboardAction.run();
pasteAction.update(pasteAction.getSelection());
assertTrue("paste should be enabled", pasteAction.isEnabled());
}
public void testEnabled_javaProject() throws Exception {
IJavaElement[] javaElements= {MySetup.getProject()};
IResource[] resources= {};
verifyEnabled(resources, javaElements, new IResource[0], new IJavaElement[0]);
}
public void testEnabled_project() throws Exception {
IJavaElement[] javaElements= {};
IResource[] resources= {MySetup.getProject().getProject()};
verifyEnabled(resources, javaElements, new IResource[0], new IJavaElement[0]);
}
}