Saturday, April 28, 2012

Work on the GUI begins!

Lately I find that every time I think about working on my project, I get seriously depressed. That's not very conducive to success, but I feel so overwhelmed at this point with my deadline being so close and so many features of my program not implemented. Again I have very little experience programming a Java GUI (Graphical User Interface) and none of that experience is from WGU. All of my GUI-building was done when I was a student at the University of Utah. I really wish I had been able to stay there for my degree. The coursework may not have been as applicable as what I've learned (a lot more theory, math, and obscure things that won't mean much compared to the broad, applicable work I've done in my current studies) but at least it would have been more structured and would have involved a ton more hands-on work (of which WGU is pitifully lacking). That being said, I've made my bed and now have to sleep in it, despite the scratchiness of the fabric.

So again I start as a total novice and have to work out how to design and implement a fully-functional, complex GUI without much knowledge about how that's accomplished. Oh, and I have less than 2 weeks to learn and create it. I can see why I'm so stressed and depressed.

But enough complaining for now, if I don't start I'm guaranteed never to finish. So here goes...

First off, I sketched out a GUI in NetBeans a couple of months ago, to help wrap my mind around how I wanted everything structured. At the time, I envisioned a tree-like structure to list the available recipes, grouped by whichever field I felt was appropriate (I was thinking of meal parts or main ingredients, or categories, or... other things...). So I built in a couple of JTrees 'cause they looked very polished and appropriate. Now that I'm actually starting to code things, I've learned that a JTree is considered one of the hardest Swing elements to work with. I tried to go ahead with it anyway and it only took about half an hour today before I realized it was a dead end.

I think this is another example of controlling scope. I originally envisioned this type of interface, but the primary scope of my project is a working skeleton, not a polished, distributable piece of software. I am going to have to yet again make a command decision - with the resources available (limited time), I cannot complete this level of structure. It can always be added in later, should I decide to continue it. Throwing out the JTree in lieu of an alphabetized list of Recipes (or Meal Plans on the other tab) should work faster and get things running.

Another design change is the recipe builder. The meal planner builder fits just great inside the meal planning tab but the recipe builder requires significantly more space and variability. I was originally going to have a pop-up window but I have no idea how to tie windows together, or really how to create sub-windows and things. Luckily, I've already built the design based on Tabbed Windows so I'm just going to create a new tab for the recipe builder.

Two more hours of work into the GUI and I'm even more lost than when I started. I guess it's time to solicit some help. We're off to Springville to get a bit of advice/assistance from my super-intelligent brother-in-law. Here's hoping!

No comments:

Post a Comment