1 17 18 package com.finalist.jaggenerator.modules; 19 20 import java.text.SimpleDateFormat ; 21 22 import com.finalist.jag.util.TemplateString; 23 import com.finalist.jaggenerator.JagGenerator; 24 import com.finalist.jaggenerator.Utils; 25 import org.w3c.dom.Document ; 26 import org.w3c.dom.Element ; 27 import org.w3c.dom.NodeList ; 28 29 import javax.swing.*; 30 import javax.swing.tree.DefaultMutableTreeNode ; 31 import javax.xml.parsers.ParserConfigurationException ; 32 33 36 public class App extends DefaultMutableTreeNode implements JagBean { 37 private static final String XMLTAG_MODULE_DATA = "module-data"; 38 39 public String isCalendarDate() { 41 if (!"".equals(getCalendarDateFormat())) { 42 return "true"; 43 } 44 return "false"; 45 } 46 47 public String getCalendarDateFormat() { 48 if ("dd/MM/yyyy".equals(getDateFormat())) 49 { 50 return "%d/%m/%Y"; 51 } 52 if ("dd-MM-yyyy".equals(getDateFormat())) 53 { 54 return "%d-%m-%Y"; 55 } 56 if ("yyyy/MM/dd".equals(getDateFormat())) 57 { 58 return "%Y/%m/%d"; 59 } 60 if ("yyyy-MM-dd".equals(getDateFormat())) 61 { 62 return "%Y-%m-%d"; 63 } 64 65 if ("MM/dd/yyyy".equals(getDateFormat())) 66 { 67 return "%m/%d/%Y"; 68 } 69 if ("MM-dd-yyyy".equals(getDateFormat())) 70 { 71 return "%m-%d-%Y"; 72 } 73 return ""; 75 } 76 77 public String isCalendarTime() { 79 if (!"".equals(getCalendarTimeFormat())) { 80 return "true"; 81 } 82 return "false"; 83 } 84 85 public String getCalendarTimeFormat() { 86 if ("dd/MM/yyyy HH:mm:ss".equals(getTimestampFormat())) 87 { 88 return "%d/%m/%Y %H:%M:%S"; 89 } 90 if ("dd-MM-yyyy HH:mm:ss".equals(getTimestampFormat())) 91 { 92 return "%d-%m-%Y %H:%M:%S"; 93 } 94 if ("yyyy/MM/dd HH:mm:ss".equals(getTimestampFormat())) 95 { 96 return "%Y/%m/%d %H:%M:%S"; 97 } 98 if ("yyyy-MM-dd HH:mm:ss".equals(getTimestampFormat())) 99 { 100 return "%Y-%m-%d %H:%M:%S"; 101 } 102 103 if ("MM/dd/yyyy HH:mm:ss".equals(getTimestampFormat())) 104 { 105 return "%m/%d/%Y %H:%M:%S"; 106 } 107 if ("MM-dd-yyyy HH:mm:ss".equals(getTimestampFormat())) 108 { 109 return "%m-%d-%Y %H:%M:%S"; 110 } 111 112 return ""; 114 } 115 116 117 122 public String getCurrentDate() { 123 SimpleDateFormat format = new SimpleDateFormat (getDateFormat()); 124 return format.format(new java.util.Date ()); 125 } 126 129 public App() { 130 initComponents(); 131 nameText.requestFocus(); 132 rootPackageText.setText("com.finalist"); 133 } 134 135 public App(Element el) { 136 initComponents(); 137 NodeList nl = el.getElementsByTagName(XMLTAG_MODULE_DATA); 138 for (int i = 0; i < nl.getLength(); i++) { 139 Element child = (Element ) nl.item(i); 140 String attName = child.getAttribute("name"); 141 String value = null; 142 if (child.getFirstChild() == null) 143 value = null; 144 else 145 value = child.getFirstChild().getNodeValue(); 146 if (value != null) { 147 if (attName.equalsIgnoreCase("name")) { 148 nameText.setText(value); 149 continue; 150 } 151 if (attName.equalsIgnoreCase("version")) { 152 versionText.setText(value); 153 continue; 154 } 155 if (attName.equalsIgnoreCase("description")) { 156 descriptionText.setText(value); 157 continue; 158 } 159 if (attName.equalsIgnoreCase("root-package")) { 160 rootPackageText.setText(value); 161 continue; 162 } 163 if (attName.equalsIgnoreCase("log-framework")) { 164 loggingFrameworkCombo.setSelectedItem(value); 165 continue; 166 } 167 if (attName.equalsIgnoreCase("date-format")) { 168 dateFormat.setText(value); 169 continue; 170 } 171 if (attName.equalsIgnoreCase("timestamp-format")) { 172 timestampFormat.setText(value); 173 continue; 174 } 175 } 176 } 177 nameText.requestFocus(); 178 } 179 180 181 public void setName(String text) { 182 this.nameText.setText(text); 183 } 184 185 public TemplateString getName() { 186 return new TemplateString(nameText.getText()); 187 } 188 189 public String getVersion() { 190 return versionText.getText(); 191 } 192 193 public void setVersion(String text) { 194 this.versionText.setText(text); 195 } 196 197 public String getDescription() { 198 return descriptionText.getText(); 199 } 200 201 public void setDescription(String text) { 202 descriptionText.setText(text); 203 } 204 205 public String getRootPackage() { 206 return rootPackageText.getText(); 207 } 208 209 public void setRootPackage(String text) { 210 this.rootPackageText.setText(text); 211 } 212 213 public String getRootPath() { 214 return rootPackageText.getText().replace('.', '/'); 215 } 216 217 public String getLogFramework() { 218 return (String ) loggingFrameworkCombo.getSelectedItem(); 219 } 220 221 public void setLogFramework(String text) { 222 this.loggingFrameworkCombo.setSelectedItem(text); 223 } 224 225 public String getTimestampFormat() { 226 return timestampFormat.getText(); 227 } 228 229 public void setTimestampFormat(String format) { 230 timestampFormat.setText(format); 231 } 232 233 public String getDateFormat() { 234 return dateFormat.getText(); 235 } 236 237 public void setDateFormat(String format) { 238 dateFormat.setText(format); 239 } 240 241 public String toString() { 242 return "Application settings"; 243 } 244 245 public JPanel getPanel() { 246 return panel; 247 } 248 249 public void getXML(Element el) throws ParserConfigurationException { 250 Document doc = el.getOwnerDocument(); 251 Element module = doc.createElement("module"); 252 module.setAttribute("name", "app"); 253 254 Element name = doc.createElement(XMLTAG_MODULE_DATA); 255 name.setAttribute("name", "name"); 256 if (nameText.getText() != null) { 257 name.appendChild(doc.createTextNode(nameText.getText())); 258 } 259 module.appendChild(name); 260 261 Element version = doc.createElement(XMLTAG_MODULE_DATA); 262 version.setAttribute("name", "version"); 263 if (versionText.getText() != null) { 264 version.appendChild(doc.createTextNode(versionText.getText())); 265 } 266 module.appendChild(version); 267 268 Element description = doc.createElement(XMLTAG_MODULE_DATA); 269 description.setAttribute("name", "description"); 270 if (descriptionText.getText() != null) { 271 description.appendChild(doc.createTextNode(descriptionText.getText())); 272 } 273 module.appendChild(description); 274 275 Element rootPackage = doc.createElement(XMLTAG_MODULE_DATA); 276 rootPackage.setAttribute("name", "root-package"); 277 if (rootPackageText.getText() != null) { 278 rootPackage.appendChild(doc.createTextNode(rootPackageText.getText())); 279 } 280 module.appendChild(rootPackage); 281 282 Element loggingFramework = doc.createElement(XMLTAG_MODULE_DATA); 283 loggingFramework.setAttribute("name", "log-framework"); 284 if (loggingFrameworkCombo.getSelectedItem() != null) { 285 loggingFramework.appendChild(doc.createTextNode((String ) loggingFrameworkCombo.getSelectedItem())); 286 } 287 module.appendChild(loggingFramework); 288 289 Element dateFormat = doc.createElement(XMLTAG_MODULE_DATA); 290 dateFormat.setAttribute("name", "date-format"); 291 292 if (getDateFormat() != null) { 293 dateFormat.appendChild(doc.createTextNode(getDateFormat())); 294 } 295 module.appendChild(dateFormat); 296 297 Element tsFormat = doc.createElement(XMLTAG_MODULE_DATA); 298 tsFormat.setAttribute("name", "timestamp-format"); 299 if (getTimestampFormat() != null) { 300 tsFormat.appendChild(doc.createTextNode(getTimestampFormat())); 301 } 302 module.appendChild(tsFormat); 303 304 el.appendChild(module); 305 } 306 307 public String getRefName() { 308 return "app"; 309 } 310 311 312 318 private void initComponents() { panel = new javax.swing.JPanel (); 320 nameLabel = new javax.swing.JLabel (); 321 versionLabel = new javax.swing.JLabel (); 322 desciptionLabel = new javax.swing.JLabel (); 323 rootPackageLabel = new javax.swing.JLabel (); 324 nameText = new javax.swing.JTextField (); 325 versionText = new javax.swing.JTextField (); 326 descriptionText = new javax.swing.JTextField (); 327 rootPackageText = new javax.swing.JTextField (); 328 loggingFrameworkLabel = new javax.swing.JLabel (); 329 loggingFrameworkCombo = new javax.swing.JComboBox (); 330 dateFormatLabel = new javax.swing.JLabel (); 331 dateFormat = new javax.swing.JTextField (); 332 timestampFormatLabel = new javax.swing.JLabel (); 333 timestampFormat = new javax.swing.JTextField (); 334 335 panel.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 336 337 nameLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 338 nameLabel.setText("Application Name: "); 339 panel.add(nameLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 10, 110, -1)); 340 341 versionLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 342 versionLabel.setText("Version: "); 343 panel.add(versionLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, 110, -1)); 344 345 desciptionLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 346 desciptionLabel.setText("Description: "); 347 panel.add(desciptionLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, 110, -1)); 348 349 rootPackageLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 350 rootPackageLabel.setText("Root-package: "); 351 panel.add(rootPackageLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, 110, -1)); 352 353 nameText.setToolTipText("Name should be lowercase and characters only!"); 354 nameText.addFocusListener(new java.awt.event.FocusAdapter () { 355 public void focusGained(java.awt.event.FocusEvent evt) { 356 nameTextFocusGained(evt); 357 } 358 359 public void focusLost(java.awt.event.FocusEvent evt) { 360 nameTextFocusLost(evt); 361 } 362 }); 363 364 panel.add(nameText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 10, 260, -1)); 365 366 versionText.setText("1.0"); 367 versionText.setToolTipText("Version number of the application"); 368 versionText.addFocusListener(new java.awt.event.FocusAdapter () { 369 public void focusLost(java.awt.event.FocusEvent evt) { 370 versionTextFocusLost(evt); 371 } 372 }); 373 374 panel.add(versionText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 40, 260, -1)); 375 376 descriptionText.setToolTipText("Description is used for class names, so make sure it starts with a capital and only contains characters"); 377 descriptionText.addFocusListener(new java.awt.event.FocusAdapter () { 378 public void focusLost(java.awt.event.FocusEvent evt) { 379 descriptionTextFocusLost(evt); 380 } 381 }); 382 383 panel.add(descriptionText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 70, 260, -1)); 384 385 rootPackageText.setText("com.finalist."); 386 rootPackageText.setToolTipText("Root package name for your application"); 387 rootPackageText.addFocusListener(new java.awt.event.FocusAdapter () { 388 public void focusLost(java.awt.event.FocusEvent evt) { 389 rootPackageTextFocusLost(evt); 390 } 391 }); 392 393 panel.add(rootPackageText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 100, 260, -1)); 394 395 loggingFrameworkLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 396 loggingFrameworkLabel.setText("Logging:"); 397 panel.add(loggingFrameworkLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 130, 110, -1)); 398 399 loggingFrameworkCombo.setModel(new javax.swing.DefaultComboBoxModel (new String []{"log4j", "jdklogging"})); 400 loggingFrameworkCombo.setToolTipText("Select logging method"); 401 loggingFrameworkCombo.addActionListener(new java.awt.event.ActionListener () { 402 public void actionPerformed(java.awt.event.ActionEvent evt) { 403 loggingFrameworkComboActionPerformed(evt); 404 } 405 }); 406 407 panel.add(loggingFrameworkCombo, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 130, 260, -1)); 408 409 dateFormatLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 410 dateFormatLabel.setText("Date format:"); 411 panel.add(dateFormatLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 160, 110, -1)); 412 413 dateFormat.setText("dd/MM/yyyy"); 414 dateFormat.setToolTipText("Date format used for displaying dates"); 415 panel.add(dateFormat, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 160, 260, -1)); 416 417 timestampFormatLabel.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); 418 timestampFormatLabel.setText("Timestamp format:"); 419 panel.add(timestampFormatLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 190, 110, -1)); 420 421 timestampFormat.setText("dd/MM/yyyy HH:mm:ss"); 422 timestampFormat.setToolTipText("Timestamp format used for rendering timestamps"); 423 panel.add(timestampFormat, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 190, 260, -1)); 424 425 } 427 private void nameTextFocusGained(java.awt.event.FocusEvent evt) { } 431 private void descriptionTextFocusLost(java.awt.event.FocusEvent evt) { String name = descriptionText.getText(); 434 if ((name == null) || (name.length() == 0)) 435 return; 436 String formattedName = Utils.formatLowerAndUpperCase(name); 437 descriptionText.setText(formattedName); 438 JagGenerator.stateChanged(false); 439 } 441 private void versionTextFocusLost(java.awt.event.FocusEvent evt) { JagGenerator.stateChanged(false); 443 } 445 private void loggingFrameworkComboActionPerformed(java.awt.event.ActionEvent evt) { JagGenerator.stateChanged(false); 447 } 449 private void rootPackageTextFocusLost(java.awt.event.FocusEvent evt) { Root root = (Root) getParent(); 451 root.setRootPackage(rootPackageText.getText()); 452 JagGenerator.stateChanged(false); 453 } 455 456 private void nameTextFocusLost(java.awt.event.FocusEvent evt) { String name = nameText.getText(); 459 if ((name == null) || (name.length() == 0)) 460 return; 461 String formattedName = Utils.formatLowercase(name); 462 nameText.setText(formattedName); 463 JagGenerator.stateChanged(false); 464 } 466 public javax.swing.JTextField dateFormat; 468 private javax.swing.JLabel dateFormatLabel; 469 private javax.swing.JLabel desciptionLabel; 470 public javax.swing.JTextField descriptionText; 471 public javax.swing.JComboBox loggingFrameworkCombo; 472 private javax.swing.JLabel loggingFrameworkLabel; 473 private javax.swing.JLabel nameLabel; 474 public javax.swing.JTextField nameText; 475 public javax.swing.JPanel panel; 476 private javax.swing.JLabel rootPackageLabel; 477 public javax.swing.JTextField rootPackageText; 478 public javax.swing.JTextField timestampFormat; 479 private javax.swing.JLabel timestampFormatLabel; 480 private javax.swing.JLabel versionLabel; 481 private javax.swing.JTextField versionText; 482 } 484 485 | Popular Tags |