Java源码示例:org.eclipse.xtext.ui.refactoring.ui.IRenameSupport

示例1
protected IRenameSupport createRenameSupportForJvmReference() {
	if(!languageServices.hasRefactoring())
		return null;
	IRenameElementContext renameElementContext = editor.getDocument().tryReadOnly(
			new IUnitOfWork<IRenameElementContext, XtextResource>() {
				@Override
				public IRenameElementContext exec(XtextResource state) throws Exception {
					Model model = (Model) state.getContents().get(0);
					JvmType defaultReference = model.getReferenceHolder().get(0).getDefaultReference();
					return languageServices.renameContextFactory.createRenameElementContext(defaultReference,
							editor, null, state);
				}
			});
	if (renameElementContext == null) return null;

	IRenameSupport renameSupport = languageServices.renameSupportFactory.create(renameElementContext,
			"NewJavaClass");
	return renameSupport;
}
 
示例2
protected IRenameSupport createRenameSupportForElement() {
	if(!languageServices.hasRefactoring())
		return null;
	IRenameElementContext renameElementContext = editor.getDocument().tryReadOnly(
			new IUnitOfWork<IRenameElementContext, XtextResource>() {
				@Override
				public IRenameElementContext exec(XtextResource state) throws Exception {
					Model model = (Model) state.getContents().get(0);
					ReferenceHolder referenceHolder = model.getReferenceHolder().get(0);
					return languageServices.renameContextFactory.createRenameElementContext(referenceHolder,
							editor, null, state);
				}
			});
	if (renameElementContext == null) return null;

	IRenameSupport renameSupport = languageServices.renameSupportFactory.create(renameElementContext,
			"newTestName");
	return renameSupport;
}
 
示例3
@Test public void testRenameElement_1() throws Exception {
	setLanguageConfig(true, false);
	IRenameSupport renameSupport = createRenameSupportForElement();
	assertNotNull(renameSupport);
	renameSupport.startDirectRefactoring();
	waitForBuild();
	assertXtextElementRefactored();
	assertJavaUnchanged();
}
 
示例4
@Test public void testRenameElement_2() throws Exception {
	setLanguageConfig(true, true);
	IRenameSupport renameSupport = createRenameSupportForElement();
	assertNotNull(renameSupport);
	renameSupport.startDirectRefactoring();
	waitForBuild();
	assertXtextElementRefactored();
	assertJavaUnchanged();
}
 
示例5
@Test public void testRenameJvmReference_2() throws Exception {
	setLanguageConfig(true, true);
	IRenameSupport renameSupport = createRenameSupportForJvmReference();
	assertNotNull(renameSupport);
	renameSupport.startDirectRefactoring();
	waitForBuild();
	assertXtextJvmRefRefactored();
	assertJavaRefactored();
}
 
示例6
@Override
public IRenameSupport create(Object context, String newName) {
	if (context instanceof JdtRefactoringContext) {
		try {
			RenameJavaElementDescriptor descriptor = createDescriptor((JdtRefactoringContext) context, newName);
			JdtRenameSupport jdtRenameSupport = jdtRenameSupportProvider.get();
			jdtRenameSupport.initialize((JdtRefactoringContext) context, descriptor);
			return jdtRenameSupport;
		} catch (Exception exc) {
			throw new WrappedException(exc);
		}
	}
	return super.create(context, newName);
}
 
示例7
/**
 * Rename refactoring Xpect method
 */
// Note: arg1=OFFSET makes the 'offset' parameter contain the right offset value
@ParameterParser(syntax = "('at' arg2=OFFSET 'to' arg3=STRING) ('resource' arg4=STRING)?")
@Xpect
@ConsumedIssues({ Severity.INFO, Severity.ERROR, Severity.WARNING })
public void renameRefactoring(
		@StringDiffExpectation(whitespaceSensitive = false) IStringDiffExpectation expectation, // arg0
		@ThisResource XtextResource resource, // arg1
		IEObjectCoveringRegion offset, // arg2
		String newName, // arg3
		String specifiedResourcePath, // arg4
		@N4JSCommaSeparatedValuesExpectation IN4JSCommaSeparatedValuesExpectation expectedResult)
		throws Exception {
	try {
		EObject context = offset.getEObject();
		EObject selectedElement = offsetHelper.resolveElementAt((XtextResource) context.eResource(),
				offset.getOffset());

		// LiteralOrComputedPropertyName does not have a type model but its container does
		if (selectedElement instanceof LiteralOrComputedPropertyName) {
			selectedElement = selectedElement.eContainer();
		}

		// An IdentifierRef refers to an AST FormalParameter and not TFormalParameter
		if (!(selectedElement instanceof FormalParameter)
				&& (N4JSLanguageUtils.getDefinedTypeModelElement(selectedElement) != null)) {
			selectedElement = N4JSLanguageUtils.getDefinedTypeModelElement(selectedElement);
		}

		// while (selectedElement != null) {
		// while (Display.getCurrent().readAndDispatch())
		// ;
		// Display.getCurrent().sleep();
		// }

		URI targetResourceUri = context.eResource().getURI();
		Optional<XtextEditor> editorOp = EditorsUtil.openXtextEditor(targetResourceUri,
				N4JSActivator.ORG_ECLIPSE_N4JS_N4JS);
		XtextEditor editor = editorOp.get();
		final ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();

		IRenameElementContext renameElementContext = renameContextFactory
				.createRenameElementContext(
						selectedElement, editor, selection, resource);

		IRenameSupport renameSupport = renameSupportFactory.create(renameElementContext, newName);

		// HACK, use reflection to obtain the private field 'renameRefactoring' since we need it to verify the
		// conditions
		// Field field = renameSupport.getClass().getDeclaredField("renameRefactoring");
		// field.setAccessible(true);
		ProcessorBasedRefactoring refactoring = (ProcessorBasedRefactoring) ReflectionUtil.getFieldValue(
				renameSupport,
				"renameRefactoring");

		RefactoringStatus status = refactoring.checkAllConditions(new NullProgressMonitor());
		// If rename refactoring's conditions are not satisfied, validate the error message
		if (status.hasError()) {
			RefactoringStatusEntry[] entries = status.getEntries();
			List<String> errorMessages = Arrays.stream(entries).map(statusEntry -> statusEntry.getMessage())
					.collect(Collectors.toList());

			expectedResult.assertEquals(errorMessages);
		} else {
			String beforeRenameContent = getResourceContentWithoutXpectComment(specifiedResourcePath, resource);
			renameSupport.startDirectRefactoring();
			String afterRenameContent = getResourceContentWithoutXpectComment(specifiedResourcePath, resource);

			expectation.assertDiffEquals(beforeRenameContent, afterRenameContent);
		}
	} finally {
		EditorsUtil.forceCloseAllEditors();
	}
}
 
示例8
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例9
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例10
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例11
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例12
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例13
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例14
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例15
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例16
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例17
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例18
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例19
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例20
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例21
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例22
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例23
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例24
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例25
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return JdtRenameSupport.Factory.class;
}
 
示例26
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return DefaultRenameSupport.Factory.class;
}
 
示例27
@Test public void testRenameElement() throws Exception {
	setLanguageConfig(false, false);
	IRenameSupport renameSupport = createRenameSupportForElement();
	assertNull(renameSupport);
}
 
示例28
@Test public void testRenameJvmReference() throws Exception {
	setLanguageConfig(false, false);
	IRenameSupport renameSupport = createRenameSupportForJvmReference();
	assertNull(renameSupport);
}
 
示例29
@Test public void testRenameJvmReference_1() throws Exception {
	setLanguageConfig(true, false);
	IRenameSupport renameSupport = createRenameSupportForJvmReference();
	assertNull(renameSupport);
}
 
示例30
public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
	return JdtRenameSupport.Factory.class;
}