Cool! Good to hear you integrated it so quickly. Actually, I don't use Netbeans at all, as those artifacts were left over from Dave's code. In fact, I've already spent some time cutting out the generated GUI code in favor of that GriddedPanel class. Personally, I use vim and jEdit, although I'm trying Eclipse out for the first time with this project. I've always actively avoided IDEs but the way this project works so well with them, I'm giving them another chance.
<br><br>Sure, all those changes sound fine. I'll send you the blogapps zip and look over the changes tomorrow. The blogapps code isn't forked, just not released since Dave's book hasn't hit production yet. Finally, I have been using the svn repo since you switched (thank you!) so we should be on the same page.
<br><br>Don<br><br><div><span class="gmail_quote">On 1/19/06, <b class="gmail_sendername">DM Smith</b> <<a href="mailto:dmsmith555@yahoo.com">dmsmith555@yahoo.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Don,<br><br>I've checked in your code. The code that you have is most excellent and<br>I am looking forward to putting it in front of users! Thanks so much for<br>your contribution! Once we have it ready for release, we'll announce it
<br>for people to look at it from the nightly and respond to their comments.<br>Then we'll release!<br><br>I have made some simple changes to quite CheckStyle. We have it set up<br>that if you run ant against build.xml in jsword-web that it will build
<br>all the projects related to BibleDesktop and also the web. And then run<br>a series of QA checks. You can do this from the command line in the root<br>of jsword-web. The pertinent commands are:<br>ant all (does a clean, build, install, check)
<br>ant incremental (does a clean, build, install, check)<br>ant checkstyle (runs only checkstyle, but it only works after a build.)<br><br>And I made two other changes. I already mentioned that I moved code from<br>StatusBar into Desktop. The other change was that I used a "Type safe
<br>enumeration" pattern for the type of Blog, called appropriately BlogType.<br><br>I hope that my changes and the huge refactoring job that I did, did not<br>get in your way.<br><br>Below are some more things that probably should be done to make it
<br>similar to the rest of the code.<br><br>Don Brown wrote:<br>> Cool, yeah, I've started doing the same, going through and cleaning<br>> things up. The GUI code has tons of errors for two main reasons:<br>> * Still not 100% sure how you solve localization, so there are a lot
<br>> of labels and error messages still in the code<br>As noted before, we use the Msg class for localization of messages. I<br>took care of that for you. I also marked strings that didn't need to be<br>localized.<br>
As to error messages, we use the o.c.c.util.Reporter static informUser<br>methods. Listeners for ReporterEvents will then handle the message<br>appropriately. So we never print exceptions to std err. See<br>o.c.b.desktop.DesktopActions
for examples. We let listeners figure out<br>the best way to communicate to the user. So we don't create and manage<br>dialog boxes on the fly.<br>> * Most of that code was forked from the Blogapps code, where it was a
<br>> standalone Swing app.<br>In doing the connection, it appears that you are doing it in the main<br>thread. We have a Job class and a Progress meter that we use for long<br>running background processes. See<br>o.c.j.book.install.sword.AbstractSwordInstaller
's install method for a<br>good example. Also see the documentation for JobManager.<br><br>I would appreciate it if you could provide blogapps-1.0-src.zip.<br>Especially, if it is forked. In that case we may want to manage the
<br>forked source.<br>> Furthermore, a lot of it was autogenerated by Netbeans.<br>In localizing buttons, and other actionable things, we use<br>o.c.c.swing.CWActions and o.c.c.swing.ActionFactory and an action<br>property file. An example of this is
DesktopActions.java and<br>Desktop.properties. This is also a good example of splitting the<br>responsibility of a complex screen into two classes. One for the GUI and<br>the other for handling the events generated by that GUI.
<br><br>The basic idea is that an ActionFactory will read the property file and<br>construct CWAction objects. The ActionFactory will then dispense of<br>CWActions by name. Also the ActionFactory and the CWAction work together
<br>to use reflection against a "bean" to call a "do" method constructed<br>using the name of the action.<br><br>The reason that I mention this is that I don't think it fits well with<br>Netbeans auto generated code. I left it alone so you could see if you
<br>could integrate it using NetBeans.<br><br>In His Service,<br> DM<br><br>_______________________________________________<br>jsword-devel mailing list<br><a href="mailto:jsword-devel@crosswire.org">jsword-devel@crosswire.org
</a><br><a href="http://www.crosswire.org/mailman/listinfo/jsword-devel">http://www.crosswire.org/mailman/listinfo/jsword-devel</a><br></blockquote></div><br>