Skip to content

Commit 63e2e03

Browse files
committed
Upgraded versions to support newer rider with jdk 11
1 parent adc689a commit 63e2e03

File tree

10 files changed

+653
-43
lines changed

10 files changed

+653
-43
lines changed

.idea/codeStyles/Project.xml

Lines changed: 517 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jarRepositories.xml

Lines changed: 55 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ Pairing C# interface files with implementations files in solution explorer for a
1212

1313
## Build
1414

15+
Make sure you have jdk-11 properly configured.
16+
1517
```bash
16-
gradle build
18+
./gradlew build
1719
```
1820

1921
Plugin artifact will be written to
@@ -24,9 +26,9 @@ Plugin artifact will be written to
2426

2527
```bash
2628
export ORG_GRADLE_PROJECT_intellijPublishToken="..."
27-
gradle publishPlugin
29+
./gradlew publishPlugin
2830
```
2931

3032
## Debug
3133

32-
Open in IntelliJ to simply run and debug in a real Rider instance.
34+
Use `runIde` gradle task to debug on a Rider instance.

build.gradle

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
1+
buildscript {
2+
repositories {
3+
maven { url 'https://www.myget.org/F/rd-snapshots/maven/' }
4+
mavenCentral()
5+
}
6+
7+
dependencies {
8+
classpath("com.jetbrains.rd:rd-gen:0.201.57") // https://www.myget.org/feed/rd-snapshots/package/maven/com.jetbrains.rd/rd-gen
9+
}
10+
}
11+
112
plugins {
213
id 'java'
3-
id 'org.jetbrains.kotlin.jvm' version '1.3.50'
4-
id 'org.jetbrains.intellij' version '0.4.10'
14+
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
15+
id 'org.jetbrains.intellij' version '0.4.19'
516
}
617

718
repositories {
8-
maven { url "https://www.jetbrains.com/intellij-repository/releases" }
9-
maven { url "https://jetbrains.bintray.com/intellij-third-party-dependencies" }
10-
mavenCentral()
11-
jcenter()
19+
maven { url 'https://cache-redirector.jetbrains.com/intellij-repository/snapshots' }
20+
maven { url 'https://cache-redirector.jetbrains.com/maven-central' }
1221
}
1322

1423
instrumentCode {
15-
compilerVersion = "192.6817.32" // latest build of com.jetbrains.intellij.java from https://www.jetbrains.com/intellij-repository/releases/
24+
compilerVersion = "203.7717.56" // latest build of com.jetbrains.intellij.java from https://www.jetbrains.com/intellij-repository/releases/
1625
}
1726

1827
group 'com.reallyliri.plugins'
19-
version '1.3'
28+
version '1.4'
2029

21-
sourceCompatibility = 1.8
30+
sourceCompatibility = 11
31+
targetCompatibility = 11
2232

2333
compileKotlin {
24-
kotlinOptions { jvmTarget = "1.8" }
34+
kotlinOptions { jvmTarget = "11" }
2535
}
2636

2737
dependencies {
@@ -31,8 +41,8 @@ dependencies {
3141
intellij {
3242
// see https://www.jetbrains.com/help/resharper/sdk/Products/Rider.html#plugin-project-jvm
3343
type = 'RD'
34-
version = "2019.2-SNAPSHOT"
35-
downloadSources = false
44+
version = "2021.2-SNAPSHOT"
45+
downloadSources = true
3646
intellij.updateSinceUntilBuild false
3747
}
3848

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package com.reallyliri.plugins.interfacepairing;
22

3+
import com.google.common.collect.Streams;
4+
import com.intellij.ide.projectView.PresentationData;
35
import com.intellij.ide.util.treeView.AbstractTreeNode;
46
import com.intellij.openapi.diagnostic.Logger;
57
import com.intellij.openapi.project.Project;
8+
import com.intellij.openapi.vfs.VirtualFile;
69
import com.jetbrains.rider.model.RdProjectFileDescriptor;
7-
import com.jetbrains.rider.projectView.nodes.ProjectModelNode;
810
import com.jetbrains.rider.projectView.views.solutionExplorer.SolutionExplorerCustomization;
11+
import com.jetbrains.rider.projectView.workspace.ProjectModelEntity;
912
import java.awt.EventQueue;
10-
import java.util.ArrayList;
13+
import java.lang.reflect.Field;
1114
import java.util.List;
1215
import java.util.Map;
1316
import java.util.Set;
1417
import java.util.stream.Collectors;
18+
import kotlin.sequences.Sequence;
1519
import org.jetbrains.annotations.NotNull;
1620

1721
public class InterfacePairingSolutionExplorerCustomization extends SolutionExplorerCustomization {
@@ -21,20 +25,36 @@ public InterfacePairingSolutionExplorerCustomization(@NotNull Project project) {
2125
super(project);
2226
}
2327

28+
@Override
29+
public int compareNodes(@NotNull ProjectModelEntity x, @NotNull ProjectModelEntity y) {
30+
return -1 * super.compareNodes(x, y);
31+
}
32+
33+
@Override
34+
public void updateNode(@NotNull PresentationData presentation, @NotNull VirtualFile virtualFile) {
35+
super.updateNode(presentation, virtualFile);
36+
}
37+
38+
@Override
39+
public void updateNode(@NotNull PresentationData presentation, @NotNull ProjectModelEntity entity) {
40+
super.updateNode(presentation, entity);
41+
}
42+
2443
@NotNull
2544
@Override
26-
public List<AbstractTreeNode<?>> getChildren(@NotNull ProjectModelNode parentNode) {
45+
public List<AbstractTreeNode<?>> getChildren(@NotNull ProjectModelEntity entity) {
2746
if (!EventQueue.isDispatchThread()) {
28-
setInterfacePairingSortKeys(parentNode);
47+
setInterfacePairingSortKeys(entity);
2948
}
30-
return super.getChildren(parentNode); // always returns empty, but its fine
49+
return super.getChildren(entity); // always returns empty, but its fine
3150
}
3251

33-
private void setInterfacePairingSortKeys(ProjectModelNode parentNode) {
34-
ArrayList<ProjectModelNode> children = parentNode.getChildren(true, false);
35-
Map<@NotNull String, ProjectModelNode> fileNodesByName = children.stream()
36-
.filter(node -> node.getDescriptor() instanceof RdProjectFileDescriptor)
37-
.collect(Collectors.toMap(ProjectModelNode::getName, node -> node, (node1, node2) -> node1));
52+
private void setInterfacePairingSortKeys(ProjectModelEntity entity) {
53+
Sequence<ProjectModelEntity> children = entity.getChildrenEntities();
54+
Map<@NotNull String, ProjectModelEntity> fileNodesByName =
55+
Streams.stream(children.iterator())
56+
.filter(node -> node.getDescriptor() instanceof RdProjectFileDescriptor)
57+
.collect(Collectors.toMap(ProjectModelEntity::getName, node -> node, (node1, node2) -> node1));
3858

3959
if (fileNodesByName.isEmpty()) {
4060
return;
@@ -58,13 +78,13 @@ private void setInterfacePairingSortKeys(ProjectModelNode parentNode) {
5878

5979
int sortKey = 0;
6080
for (String currentNodeName : orderedNonInterfaceNames) {
61-
ProjectModelNode currentNode = fileNodesByName.get(currentNodeName);
81+
ProjectModelEntity currentNode = fileNodesByName.get(currentNodeName);
6282
setNodeSortKey(currentNode, sortKey);
6383
sortKey++;
6484

6585
String potentialInterfaceName = String.format("I%s", currentNodeName);
6686
if (interfacesSet.contains(potentialInterfaceName)) {
67-
ProjectModelNode interfaceNode = fileNodesByName.get(potentialInterfaceName);
87+
ProjectModelEntity interfaceNode = fileNodesByName.get(potentialInterfaceName);
6888
setNodeSortKey(interfaceNode, sortKey);
6989
sortKey++;
7090
}
@@ -73,20 +93,18 @@ private void setInterfacePairingSortKeys(ProjectModelNode parentNode) {
7393
assert sortKey == fileNodesByName.size();
7494
}
7595

76-
private void setNodeSortKey(ProjectModelNode node, int sortKey) {
96+
private void setNodeSortKey(ProjectModelEntity node, int sortKey) {
7797
RdProjectFileDescriptor fileDescriptor = (RdProjectFileDescriptor) node.getDescriptor();
7898
if (fileDescriptor.getSortKey() != null && fileDescriptor.getSortKey() == sortKey) {
7999
return;
80100
}
81-
RdProjectFileDescriptor newDescriptor = new RdProjectFileDescriptor(
82-
fileDescriptor.isInternal(),
83-
fileDescriptor.isLinked(),
84-
fileDescriptor.getBuildAction(),
85-
sortKey,
86-
fileDescriptor.getUserData(),
87-
fileDescriptor.getName(),
88-
fileDescriptor.getLocation()
89-
);
90-
node.updateData(newDescriptor, node.getParent());
101+
102+
try {
103+
Field sortKeyField = fileDescriptor.getClass().getDeclaredField("sortKey");
104+
sortKeyField.setAccessible(true);
105+
sortKeyField.set(fileDescriptor, sortKey);
106+
} catch (NoSuchFieldException | IllegalAccessException e) {
107+
e.printStackTrace();
108+
}
91109
}
92110
}

src/main/resources/META-INF/plugin.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<id>com.reallyliri.plugins.interfacepairing</id>
33
<name>Interface Pairing</name>
44
<vendor url="https://github.com/reallyliri">ReallyLiri</vendor>
5-
<version>1.3</version>
6-
<idea-version since-build="191" />
5+
<version>1.4</version>
6+
<idea-version since-build="203" />
77

88
<description>Pairing C# interface files with implementations files in solution explorer for a better display experience.</description>
99

0 commit comments

Comments
 (0)