From 807a533a1b6ba9a28401e5d4d8896128543a5fc5 Mon Sep 17 00:00:00 2001 From: Roger Llopart Pla Date: Sun, 7 Apr 2013 23:58:15 +0200 Subject: [PATCH 1/2] First version of the configurable path. --- META-INF/plugin.xml | 2 + .../idea/symfony2plugin/Settings.java | 47 +++++++++++ .../idea/symfony2plugin/SettingsForm.java | 80 +++++++++++++++++++ .../SymfonyContainerTypeProvider.java | 2 +- 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 src/fr/adrienbrault/idea/symfony2plugin/Settings.java create mode 100644 src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java diff --git a/META-INF/plugin.xml b/META-INF/plugin.xml index 11d844690..e73e6c7b9 100644 --- a/META-INF/plugin.xml +++ b/META-INF/plugin.xml @@ -20,6 +20,8 @@ + + com.jetbrains.php diff --git a/src/fr/adrienbrault/idea/symfony2plugin/Settings.java b/src/fr/adrienbrault/idea/symfony2plugin/Settings.java new file mode 100644 index 000000000..f04ba06d9 --- /dev/null +++ b/src/fr/adrienbrault/idea/symfony2plugin/Settings.java @@ -0,0 +1,47 @@ +package fr.adrienbrault.idea.symfony2plugin; + +import com.intellij.openapi.components.*; +import com.intellij.openapi.project.Project; +import com.intellij.util.xmlb.XmlSerializerUtil; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; + +/** + * Created with IntelliJ IDEA. + * User: Lumbendil + * Date: 7/04/13 + * Time: 20:02 + * To change this template use File | Settings | File Templates. + */ +@State( + name = "Settings", + storages = { + @Storage(id = "default", file="$PROJECT_CONFIG_DIR$/symfony2.xml", scheme = StorageScheme.DIRECTORY_BASED) + } +) +public class Settings implements PersistentStateComponent { + public String pathToProjectContainer = "app/cache/dev/appDevDebugProjectContainer.xml"; + protected Project project; + + public static Settings getInstance(Project project) + { + Settings settings = ServiceManager.getService(project, Settings.class); + + settings.project = project; + + return settings; + } + + @Nullable + @Override + public Settings getState() { + System.out.println(pathToProjectContainer); + return this; + } + + @Override + public void loadState(Settings settings) { + XmlSerializerUtil.copyBean(settings, this); + } +} diff --git a/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java b/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java new file mode 100644 index 000000000..f1c1a5eea --- /dev/null +++ b/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java @@ -0,0 +1,80 @@ +package fr.adrienbrault.idea.symfony2plugin; + +import com.intellij.openapi.options.Configurable; +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +/** + * Created with IntelliJ IDEA. + * User: Lumbendil + * Date: 7/04/13 + * Time: 20:11 + * To change this template use File | Settings | File Templates. + */ +public class SettingsForm implements Configurable { + private Project project; + private JTextField pathToProjectPanel; + + public SettingsForm(@NotNull final Project project) + { + this.project = project; + } + + @Nls + @Override + public String getDisplayName() { + return "Symfony2"; + } + + @Nullable + @Override + public String getHelpTopic() { + return null; + } + + @Nullable + @Override + public JComponent createComponent() { + JLabel label = new JLabel("Path to appDevDebugProjectContainer.xml: "); + pathToProjectPanel = new JTextField(getSettings().pathToProjectContainer, 20); + + label.setLabelFor(pathToProjectPanel); + + JPanel panel = new JPanel(); + + panel.add(label); + panel.add(pathToProjectPanel); + + return panel; + } + + @Override + public boolean isModified() { + return true; + } + + @Override + public void apply() throws ConfigurationException { + getSettings().pathToProjectContainer = pathToProjectPanel.getText(); + } + + @Override + public void reset() { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void disposeUIResources() { + //To change body of implemented methods use File | Settings | File Templates. + } + + private Settings getSettings() + { + return Settings.getInstance(project); + } +} diff --git a/src/fr/adrienbrault/idea/symfony2plugin/SymfonyContainerTypeProvider.java b/src/fr/adrienbrault/idea/symfony2plugin/SymfonyContainerTypeProvider.java index 3a580e474..6715a0867 100644 --- a/src/fr/adrienbrault/idea/symfony2plugin/SymfonyContainerTypeProvider.java +++ b/src/fr/adrienbrault/idea/symfony2plugin/SymfonyContainerTypeProvider.java @@ -91,7 +91,7 @@ private String getServiceId(MethodReferenceImpl e) { private MapgetServicesMap(Project project) { Map map = new HashMap(); - String defaultServiceMapFilePath = project.getBasePath() + "/app/cache/dev/appDevDebugProjectContainer.xml"; + String defaultServiceMapFilePath = project.getBasePath() + Settings.getInstance(project).pathToProjectContainer; File xmlFile = new File(defaultServiceMapFilePath); if (!xmlFile.exists()) { return map; From b6f3f317042360083723bc61ffa7d97366dc1604 Mon Sep 17 00:00:00 2001 From: Roger Llopart Pla Date: Mon, 8 Apr 2013 00:28:03 +0200 Subject: [PATCH 2/2] Slightly changed the settings form and removed a debug line. --- src/fr/adrienbrault/idea/symfony2plugin/Settings.java | 1 - src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/fr/adrienbrault/idea/symfony2plugin/Settings.java b/src/fr/adrienbrault/idea/symfony2plugin/Settings.java index f04ba06d9..384db4ba7 100644 --- a/src/fr/adrienbrault/idea/symfony2plugin/Settings.java +++ b/src/fr/adrienbrault/idea/symfony2plugin/Settings.java @@ -36,7 +36,6 @@ public static Settings getInstance(Project project) @Nullable @Override public Settings getState() { - System.out.println(pathToProjectContainer); return this; } diff --git a/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java b/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java index f1c1a5eea..22cbba795 100644 --- a/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java +++ b/src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.java @@ -41,7 +41,7 @@ public String getHelpTopic() { @Override public JComponent createComponent() { JLabel label = new JLabel("Path to appDevDebugProjectContainer.xml: "); - pathToProjectPanel = new JTextField(getSettings().pathToProjectContainer, 20); + pathToProjectPanel = new JTextField(getSettings().pathToProjectContainer, 35); label.setLabelFor(pathToProjectPanel);