Download fulltext - DiVA Portal

Transcript
GUI Implementation
57
Once the last grounding in the list has been executed, the thread passes the nal result to the
graphical user interface, and returns from its run() method.
In the current program build, execution runs semi-automatically. This means, that execution will
run automatically as long as no exceptions are thrown, and no input variables are missing. The
user has no way of modifying or replacing inputs unless they are missing. For future versions of
the system, it would be useful if the user could control the execution ow. If nothing else, to allow
the user to conrm the inputs being used. Execution should also in future versions be linked to the
graph panel, so that the user may track the execution progress by looking at the graph nodes. This
might paint a clearer picture to the user of what is being processed at any given moment. And,
when that is in place, the user should be able to "reroute" execution by replacing and/or removing
nodes in the graph.
6.9 Adaptability
A good GUI lets the user control the environment, and remembers the user's choices. Users are after
all people, and people have dierent preferences. So, a "perfect" graphical user interface cannot be
designed, unless the user can control every aspect of it to suit his or her own needs. We have
not quite reached the technological stage yet, where the user can decide the design of a system by
sheer will, but we have attempted to add some portion of adaptability to our GUI, so that the user
gets the impression that the system is able to remember his or her earlier decisions and choices.
Our system contains two classes that exist specically for this task, these are GuiProperties and
ConnectionProperties. In our current build, these classes are more "proof of concept" classes than
anything else. They contain little information, but are easily expandable. The two classes have a
near-equal setup, but they are treated and used dierently.
The GuiProperties class currently contains two variables, windowBounds and windowMaximized.
windowBounds holds information about the application window's size and location (in pixels), and
the windowMaximized indicates whether the application window is maximized or not. The GuiProperties class is never directly manipulated by the user. When the application is exited, the information
in GuiProperties is updated and saved, and the next time the application is started, the application
window takes on the properties found in the GuiProperties class. So, the user never really knows
what is happening behind the scenes, but he or she will notice that the window will be as it was left
the last time.
The ConnectionProperties class holds information related to the system (connection) settings of
the application. Unlike the GuiProperties class, this class' information is manipulated "directly"
through the ConnectionWizard user interface. The user is more in control of the user interface this
way, and decides if and when any changes should be saved. However, it means more work for the
user, which we are aware of. Still, these connection settings are vital for the system to work properly,
and so it is safer to let the user control it. We could have implemented some "automatically detect
settings", but due to the complex nature of the system, we judged that this would be too complex.
Instead, we oer default values. Once saved, these connection settings will also be remembered and
applied the next time the application is started.