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.