Skip to content

Commit 6b6da26

Browse files
committed
fix #92 generate from class.
1 parent 166a200 commit 6b6da26

30 files changed

+463
-309
lines changed

CHANGELOG.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,20 @@
99
- Support generate No Constructor Class
1010
- Support generate JavaCall
1111
- Code navigation is Not Implement Yet
12-
- SequenceDiagram now have new vector icons.
13-
- Add Generate sequence diagram to quick fix intention.
12+
- UI improvements
13+
- Use vector icons.
14+
- Add Generate sequence diagram intention.
15+
- Add Icon to Toolbar.
16+
- Add Settings Icon.
1417

1518
### Changed
1619
- Move changelog from `README.md` to `CHANGELOG.md`
1720
- Add some missing `@Override` annotations in `ConfigurationOptions.java`(And it seems that SequenceDiagram support the
1821
2021.1 IDEA platform now ?)
1922
- Build for 2021.2
2023
- Change to gradle kotlin script.
24+
- Place inside method will generate sequence diagram for enclosed method.
25+
- Place at class name or anywhere other than method will popup method list to choose.
2126

2227
### Fixed
2328
- Issue #81 IndexOutOfBoundsException
@@ -26,7 +31,7 @@
2631

2732
## [2.0.6]
2833
### Fixed
29-
- bug:cannot save configuration #70
34+
- bug:cannot save sequenceSettingsState #70
3035
- Cannot add SequenceDiagram to Android Studio 4.1.1 #69
3136

3237
## [2.0.5]
@@ -83,7 +88,7 @@
8388

8489
## [1.2.4]
8590
### Added
86-
- Add configuration for method call name, It's now showing in simple/full format.
91+
- Add sequenceSettingsState for method call name, It's now showing in simple/full format.
8792

8893
## [1.2.3]
8994
### Added

src/main/java/icons/SequencePluginIcons.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public interface SequencePluginIcons {
1717
Icon SAVE_ICON = icon("/icons/save.svg");
1818
Icon OPEN_ICON = icon("/icons/folder.svg");
1919
Icon PUML_ICON = icon("/icons/puml.svg");
20+
Icon SETTING_ICON = icon("/icons/settings.svg");
2021

2122
static Icon icon(String path) {return IconLoader.getIcon(path, SequencePluginIcons.class);}
2223
}

src/main/java/org/intellij/sequencer/SequenceIntentionAction.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import com.intellij.openapi.editor.Editor;
66
import com.intellij.openapi.project.Project;
77
import com.intellij.psi.PsiElement;
8-
import com.intellij.psi.PsiIdentifier;
9-
import com.intellij.psi.PsiMethod;
108
import com.intellij.util.IncorrectOperationException;
9+
import org.intellij.sequencer.config.SequenceParamsState;
1110
import org.intellij.sequencer.generator.SequenceParams;
11+
import org.intellij.sequencer.generator.filters.NoConstructorsFilter;
1212
import org.intellij.sequencer.generator.filters.NoGetterSetterFilter;
13+
import org.intellij.sequencer.generator.filters.NoPrivateMethodsFilter;
1314
import org.intellij.sequencer.generator.filters.ProjectOnlyFilter;
1415
import org.jetbrains.annotations.NotNull;
1516

@@ -38,9 +39,15 @@ public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement
3839
ApplicationManager.getApplication().invokeLater(() -> {
3940
SequenceService plugin = project.getService(SequenceService.class);
4041

42+
SequenceParamsState state = SequenceParamsState.getInstance();
43+
4144
SequenceParams params = new SequenceParams();
42-
params.getMethodFilter().addFilter(new ProjectOnlyFilter(true));
43-
params.getMethodFilter().addFilter(new NoGetterSetterFilter(true));
45+
params.setMaxDepth(state.callDepth);
46+
params.setSmartInterface(state.smartInterface);
47+
params.getMethodFilter().addFilter(new ProjectOnlyFilter(state.projectClassesOnly));
48+
params.getMethodFilter().addFilter(new NoGetterSetterFilter(state.noGetterSetters));
49+
params.getMethodFilter().addFilter(new NoPrivateMethodsFilter(state.noPrivateMethods));
50+
params.getMethodFilter().addFilter(new NoConstructorsFilter(state.noConstructors));
4451

4552
plugin.showSequence(params, element.getParent());
4653
});

src/main/java/org/intellij/sequencer/SequencePanel.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,12 @@ public SequencePanel(SequenceNavigable navigable, PsiElement psiMethod, Sequence
5454

5555
DefaultActionGroup actionGroup = new DefaultActionGroup("SequencerActionGroup", false);
5656
actionGroup.add(new ReGenerateAction());
57-
actionGroup.add(new ExportAction());
57+
actionGroup.add(new SequenceParamsEditor());
58+
actionGroup.addSeparator();
5859
actionGroup.add(new SaveAsAction());
5960
actionGroup.add(new LoadAction());
61+
actionGroup.addSeparator();
62+
actionGroup.add(new ExportAction());
6063
actionGroup.add(new ExportPumlAction());
6164

6265
ActionManager actionManager = ActionManager.getInstance();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.intellij.sequencer;
2+
3+
import com.intellij.openapi.actionSystem.AnAction;
4+
import com.intellij.openapi.actionSystem.AnActionEvent;
5+
import com.intellij.openapi.project.Project;
6+
import icons.SequencePluginIcons;
7+
import org.intellij.sequencer.config.SequenceParamsState;
8+
import org.intellij.sequencer.ui.OptionsUI;
9+
import org.jetbrains.annotations.NotNull;
10+
11+
/**
12+
* Show Sequence generate options dialog.
13+
*/
14+
public class SequenceParamsEditor extends AnAction {
15+
16+
public SequenceParamsEditor() {
17+
super("Settings", "Change default settings", SequencePluginIcons.SETTING_ICON);
18+
}
19+
20+
public void actionPerformed(@NotNull AnActionEvent event) {
21+
Project project = event.getProject();
22+
if (project == null) return;
23+
24+
OptionsUI.OptionsDialogWrapper dialogWrapper = new OptionsUI.OptionsDialogWrapper(project);
25+
dialogWrapper.show();
26+
if (dialogWrapper.isOK()) {
27+
SequenceParamsState state = SequenceParamsState.getInstance();
28+
29+
state.callDepth = dialogWrapper.getCallStackDepth();
30+
state.projectClassesOnly = dialogWrapper.isProjectClassesOnly();
31+
state.noGetterSetters = dialogWrapper.isNoGetterSetters();
32+
state.noPrivateMethods = dialogWrapper.isNoPrivateMethods();
33+
state.noConstructors = dialogWrapper.isNoConstructors();
34+
state.smartInterface = dialogWrapper.isSmartInterface();
35+
36+
}
37+
}
38+
39+
}

0 commit comments

Comments
 (0)