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;
}