1 19 20 package org.netbeans.modules.apisupport.project.ui.wizard.wizard; 21 22 import java.net.MalformedURLException ; 23 import java.net.URL ; 24 import java.util.HashMap ; 25 import java.util.Locale ; 26 import java.util.Map ; 27 import org.netbeans.modules.apisupport.project.CreatedModifiedFiles; 28 import org.netbeans.modules.apisupport.project.Util; 29 import org.netbeans.modules.apisupport.project.ui.wizard.BasicWizardIterator; 30 import org.openide.WizardDescriptor; 31 32 35 final class DataModel extends BasicWizardIterator.BasicDataModel { 36 37 private CreatedModifiedFiles cmf; 38 39 private boolean branching; 41 private boolean fileTemplateType; 42 private int nOfSteps; 43 44 private String prefix; 46 private String displayName; 47 private String category; 48 private String origIconPath; 49 50 DataModel(final WizardDescriptor wiz) { 51 super(wiz); 52 } 53 54 CreatedModifiedFiles getCreatedModifiedFiles() { 55 if (cmf == null) { 56 regenerate(); 57 } 58 return cmf; 59 } 60 61 private void regenerate() { 62 cmf = new CreatedModifiedFiles(getProject()); 63 64 Map basicTokens = new HashMap (); 65 basicTokens.put("@@PACKAGE_NAME@@", getPackageName()); basicTokens.put("@@WIZARD_PREFIX@@", prefix); 68 StringBuffer panelsDefinitionBlock = new StringBuffer (); 69 String newLine = System.getProperty("line.separator") + " "; 71 for (int stepNumber = 1; stepNumber < (nOfSteps + 1); stepNumber++) { 73 String visualPanelClass = prefix + "VisualPanel" + stepNumber; String wizardPanelClass = prefix + "WizardPanel" + stepNumber; 76 Map replaceTokens = new HashMap (basicTokens); 77 replaceTokens.put("@@VISUAL_PANEL_CLASS@@", visualPanelClass); replaceTokens.put("@@WIZARD_PANEL_CLASS@@", wizardPanelClass); replaceTokens.put("@@STEP_NAME@@", "Step #" + stepNumber); 81 String path = getDefaultPackagePath(visualPanelClass + ".java", false); URL template = DataModel.class.getResource("visualPanel.javx"); cmf.add(cmf.createFileWithSubstitutions(path, template, replaceTokens)); 87 88 path = getDefaultPackagePath(visualPanelClass + ".form", false); template = DataModel.class.getResource("visualPanel.forx"); cmf.add(cmf.createFile(path, template)); 92 93 path = getDefaultPackagePath(wizardPanelClass + ".java", false); template = DataModel.class.getResource("wizardPanel.javx"); cmf.add(cmf.createFileWithSubstitutions(path, template, replaceTokens)); 97 98 panelsDefinitionBlock.append("new " + wizardPanelClass + "()"); if (stepNumber != nOfSteps) { 100 panelsDefinitionBlock.append(',').append(newLine); 101 } 102 } 103 104 cmf.add(cmf.addModuleDependency("org.openide.util")); cmf.add(cmf.addModuleDependency("org.openide.dialogs")); cmf.add(cmf.addModuleDependency("org.openide.awt")); 108 if (fileTemplateType || branching) { 110 String iteratorClass = prefix + "WizardIterator"; Map replaceTokens = new HashMap (basicTokens); 112 replaceTokens.put("@@PANELS_DEFINITION_BLOCK@@", panelsDefinitionBlock.toString()); replaceTokens.put("@@ITERATOR_CLASS@@", iteratorClass); String path = getDefaultPackagePath(iteratorClass + ".java", false); URL template = DataModel.class.getResource(fileTemplateType 116 ? "instantiatingIterator.javx" : "wizardIterator.javx"); cmf.add(cmf.createFileWithSubstitutions(path, template, replaceTokens)); 118 119 if (fileTemplateType) { 120 String lowerCasedPrefix = prefix.substring(0, 1).toLowerCase(Locale.ENGLISH) + prefix.substring(1); 122 template = DataModel.class.getResource("wizardDescription.html"); cmf.add(cmf.createFile(getDefaultPackagePath(lowerCasedPrefix, true) + ".html", template)); 125 String instanceFullPath = category + '/' + lowerCasedPrefix; 127 cmf.add(cmf.createLayerEntry(instanceFullPath, null, null, displayName, null)); 128 cmf.add(cmf.createLayerAttribute(instanceFullPath, "template", Boolean.TRUE)); String fqIteratorClass = getPackageName() + '.' + iteratorClass; 130 cmf.add(cmf.createLayerAttribute(instanceFullPath, "instantiatingIterator", "newvalue:" + fqIteratorClass)); try { 133 URL url = new URL ("nbresloc:/" + getPackageName().replace('.','/') + '/' + lowerCasedPrefix + ".html"); cmf.add(cmf.createLayerAttribute(instanceFullPath, "templateWizardURL", url)); } catch (MalformedURLException ex) { 137 Util.err.notify(ex); 138 } 139 140 if (origIconPath != null && origIconPath.length() > 0) { 142 String relToSrcDir = addCreateIconOperation(cmf, origIconPath); 143 try { 144 URL url = new URL ("nbresloc:/" + relToSrcDir); cmf.add(cmf.createLayerAttribute(instanceFullPath, "SystemFileSystem.icon", url)); } catch (MalformedURLException ex) { 147 Util.err.notify(ex); 148 } 149 } 150 } 151 } else { 152 Map replaceTokens = new HashMap (basicTokens); 153 replaceTokens.put("@@PANELS_DEFINITION_BLOCK@@", panelsDefinitionBlock.toString()); String path = getDefaultPackagePath(prefix + "WizardAction.java", false); URL template = DataModel.class.getResource("sampleAction.javx"); cmf.add(cmf.createFileWithSubstitutions(path, template, replaceTokens)); 157 } 158 } 159 160 private void reset() { 161 cmf = null; 162 } 163 164 void setBranching(boolean branching) { 165 this.branching = branching; 166 } 167 168 boolean isBranching() { 169 return branching; 170 } 171 172 void setFileTemplateType(boolean fileTemplateType) { 173 this.fileTemplateType = fileTemplateType; 174 } 175 176 boolean isFileTemplateType() { 177 return fileTemplateType; 178 } 179 180 void setNumberOfSteps(int nOfSteps) { 181 this.nOfSteps = nOfSteps; 182 } 183 184 void setClassNamePrefix(String prefix) { 185 reset(); 186 this.prefix = prefix; 187 } 188 189 void setDisplayName(String displayName) { 190 this.displayName = displayName; 191 } 192 193 void setCategory(String category) { 194 this.category = category; 195 } 196 197 void setIcon(String origIconPath) { 198 reset(); 199 this.origIconPath = origIconPath; 200 } 201 202 public void setPackageName(String packageName) { 203 super.setPackageName(packageName); 204 reset(); 205 } 206 207 } 208 | Popular Tags |