Skip to content

Commit d23153f

Browse files
committed
Fix #7 Validation for existing theme names
1 parent 8f121fa commit d23153f

3 files changed

Lines changed: 48 additions & 8 deletions

File tree

src/org/netbeans/modules/php/wordpress/ui/actions/CreateThemeBaseAction.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import org.netbeans.modules.php.spi.framework.actions.BaseAction;
6060
import org.netbeans.modules.php.wordpress.util.GithubZipEntryFilter;
6161
import org.netbeans.modules.php.wordpress.util.WPFileUtils;
62+
import org.netbeans.modules.php.wordpress.util.WPUtils;
6263
import org.netbeans.modules.php.wordpress.util.ZipEntryFilter;
6364
import org.openide.DialogDisplayer;
6465
import org.openide.NotifyDescriptor;
@@ -106,6 +107,11 @@ protected String getPureName() {
106107
})
107108
@Override
108109
protected void actionPerformed(PhpModule phpModule) {
110+
// called via shortcut
111+
if (!WPUtils.isWP(phpModule)) {
112+
return;
113+
}
114+
109115
// get Themes directory
110116
themesDirectory = WPFileUtils.getThemesDirectory(phpModule);
111117
if (themesDirectory == null) {

src/org/netbeans/modules/php/wordpress/ui/actions/CreateUnderscoresThemeAction.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@
4545
import java.io.OutputStreamWriter;
4646
import java.io.PrintWriter;
4747
import java.net.MalformedURLException;
48+
import java.util.HashSet;
4849
import java.util.List;
50+
import java.util.Set;
4951
import java.util.logging.Level;
5052
import java.util.logging.Logger;
5153
import org.netbeans.api.progress.ProgressHandle;
@@ -57,6 +59,7 @@
5759
import org.netbeans.modules.php.wordpress.util.UnderscoresUtils;
5860
import org.netbeans.modules.php.wordpress.util.UnderscoresZipEntryFilter;
5961
import org.netbeans.modules.php.wordpress.util.WPFileUtils;
62+
import org.netbeans.modules.php.wordpress.util.WPUtils;
6063
import org.openide.filesystems.FileAlreadyLockedException;
6164
import org.openide.filesystems.FileObject;
6265
import 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
}

src/org/netbeans/modules/php/wordpress/ui/wizards/CreateUnderscoresThemePanel.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import java.awt.Dialog;
4545
import java.awt.event.ActionEvent;
4646
import java.awt.event.ActionListener;
47+
import java.util.Set;
4748
import javax.swing.event.DocumentEvent;
4849
import javax.swing.event.DocumentListener;
4950
import org.openide.DialogDescriptor;
@@ -61,15 +62,17 @@ public class CreateUnderscoresThemePanel extends javax.swing.JPanel implements A
6162
private DialogDescriptor descriptor;
6263
private Dialog dialog;
6364
private boolean isOK = false;
65+
private Set<String> existingThemeNames;
6466

6567
/**
6668
* Creates new form CreateUnderscoresThemePanel
6769
*/
68-
public CreateUnderscoresThemePanel() {
70+
public CreateUnderscoresThemePanel(Set<String> existingThemeNames) {
6971
initComponents();
7072
descriptor = new DialogDescriptor(this, "Underscores", true, this); // NOI18N
7173
themeNameTextField.getDocument().addDocumentListener(this);
7274
descriptor.setValid(false);
75+
this.existingThemeNames = existingThemeNames;
7376
}
7477

7578
public void showDialog() {
@@ -213,6 +216,10 @@ private void doEnablement() {
213216
} else {
214217
descriptor.setValid(true);
215218
}
219+
name = name.trim();
220+
if (existingThemeNames.contains(name)) {
221+
descriptor.setValid(false);
222+
}
216223
}
217224

218225
@Override

0 commit comments

Comments
 (0)