Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import consulo.language.psi.PsiElement;
import consulo.language.psi.PsiReference;
import consulo.language.psi.search.ReferencesSearch;
import consulo.localize.LocalizeValue;
import consulo.project.Project;
import consulo.usage.UsageInfo;
import consulo.usage.UsageViewDescriptor;
Expand All @@ -42,90 +43,81 @@
* @author VISTALL
* @since 2019-07-24
*/
public class ChangeNamespaceProcessor extends BaseRefactoringProcessor
{
class UsageViewDescriptorImpl implements UsageViewDescriptor
{
@Nonnull
@Override
public PsiElement[] getElements()
{
return new PsiElement[] {myNamespaceProvider};
}

@Override
public String getProcessedElementsHeader()
{
return getCommandName();
}

@Override
public String getCodeReferencesText(int usagesCount, int filesCount)
{
return null;
}

@Nullable
@Override
public String getCommentReferencesText(int usagesCount, int filesCount)
{
return null;
}
}

@Nonnull
private final CSharpNamespaceProvider myNamespaceProvider;
@Nonnull
private final String myExpectedNamespace;

protected ChangeNamespaceProcessor(@Nonnull Project project, @Nonnull CSharpNamespaceProvider namespaceProvider, @Nonnull String expectedNamespace)
{
super(project);
myNamespaceProvider = namespaceProvider;
myExpectedNamespace = expectedNamespace;
}

@Nonnull
@Override
protected UsageViewDescriptor createUsageViewDescriptor(@Nonnull UsageInfo[] usages)
{
return new UsageViewDescriptorImpl();
}

@Nonnull
@Override
@RequiredReadAction
protected UsageInfo[] findUsages()
{
List<UsageInfo> result = new ArrayList<>();
Set<Couple<DotNetNamedElement>> children = CSharpMoveClassesUtil.findTypesAndNamespaces(myNamespaceProvider);

for(Couple<DotNetNamedElement> couple : children)
{
DotNetNamedElement second = couple.getSecond();

for(PsiReference reference : ReferencesSearch.search(second, CSharpClassesMoveProcessor.mapScope(second)))
{
result.add(new CSharpClassesMoveProcessor.MyUsageInfo(reference.getElement(), couple, reference));
}
}

return result.toArray(new UsageInfo[result.size()]);
}

@Override
@RequiredWriteAction
protected void performRefactoring(@Nonnull UsageInfo[] usages)
{
myNamespaceProvider.setNamespace(myExpectedNamespace);

CSharpClassesMoveProcessor.retargetUsages(usages);
}

@Nonnull
@Override
protected String getCommandName()
{
return "Change namespace to '" + myExpectedNamespace + "'";
}
public class ChangeNamespaceProcessor extends BaseRefactoringProcessor {
class UsageViewDescriptorImpl implements UsageViewDescriptor {
@Nonnull
@Override
public PsiElement[] getElements() {
return new PsiElement[]{myNamespaceProvider};
}

@Override
public String getProcessedElementsHeader() {
return getCommandName().get();
}

@Override
public String getCodeReferencesText(int usagesCount, int filesCount) {
return null;
}

@Nullable
@Override
public String getCommentReferencesText(int usagesCount, int filesCount) {
return null;
}
}

@Nonnull
private final CSharpNamespaceProvider myNamespaceProvider;
@Nonnull
private final String myExpectedNamespace;

protected ChangeNamespaceProcessor(
@Nonnull Project project,
@Nonnull CSharpNamespaceProvider namespaceProvider,
@Nonnull String expectedNamespace
) {
super(project);
myNamespaceProvider = namespaceProvider;
myExpectedNamespace = expectedNamespace;
}

@Nonnull
@Override
protected UsageViewDescriptor createUsageViewDescriptor(@Nonnull UsageInfo[] usages) {
return new UsageViewDescriptorImpl();
}

@Nonnull
@Override
@RequiredReadAction
protected UsageInfo[] findUsages() {
List<UsageInfo> result = new ArrayList<>();
Set<Couple<DotNetNamedElement>> children = CSharpMoveClassesUtil.findTypesAndNamespaces(myNamespaceProvider);

for (Couple<DotNetNamedElement> couple : children) {
DotNetNamedElement second = couple.getSecond();

for (PsiReference reference : ReferencesSearch.search(second, CSharpClassesMoveProcessor.mapScope(second))) {
result.add(new CSharpClassesMoveProcessor.MyUsageInfo(reference.getElement(), couple, reference));
}
}

return result.toArray(new UsageInfo[result.size()]);
}

@Override
@RequiredWriteAction
protected void performRefactoring(@Nonnull UsageInfo[] usages) {
myNamespaceProvider.setNamespace(myExpectedNamespace);

CSharpClassesMoveProcessor.retargetUsages(usages);
}

@Nonnull
@Override
protected LocalizeValue getCommandName() {
return LocalizeValue.localizeTODO("Change namespace to '" + myExpectedNamespace + "'");
}
}
Loading
Loading