[jsword-devel] Building on Bible Desktop: BibleBlogs.Net
DM Smith
dmsmith555 at yahoo.com
Thu Jan 19 21:48:13 MST 2006
Don,
I've checked in your code. The code that you have is most excellent and
I am looking forward to putting it in front of users! Thanks so much for
your contribution! Once we have it ready for release, we'll announce it
for people to look at it from the nightly and respond to their comments.
Then we'll release!
I have made some simple changes to quite CheckStyle. We have it set up
that if you run ant against build.xml in jsword-web that it will build
all the projects related to BibleDesktop and also the web. And then run
a series of QA checks. You can do this from the command line in the root
of jsword-web. The pertinent commands are:
ant all (does a clean, build, install, check)
ant incremental (does a clean, build, install, check)
ant checkstyle (runs only checkstyle, but it only works after a build.)
And I made two other changes. I already mentioned that I moved code from
StatusBar into Desktop. The other change was that I used a "Type safe
enumeration" pattern for the type of Blog, called appropriately BlogType.
I hope that my changes and the huge refactoring job that I did, did not
get in your way.
Below are some more things that probably should be done to make it
similar to the rest of the code.
Don Brown wrote:
> Cool, yeah, I've started doing the same, going through and cleaning
> things up. The GUI code has tons of errors for two main reasons:
> * Still not 100% sure how you solve localization, so there are a lot
> of labels and error messages still in the code
As noted before, we use the Msg class for localization of messages. I
took care of that for you. I also marked strings that didn't need to be
localized.
As to error messages, we use the o.c.c.util.Reporter static informUser
methods. Listeners for ReporterEvents will then handle the message
appropriately. So we never print exceptions to std err. See
o.c.b.desktop.DesktopActions for examples. We let listeners figure out
the best way to communicate to the user. So we don't create and manage
dialog boxes on the fly.
> * Most of that code was forked from the Blogapps code, where it was a
> standalone Swing app.
In doing the connection, it appears that you are doing it in the main
thread. We have a Job class and a Progress meter that we use for long
running background processes. See
o.c.j.book.install.sword.AbstractSwordInstaller's install method for a
good example. Also see the documentation for JobManager.
I would appreciate it if you could provide blogapps-1.0-src.zip.
Especially, if it is forked. In that case we may want to manage the
forked source.
> Furthermore, a lot of it was autogenerated by Netbeans.
In localizing buttons, and other actionable things, we use
o.c.c.swing.CWActions and o.c.c.swing.ActionFactory and an action
property file. An example of this is DesktopActions.java and
Desktop.properties. This is also a good example of splitting the
responsibility of a complex screen into two classes. One for the GUI and
the other for handling the events generated by that GUI.
The basic idea is that an ActionFactory will read the property file and
construct CWAction objects. The ActionFactory will then dispense of
CWActions by name. Also the ActionFactory and the CWAction work together
to use reflection against a "bean" to call a "do" method constructed
using the name of the action.
The reason that I mention this is that I don't think it fits well with
Netbeans auto generated code. I left it alone so you could see if you
could integrate it using NetBeans.
In His Service,
DM
More information about the jsword-devel
mailing list