Skip to content

Commit 189a6b5

Browse files
authored
Merge pull request #1808 from Haehnchen/feature/status-bar-migrate
migrate Symfony statusbar to extension
2 parents a9bed4a + 1ae7796 commit 189a6b5

File tree

3 files changed

+53
-33
lines changed

3 files changed

+53
-33
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/Symfony2ProjectComponent.java

+2-33
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,12 @@
88
import com.intellij.openapi.extensions.ExtensionPointName;
99
import com.intellij.openapi.project.Project;
1010
import com.intellij.openapi.vfs.VfsUtil;
11-
import com.intellij.openapi.wm.StatusBar;
12-
import com.intellij.openapi.wm.WindowManager;
1311
import com.intellij.psi.PsiElement;
1412
import fr.adrienbrault.idea.symfony2plugin.dic.ContainerFile;
1513
import fr.adrienbrault.idea.symfony2plugin.dic.container.util.ServiceContainerUtil;
1614
import fr.adrienbrault.idea.symfony2plugin.extension.PluginConfigurationExtension;
1715
import fr.adrienbrault.idea.symfony2plugin.extension.ServiceContainerLoader;
1816
import fr.adrienbrault.idea.symfony2plugin.extension.ServiceContainerLoaderParameter;
19-
import fr.adrienbrault.idea.symfony2plugin.profiler.widget.SymfonyProfilerWidget;
2017
import fr.adrienbrault.idea.symfony2plugin.routing.RouteHelper;
2118
import fr.adrienbrault.idea.symfony2plugin.util.IdeHelper;
2219
import fr.adrienbrault.idea.symfony2plugin.util.ProjectUtil;
@@ -38,50 +35,22 @@ public class Symfony2ProjectComponent implements ProjectComponent {
3835
private static final ExtensionPointName<ServiceContainerLoader> SERVICE_CONTAINER_POINT_NAME = new ExtensionPointName<>("fr.adrienbrault.idea.symfony2plugin.extension.ServiceContainerLoader");
3936
public static final ExtensionPointName<PluginConfigurationExtension> PLUGIN_CONFIGURATION_EXTENSION = new ExtensionPointName<>("fr.adrienbrault.idea.symfony2plugin.extension.PluginConfigurationExtension");
4037

41-
private Project project;
38+
private final Project project;
4239

4340
public Symfony2ProjectComponent(Project project) {
4441
this.project = project;
4542
}
4643

47-
public void initComponent() {
48-
//System.out.println("initComponent");
49-
}
50-
51-
public void disposeComponent() {
52-
//System.out.println("disposeComponent");
53-
}
54-
5544
@NotNull
5645
public String getComponentName() {
5746
return "Symfony2ProjectComponent";
5847
}
5948

60-
61-
6249
public void projectOpened() {
6350
this.checkProject();
64-
65-
// attach toolbar popup (right bottom)
66-
StatusBar statusBar = WindowManager.getInstance().getStatusBar(this.project);
67-
if(statusBar == null) {
68-
return;
69-
}
70-
71-
// clean bar on project open; we can have multiple projects att some time
72-
if(statusBar.getWidget(SymfonyProfilerWidget.ID) != null) {
73-
statusBar.removeWidget(SymfonyProfilerWidget.ID);
74-
}
75-
76-
if(isEnabled()) {
77-
SymfonyProfilerWidget symfonyProfilerWidget = new SymfonyProfilerWidget(this.project);
78-
statusBar.addWidget(symfonyProfilerWidget);
79-
}
80-
8151
}
8252

8353
public void projectClosed() {
84-
8554
ServiceXmlParserFactory.cleanInstance(project);
8655

8756
// clean routing
@@ -99,7 +68,7 @@ public void showInfoNotification(String content) {
9968
Notifications.Bus.notify(errorNotification, this.project);
10069
}
10170

102-
public boolean isEnabled() {
71+
private boolean isEnabled() {
10372
return Settings.getInstance(project).pluginEnabled;
10473
}
10574

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package fr.adrienbrault.idea.symfony2plugin.ui;
2+
3+
import com.intellij.openapi.project.Project;
4+
import com.intellij.openapi.util.Disposer;
5+
import com.intellij.openapi.wm.StatusBar;
6+
import com.intellij.openapi.wm.StatusBarWidget;
7+
import com.intellij.openapi.wm.StatusBarWidgetFactory;
8+
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
9+
import fr.adrienbrault.idea.symfony2plugin.profiler.widget.SymfonyProfilerWidget;
10+
import org.jetbrains.annotations.Nls;
11+
import org.jetbrains.annotations.NonNls;
12+
import org.jetbrains.annotations.NotNull;
13+
14+
/**
15+
* @author Daniel Espendiller <[email protected]>
16+
*/
17+
public class SymfonyStatusbarWidgetFactory implements StatusBarWidgetFactory {
18+
@Override
19+
public @NonNls
20+
@NotNull String getId() {
21+
return "symfony.status.bar";
22+
}
23+
24+
@Override
25+
public @Nls
26+
@NotNull String getDisplayName() {
27+
return "Symfony";
28+
}
29+
30+
@Override
31+
public boolean isAvailable(@NotNull Project project) {
32+
return Symfony2ProjectComponent.isEnabled(project);
33+
}
34+
35+
@Override
36+
public @NotNull StatusBarWidget createWidget(@NotNull Project project) {
37+
return new SymfonyProfilerWidget(project);
38+
}
39+
40+
@Override
41+
public void disposeWidget(@NotNull StatusBarWidget statusBarWidget) {
42+
Disposer.dispose(statusBarWidget);
43+
}
44+
45+
@Override
46+
public boolean canBeEnabledOn(@NotNull StatusBar statusBar) {
47+
return true;
48+
}
49+
}

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

+2
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@
250250
<multiHostInjector implementation="fr.adrienbrault.idea.symfony2plugin.lang.ParameterLanguageInjector"/>
251251
<iconProvider implementation="fr.adrienbrault.idea.symfony2plugin.twig.icon.TwigIconProvider"/>
252252

253+
<statusBarWidgetFactory implementation="fr.adrienbrault.idea.symfony2plugin.ui.SymfonyStatusbarWidgetFactory" />
254+
253255
<localInspection groupPath="Symfony" shortName="PhpRouteMissingInspection" displayName="Route Missing"
254256
groupName="Route"
255257
enabledByDefault="true" level="WARNING"

0 commit comments

Comments
 (0)