4545import java .io .OutputStreamWriter ;
4646import java .io .PrintWriter ;
4747import java .net .MalformedURLException ;
48+ import java .util .HashSet ;
4849import java .util .List ;
50+ import java .util .Set ;
4951import java .util .logging .Level ;
5052import java .util .logging .Logger ;
5153import org .netbeans .api .progress .ProgressHandle ;
5759import org .netbeans .modules .php .wordpress .util .UnderscoresUtils ;
5860import org .netbeans .modules .php .wordpress .util .UnderscoresZipEntryFilter ;
5961import org .netbeans .modules .php .wordpress .util .WPFileUtils ;
62+ import org .netbeans .modules .php .wordpress .util .WPUtils ;
6063import org .openide .filesystems .FileAlreadyLockedException ;
6164import org .openide .filesystems .FileObject ;
6265import org .openide .filesystems .FileUtil ;
@@ -105,8 +108,22 @@ protected String getPureName() {
105108
106109 @ Override
107110 protected void actionPerformed (PhpModule pm ) {
111+ // called via shortcut
112+ if (!WPUtils .isWP (pm )) {
113+ return ;
114+ }
115+ // create folder
116+ FileObject themesDirectory = WPFileUtils .getThemesDirectory (pm );
117+ if (themesDirectory == null ) {
118+ LOGGER .log (Level .WARNING , "themes directory don't exist!" );
119+ return ;
120+ }
121+
122+ // get existing theme names
123+ Set <String > existingThemeNames = getExistingThemeNames (themesDirectory );
124+
108125 // create dialog
109- CreateUnderscoresThemePanel panel = new CreateUnderscoresThemePanel ();
126+ CreateUnderscoresThemePanel panel = new CreateUnderscoresThemePanel (existingThemeNames );
110127 panel .showDialog ();
111128 if (!panel .isOK ()) {
112129 return ;
@@ -124,12 +141,6 @@ protected void actionPerformed(PhpModule pm) {
124141 _s_ = UnderscoresUtils .toFunctionName (name );
125142 themeName = name ;
126143
127- // create folder
128- FileObject themesDirectory = WPFileUtils .getThemesDirectory (pm );
129- if (themesDirectory == null ) {
130- LOGGER .log (Level .WARNING , "themes directory don't exist!" );
131- return ;
132- }
133144 FileObject themeFolder = null ;
134145 try {
135146 themeFolder = themesDirectory .createFolder (themeFolerName );
@@ -236,4 +247,20 @@ private void replace(FileObject directory) {
236247
237248 }
238249 }
250+
251+ /**
252+ * Get existing theme names.
253+ *
254+ * @param themesDirectory
255+ * @return theme names
256+ */
257+ private Set <String > getExistingThemeNames (FileObject themesDirectory ) {
258+ Set <String > existingThemeNames = new HashSet <String >();
259+ for (FileObject child : themesDirectory .getChildren ()) {
260+ if (child .isFolder ()) {
261+ existingThemeNames .add (child .getName ());
262+ }
263+ }
264+ return existingThemeNames ;
265+ }
239266}
0 commit comments