Skip to content

Commit caad312

Browse files
committed
add support for multiple routes #138
1 parent d839505 commit caad312

12 files changed

+397
-55
lines changed

META-INF/plugin.xml

+7
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,13 @@
328328
nonDefaultProject="true"
329329
/>
330330

331+
<projectConfigurable instance="fr.adrienbrault.idea.symfony2plugin.ui.RoutingSettingsForm"
332+
displayName="Routing"
333+
parentId="Symfony2.SettingsForm"
334+
id="Symfony2.RoutingSettingsForm"
335+
nonDefaultProject="true"
336+
/>
337+
331338
<php.typeProvider2 implementation="fr.adrienbrault.idea.symfony2plugin.dic.SymfonyContainerTypeProvider"/>
332339
<php.typeProvider2 implementation="fr.adrienbrault.idea.symfony2plugin.doctrine.ObjectRepositoryTypeProvider"/>
333340
<php.typeProvider2 implementation="fr.adrienbrault.idea.symfony2plugin.doctrine.ObjectRepositoryResultTypeProvider"/>

src/fr/adrienbrault/idea/symfony2plugin/Settings.java

+7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import fr.adrienbrault.idea.symfony2plugin.assistant.reference.MethodParameterSetting;
77
import fr.adrienbrault.idea.symfony2plugin.assistant.signature.MethodSignatureSetting;
88
import fr.adrienbrault.idea.symfony2plugin.dic.ContainerFile;
9+
import fr.adrienbrault.idea.symfony2plugin.routing.dict.RoutingFile;
910
import fr.adrienbrault.idea.symfony2plugin.templating.path.TwigNamespaceSetting;
1011
import org.jetbrains.annotations.Nullable;
1112

@@ -33,6 +34,9 @@ public class Settings implements PersistentStateComponent<Settings> {
3334
public static String DEFAULT_WEB_DIRECTORY = "web";
3435
public static String DEFAULT_APP_DIRECTORY = "app";
3536

37+
/**
38+
* @deprecated
39+
*/
3640
public String pathToUrlGenerator = DEFAULT_URL_GENERATOR_PATH;
3741
public String pathToTranslation = DEFAULT_TRANSLATION_PATH;
3842
public String directoryToWeb = DEFAULT_WEB_DIRECTORY;
@@ -79,6 +83,9 @@ public class Settings implements PersistentStateComponent<Settings> {
7983
@Nullable
8084
public List<ContainerFile> containerFiles = new ArrayList<ContainerFile>();
8185

86+
@Nullable
87+
public List<RoutingFile> routingFiles = new ArrayList<RoutingFile>();
88+
8289
@Nullable
8390
public List<MethodParameterSetting> methodParameterSettings = new ArrayList<MethodParameterSetting>();
8491

src/fr/adrienbrault/idea/symfony2plugin/SettingsForm.form

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<grid id="27dc6" binding="panel1" default-binding="true" layout-manager="GridLayoutManager" row-count="2" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
44
<margin top="0" left="0" bottom="0" right="0"/>
55
<constraints>
6-
<xy x="20" y="20" width="528" height="637"/>
6+
<xy x="20" y="20" width="546" height="699"/>
77
</constraints>
88
<properties/>
99
<border type="none"/>
@@ -71,7 +71,7 @@
7171
<forms/>
7272
</constraints>
7373
<properties>
74-
<text value="Path to urlGenerator.php: "/>
74+
<text value="Path to urlGenerator.php (deprecated): "/>
7575
</properties>
7676
</component>
7777
<component id="62b7e" class="javax.swing.JButton" binding="pathToUrlGeneratorTextFieldReset">

src/fr/adrienbrault/idea/symfony2plugin/dic/ContainerFile.java

+2-23
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@
44
import com.intellij.openapi.util.io.FileUtil;
55
import com.intellij.openapi.vfs.VfsUtil;
66
import com.intellij.openapi.vfs.VirtualFile;
7-
import com.intellij.util.xmlb.annotations.Attribute;
87
import com.intellij.util.xmlb.annotations.Tag;
8+
import fr.adrienbrault.idea.symfony2plugin.ui.dict.AbstractUiFilePath;
99
import org.jetbrains.annotations.Nullable;
1010

1111
import java.io.File;
1212

1313
@Tag("container_file")
14-
public class ContainerFile {
15-
16-
private String path;
14+
public class ContainerFile extends AbstractUiFilePath {
1715

1816
public ContainerFile() {
1917
}
@@ -22,20 +20,6 @@ public ContainerFile(String path) {
2220
this.path = path;
2321
}
2422

25-
@Attribute("path")
26-
public String getPath() {
27-
return path;
28-
}
29-
30-
public boolean exists(Project project) {
31-
if (!FileUtil.isAbsolute(this.path)) {
32-
return VfsUtil.findRelativeFile(this.path, project.getBaseDir()) != null;
33-
}
34-
35-
File file = new File(this.path);
36-
return file.exists();
37-
}
38-
3923
@Nullable
4024
public File getFile(Project project) {
4125
if (!FileUtil.isAbsolute(this.path)) {
@@ -54,9 +38,4 @@ public File getFile(Project project) {
5438

5539
return file;
5640
}
57-
58-
public void setPath(String path) {
59-
this.path = path;
60-
}
61-
6241
}

src/fr/adrienbrault/idea/symfony2plugin/routing/RouteHelper.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import fr.adrienbrault.idea.symfony2plugin.routing.dic.ServiceRouteContainer;
3636
import fr.adrienbrault.idea.symfony2plugin.routing.dict.RouteInterface;
3737
import fr.adrienbrault.idea.symfony2plugin.routing.dict.RoutesContainer;
38+
import fr.adrienbrault.idea.symfony2plugin.routing.dict.RoutingFile;
3839
import fr.adrienbrault.idea.symfony2plugin.stubs.SymfonyProcessors;
3940
import fr.adrienbrault.idea.symfony2plugin.stubs.dict.StubIndexedRoute;
4041
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.AnnotationRoutesStubIndex;
@@ -255,12 +256,25 @@ private static String getPath(Project project, String path) {
255256

256257
public static Map<String, Route> getCompiledRoutes(Project project) {
257258

258-
String pathToUrlGenerator = Settings.getInstance(project).pathToUrlGenerator;
259259
Set<String> files = new HashSet<String>();
260+
261+
// old deprecated single file
262+
String pathToUrlGenerator = Settings.getInstance(project).pathToUrlGenerator;
260263
if(pathToUrlGenerator != null) {
261264
files.add(pathToUrlGenerator);
262265
}
263266

267+
// add custom routing files on settings
268+
List<RoutingFile> routingFiles = Settings.getInstance(project).routingFiles;
269+
if(routingFiles != null) {
270+
for (RoutingFile routingFile : routingFiles) {
271+
String path = routingFile.getPath();
272+
if(StringUtils.isNotBlank(path)) {
273+
files.add(path);
274+
}
275+
}
276+
}
277+
264278
for(String file: files) {
265279

266280
File urlGeneratorFile = new File(getPath(project, file));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package fr.adrienbrault.idea.symfony2plugin.routing.dict;
2+
3+
import com.intellij.util.xmlb.annotations.Tag;
4+
import fr.adrienbrault.idea.symfony2plugin.ui.dict.AbstractUiFilePath;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
/**
8+
* @author Daniel Espendiller <daniel@espendiller.net>
9+
*/
10+
@Tag("routing_file")
11+
public class RoutingFile extends AbstractUiFilePath {
12+
13+
public RoutingFile() {
14+
}
15+
16+
public RoutingFile(@NotNull String path) {
17+
this.path = path;
18+
}
19+
}

src/fr/adrienbrault/idea/symfony2plugin/ui/ContainerSettingsForm.java

+3-29
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.intellij.util.ui.ListTableModel;
1818
import fr.adrienbrault.idea.symfony2plugin.Settings;
1919
import fr.adrienbrault.idea.symfony2plugin.dic.ContainerFile;
20+
import fr.adrienbrault.idea.symfony2plugin.ui.utils.UiSettingsUtil;
2021
import org.jetbrains.annotations.Nls;
2122
import org.jetbrains.annotations.NotNull;
2223
import org.jetbrains.annotations.Nullable;
@@ -116,7 +117,7 @@ public boolean canCreateElement() {
116117
public void run(AnActionButton anActionButton) {
117118
ContainerFile containerFile = ContainerSettingsForm.this.tableView.getSelectedObject();
118119
if(containerFile != null) {
119-
String uri = ContainerSettingsForm.this.getPathDialog(null);
120+
String uri = UiSettingsUtil.getPathDialog(project, StdFileTypes.XML);
120121
if(uri != null) {
121122
containerFile.setPath(uri);
122123
ContainerSettingsForm.this.changed = true;
@@ -129,7 +130,7 @@ public void run(AnActionButton anActionButton) {
129130
tablePanel.setAddAction(new AnActionButtonRunnable() {
130131
@Override
131132
public void run(AnActionButton anActionButton) {
132-
String uri = ContainerSettingsForm.this.getPathDialog(null);
133+
String uri = UiSettingsUtil.getPathDialog(project, StdFileTypes.XML);
133134
if(uri != null) {
134135
ContainerSettingsForm.this.tableView.getListTableModel().addRow(new ContainerFile(uri));
135136
ContainerSettingsForm.this.changed = true;
@@ -211,31 +212,4 @@ public String valueOf(ContainerFile containerFile) {
211212
return containerFile.exists(this.project) ? "EXISTS" : "ERROR";
212213
}
213214
}
214-
215-
private String getPathDialog(String current) {
216-
VirtualFile projectDirectory = project.getBaseDir();
217-
218-
VirtualFile selectedFileBefore = null;
219-
if(current != null) {
220-
selectedFileBefore = VfsUtil.findRelativeFile(current, projectDirectory);
221-
}
222-
223-
VirtualFile selectedFile = FileChooser.chooseFile(
224-
FileChooserDescriptorFactory.createSingleFileDescriptor(StdFileTypes.XML),
225-
project,
226-
selectedFileBefore
227-
);
228-
229-
if (null == selectedFile) {
230-
return null;
231-
}
232-
233-
String path = VfsUtil.getRelativePath(selectedFile, projectDirectory, '/');
234-
if (null == path) {
235-
path = selectedFile.getPath();
236-
}
237-
238-
return path;
239-
}
240-
241215
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="fr.adrienbrault.idea.symfony2plugin.ui.RoutingSettingsForm">
3+
<grid id="27dc6" binding="panel1" default-binding="true" layout-manager="BorderLayout" hgap="0" vgap="0">
4+
<constraints>
5+
<xy x="20" y="20" width="500" height="400"/>
6+
</constraints>
7+
<properties/>
8+
<border type="none"/>
9+
<children>
10+
<grid id="7c66" binding="listviewPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
11+
<constraints border-constraint="Center"/>
12+
<properties/>
13+
<border type="none"/>
14+
<children/>
15+
</grid>
16+
<grid id="c09d2" layout-manager="BorderLayout" hgap="0" vgap="0">
17+
<constraints border-constraint="North"/>
18+
<properties/>
19+
<border type="none"/>
20+
<children>
21+
<component id="dcef6" class="javax.swing.JLabel">
22+
<constraints border-constraint="Center"/>
23+
<properties>
24+
<text value="Add PHP Routing (appDevUrlGenerator.php -&gt; extends UrlGenerator)"/>
25+
</properties>
26+
</component>
27+
<component id="12e56" class="javax.swing.JButton" binding="buttonReset">
28+
<constraints border-constraint="East"/>
29+
<properties>
30+
<text value="Reset To Default"/>
31+
</properties>
32+
</component>
33+
</children>
34+
</grid>
35+
</children>
36+
</grid>
37+
</form>

0 commit comments

Comments
 (0)