• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

user interface: design

 
Svetlana Koshkina
Ranch Hand
Posts: 108
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Guys! As person who passed with full marks on the user interface i thought i could share with you what i did. Since it is not that involved into implementation details as, f. ex., locking issues and i saw questions about how one should do it. Of course it is very individual and stuff but nevertheless i thought it would help down the road:
1. i fully used all Sun Graphics Repository for various buttons. They are very neat.
2. i allowed for multiple reservations/cancellations: you click on the cell it become framed (custom renderer). All cells with positive non-zero values had diffrent undeground so you could select them easily once scrolled up and down and then press to reserve or cancel.
3. You always had feedback whether your query succeded: Successful blah blah Not succesfull - not enough tickets etc.
4. You could make payment on line: just simple Reciept with mock taxes showing everything you owe.
5. On-line mock help.
6. On-line mock 'About'
7. Connection feedback.
8. Alternate color on table's rows.
9. Use OTHER PEOPLE CODE WITH PROPER REFERENCES: HtmlPane, SwingWorker thread etc.
Hope it will help.
 
Andrew Monkhouse
author and jackaroo
Marshal Commander
Pie
Posts: 12007
215
C++ Firefox Browser IntelliJ IDE Java Mac Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Svetlana,

Originally posted by Svetlana Koshkina:
Guys! As person who passed with full marks on the user interface

Since I also got 100% in GUI, I thought I'd tease you by mentioning what I didn't do
Originally posted by Svetlana Koshkina:
1. i fully used all Sun Graphics Repository for various buttons. They are very neat.

Yep, I also used them.
(If you are using them, note the copyright requirements, and make sure you follow them (by including the LICENSE file in your submission)).
Originally posted by Svetlana Koshkina:
2. i allowed for multiple reservations/cancellations: you click on the cell it become framed (custom renderer). All cells with positive non-zero values had diffrent undeground so you could select them easily once scrolled up and down and then press to reserve or cancel.

Nope.
I did not allow cancellations, and each booking was handled as a separate series of events - you could not do multiple reservations at once.
Originally posted by Svetlana Koshkina:
3. You always had feedback whether your query succeded: Successful blah blah Not succesfull - not enough tickets etc.

Yep - informational messages to the status bar, error messages in dialog boxes.
Originally posted by Svetlana Koshkina:
4. You could make payment on line: just simple Reciept with mock taxes showing everything you owe.

Nope - my system didn't care about payments or about tracking who bought the tickets.
Originally posted by Svetlana Koshkina:
5. On-line mock help.

Mine wasn't mock - my online help was the real thing
Originally posted by Svetlana Koshkina:
6. On-line mock 'About'

Yep - only because I wanted to play around with having a splash screen that doubled as an about box.
Originally posted by Svetlana Koshkina:
7. Connection feedback.

Hmmm - if there was no connection or if the connection died, my clients were informed via a dialog box, and they were taken back to the connections screen.
So I did not bother with displaying connection status on the status bar.
Originally posted by Svetlana Koshkina:
8. Alternate color on table's rows.

Nope - nice idea though
Originally posted by Svetlana Koshkina:
9. Use OTHER PEOPLE CODE WITH PROPER REFERENCES: HtmlPane, SwingWorker thread etc.

What does this mean?
Regards, Andrew
 
Bill Robertson
Ranch Hand
Posts: 234
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Did you have one major screen with all your search options, table view,
and booking button all on the one screen or did you have multiple screens
or tabs?
 
Andrew Monkhouse
author and jackaroo
Marshal Commander
Pie
Posts: 12007
215
C++ Firefox Browser IntelliJ IDE Java Mac Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Bill,
I had one screen for flight search and selection, and a separate screen for booking.
My reason for a separate screen for booking (as opposed to just a dialog box) was future enhancements. Today only one item of information is required to make a booking, but in the future more items may be required. This will become harder and harder to put on a dialog box. Having the user used to going to a booking screen will make it easier for them (all they will see is an extra field on the screen), and make it easier for the programmer to add and layout fields.
This was more relevant to the FBNS assignment, where all the GUI did was remove an available seat - it did not track ownership of the seat it just sold - so in the future the company might have wanted to track who they sold the seat to and whether they paid for it or not.
FBNS also had the requirement: "Your user interface should be designed with the expectation of future functionality enhancements, and it should establish a control scheme that will support this with minimal disruption to the users when this occurs. " - again this had an impact on my design decision.
Regards, Andrew
 
Svetlana Koshkina
Ranch Hand
Posts: 108
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Andrew,
Actually, i did not mean to brag, i just only told what can lead to good score because so many people are asking and answers are vague and concrete examples are rare. Just wanted to give ex. that worked. ok? If similar solutions led to best score, it means that by generalizing it will lead to best assignments.
If your 'help' was real where 'mock' would suffice it would alleviate the burden would it not? My help was just a little toy - meant for non-professional and rather dumb people.
I did not have multiple screens- just one for everything. Most difficult of course was arrangment 'for future enhancements' that i did using ResourceBundle and automatically adjusting font sizes and columns names strings.
You can use other people code: i took some code from javaworld article (2 or 3 classes), just packed it in 'javaworld' package and gave the reference.
Meaning that if you came across something neat and nice and for everybody and it really sucks to re-write, you can use it as-is with proper credits to the author.
 
Svetlana Koshkina
Ranch Hand
Posts: 108
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
And I did not include license for Graphics. For some reason I even did not think about it.
I just took risk to use their SwingWorker, which i modified to suit my needs, and made note of it in docs. Usually it does not pay to re-write concurrency classe because they are so minimalistic - very difficult to sell it for your own afterwards. At least for me, because i am not that 3d yet.
 
Andrew Monkhouse
author and jackaroo
Marshal Commander
Pie
Posts: 12007
215
C++ Firefox Browser IntelliJ IDE Java Mac Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Svetlana,
I certainly was not criticizing you. I thought what you posted was good and helpful (which is why I started with a ). I was just adding my comments about what we both happened to do, and which things you did that I didn't do.
Having just searched for your results (sorry I missed them at the time you posted them - belated congratulations), I would also love to see a description of your locking at some time if you feel up to it.
Regards, Andrew
 
Andrew Monkhouse
author and jackaroo
Marshal Commander
Pie
Posts: 12007
215
C++ Firefox Browser IntelliJ IDE Java Mac Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Svetlana,
Originally posted by Svetlana Koshkina:
You can use other people code: i took some code from javaworld article (2 or 3 classes), just packed it in 'javaworld' package and gave the reference.
Meaning that if you came across something neat and nice and for everybody and it really sucks to re-write, you can use it as-is with proper credits to the author.

That does surprise me. I would be happy to see this happen in a real world situation, but I would have thought that in the assignment this would go against the aim of the assignment (showing that you can develop your own code). The new assignments are also very specific in stating "you must not submit any code that is not your own work".
Regards, Andrew
 
Svetlana Koshkina
Ranch Hand
Posts: 108
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The new assignments are also very specific in stating "you must not submit any code that is not your own work".
Regards, Andrew[/QB]


Ah, it's ok, that means that they finally mended it. It means that i've fit into old hole. That's fine by me though, i know that i did not steal anything and was completely honest and paid due respect to people who wrote the code.
My principal locking mecanism, consisted of LockManager that operated on BitSet of binary semaphores. BitSet turned out very nice because it is so lower and easy in comp. with traditional Map. Semaphores were very similar to those that you can find in Doug Lea book but identities of the threads were determined diffrently because of strange bug in jdk I used (it drove me crazy indeed). My db had two LockManagers - one internal used by the database and another external with public lock-unlock exposed that clients were supposed to use, but nobody suffered if they did not use it because db took care of its own safety. Note, that the two were absolutely identical - just different objects. All testing methdos evaluated to boolean - to make sure that everything worked, then final decision was comitted real quick - 'conservative' approach as in Doug Lea book: no optimistic and roll-backs, just yes or no for sure.
I build everything on wait()-notifyAll(). Once tuned, it never had deadlocks - i ran a lot of tests overnight. So, that was it. It is very simple, but for me to develop it was really hard, but at the end i understood how multythreadig works and it was worth it.
Regards,

 
Philippe Maquet
Bartender
Posts: 1872
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Svetlana,
The complete sentence in my own instructions are :
You are permitted to use any IDE tool you choose, but you must not submit any code that is not your own work. The final program must have no dependencies on any libraries other than those of the Java 2 Platform.

So it's clear that with the new assignments what you did could lead to the ugly "automatic failure".
My principal locking mecanism, consisted of LockManager that operated on BitSet of binary semaphores. BitSet turned out very nice because it is so lower and easy in comp. with traditional Map.

Looks great ! And it looks like I could add "I know at least one of them who is." to my last post in this thread ...
Best,
Phil.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic