1414import com .intellij .openapi .actionSystem .DefaultActionGroup ;
1515import com .intellij .openapi .actionSystem .impl .ActionToolbarImpl ;
1616import com .intellij .openapi .editor .impl .DocumentImpl ;
17+ import com .intellij .openapi .fileTypes .FileType ;
18+ import com .intellij .openapi .fileTypes .ex .FileTypeManagerEx ;
1719import com .intellij .openapi .ide .CopyPasteManager ;
1820import com .intellij .openapi .project .Project ;
1921import com .intellij .openapi .project .ProjectManager ;
2022import com .intellij .ui .EditorTextField ;
2123import com .microsoft .azure .toolkit .intellij .azuresdk .model .AzureSdkArtifactEntity ;
24+ import com .microsoft .azure .toolkit .intellij .azuresdk .model .AzureSdkArtifactEntity .DependencyType ;
2225import icons .GradleIcons ;
2326import icons .OpenapiIcons ;
2427import lombok .Getter ;
3235import java .util .List ;
3336import java .util .function .Consumer ;
3437
38+ import static com .microsoft .azure .toolkit .intellij .azuresdk .model .AzureSdkArtifactEntity .DependencyType .GRADLE ;
39+ import static com .microsoft .azure .toolkit .intellij .azuresdk .model .AzureSdkArtifactEntity .DependencyType .MAVEN ;
40+
3541public class AzureSdkArtifactGroupPanel {
3642 @ Getter
3743 private JPanel contentPanel ;
@@ -42,7 +48,7 @@ public class AzureSdkArtifactGroupPanel {
4248 private final List <AzureSdkArtifactDetailPanel > artifactPnls = new ArrayList <>();
4349 private AzureSdkArtifactEntity pkg ;
4450 private String version ;
45- private String type ;
51+ private DependencyType type = MAVEN ;
4652
4753 public void setData (@ Nonnull final List <? extends AzureSdkArtifactEntity > artifacts ) {
4854 this .clear ();
@@ -66,12 +72,13 @@ private void clear() {
6672 private void onPackageOrVersionSelected (AzureSdkArtifactEntity pkg , String version ) {
6773 this .pkg = pkg ;
6874 this .version = version ;
69- this .viewer .setText (pkg .generateDependencySnippet (type , version ));
75+ this .viewer .setText (pkg .getDependencySnippet (type , version ));
7076 }
7177
72- private void onDependencyTypeSelected (String type ) {
78+ private void onDependencyTypeSelected (DependencyType type ) {
7379 this .type = type ;
74- this .viewer .setText (pkg .generateDependencySnippet (type , version ));
80+ final FileType fileType = FileTypeManagerEx .getInstance ().getFileTypeByExtension (type .getFileExt ());
81+ this .viewer .setNewDocumentAndFileType (fileType , new DocumentImpl (pkg .getDependencySnippet (type , version )));
7582 }
7683
7784 private EditorTextField buildCodeViewer () {
@@ -130,34 +137,34 @@ private void createUIComponents() {
130137 * @see com.intellij.application.options.schemes.AbstractSchemesPanel
131138 */
132139 private static class DependencyTypeSelector extends DefaultActionGroup {
133- private final Consumer <? super String > onTypeSelected ;
134- private String selectedType ;
140+ private final Consumer <? super DependencyType > onTypeSelected ;
141+ private DependencyType selectedType ;
135142
136- private DependencyTypeSelector (Consumer <? super String > onTypeSelected ) {
143+ private DependencyTypeSelector (Consumer <? super DependencyType > onTypeSelected ) {
137144 super ();
138145 setPopup (true );
139146 this .onTypeSelected = onTypeSelected ;
140- final AnAction maven = createAction (AzureSdkArtifactEntity . DEPENDENCY_TYPE_MAVEN , OpenapiIcons .RepositoryLibraryLogo , this :: setSelectedType );
141- final AnAction gradle = createAction (AzureSdkArtifactEntity . DEPENDENCY_TYPE_GRADLE , GradleIcons .Gradle , this :: setSelectedType );
147+ final AnAction maven = createAction (MAVEN . getName () , OpenapiIcons .RepositoryLibraryLogo , () -> this . setSelectedType ( MAVEN ) );
148+ final AnAction gradle = createAction (GRADLE . getName () , GradleIcons .Gradle , () -> this . setSelectedType ( GRADLE ) );
142149 this .addAll (maven , gradle );
143150 }
144151
145- private void setSelectedType (String type ) {
152+ private void setSelectedType (DependencyType type ) {
146153 this .selectedType = type ;
147154 this .onTypeSelected .accept (type );
148155 }
149156
150157 @ Override
151158 public void update (@ NotNull final AnActionEvent e ) {
152- final Icon icon = AzureSdkArtifactEntity . DEPENDENCY_TYPE_GRADLE . equals ( selectedType ) ? GradleIcons .Gradle : OpenapiIcons .RepositoryLibraryLogo ;
159+ final Icon icon = GRADLE == selectedType ? GradleIcons .Gradle : OpenapiIcons .RepositoryLibraryLogo ;
153160 e .getPresentation ().setIcon (icon );
154161 }
155162
156- private AnAction createAction (final String type , final Icon icon , final Consumer <? super String > onTypeSelected ) {
157- return new AnAction (type , null , icon ) {
163+ private AnAction createAction (final String name , final Icon icon , final Runnable onSelected ) {
164+ return new AnAction (name , null , icon ) {
158165 @ Override
159166 public void actionPerformed (@ NotNull final AnActionEvent e ) {
160- onTypeSelected . accept ( type );
167+ onSelected . run ( );
161168 }
162169 };
163170 }
0 commit comments