Creeaza.com - informatii profesionale despre


Cunostinta va deschide lumea intelepciunii - Referate profesionale unice
Acasa » referate » informatica » calculatoare
INTERACTIUNEA cu interfata - Tratare evenimente actionare mouse

INTERACTIUNEA cu interfata - Tratare evenimente actionare mouse




INTERACTIUNEA

1. UTILIZARE MOUSE

Primul dispozitiv de calculator pentru a puncta a fost light pen-ul. Cu acesta in mana se puncta pe ecran ca si cu un creion. Utilizarea light pen-ului pe un ecran risipeste controlul motor fin al degetelor si ne forteaza la un control grosolan al muschilor bratului, care nu pot asigura precizia pentru a putea puncta cu acuratete si este foarte dificil de desenat pe o suprafata verticala sprijinind mana pe ea. Nefiind practic pentru calculator deci au fost inventate alte dispozitive - mouse-ul.

Pe masura ce utilizam un mouse observam un simbol vizual/cursor care se misca la fel. Prima data cand un utilizator foloseste mouse-ul are senzatia ca mouse-ul si cursorul sunt conectate, o senzatie greu de uitat. Deplasarea mouse-ului fata de cursor nu este de obicei de unu la unu, dar deplasarea este proportionala. Pe majoritatea PC-urilor cursorul traverseaza intreg ecranul de 30 cm in aproximativ 4 cm de deplasare mouse. Avand mouse-ul in mana sprijinita ferm pe masa, degetele pot deplasa mouse-ul cu mare acuratete, chiar si pentru o rata de deplasare de 1:8.



Mouse-ul ne permite sa punctam obiectele de pe un ecran vertical fara a avea de-a face cu dezavantajele inerente ale punctarii sau desenarii pe o suprafata verticala. Faptul ca putem introduce scriere cursiva cu un pen dar nu o putem face cu un mouse sugereaza faptul ca un pen este manevrabil cu mai multa precizie si acuratete decat un mouse. Cand apare problema scrierii pe verticala un mouse este mult mai bun. Cand display-urile plane vor deveni ieftine si uzuale in mod inevitabil ele vor migra spre pozitia orizontala.

Cand deplasam mouse-ul pe ecran exista o linie de divizare, distincta intre deplasari apropiate si deplasari distante. Mutarea cursoului de mouse de-a lungul ecranului pentru a actiona un control obliga o schimbare de la fin la grosolan pentru controlul motor. Apasarea butonului de mouse necesita un control motor fin. Aceasta inseamna ca in timp ce este posibil un compromis intre controlul motor fin si cel grosolan privind aspectul de deplasare al mouse-ului atunci cand se pune problema apasarii butonului utilizatorul trebuie sa aiba mai intai mana bine fixata, obligatoriu fiind fortat un control fin.

Pentru a manipula un simbol vizual/gizmo cu mouse-ul, pentru a pozitiona cursorul cu precizie pentru un check-box sau push-button, utilizatorul trebuie sa foloseasca controlul motor fin. Daca insa cursorul este departe de acel simbol vizual, intai va trebui sa utilizeze controlul motor grosolan pentru a aduce cursorul mai aproape de simbol vizual si va trece la controlul motor fin pentru terminare actiune. Deci orice program care isi plaseaza zonele de clic distantate la mai mult de citiva pixeli invita in mod deschis la neplaceri.

Daca un control dat necesita un clic aici si unul foarte departe este vorba de o proiectare gresita. Totusi omniprezentul scrollbar este o astfel de creatie. Daca dorim sa realizam scroll-down intr-un document apasam sageata de jos de cateva ori pana gasim ceea ce cautam, folosind un control motor fin dar s-ar putea sa fi depasit destinatia, fiind necesar sa revenim. Pentru a realiza acest lucru apasam sageata de sus, dar pentru a face acest lucru trebuie realizata o miscare grosolana de deplasare si una fina de localizare a pozitiei. Dar sagetile scrollbar-ului sunt separate de intreaga lungime a barei fiind simetric, dar mai greu de utilizat. Daca sagetile ar fi fot plasate adicent la unul din capete schimbarea directiei de scroll ar fi fost realizata printr-o simpla miscare deci un control fin. (vezi figura de mai jos).

 

Cei carora le lipseste dexteritatea manuala considera mouse-ul problematic. Uneori si multi utilizatori calculatoristi/ in particular cei care introduc date - considera mouse-ul uneori dificil. Pntru multe din task-urile bazate pe date, tastatura este superioara mouse-ului. Este frustant sa fi nevoit sa iei mana de pe tastatura pentru a pozitiona cursorul cu mouse-ul pentru ca apoi sa revii din nou la tastatura.

Programele trebuie sa suporte din plin atat mouse-ul cat si tastatura pentru toate miscarile si task-urile.

2. BUTOANE MOUSE

Inventatorii mouse-ului au incercat sa isi imagineze cat de multe butoane sa puna pe el, dar nu au ajuns la nici un rezultat. Unii au pledat pentru un buton, altii pentru doua sau chiar mai multe. In prezent unul din marile dezavantaje ale Macintosh-ului este mouse-ul sau cu un singur buton.

Un singur buton sacrifica puterea majoritatii utilizatorilor de calculatoare in schimbul simplitatii pentru incepatori. Butonul drept de mouse este privit ca un buton suplimentar, butonul stang fiind singurul de care utilizatorul are nevoie cu adevarat. Aceasta afirmatie devine tot mai putin adevarata pe masura ce interfata utilizator Windows evolueaza.

In general butonul stang de mouse este utilizat pentru toate functiile principale de manipulare directa sau pentru controale de actionare, pentru selectare, pentru desenare. Prin deductie aceasta inseamna ca functiile pe care butonul stang nu le suporta trebuie sa nu fie functii majore. Intelesul cel mai comun pentru butonul stang de mouse este activare sau selectare. Pentru un control ca push-button sau check-box butonul stang de mouse inseamna apasarea butonului sau marcarea casetei. Daca se face clic stanga pe date in general aceasta inseamna selectare.

Timp indelungat acest buton a fost tratat ca inexitent de Microsoft dar si de multi altii. Cand Borland International a inglobat orientarea pe obiect in intreaga companie, butonul drept de mouse a fost utilizat ca un instrument pentru accesarea unei casete de dialog care sa prezinte proprietatile obiectului. Acest lucru a fost acceptat dar si criticat de Mac-uri care aveau un buton dar si de Microsoft care dispretuia firma Borland. Totusi aceste lucruri s-au schimbat odata cu Windows 95 cand firma Microsoft a urmat linia deschisa de Borland si a consacrat butonul drept.

Butonul drept are ca scop furnizarea accesului direct la proprietati. In Windows 3.x Microsoft a avut tentativa de a defini butonul drept de mouse ca fiind un buton shortcut. Adica operatiile care sunt disponibile si prin alte idiomuri sunt disponibile prin butonul drept de mouse. In Windows 95 i s-au atribuit butonului drept actiunile specifice de context (context-specific actions) o modalitate desteapta de a spune proprietati.

Acest buton nu poate fi utilizat decat pentru shortcut. De fapt Microsoft statuteaza ca butonul din mijloc ar trebui asignat operatiilor si functiilor care sunt deja prezente in interfata - definitie pe care altadata a rezervat-o butonului drept de mouse.

Cel mai frecvent folosim un mouse cu doua butoane, dar unele calculatoare au un mouse de tip Logitech cu trei butoane. Aproape niciodata nu ajungem in situatia de a cauta functionalitate suplimentara pe butonul din mijloc. Cei care il utilizeaza, o fac ca shortcut pentru dublu clic pe buton stang mouse, o caracteristica care poate fi creata prin configurarea soft-ului de driver mouse, care este de fapt un siretlic la care aplicatia ramane ignoranta.

3. ACTIUNI REALIZATE CU MOUSE

Din punct de vedere fizic un mouse poate fi mutat de ici colo pentru a puncta diferite lucruri si putem apasa pe buton. Acesta sunt primitivele vocabularului discutate intr-un curs anterior. In afara de point si clic orice alte actiuni ale mouse-ului vor fi realizate prin combinarea uneia sau a mai multor astfel de actiuni numite componente.

Actiunile mouse-ului pot fi alterate folosind meta-chei: CTRL, SHIFT,ALT. Setul complet de actiuni mouse ce pot fi realizate fara a utiliza meta-chei este prezentat in lista de mai jos. Pentru a se putea discuta despre ele, i s-a asignat fiecarei actiuni un nume scurt precizat in paranteza.

a)      Point (Point)

Aceasta operatie simpla este piatra de temelie a interfetelor grafice utilizator si baza tuturor operatiilor cu mouse-ul. Utilizatorul muta mouse-ul pana cand cursorul corespunzator de pe ecran puncteaza sau este plasat peste obiectul vizat.

b)      Point, click, release (Click)

In timp ce utilizatorul tine mouse-ul intr-o pozitie ferma el face click cu butonul si-l elibereaza. In general aceasta actiune este definita ca actiunea de schimbare a starii unui simbol vizual sau selectarea unui obiect. Intr-o matrice de text sau celule click inseamna - de adus acolo punctul de selectare. Pentru un simbol vizual push-button, o schimbare de stare inseamna ca in timp ce butonul de mouse e apasat (down) si mouse-ul este directionat peste simbol vizual, butonul se va afunda si va ramane apasat (pushed). Cand se elibereaza butonul de mouse butonul simbol vizual este actionat si actiunea lui asociata se produce.

Design tip - Simplu click selecteaza datele sau schimba starea unui simbol vizual

Daca totusi utilizatorul in timp ce tine butonul apasat muta cursorul de pe un simbol vizual, un simbol vizual de tip push-button revine in starea anterioara (unpushed). Daca apoi utilizatorul elibereaza butonul de mouse nu se intampla nimic. Aceasta comportare furnizeaza o cale de escape convenabila in cazul in care utilizatorul se razgandeste. Dezavantajul unei astfel de cai pentru escape este faptul ca ea consuma unul dintre cele mai reci idiomuri: a face drag cu un push-button undeva. Butonul sau buticonul poate fi translatabil deci ar trebui creat un idiom care sa permita o gramatica verb-obiect in plus fata de norma normala obiect-verb.

c)      Point, click, drag, release (Click&Drag)

Aceasta operatie are multe utilizari comune incluzand selectare, reformatare, repozitionare, desenare si drag&drop. Ele vor fi discutate mai pe larg in cursurile urmatoare.

d)      Point, click, release, click, release(Dublu-Click)

Daca simplu click selecteaza ceva, dublu click selecteaza ceva si realizeaza o actiune. Aceasta interpretare fundamnetala provine de la Machintosh si ramane un standard in toate interfetele grafice utilizator contemporane.

Design tip - Dublu-click inseamna simplu click plus actiune

In ciuda unor divergente rolul lui dublu-click in Windows 95 este diminuat semnificativ. In timp ce dublu-click pe date este binevenit, dublu-click pe majoritatea simbol vizual-urilor nu au nici o semnificatie iar un click suplimentar este respins. Multe simboluri vizuale nu reping un click dar il ignora. Daca un simbol vizual ramane pe loc se va interpreta ca un al doilea click pe el. In functie de simbol vizual acest click suplimentar poate fi benign sau problematic.

Daca e vorba de un buton on-off se va constata ca s-a revenit in starea din care s-a pornit. Daca in schimb este vorba de un simbol vizual care dispare dupa primul click, precum butonul OK dintr-o caseta de dialog, rezultatele pot fi imprevizibile.

e)      Point, click, click alt buton, release, release (Chord-Click)

Chord-clicking inseamna apasarea a doua butoane de mouse simultan desi nu este neaparata nevoie sa fie apasate sau eliberate exact in acelasi timp. Pentru a fi recunoscut drept chord-click al doilea buton de mouse trebuie apasat putin inaninte de eliberarea primului buton.

Exista 2 variante de chord-click. Prima este mai simpla cand utilizatorul puncteaza mai degraba ceva si apasa ambele butoane in acelasi timp. Acest idiom nu este prea uzual in soft-ul actual desi unii programatori creativi l-au implementat ca pe un substituent pentru cheia Shift de selectare. A doua varianta utilizeaza chord-clicking pentru a termina un drag. Drag incepe ca un simplu drag cu un buton, apoi utilizatorul foloseste al doilea buton. Desi aceasta tehnica este putin ciudata ea si-a gasit o larga utilizare deoarece ea se potriveste perfect pentru anularea operatiilor de drag.

f)        Point, click, release, click, release, click, release (Triplu-Click)

Exista programe care au actiuni ce implica triplu-click. De exemplu in Word triplu-click este utilizat pentru a selecta paragrafe intregi. Logica este simpla - un simplu click selecteaza un caracter, dublu-click selecteaza un cuvant, iar un triplu-click selecteaza un paragraf.

Pentru aplicatiile suverane orizontale care au o utilizare larga, precum procesoarele de text si spreadsheet-urile merita sa se implementeze triplu-click. Pentru programele care sunt mai putin utilizate cateva ore zilnic este caraghios. In timp ce recurgem la acest idiom trebuie sa asiguram utilizatorului si alte metode pentru realizarea aceluiasi task. De exemplu in Word pentru a selecta un paragraf fara triplu-click putem proceda astfel:

dublu click in marginea din stanga

click in marginea din stanga dupa prima linie si drag in jos pana la ultimul cuvant

click la inceputul primului cuvant si drag pana la sfarsitul ultimului cuvant

click la inceputul primului cuvant si CTRL-SHIFT-RIGHT-ARROW pana cand toate cuvintele din paragraf sunt selectate

click la inceputul primului cuvant si CTRL-SHIFT-PAGEDOWN

dublu-click la inceputul primului cuvant si drag pana la sfarsitul ultimului cuvant

g)      Point, click, release, click, drag, release (Dublu-Drag)

Executia unui dublu-click si drag cere o indemanare deosebita. Ca si triplu-click este util doar in aplicatiile suverane, orizontale. In Word putem utiliza dublu-drag in permanenta ca instrument de selectare. Un dublu-click pe text selecteaza intreg cuvantul; extintand functia se poate extinde selectia cuvant cu cuvant prin dublu-drag. De exemplu faca dorim sa stergem o fraza in mijlocul unei secvente facem dublu-click in mijlocul primului cuvant apoi drag pana selectez toata fraza. Este greu de procedat astfel dar Microsoft a adaugat o caracteristica in Word care extinde automat selectia, la limita de cuvant, in mod implicit. Pentru cei carora nu le place caracteristica poate fi pusa pe off tolerand dublu-drag. In aplicatii mari suverane, astfel de idiomuri sunt corespunzatoare.

Oricare dintre aceste actiuni enumerate mai sus (exceptand chord-click) poate fi realizata cu oricare din butoanele unui mouse cu doua butoane. Teoretic este posibil un cvadruplu-click sau un cvintuplu-click .dar si un triplu-click necesita indemanare, iar un dublu click adesea demoralizeaza o persoana neintemanatica. Windows 95 este proiectat pentru a se putea lucra cu el 100% doar cu primele trei actiuni.

Tratare evenimente actionare mouse

De fiecare data cand un utilizator apasa pe un buton de mouse, programul are de tratat doua evenimente discrete: evenimentul button-down si button-up. Cand se selecteaza un obiect selectia trebuie sa aiba loc intotdeauna la button-down deoarece acesta reprezinta primul pas dintr-o secventa drag. Prin definitie nu se poate face drag cu ceva inaninte de a-l selecta deci selectia trebuie sa aiba loc la button-down. Daca nu utilizatorul va trebui sa realizeze o cerere de dublu-drag.

Design tip - Button down inseamna selectare de date

Pe de alta parte daca cursorul este pozitionat mai degraba, peste un simbol vizual decat pe date selectabile, actiunea asociata evenimentului button-down este tentativa de a activa tranzitia de stare pentru simbol vizual. Cand simbol vizual-ul vede evenimentul button-up el inregistraza tranzitia de stare.

Design tip - Button-down inseamna propunere de actiune;

button-up inseamna inregistrarea actiunii pentru simbol vizual

Acesta este un mecanism care permite utilizatorului sa se aplece gratios la un click necorespunzator. De exemplu pe un push-button, utilizatorul poate sa mute mouse-ul in afara butonului iar selectia va fi dezactivata chiar daca butonul mouse-ului e apasat. Pentru un check-box semnificatia e simulara: la button-down in mod vizual check-box-ul arata ca este activat, dar marcarea nu apare pana la tranzitia button-up.

Cursor mouse

Cursorul este reprezentarea vizibila pe ecran a pozitiei mouse-ului. Prin conventie in mod normal este o mica sageata indicand usor Vest spre Nord, dar sub controlul programului poate fi modificat la orice forma cat timp ramane relativ mic: 32 x 32 pixeli. Deoarece cursorul trebuie sa se rezume la un singur pixel, trebuie sa existe cale pentru ca acesta sa indice precis pixelul punctat. Acest lucru se realizeaza desemnand intotdeauna un singur pixel al oricarui cursor drept focus curent pentru punctare numit hotspot.

Pe parcursul mutarii mouse-ului pe ecran unele obiecte pe care mouse-ul le puncteaza raman inerte. Denumim orice obiect sau zona de pe ecran care reactioneaza la o actiune mouse ca fiind pliant , avand flexibilitate. Un simbol vizual push-button este pliant deoarece poate fi apasat prin cursorul de mouse. Orice obiect care poate fi luat si translatat este pliant - orice icon de director sau fisier din Explorer.

Cand obiectele de pe ecran sunt pliante acest fapt trebuie comunicat utilizatorului. Daca faptul nu este facut evident, idiomurile inceteaza de a mai fi utile. Exista trei metode de a comunica utilizatorului faptul ca un obiect este pliant: prin propietatile vizuale statice ale obiectului insusi, prin schimbarea dinamica a propietatilor sale vizuale sau prin schimbarea proprietatilor vizuale ale cursorului cind trece peste obiect.

Daca flexibilitatea obiectului este comunicata prin propietatile vizuale statice ale obiectului insusi prin schimbarea dinamica a proprietatilor sale vizuale statice ale obiectului insusi numim aceasta sugerare vizuala statica (static visual hinting). Sugerare vizuala statica indica mai degraba modalitatea prin care obiectul este desenat pe ecran. Unele obiecte vizuale nu sunt chiar atat de evidente fie datorita faptului ca sunt prea mici sau sunt ascunse.

Daca obiectul direct manipulabil este in afara zonei centrale a programului - scrollbar-uri, bara Status de la baza ecran - se poate intampla ca utilizatorul sa nu inteleaga ca acele obiecte sunt direct manipulabile. Acest caz cere o sugerare vizuala mai agresiva pe care o numim sugerare vizuala activa (active visual hinting). Ea functioneaza astfel - cand cursorul trece peste un obiect pliant obiectul isi schimba aparenta printr-o deplasare animata. Aceasta actiune intervine mai degraba cand cursorul trece peste obiect inainte ca oricare dintre butoanele mouse-ului sa fie apasate.

Daca flexibilitatea obiectului este comunicata printr-o schimbare a cursorului cand trece peste obiect, numim aceasta sugerarea cursorului (cursor hinting). Deoarece cursorul se schimba dinamic, sugerarea acestuia este activa.

Majoritatea soft-urilor deja populare mixeaza sugerarea vizuala cu sugerarea cursorului. De exemplu push-buttonul este redat tridimnesional iar forma sa indica in mod clar ca obiectul este ridicat si permite sa fie apasat dar cand cursorul trece peste el nu se modifica. Cand cursorul trece peste frame-ul unei ferestre cumulate, se modifica intr-o sageata cu doua capete, aratand axele dupa care fereastra poate fi redimensionata. Simbol vizual-urile ofera in mod uzual sugerare vizuala statica in timp ce datele liante ofera frecvent sugerarea cursorului. Sugerarea cursorului implica schimbarea acestuia intr-o forma care indica care este tipul de actiune de manipulare directa acceptabila, totusi rolul sau cel mai important este de a face ca utilizatorului sa ii fie clar faptul ca acel obiect este pliant.

Exista o a treia varianta e sugerare a cursorului numita sugerarea cursorului wait (wait cursor hinting). Ori de cate ori programul executa ceva care necesita un volum semnificativ de timp (in termeni umani) programul schimba cursorul intr-o indicatie vizuala, in sensul ca programul a devenit stupid, in Windows aceasta imagine este familiara clepsidra. Alte sisteme de operare au utilizat ceasuri de mana, tamburines au tobe, sfarleze si cesti de cafea aburinde.


Problema interfetei utilizator apare deoarece cursorul apartine sistemului si este doar imprumutat de un program atunci cand invadeaza spatiul acestuia. Intr-un sistem ne-preemptiv precum Windows 3.x, folosirea cursorului pentru a indica Wait este un idiom rezonabil. In lumea multitasking preemptiv din Windows 95 cand un program devine stupid nu mai e necesar ca si alte programe care se executa sa devina stupide. In acest caz cursorul nu poate fi folosit pentru a indica starea ocupat a unui singur program. Windows 95 a fortat Microsoft sa regandeasca cursorul Wait. S-a dorit pastrarea idiomului familiar pentru sugerarea cursorului Wait. S-a decis ca programele sa arate cursorul clepsidra doar in cadrul ferestrelor proprii , ceea ce logic este corect. Daca din neatentie utilizatorul muta cursorul de pe fereastra principala a unui program ocupat pe cea a unui program care se executa cursorul va reveni la forma normala, deci sugerarea vizuala este eronata. In ultima instanta fiecare program trebuie sa indice starea sa de ocupat prin schimbarea vizuala a propriei imagini. Daca starea de ocupat depinde de unde puncteaza cursorul, nu merge utilizarea acestuia pentru indicarea starii de ocupat, deci multitasking-ul preemptiv va omori ideea de cursor Wait.

Meta chei

Meta-cheile (meta-keys) pot fi utilizate in conjunctie cu mouse-ul. Meta-cheile includ - CTRL, ALT si cele doua SHIFT-uri. Desi Microsoft a articulat in Windows 95 standardele pentru meta-chei, eforturile sunt zadarnice, deoarece chiar ei violeaza liber propriile standarde referitoare la acestea. Fiecare program tinde sa aiba propriul sau standard dar unele semnificatii predomina.

E o idee buna sa folosim sugerarea cursorului pentru a ilustra semnificatia meta-cheilor, in ansamblu si multe programe ar trebui sa o faca. De asemenea asa ceva trebuie facut in mod dinamic. Cand meta-cheia este apasata (down) cursorul ar trebui sa se schimbe imediat pentru a reflecta noua intentie a idiom-ului.

ALT est cheia problema a familiei. Microsoft a evitat sa o umple de semnificatie, lasand-o libera la dispozitia programatorilor destepti care fie o folosesc fie o ignora. Fara indoiala ca cineva de la Microsoft o va zavori intr-un idiom favorit si va deveni un standard.

Allen Cooper prefere sa utilizeze ALT pentru a indica o operatie drag&drop cu doua aplicatii. Si totusi primul idiom ALT-TAB iar acum Startbar au avut de parcurs un drum lung pentru a-l trezi pe Allan Cooper la realitatea ca ideea sa de drag&drop cu doua aplicatii ar fi urmatoarea gaselnita.

4. UTILIZARE MOUSE PENTRU SELECTII

Cu ajutorul mouse-ului putem realiza doua lucruri de baza - sa alegem ceva si sa selectam ce sa facem cu ce am ales. Aceste actiuni de alegere sunt referite ca selectie (selection).

Obiect-verb

Intr-o interfata utilizator o aparitie fundamentala o reprezinta secventa in care sunt date comenzile. Fiecare comanda are o operatie si unul sau mai multi operanzi. Operatia descrie actiunea iar operanzii reprezinta tinta operatiei. Proiectantii interefetelor utilizator utilizeaza terminologia urmatoare: operatie = verb (verb) si operand = obiect (object). Putem specifica verbul urmat de obiect sau specificam obiectul urmat de verb. Acestea se numesc ordine verb-obiect (verb-object) si respectiv obiect-verb (object-verb). Interfetele moderne utilizator le folosesc pe amandoua.

In epoca in care compilatorele unor limbaje (Cobol,Fortran) erau varful inaltei tehnologii toate limbajele de calculator utilizau ordonarea verb-obiect. Scriitorii de compilatoare au facilitat transformarea codului sursa in cod executabil dar nu s-a pus problema ca ordonarea verb-obiect este cea mai corecta. Cand au aparut interfetele grafice utilizator ordonarea verb-obiect a creat o problema. Intr-o interfata interactiva daca utilizatorul alege un verb atunci sistemul trebuie sa intre intr-o stare care difera de norma -asteptarea unui obiect. In mod normal utilizatorul va alege un obiect si toate vor fi OK. Insa utilizatorul poate doreste sa actioneze asupra mai multor obiecte, caz in care programul trebuie sa accepte toti operanzii pana utilizatorul va introduce o comanda speciala de terminare a listei de obiecte.

Prin inversarea ordinii comenzii in obiect-verb nu mai avem nevoie de terminatie, utilizatorul selecteaza obiectele asupra carora va opera, apoi va indica ce verb va fi executat asupra acestora. In loc ca programul sa tina minte verbul in timp ce utilizatorul specifica unul sau mai multe obiecte, solicitam programului sa memoreze unul sau mai multe obiecte in timp ce utilizatorul alege verbul. Procedand astfel avem nevoie de un mecanism pentru a identifica, marca si tine minte operatorii alesi. Selectia este mecanismul prin care utilizatorul informeaza programul despre obiectele tinute minte de el.

Intr-o interfata interactiva precum casetele de dialog conceptul de selectie nu este neaparat necesar intotdeauna. In mod natural casetele de dialog vin cu o comanda de terminare a listei de obiecte - buton OK. Utilizatorul poate alege mai intai o functie apoi obiectul sau invers deoarece intreaga operatie nu se produce decat dupa apasarea butonului de confirmare - buton OK. Deci ordonarea obiect-verb nu este utilizata in majoritatea casetelor de dialog.

In varianta cea mai simpla teoretica selectia este realizata astfel: utilizatorul puncteaza folosind cursor de mouse pe un obiect de date, face click si obiectul e selectat. In practica sunt implementate mai multe variante.

Date concrete si discrete

Unele programe reprezinta datele ca obiecte vizuale distincte, care pot fi manipulate independent de alte obiecte. Aceste obiecte sunt selectate independent una de cealalta. Ele sun date discrete(discrete data) iar selectia care le cuprinde se numeste selectie discreta(discrete selection). Datele discrete nu sunt in mod necesar omogene iar selectia discreta nu este in mod necesar continua. Alte programe isi prezinta datele ca o matrice de piese de date contigue. Textul dintr-un procesor de text sau celulele unui spreadsheet sunt concretizarea a sute de mii de obiecte similare care formeaza impreuna un intreg coerent. Adesea aceste obiecte sunt selectate in grupuri solide pe care le numim date concrete (concrete data) iar selectia lor - selectie concreta (concrete selection).

Ambele tipuri de selectie suporta selectia simplu clcik si cea clik&drag. Simplu click selectaza cantitatea discreta cea mai mica posibila iar click&drag selecteaza o cantitate ceva mai mare. Natura unei selectii discrete este discontinua in timp ce selectia concreta este continua. Intr-un document procesor de texte exista o ordine naturala a textului- date concrete. Stricand ordinea literelor se distruge sensul textului. Datele discrete nu au o ordine inerenta. Intr-un program de desenare obiectele sunt independente.

Majoritatea programelor de desenare ofera o facilitate de grupare care permite gruparea impreuna, logica a mai multor obiecte discrete pentru a forma un singur obiect discret nou. Putem selecta mai mult de un obiect discret dar acestea raman o serie de selectii independente si nu un subset de date ordonate.

Insertie si inlocuire

Selectia indica datele asupra carora va opera urmatoare functie. Daca aceasta este o comanda write - datele introduse se vor scrie in datele selectate. Intr-o selectie discreta sunt selectate mai multe obiecte iar datele sunt oferite obiectelor selectate, discrete care le prelucreaza in maniera proprie. Acestea ar putea provoca o actiune de inlocuire (replacement) in care datele introduse inlocuiesc obiectul selectat.

Intr-o selectie concreta datele introduse inlocuiesc intotdeauna datele selectate in mod curent. Selectia concreta arata o remarca unica legata de insertie, acolo unde selectia poate sa se reduca la un singur punct care indica locul dintre doi biti de date. Acest loc se numeste punct de insertie (insertion point). O alta modalitate de a gandi despre punctul de insertie este selectia nula. Prin definitie tastand intr-o selectie aceasta se inlocuieste prin noile caractere, dar daca selectia e nula, noile caractere nu inlocuiesc nimic mai degraba sunt inserate. Deci cu alte cuvinte insertia este un caz ordinar al inlocuirii.

In general cand se realizeaza o selectie, orice selectie anterioara este anulata. Aceasta comportare se numeste excludere mutuala (mutual exclusion) cat timp selectia uneia exclude selectia celeilalte. Excluderea mutuala este regula atat pentru selectia discreta cat si pentru cea concreta. Unele sisteme permit ca un obiect selectat sa fie deselectat prin click pe el a doua oara; trebuie decis daca acest lucru este sau nu corespunzator pentru program.

Selectie aditiva

Este de neimaginat un program de selectie concreta si care sa nu aiba excludere mutuala, deoarece utilizatorul nu poate vedea ce efect vor avea actiunile sale. Sa ne imaginam ca putem selecta paragrafe de text independente intr-un document amplu, problema o reprezinta scroll-ul, majoritatea programelor avind datele selectabile concret sunt scroll-abile. Daca punem excluderea mutuala pe off intr-o selectie discreta avem de-a face cu cazul simplu in care mai multe obiecte independente pot fi selectate mai degraba prin click pe cateva din ele. Aceasta este selectia aditiva.

Majoritatea sistemelor de selectie discreta implementeaza implicit excluderea mutuala utilizand o meta-cheie. Cea mai utilizata meta-cheie este SHIFT. Sistemele cu selectie concreta nu ar trebui sa permita niciodata selectie aditiva deoarece nu ar trebui sa existe mai mult de o selectie intr-un sistem concret. Sistemele cu selectie concreta nu au nevoie sa asigure extensia selectiei unice pentru aceasta utilizandu-se meta-chei - se pot utiliza CTRL sau SHIFT. In Word cheia SHIFT determina selectarea a orice se afla intre selectia initiala si SHIFT-click. Exista alte programe care au functii de selectie aditiva similare si optiuni diferite pentru meta-chei. Oricum intre alternative exista putine diferente practice.

Selectie de grup

Operatia clic&drag este baza pentru selectia de grup. Intr-o matrice de text sau celule inseamna extinde slelectia de la punctare mouse-down la punctare mouse-up. O astfel de selectie se poate modifica si cu meta-chei. Aplicatiile ar trebui sa-si imbogateasca interactiunea cu cat mai multe variante posibile. Utilizatorii experimentati vor ajunge sa le memoreze si sa le utilizeze atata timp cat varinatele sunt simple din punct de vedere manual.

In general intr-o colectie de obiecte discrete, operatia click&drag incepe printr-o deplasare drag&drop. Daca butonul mouse-ului este apasat in zona "open dintre obiecte mai degraba decat pe fiecare obiect specific semnificatie este una aparte - se creaza un dreptunghi-drag (dragrect).

Un dragrect este un dreptunghi dinamic al carui colt din stanga-sus este punctarea mouse-down, iar coltul dreapta-jos este punctarea mouse-up. Atunci cand butonul a fost eliberat orice obiect si cele incluse in dreptunghiul virtual deci in dragrect sunt selectate ca un grup.

Dar trebuie sa fim siguri ca oricine poate indica usor prin simpla inspectare care este obiectul selectat si care nu. Nu este sificient sa putem vedea ca sunt doar diferite. De asemenea un numar semnificativ de persoane nu percep culoarea, deci doar ea singura nu este suficienta pentru a distinge selectii.

Design tip - Sa facem astfel incat selectia sa fie marcanta vizual si neambigua

Indicare vizuala selectie

In mod traditional selectia se realizeaza prin inversare (inversion) - prin inversarea pixelilor obiectului selectat. Pe un ecran monocrom inseamna comutarea tuturor pixelilor albi in negri si a celor negri in albi. Tehnica utilizata pentru inversare de Apple a fost prin intermediul unui Xor (sau exclusiv) aplicat asupra pixelilor obiectului selectat. Nu intamplator Xor este una din operatiile cele mai rapide pe care le poate executa un CPU. Un Xor este si inversabil operatia putand fi anulata repetand un Xor identic.

Microsoft a continuat aceasta tehnica chiar daca nu a fost niciodata un sistem monocrom. Gaselnita a fost aceea ca rezultatul unei operatii Xor este definit doar cand operanzii sunt binari - on sau off (unu sau zero). Colorul este reprezentat prin mai mult de un singur bit. Un ecran de 256 culori utilizeaza 8 biti. Cand Xor se foloseste cu numere mai complexe bitii individuali se inverseaza fiabil insa apare o problema cand noua valoare este transmisa ecranului video-fizic. Diferitele driver-e video interpreteaza acesti biti in maniere diferite. Rezultatul este acela ca desi operatia Xor va fi reprezentata consistent pe un calculator va fi complet diferita pe un altul.

Procesoarele de text si spreadsheet-urile arata intotdeauna text albastru pe background alb, deci este rezonabil sa se utilizeze Xor pentru a arata selectia inversata. Inversarea functioneaza chiar si cand se folosesc culorile dar rezultatelor le va lipsi estetica.

In versiunea Windows 3.0 Microsoft a definit doua noi setari de sistem - COLOR_HIGHLIGHT si COLOR_HIGHLIGHTTEXT. Aceste constante reprezinta culori modificabile decat culori fixate. Fiecare utilizator poate modifica definitia acestor variabile care vor ramane constante apoi pentru toate aplicatiile. Odata cu acestea a mai aparut un standard nou de utilizat - cand un obiect e selectat culoarea sa se modifica in oricare ar fi culoarea reprezentata de COLOR_HIGHLIGHT. Orice text sau pixeli de contrastare din cadrul obiectului selectat se schimba in oricare ar fi culoarea reprezentata de COLOR_HIGHLIGHTTEXT.

Design tip - Folositi COLOR_HIGHLIGHT si COLOR_HIGHLIGHTTEXT

pentru a arata selectia.

Daca sunteti responsabil cu selectia intensiva pentru un program precum un procesor de text sau spreadsheet ar fi bine sa folositi inversarea Xor pentru a indica selectia. Daca doriti sa o faceti corect si sa aratati tuturor abilitatea practica folositi COLOR_HIGHLIGHT.

In cazul in care avem de-a face cu obiecte multicolore singura solutie decenta pe care putem sa o utilizam este sa adaugam imaginii indicatoare de selectie decat sa schimbam culoare imaginii selectate prin inversare sau COLOR_HIGHLIGHT.

Indiferent de culoarea pe care o alegem intr-un mediu puternic colorat selectia ar putea fi pierduta vizual. Solutia utilizata este de a marca vizual selectia printr-un grafic aditional care arata conturul acesteia. Aceasta se realizeaza cu mici casete care inconjoara obiectul selelctat numite grapples. Aceste casete se pot pierde in programele puternice de manipulare a imaginilor. Exista o modalitate de asigura ca selectia va fi mereu vizibila, referitor la culorile utilizate - indicare selectiei prin miscare.

MANIPULARE DIRECTA

Ben Shneiderman a inventat termenul de manipulare directa (direct manipulation)in 1970 cu cele trei elemente ale sale:

reprezentarea vizuala a obiectelor manipulate

actiuni fizice in loc de introducere de text

impact vizibil imediat al operatiei

O definitie mai putin riguroasa ar spune ca manipularea directa este click&drag cu obiecte. Dintre puncte de mai sus doua privesc feedback-ul vizual doar punctul din mijloc se refera la actiunile utilizatorului, deci se poate utiliza denumirea manipulare vizuala (visual manipulation).

O observatie referitoare la manipularea directa - putem manipula direct doar informatiile care sunt deja afisate de program, iar acestea trebuie sa fie vizibile pentru a le putea manipula, de aceea se accentueaza natura vizuala a manipularii directe.

Manipularea directa este simpla, deschisa, usor de realizat si de memorat. Din nefericire cand utilizatorii sunt pusi prima data in fata unei actiuni de manipulare directa nu o poate intui si nici descoperi in mod independent. Manipularea directa trebuie invatata, deoarece odata invatata nu va mai fi uitata.

A apasa un buton sau desenarea cu instrumentul pen reprezinta manipulare directa. Daca orice utilizator normal poate apasa pe un buton, putini sunt cei capabili sa deseneze bine. Exemplele ilustreaza doua tipuri de manipulare directa: management si continut. Managementul include manipulare de simbol vizual = apasarea unui buton pushing/scrolling, in general fiind accesibila tuturor utilizatorilor, continutul este desenarea oricine, rezultatul fiind dependent de cel care manipuleaza.

Categoria management contine 5 varietati de manipulare directa: realizarea selectiilor, drag&drop, manipulare simboluri vizuale/grafice, redimensionare&remodelare&repozitionare, indicarea prin sageti. Selectia a fost discutata, iar celelalte vor fi discutate in detaliu in continuare.

1. Manipulare simboluri vizuale/grafice

Majoritatea simbolurilor vizuale/grafice - butoane, push-butoane, radio-butoane, checkbox-uri - necesita mai degraba ca utilizatoul sa mute cursorul peste ele si fara sa faca simplu click mouse . Ca actiuni pe care utilizatorul le executa simplu click pe butoane/push-butoane sunt majoritare iar majoritatea actiunilor de manipulare directa necesita click&drag, cele doua actiuni reprezentand blocul fundamental de constructie al interactiunii

1.1 Realizare drag

Un drag incepe atunci cand utilizatorul apasa pe butonul de mouse, muta mouse-ul si apoi elibereaza butonul. Setul coordonatelor ecran ale cursorului, cand utilizatorul a apasat prima data butonul mouse se numeste punct mouse-down (mouse-down point) iar cand butonul e eliberat setul de coordonate se numeste punct mouse-up (mouse-up point). Primul punct de coordonate este cunoscut pe tot parcursul operatiei de manipulare directa, pe cand cel de-al doilea este cunoscut de-abia la sfarsitul procesului.

O data ce incepe un drag intreaga actiune dintre utilizator si calculator intra intr-o stare speciala numita captura (capture). In dialectul programatorului spunem ca intreaga interactiune dintre sistem si utilizator este captata - nici un alt program nu poate interactiona cu utilizatorul pana cand drag nu s-a terminat. Numim fereastra care detine punctul mouse-down obiect master (master object). Daca acest obiect master reprezinta date concrete sau un gizmo, drag va indica o extensie a selectiei sau o schimbare de stare gizmo. Daca obiectul master este un obiect discret el indica mai mult inceputul unei operatii de manipulare directa precum drag&drop iar captura va juca un rol important.

Din punct de vedere tehnic, exista o stare a capturii in momentul in care utilizatorul apasa butonul mouse si nu se termina decat atunci cand acel buton de mouse este eliberat referitor la distanta pe care se deplaseaza mouse-ul intre doua actiuni buton. Pentru utilizator un simplu click&release fara deplasare inseamna instantaneu, dar pentru program in timpul dintre o operare si o eliberare de buton pot fi executate mii de instructiuni. Daca utilizatorul muta mouse-ul necorespunzator, inainte de eliberarea butonului, captura il protejeaza de a actiona asupra altor controale adiacente. Obiectul master va rejecta astfel de comenzi false.



Iesirea din captura

Unul din cele mai importante dar ignorate parti a unei actiuni drag este mecanismul de a-l parasi. Utilizatorul nu numai ca are o nevoie de o modalitate de abandonare a actiunii drag, dar terbuie sa fie absolut sigur ca o face cu succes.

Totusi majoritatea aplicatiilor nu au niciun mijloc de a anula un drag. In termeni de interfata utilizator aceasta este mai degraba o eroare grava din moment ce orice interfata buna furnizeaza modalitati consistente si fiabile pentru parasirea actiunilor pornite gresit de utilizator. Cheia ESCAPE de pe tastatura ar trebui sa fie mereu recunoscuta ca un mecanism de abadon general valabil pentru orice operatie mouse fie ca este click sau drag. Daca utilizatorul apasa cheia ESCAPE in timp ce tine apasat butonul mouse sistemul ar trebui sa abandoneze starea de captura si sa revina in sistem in starea in care era inaninte de apasarea butonului. Cand utilizatorul elibereaza consecutiv butonul mouse, programul trebuie sa tina minte sa dezactiveze acel mouse-up inainte de a se produce un efect colateral.

Actiunea de abandonare preferata de Allan Cooper este chord-click-ul, atunci cand utilizatorul apasa ambele butoane de mouse simultan. De obicei utilizatorul prefera sa inceapa un drag cu buton stang, constatand ulterior ca ca de fapt nu doreste sa termine ce a inceput. Apasa buton drept de mouse dupa care le elibereaza pe amandoua in deplina siguranta. Acest lucru functioneza la fel de bine daca se incepe actiunea drag cu buton drept si se anuleaza cu buton stang.

Informarea utilizatorului

Daca programul este bine proiectat si permite utilizatorului sa abandoneze o operatie de drag, ramane problema de a asigura utilizatorul ca este in deplina siguranta. Este posibil ca forma cursorului sa fie schimbata pentru a indica faptul ca o operatie drag este in curs. Abandonarea operatiei drag face ca aceste lucruri sa dispara dar utilizatorul ar putea avea dubii daca operatia a fost anulata si daca este in deplina siguranta. Este absolut necesar ca utilizatorul sa fie informat asupra faptului ca operatia a fost abandonata cu succes. Ajuta daca utilizatorul obtine un mesaj de asigurare. Mesajul trebuie sa indice clar faptul ca acel drag e terminat. Allan Cooper a proiectat un astfel de idiom pentru unul din clienti care arata ca un fel de stampila mare pe care scria cu rosu Drag Canceled pusa in mijlocul ecranului.

Actiunea drag depinde de program, context si obiect master. In cazul cel mai simplu - date concrete - drag inseamna extinderea selectiei. Textul, celulele sau orice altceva este selectat contiguu din punctul mouse-down pana in punctul mouse-up. Daca mouse-ul devine down intr-un gizmo acesta trebuie sa indice vizual faptul ca este pe cale sa-si schimbe starea. Aceasta actiune este importanta dar de multe ori neglijata de cei care-si creaza propriile gizmo-uri. De fapt este o forma de simulare vizuala activa pe care o numim raspuns pliant (pliant response).

Un push button are nevoie sa se schimbe din starea out in starea in ; un check box ar trebui sa lumineze box-ul dar sa nu arate inca marcajul. Raspunsul pliant este mecanismul feedback important pentru fiecare gizmo, care invoca fie o actiune, fie isi schimba starea lasand utilizatorul sa stie faptul ca o actiune anumita este pe cale sa se produca daca elibereaza butonul de mouse. Raspunsul pliant este o parte importanta a mecanismului de abandonare.

Drag & simbol

Una dintre cele mai incapatanate enigme ale proiectarii interfetelor utilizator - meniul este principalul gizmo pentru incepatori si totusi unul dintre cele mai dificile gizmo-uri de operat de utilizatori novici sau ocazionali. O solutie posibila ar fi furnizarea de idiomuri aditionale pentru realizarea unui task anume. Daca o functie este disponibila din meniu si va fi mai rar utilizata trebuie sa ne asiguram sa furnizam alte idiomuri pentru invocarea ei care sa nu necesite operatii de click&drag.

Una din caracteristicile Windows 95 este abilitatea de a lucra meniurile printr-o serie de click-uri simple decat facang drag&drop. Un click pe un meniu si acesta este desfasurat (pull-down). Punctam elementul dorit si facem un click o data pentru a-l selecta si a inchide meniul. Aceasta idee a fost dusa mai departe punand programul intr-un fel de mod meniu (menu mode) imediat ce s-a facut click pe orice meniu. In modul meniu, toate meniurile top-level din program si toate elementele lor sunt active ca si cand s-ar fi facut click&drag. Plimband mouse-ul fiecare meniu se desfasoara pe rand fara a fi necesara utilizarea unui buton de mouse.

Exista si alte tipuri de gizmo click&drag si anume meniurile in cascada (cascading menus). Intr-un meniu in cascada in mod normal, acesta este desfasurat apoi se incarca al doilea meniu dintr-ul element la primului meniu, prin drag cu mouse-ul spre dreapta. Meniurile in cascada pot fi stivuite fiind mai multe decit unul singur, ele formeaza o ierarhie de meniuri.

Meniurile in cascada necesita indemanare din partea celui care utilizeaza mouse-ul deoarece orice miscare falsa care scoate cursorul din interiorul conturului dreptunghic care cuprinde meniul va provpva disparitia unuia sau altuia dintre meniuri. Cascadele pot fi un simbol frustant de manipulat desi isi au locul lor in proiectarea interfetei dar se recomanda sa nu fie folosite pentru functiile utilizate frecvent.

2. Repozitionare & redimensionare & remodelare

Repozitionarea este simplul act de click pe un obiect si apoi drag cu el la o alta locatie. Repozitionarea este o forma de manipulare directa care are loc la un nivel conceptual mai ridicat decat cel ocupat de obiectul care se repozitioneaza. Adica nu manipulam un aspect al obiectului ci manipulam amplasarea obiectului in spatiu. Aceasta actiune consuma un drag&drop care nu mai este disponibil pentru alte scopuri. Daca obiectul este repozitionabil semnificatia lui click&drag este preluata si nu poate fi destinata unei alte actiuni din cadrul obiectului insusi, precum o apasare de buton. Pentru acest conflict solutia generala este dedicarea unei zone fizice specifice a obiectului pentru functia de repozitionare.

De exemplu putem pozitiona o fereastra in Windows sau Macintosh prin click&drag cu bara caption. Restul ferestrei nu este pliant pentru repozitionare astfel incat idiomul click&drag este disponibil pentru functiile specifice ale aplicatiei. Singura simulare pentru proprietatea de drag a ferestrei este culoarea barei caption, o simulare vizuala subtila. Dar trebuie sa furnizam o simulare vizuala mai explicita, deoarece bara caption are o semnificatie multipla - identificator de program, indicator de stare activa, depozit pentru controale standard de sistem -functii de minimizare, maximizare, close si meniul sistem.

Pentru mutarea unui obiect intai acesta trebuie selectat. Este motivul pentru care selectia trebuie sa aiba loc la tranzitia mouse-down; utilizatorul poarte face drag fara sa fi facut mai intai click&release pe un obiect, pentru atl selecta, apoi click&drag pe acesta pentru a-l pozitiona. Pare cu mult mai simplu un click pe el si apoi drag unde se doreste cu o miscare simpla. In Word Microsoft ne-a dat operatia destul de greu de utilizat - click-wait-drag pentru a muta locuri text. trebuie sa facem click&drag pentru a selecta o portiune de text, apoi avem de asteptat o secunda si din nou click&drag pentru a muta textul.

Cand ne referim la destop-ul Windows si alte interfete grafice utilizator similare nu exista o diferenta reala intre redimensionare si remodelare. Utilizatorul ajusteaza dimensiunea dreptunghiulara a ferestrei si proportia aspectului in acelasi timp cu acelasi cotrol - prin clcik&drag. Pe Machintosh exista un control de redimensionare special pe fiecare fereastra in coltul din dreapta jos aflat in mod frecvent in spatiul dintre scrollbar.-urile vertical si oriontal al aplicatiei. Prin drag cu acest control utilizatorului i se permite sa schimbe atat inaltimea cat si latimea dreptunghiului. Windows 3.x s-a ferit de acest idiom in favoarea unui frame subtire (thickframe) care inconjoara fiecare fereastra. Acest frame este o solutie excelenta, deoarece ofera o simulare vizuala generoasa si simularea cursorului astfel incat este usor de descoperit. Defectul sau este volumul de effort consumat.Acesta poate fi 4-5 pixeli latime (putand fi micsorat pana la minim 2 pixeli) dar daca se inmulteste cu suma lungimilor celor 4 parti ale ferestrei vom vedea ca acest frame e scump.

Windows 95 si Windows NT 4.0 institutionalizeaza un nou simbol vizual pentru remodelare-redimensionare care in mod remarcabil este similar coltului din dreapta jos de pe Macintosh. Acest simbol vizual este un mic triunghi drept, la 45 0, zabrelit, acest simbol vizual este denumit utilizand o combinatie a cuvintelor sharper (modelator) si triangle (triunghi) deci obtinem shangle. Acesta continua sa ocupe ca spatiu intr-o fereastra un patrat dar majoritatea programelor Windows au o astfel de bara status la baza ferestrei lor iar acest simbol grafic vizual remodelator imprumuta spatiu de aici mai degraba decit din zona client a ferestrei.

Windows 95 a continuat sa mentina thichframe-ul si simularea cursorului dar le-a modificat puternic astfel incat nu ramane nici un fel de simulare vizuala a frame-ului desi simularea cursorului se pastreaza. Thichframe-urile si shangle-urile sunt perfecte pentru redimensionarea ferestrelor dar cand obiectul de redimensionat este un element grafic intr-un program de desenare nu este acceptabil sa fie in mod permannet acoperit de controale. Un idiom pentru redimensionarea obiectelor grafice trebuie sa fie in mod evident vizual pentru a se diferentia de alte parti ale desenului in special de obiectul pe care il controleaza. Remodelatorul nu trebuie sa umbreasca actiunea de redimensionare. Acest lucru se realizeaza utilizand opt patrate negre mici pozitionate cate unul in fiecare colt al obiectului dreptunghiular si cate unul centrat pe fiecare latura. Aceste mici patrate negre sunt numite grapples. Grapple-urile reprezinta un avantaj pentru proiectanti deoarece indica totodata si selectia. Aceasta e o relatie simbiotica naturala din momemnt ce un obiect trebuie de obicei sa fie selectat pentru a fi redimensionat. Grapple-ul centrat pe fiecare parte deplaseaza doar acea parte in timp ce restul ramane pe loc.


Grapple-urile din colturi muta simultan ambele parti care se unesc si este foarte logic! Grapple-urile, au tendinta de a pune in umbra obiectul pe care-l reprezinta ca urmare ele nu sunt controale permanente bune, deci nu le vom vedea pe ferestrele redimensionabile top-level. Daca obiectul selectat e mai mare decat ecranul grapple-urile pot sa nu fie vizibile. Daca sunt ascunse in afara ecranului, nu numai ca nu mai sunt disponibile pentru manipulare directa dar nu sunt nici folositoare ca indicatoare a selectiei.

In discutia de mai sus s-a presupus ca obiectul vizat este dreptunghiular sau poate fi usor delimitat de un dreptunghi. Pentru remodelarea obiectelor complexe exista un obiect foarte puternic si util care se numeste vertex grapple. Multe programe deseneaza obiectele pe ecran folosind polilinii. O polilinie (polyline) este un termen specific programatorului de grafica pentru linia multi-segment definita printr-un vector de puncte unghiulare. Daca ultimul punct este identic cu primul este vorba de o figura inchisa iar polilinia este un poligon. Cand obiectul e selectat programul plaseaza cate un grapple in topul fiecarui punct al poliliniei. Deci utilizatorul poate face drag in mod independent cu fiecare punct al poliliniei si sa modifice doar un aspect al formei obiectului in loc sa afecteze totul, lucru ilustrat in figura de mai jos.


Multe din obiectele din PowerPoint inclusiv poligoanele sunt redate cu polilinii. Daca se face un click pe un poligon i se da un dreptunghi delimitator cu 8 grapple-uri standard. Daca se face dublu-click pe un poligon, dreptunghiul delimitator dispare si apar in schimb vertex-urile. E important ca aceste actiuni sa fie disponibile primul e important pentru a scala imaginea proportional iar al doilea este necesar pentru a controla figura. In contextul unui drag, redimensionarea si remodelarea variantelor meta-cheie este utilizta adesea pentru a restringe actiunea drag la o directie ortogonala. Acest tip de drag se numeste constrained drag (drag constrans).

Un drag restrans este cel care sta in axele la 900 sau 450 referitor la modalitatea in care utilizatorul va schimba directia liniei de drag utilizand mouse-ul. In mod uzual se utilizeaza cheia SHIFT dar aceasta conventie variaza de la program la program. Actiunile de drag restranse sunt extrem de utile in programele de desenare mai ales cand se deseneaza grafice de business care sunt in general diagrame. Unghiul dupa care se face drag, este determinat de deplasarea predominanta a primilor cativa mm de drag. Unele programe interpreteaza constrangerile in mod diferit lasand utilizatorul sa faca shift cu axele in mijlocul unei actiuni drag facand drag cu mouse-ul pe ele. Orice modalitate este perfecta.

Majoritatea programelor de desenare care trateaza axele ca obiecte permit actiuni de drag restranse. Utilizarea meta-cheilor ridica o intrebare - unde anume pe parcursul unui drag meta-cheia va deveni semnificativa ? Trebuie ca meta-cheia sa fie tinuta apasata atunci cand incepe un drag sau mai degraba e necesar ca meta-cheia sa fie apasata intr-un punct anume in timp ce se face drag ? Sau trebuie ca meta-cheia sa fie apasata in momentul in care se elibereaza butonul de mouse ? Raspunsul este urmatorul - daca calculatorul detecteaza faptul ca o meta-cheie este tinuta apasata la momentul cand butonul mouse este eliberat, efortul este considerat valid.

3. Indicare prin sageti

O actiune de manipulare directa foarte putenic este arrowing - indicarea prin sageti prin care utilizatorul face click&drag de la un obiect la altul dar in loc ca primul obiect sa fie tras peste al doilea este desenata o sageata de la primul obiect la al doilea.

In general sagetile vizuale se comporta intr-o maniera descrisa cel mai bine prin rubber-banding (o modalitate de unire pentru a realiza ceva). Rubber-banding este atunci cand sageata formeaza o linie cu care se extinde exact din puntulo mouse-down pana in pozitia curenta a cursorului. Linia este animata astfel incat me masura ce utilizatorul muta cursorul, pozitia de sfarsitului de cursor la liniei pivoteaza constant sfarsitul ancorat al liniei (de la punctul mouse-down). Imediat dupa ce utilizatorul elibereaza butonul de mouse, punctul mouse-up eset cunoscut si programul poate decide daca era intr-o locatie tinta valida. Daca da programul deseneaza o sageata vizuala mai pregnanta intre cele doua obiecte si in general le si leaga logic.

Functia de arrowing nu poate fi in mod normal actionata priun buton stang de mouse deoarece ar intar in coliziune cu selectia si repozitionarea. In unele programe functia este actionata prin buton drept, dar in Windows 95 aceasta devine problematica data fiind uzurparea click-ului dreapta de catre meniul contextual. ! Mai exista si meta-cheia ALT Functia de arrowing nu necesita atat de mult simularea cursorului precum alte idiomuri deoarece efectul de rubber-banding este vizibil, atat de clar. Totusi in programele in care obiectele sunt conectate logic, ar fi de mare ajutor sa se arate care dintre obiectele curente, punctate "to", reprezinta tinte valide.

Feedback vizual de manipulare directa

Cheia succesului manipularii directe este feedback-ul vizual bogat. Procesul de manipulare directa poate fi impartit in trei etape distincte:

faza libera - inainte de orice actiune a autilizatorului

faza captiva - de indata ce utilizatorul a inceput sa faca drag

faza terminare - dupa ce utilizatorul a eliberat butonul de mouse

In faza libera (free phase), jobul nostru este de a indica flexibilitatea manipularii directe.

In faza captiva (captive phase) avem doua task-uri. Trebuie sa indicam exact si sigur faptul ca procesul de manipulare directa a inceput si trebuie sa identificam in mod vizual care sunt participantii potentiali la actiune. In faza terminare (termination phase) trebuie sa indicam din plin utilizatorului faptul ca actiunea s-a terminat si sa aratam exact care este rezultatul.

In functie de faza in care suntem cu manipularea directa exista doua variante de simulare a cursorului. In timpul fazei libere numim orice schimbare vizuala a cursorului pe masura ce trece peste ceva de pe ecran simulare libera a cursorului (free hinting). Imediat ce a inceput faza captiva numim schimbarile cursorului ca fiind imulare captiva a acestuia (captive cursor hinting

Microsoft Word utilizeaza simularea desteapta libera a cursorului prin inversare unghiului sagetii cand cursorul e lasat pe text, pentru a indica faptul ca selectia va fi linie cu linie sau paragraf cu paragraf in loc de caracter cu caracter cum este in mod normal in cadrul textului insusi. Alte programe utilizeaza cursor format mana pentru a indica faptul ca documentul insusi si nu informatia continuta in ele este cea deplasabila. Microsoft utilizeaza tot mai mult simularea captiva a cursorului. Drag&drop cu text in Word sau celule Excel este acompaniata de schimbarile cursorului indicand precis care este actiunea si care sunt obiectele mutate sau copiate.

Cand se realizeaza un drag cu ceva cursorul trebuie sa faca drag fie cu acel lucru fie cu un simulacru al acelui lucru. In programele de desenare cand se face un drag cu un element vizual complex, de la o pozitie la alta s-ar putea ca programului sa-i fie greu sa faca drag cu imaginea, astfel incat de multe ori se face drag cu conturul exterior al obiectului.

4.Drag & drop

Drag&drop a fost acceptat ca o piatra fundamentala a interfetelor grafice utilizator moderne desi drag&drop este foarte rar folosit in afara programelor specializate in domeniul desenarii. O descriere curata a actiunii drag&drop este - click pe un obiect si mutarea lui pentru a crea o transformare. Macintosh a fost primul sistem care a oferit drag&drop si a fost descris in primul ghid de standarde ale interfetelor utilizator.

Microsoft nu a pus facilitati de drag&drop in Shell Windows , singurul drag&drop prezent fiind cel din aplicatia Paint pana la Windows 3.0. In mod fundamental se poate face drag de la ceva aflat intr-un loc consideart ca fiind drag&drop interior (interior drag-and-drop) sau se poate aduce prin drag&drop ceva in progam dintr-ul alt program considerat ca fiind drag&drop exterior (exterior drag-and-drop). Drag&drop-ul interior poate fi reslizat simplu atat din punct de vedere conceptual cat si al codificarii. Cel exterior necesita un suport cu mult mai sofisticat deoarece ambele programe trebuie sa subscrie aceluiasi concept pe care trebuie sa il implementeze in modalitati compatibile. Am considerat repozitionarea ca fiind manipulare directa si s-a discutat la inceputul acestui curs. Se vor discuta restul de variante drag&drop. In principal acestea sunt doua si anume: manipulare master&tinta si instrument de manipulare.

a.Master & target

Numim manipulare master&tinta (master-and-target) operatia prin care utilizatorul face click pe un obiect discret apoi face drag cu acesta peste un alt obiect cu scopul de a realiza o functie. Obiectul aflat la originea drag-ului controleaza tot procesul prin urmare el este obiectul master, care va fi o fereastra. Daca se face drag cu un simbol grafic (icon), acel icon este o fereastra. Daca se face drag cu un paragraf de text, editorul in cadrul caruia se petrece aceasta este fereastra. Obiectul tinta (target) este cel peste care se lasa orice a fost subiectul unui drag&drop cand utilizatorul elibereaza butonul de mouse. Scopul principal al termenului master&target este de a deosebi aceasta operatie de alte tipuri de operatii drag&drop pe care le gasim in programele de desenare. Forma cea mai familiara de drag&drop de tip master&target este rearanjarea icon-urilor in Program Manager.

Cum lucreaza master & target

Imediat ce utilizatorul a apasat pe butonul de mouse pe un obict acesta devine obiectul master pe toata durata drag&drop-ului. Dar nu exista nici un obiect tinta corespondent deoarece bpunctul mouse-up nu a fost inca de terminat - ar putea fi un alt obiect sau pe spatiul deschis dintre alte obiecte. Si totusi pe masura ce utilizatorul mmuta mouse-ul cu butonul tinut apasat - aceasta fiind faza captiva - cursorul poate trece peste o varietate de obiecte din interiorul sau din afara programului obiectului. Daca aceste obiecte sunt compatibile drag&drop ele reprezinta tinte posibile si le numim candidati drop (drop candidates).

Intr-o operatie drag nu poate exista decat un master si o singura tinta dar pot exista mai multi candidati drop. In functie de protocolul drag&drop un cadidat drop poate sa nu stie cum sa accepte o valoare drop particulara, trebuie sa stie doar cum sa accepte protocolul oferit. Alte protocoale ar putea solicita ca un candidat sa recunoasca imediat daca poate sa faca ceva util cu obiectul master oferit. Ultima metoda este mai inceata dar ofera utilizatorului un feedback mai bun. Sa nu uitam ca aceasta operatie este direct sub control uman, iar obiectul master poate trece rapid peste zeci de candidati drop inainte ca utilizatorul sa se pozitioneze pe cel dorit.

Design tip - Cadidatul drop trebuie sa indice vizual capacitatea sa drop



Indicatii vizuale

Singurul task al fiecarui candidat drop este de a indica in mod vizual ca hotspot-ul cursorului este pe el, semnificand faptul ca el va accepta drop-ul sau il va intelege daca utilizatorul elibereaza butonul de mouse. O astfel de indicatie este o simulare vizuala activa.

Cea mai slaba metoda de a oferi indicatie vizuala pentru asa ceva este prin schimbarea formei cursorului. Cursorul are rolul de a reprezenta cu ce anume se face drag si sa lase toate indicatiile privind candidatura drop candidatului drop, insusi. Este foarte important ca aceste doua functii vizuale sa nu fie confundate.

Design tip - Cursorul drag trebuie sa indice vizual obiectul master

Din pacate Microsoft in Windows 3.x si in Windows 95 a procedat in acest mod. Se pare ca aceasta decizie a fost luata pentru usurinta codificarii E mult mai usor sa schibi cursorul decat sa marchezi (highlight) candidatii drop pentru a-si arata proprietatea de drop. Rolul cursorului este de a prezenta masterul, obiectul cu care se face drag, el nu ar trebui utilizat pentru a reprezenta candidatul drop. Microsoft realizeaza simularea cursorului printr-un cerculet numit cerc sinistru (sinister circle). Acest cerc este un indicator de tip - nu face asta- si utilizatorul ii va ajusta intelesul in - nu lasa maouse-ul acum altfel paguba va fi ireversibila. Adaugarea cercului la simularea cursorului este o combinatie neispirata.

Cand utilizatorul a eliberat butonul de mouse candidatul drop curent devine tinta. Daca utilizatorul elibereaza butonul mouse in interstitiul dintre candidati drop valizi sau peste un candidat drop invalid atunci nu exista nici o tinta iar operatia de drag&drop se termina fara o actiune. Tacerea sau lipsa unei activitati vizuale este o modalitate buna de a indica terminarea.

Indicarea posibilitatii de drag

Simularea activa a unui cursor pentru a indica posibilitatea de drag este o solutie problematica. Un cursor tremurat si care se schimba rapid poate fi mai mult o distractie vizuala decat un ajutor real. O solutie este sa presupunem doar care sunt lucrurile care sunt lucruile cu care se poate face drag si sa lasam utilizatorul sa experimenteze. Aceasta metoda are succes in Program Manager, File manager, Explorer. Fara simularea cursorului posibilitatea de a face drag poate fi greu de descoperit deci trebuie sa avem in vedere construirea in interfata a catorva indicatii, poate chiar o simulare textuala sau un popup.

Imediat ce obiectul master este apucat si operatia drag incepe, pentru aceasta sunt necesare cateva indicatii vizuale. Cea mai bogata metoda vizuala este animarea completa a operatiei drag, aratand cum se muta in timp real, intregul obiect master.Aceasta metoda este greu de implementat si nu neaparat solutia cea mai indicata. Problema este ca o operatie master&target necesita un pointer foarte precis.

In cadrul unei operatii master&target este mult mai bine sa deplasam conturul transparent al obiectului decat sa facem un drag complet animat al imaginii exacte a obiectului master. Acest lucru inseamna ca obiectul cu care se face drag nu poate ascunde sageata cursorului.Tipul de sageata este necesar pentru a indica exact hotspot-ul.

Indicarea candidatului drop

Pe masura ce cursorul traverseaza ecranul tragand cu el un contur al obiectului master, rand pe rand el trece peste candidatii drop. Acettia trebuie sa indice vizual faptul ca sunt constienti de a fi drept tinte drop potentiale. Prin schimbarea vizuala candidatul drop alerteaza utilizatorul ca poate face ceva constructiv cu obiectul care urmeaza sa fie lasat. Singurele obiectle care pot fi candidati drop sunt cele vizibile in mod curent. In mod uzual numarul de obiecte care ocupa spatiul real al ecranului este foarte mic - cateva zeci cel mult.

Din punct de vedere intern obiectul master trebuie sa comunice cu fiecare candidat drop peste care trece. Ar fi foarte bine sa aiba loc o scurta conversatie in care obiectul master sa intrebe tinta daca poate accepta drag-ul, iar in caz afirmativ tinta trebuie sa indice acest lucru prin simulare vizuala.

Microsoft nu insista asupra simularii vizuale a candidatilor drop ci doar sugereaza ca schimbarea cursorului este suficienta. Se considera ca procedand astfel este mai usor de programat dar din orice aspect centrat pe utilizator este mai rau. Este dificil de inteles cu ce se face drag, care este tinta si daca tinta re sens sau nu pentru drop. In Windows 95 cel putin pe desktop, simbolurile grafice (icons) indica acum corect candidatura drop prin inversare vizuala.

Terminarea unei operatii drag&drop

Cand in final obiectul master este lasat unui candidat drop, acesta devine tinta. Este momentul in care masterul si tinta trebuie sa se angajeze intr-o conversatie cu mult mai detaliata decat cea pe care a vut-o mater-ul cu ceilalti candidati drop. Tinta ar putea sa stie cum sa accepte drop-ul dar nu inseamna ca poate inghiti obiectul master particular lasat pentru aceasta operatie specifica. In general distinctia nu este importanta pentru un drag&drop interior dar pentru un drag&drop exterior estrs cat se poate de indoielnic faptul ca timpul este suficient pentru a rezolva problema in timpul fazei captive, evident ca acest lucru tine cont de performanta.

Daca se transfera informatii informatii, master&target poate dori sa negocieze daca transferul va fi intr-un format proprietar cunoscut ambelor obiecte sau daca va trebui ca datele sa fie reduse la o rezolutie mai slaba dar utilizata precum textul ASCII.

Indicarea vizuala a terminarii

Daca tinta si master-ul pot cadea de acord operatia corespunzatoare poate avea loc. In acest moment un pas important este indicarea vizuala a faptului ca operatia s-a produs. Daca operatia este un transfer obiectul master trebuie sa dispara din sursa si sa reapara in tinta.

Daca tinta reprezinta o functie (de exemplu icon Print) ea trebuie sa simlaze vizual faptul ca a receptionat drop-ul si ca acum este in curs de imprimare. Poate realiza acest lucru ca animatie sau prin imprimarea starii sale vizuale. O operatie drag&drop master&target bogata cu adevarat reprezinta una din operatiile cele mai puternice din desaga cu trucurui a proiectantului de interfete grafice utilizator.

Drag & drop - instrument de manipulare

In programele de desenare si realizare de imagini utilizatorul manipuleaza instrumentele cu drag&drop, atunci cand un instrument sau o figura este adusa in spatiul de lucru prin drag si este utilizat un instrument de desenare. Pentru aceasta exista doua variante de baza numite instrument modal si cursor incarcat.

Instrument modal

Intr-un instrument modal (modal tool) utilizatorul selecteaza un instruemnt dintr-o lista de obicei toolbox sau paleta. Din acest moment programul se afla complet in modul acelui instrument - va executa doar job-ul unic al instrumentului. In mod uzual cursorul se modifica pentru a indica faptul ca instrumentul este activ. Cand utilizatorul face un click&drag cu un instrument in zona de desenare instrumentul iti face treaba. Daca utilizatorul doreste sa lucreze cu un alt instrument trebuie sa revina in toolbox si sa selecteze instrumentul respectiv. De obicei pe paleta exista un instrument de tip cursor pentru a lasa utilizatorul sa returneze cursorul la un scop general - acela de pointer. Intr-un program precum Paint in care numarul instrumentelor de desenare este relativ mic, instrumentul modal nu este suparator, dar in programe d edesenare mai avansate precum Adobe Illustrator caracteristica modality este foarte sfaramata deoarece pe masura ce utilizatorul obtine tot mai usor cursorul si instumentele, procentul de timp si de miscare destinate selectarii si deselectarii instrumentelor - accizele - sporesc in mod dramatic. Dificultatea gestionarii unei aplicatii de instrumente modale nu este provocata de modality pe cat de mult este determinata de volumul de instrumente. Mai precis eficienta scade cand cantitatea de instrumente aflate in setul utilizatorului ajunge sa fie prea mare.

Pentru a compensa profunzimea instrumentelot modale, unele produse soft utilizeaza meta-chei pentru a modifica diferitele moduri. Indiscutabil combinatiile posibile sunt puternice dar greu de invatat, de tinut minte si memorat. Ele vor fi folosite de utilizatorii specializati si nu de cei obisnuiti.

Cursor incarcat

A doua tehnica drag&drop ca instruemnt de manipulare este ceea ce numim cursor incarcat (charged cursor). Cu un astfel de cursor utilizatorul poate selecta din nou un instrument sau o figura dintr-o paleta insa de data aceasta cursorul in loc sa devina obiect al tipului selelctat devine incarcat cu o singura instanta a obiectului selectat. Atunci cand utilizatorul face un click o data pe suprafata de desenare se creaza o instanta a obiectului, in punctul mouse-up. Cursorul incarcat nu lucreaza prea bine pentru instrumente dar se potriveste bine cu obiectele grafice. De exemplu PowerPoint il utilizeaza extensiv. Utilizatorul selecteaza un dreptunghi din paleta grafica, cursorul devenind un instrument dreotunghi modal, incarcat exact cu un dreptunghi.

Multe programe de desenare uzuale lucreaza astfel fiind ceva obisnuit pentru idiomurile grafice de manipulare directa construite in programe care nu au fost gandite specila ca programe de desenare. De exemplu in Visual Basic cand un utilizator face clcik pe uj simbol vizual din paleta de instrumente, cursorul devine ancarcat cu acel simbol vizual. Apoi utilizatorul face din nou click pentru a crea o singura instanta a acestuia. Borland Delphi utilizeaza si el cursor incarcat. Daca se face SHIFT-click pe un simbol vizual din paleta se obtine un instrument modal pentru crearea instantelor multiole ale simbolului vizual. Destept!

In unele programe care utilizeaza cursor incarcat, precum PowerPoint, utilizatorul nu poate depozita intotdeauna un obiect doar prin simplu click trebuind sa faca un drag cu un dreptunghi inconjurator pentru a determina dimensiunea obiectului depozitat. Unele programe precum Visual Basic permit orice metoda. Un simplu click pe un cursor incarcat creeaza o singura instata a obiectului in dimensiune standard. Ca urmare noul obiect este creat intr-o stare de selectie fiind inconjurat de grapples gata pentru a fi modelat si redimensionat cu precizie.

Exista programe care folosesc tehnica cursor incarcat si care uita sa schimbe aparenta cursorului. Visual Basic schimba cursorul cand este incarcat, dar Delphi nu o face. De asemenea cursorul incarcat aree nevoie de idiomuri bune pentru abandonare altfel nu avem cum sa descarcam cursorul in mod inofensiv.

Tintirea bombei

Pe masura ce utilizatorul face drag cu un obiect master de-a lungul ecranului fiecare candidat drop se schimba vizual, pe masura ce este punctat indicand astefl abilitatea sa de a accepta drop-ul. In unele programe obiectul mater poate fi lasat in spatiile dintre alte obiecte. Numim aceasta varianta ca fiind drag&drop bombardier (bombardier). De exmplu a face drag cu un text Word este o operatie de tip bombardier.

Feedbak-ul vizual vital al drag&drop-ului bombardier este ilustrat atunci cand obiectul master va cadea daca utilizatorul elibereaza butonul de mouse.

In master&target candidatul drop devine marcant (highlight) in mod vizual pentru a indica un drop potential, dar in cazul bombardier, drop-ul potential va fi undeva in spatiul in care nu exista nici un alt obiect. Simularea vizuala este ceva desenat in background-ul programului sau in datele sale concrete. Numim aceasta simulare vizuala tinta bombei (bombsight). De exmplu rearanjareab slide-urilor din vizualizatorul PowerPoint este un exmplu bun pentru un astfel de tip de drag&drop. Utilizatorul poate apuca un slide si poate face drag cu el intr-o ordine diferita de prezentare. In timp ce se face drag, tinta bombei apare intre slide-uri sub forma unei bare verticale, negre. In plus fata de faptul ca se misca cursorul incarcat se poate vedea si o bara gri verticala care arata cu precizie locatia dintre caractere, acolo unde se va pune textul adus. Ori de cate ori ceva poate fi plasat prin drag&drop in spatiul dintre alte obiecte programul trebuie sa arate un bombsight si intocmai ca un candidat drop din master&target aceasta candidatura trebuie indicata vizual.

Probleme si solutii drag & drop

Cand utilizam pentru prima data un drag&drop pare simplu, dar pot sa apara in anumite conditii speciale problme si dificultati care nu sunt atat de simple. Proiectantii foarte inventivi au gasit solutii foarte destepte.

Autoscroll

Ce interpretare ar trebui sa dea programul atunci cand un obiect selelctat prin drag trece de marginea dreptunghiului care delimiteaza aplicatia? Interpretarea corecta este aceea ca obiectul a fost dus prin drag intr-o pozitie noua, dar aceasta pozite noua este in interiorul sau in afara dreptunghiului delimitator?

De exemplu in Microsoft Word cand o portiune de text selectat ajunge prin drag in afara ferestrei vizibile se doreste sa spuna utilizatorul? Vreau sa pun textul intr-un alt program sau vreau sa pun tetxul in alta parte in cadrul aceluiasi document dar locul nu este vizibil pe ecran?

In primul caz lucruirle sunt simple in al doilea caz insa aplicatia trebuie sa faca scroll in directia in care se face drag pentru a repozitiona selelctia la locatia nevizibila in mod curent in cadrul aceluiasi document. Numim aceasta operatie de scroll scroll automat (autoscroll).

Autoscroll-ul este un accesoriu foarte important pentru drag&drop. Ori de cate ori exista posibilitatea ca o tinta drop sa nu fie pe ecran din motive scroll-off programul necesita autoscroll. In implementarile de debut autoscroll functiona in cazul in care se facea drag in afara ferestrei aplicatiei. Aceasta solutie avea doua mari defecte - primul daca aplicatia era maximizata cum putea ajunge cusorul in afara aplicatiei iar al doilea daca dorea sa se faca drag cu un obiect intr-un alt program cum putea aplicatia sa stie diferenta dintre aceasta situatie si dorinta de autoscroll ?

Pentru aceasta problema Microsoft a dezvoltat o solutie foarte inteligenta. In principiu se incepe cu autoscroll chiar in cadrul aplicatiei in loc de in afar imaginii. Daca cursorul drag se apropie de marginea unei ferestre scroll-abile dar inca se afla in interiorul acesteia este initiat un scroll in directia data de drag. Daca cursorul drag ajunge le 3-4 mm de marginea de jos a ferestrei-text, Word face scroll-up cu continutul ferestrei.


Analog daca cursorul drag ajunge la 3-4 mm de limita de sus a ferestrei Word face scroll-down. Din nefericire implementarea Word-ului nu tine cont de puterea microprocesorului.

O solutie mai buna pentru implementarea acestul element ar fi utilizarea unei rate de autoscroll variabile asa cum se vede in figura de mai sus.

unde scroll-ul automat creste in viteza pe masura ce cursorul se apropie tot mai mult de marginea ferestrei. De exemplu cand cursorul este la 5mm de marginea de sus textul va cobori (scroll-down) o linie pe secunda, la 4 mm 2 linii pe secunda, etc. Astfel se da utilizatorului un control suficient asupra autoscroll-ului pentru a-l face mai folositor. Un detaliu important cerut autoscroll-ului este timpul de intarziere (delay-time). Daca autoscroll-ul incepe imadiat ce cursorul a intrat in zona senzitiva din jurul marginilor, pentru un utilizator mai mocait e usor sa faca autoscroll in mod accidental. Pentru a evita asa ceva autoscroll-ul trebuie sa inceapa doar dupa ce cursorul drag a fost prezent in zona de scroll un timp rezonabil - in jur de o jumatate de secunda.

Design Tip - orice tinta drag&drop careia i se aplica scroll trebuie sa faca autoscroll

Daca utilizatorul fac drag cu cursorul complet in afara ferestrei text a aplicatiei (scroll-abile) nu intervine nici un autoscroll. In schimb operatie de repozitionare se va termina intr-un alt program decat Word. De exmplu daca cursorul drag ajunge in afara Word-ului si este pozitionat peste PowerPoint atunci cand utilizatorul elibereaza butonul mouse slelectia se va transfera in slide-ul PowerPoint la pozitia indicata de mouse. Mai mult daca cursorul se muta in limita 3-4 mm a oricarei margini a ferestrei de editare PowerPoint acesat va incepe sa faca autoscroll in directia corespunzatoare.

Prevenirea smuciturilor drag&drop

Cand asupra unui obiect pot fi realizate - selectie si drag este vital ca mouse-ul sa incline in favoarea operatiei de selectare. Deoarece este dificil de facut drag pe ceva fara ca in mod accidental cursorul sa nu se mute 1-2 pixeli, actul frecvent de selectare nu trebuie sa determine accidental ca programul sa interpreteze gresit actiunea ca fiind inceputul unei operatii drag&drop. De obicei timpul necesar realizarii unui drag este mai mare decat cel necesar programului pentru a realiza selectie, iar drag este acompaniat adesea de un repaint astfel incat obiectele de pe ecran vor tremura si tresari. Acest lucru poate fi deranjant pentru utilizatorii care se asteptau la un simplu select. In plus obiectul este deplasat acum cu cativa pixeli ceea ce nu-i convine utilizatorului.


In lumea hardware controale precum push-button dispun de contacfte mecanice care produc ceea ce inginerii numesc bounce -contactele mecanice ale switch-ului sar efectiv cand sunt apasate. Circuitul din spatele acestor switch-uri are o logica speciala care ignora tranzitiile uplimentare daca apar cu cateva milisecunde inainte de primul click. Acest lucru este analog cu problema supersensibilitatii mouse-ului, iar solutia este de a copia switch-urile si de a face mouse-ul sa nu mai ricoseze (debounce). Pentru a preveni aceasta situatie programul trebuie sa stabileasca ceea ce numim pragul mouse-ului (mouse threshold). In esenta toate mesajele de deplasare ale mouse-ului care sosesc dupa pasarea butonului si dupa ce incepe captura sunt ignorate daca nu cumva din miscarea depaseste un mic prag sa zicem de 6 pixeli. Aceasta asigura o oarecare protectie impotrive initierii unei operatii drag inadvertente. Daca utilizatorul poate apasa butonul de mouse in cadrul a 3 pixeli din punctul mouse-down intreaga actiune click este interpretata ca o comanda de selectie, iar restul miscarilor false sunt ignorate, deci obiectul nu a mai ricosat. Imediat ce miscarile mouse-ului trec de pargul de 3 pixeli, programul poate schimba operatia in drag in modul ilustrat mai jos

Ori de cate ori avem o situatie in care obiectul poate fi selectat si deplasat operatia drag trebuie sa nu ricoseze.

Design tip - Sa facem ca drag-urile sa nu ricoseze

Program Manager din Windows 3.x are un parg de un pixel (only-one) ceea ce era prea putin. Simbolurile grafice (icon-urile) din desktop-ul Windows 95 au un prag de ricosare de 4 pixeli. In cadrul programelor generatoare de rapoarte este necesara manipularea unui prag pentru operatia drag mult mai complex. Utilizatorul poate repozitiona coloanele in raport facand drag cu ele pe orizontala. Acesta este drag&drop-ul cel mai des utilizat.

Vernier mouse

Slabiciunea mouse-ului ca instrument de punctare cu precizie este aparenta, atunci cand se face drag cu obiectele prin programele de desenare. Este dificil de facut drag exact in spot-ul dorit, ami ales cand rezolutia este de 100 pixel-per-inch sau ceva mai mult iar mouse-ul alearga pe ecran cu o viteza de 6 la 1. Pentru a muta cursorul 1 pixel, trebuie sa mutam mouse-ul cu o precizie reprezentand a 6-a suta parte dintr-un inch ceea ce nu este usor de facut. Problema se rezolva prin adaugarea a ceea ce numim functia mouse vernier (vernier mouse) prin care utilizatorul poate comuta repede intr-un mod care permite o rezolutie cu mult mai fina pentru manipularea obiectelor, bazat pe mouse .

In timpul unui drag daca utilizatorul decide ca are nevoie de o manevrare mai precisa el poate schimba viteza mouse-ului relativ la miscarea obiectului pe ecran. Orice program care poate solicita o aliniere mai precisa, trebuie sa ofere o facilitate vernier. Aceasta include la minim toate programele de desenare si pictura, programele de prezentare si cele de manipulare a imaginilor. Exista cateva variante acceptabile pentru idiom. In timpul unei operatii drag se poate apasa un buton precum cheia ENTER iar mouse-ul va trece in mod vernier. In acest mod fiecare 10 pixeli din miscarea mouse-ului vor fi interpretati ca un singur pixel.

Design Tip - Orice program care necesita aliniere precisa trebuie sa ofere un vernier

Una din metodele populare este aceea de a activa cheile sageti in timpul operatiei drag. In timp ce se mentine butonul mouse apasat utilizatorul poate manipula cheile sageti pentru a muta selectia in sus, in jos,la dreapta, la stanga cate un pixel o data. Operatia drag este terminata la eliberarea butonului de mouse. Problema cu un astfel de vernier este ca simplul act al eliberarii butonului de mouse poate provoca adesea deplasarea mainii utilizatorului cu 1-2 pixeli facand ca obiectul plasat sa alunece din aliniere exact in momentul acceptarii. Solutia este ca la prima tastare vernier mouse-ul sa fie desensibilizat. Acest lucru se realizeaza facand ca mouse-ul sa ignore toate miscarile consecutive sub un prag rezonabil - de 5 pixeli. Acest lucru permite ca utilizatorul sa faca initial deplasari grosolane apoi in final sa treaca la deplasari mai precise folosind cheile sageti si eliberand butonul de mouse fara a perturba amplasarea. Daca utilizatorul doreste sa faca deplasari aditionale grosolane dupa inceperea miscarii vernier, va putea si mute mouse-ul pur si simplu iar sistemul va terce inapoi in mod vernier.

Daca cheile sageti nu sunt destinate mai degraba interfetei precum intr-un program de desenare, ele pot fi folosite pentru a controla miscarea vernier a obiectului selectat fara a fi necesar ca butonul de mouse sa fie mentinut apasat. Acest lucru este realizat in PowerPoint intr-un mod simpatic - cheile sageti muta obiectul selelctat un pas din grila -cam 2mm- folosind setarile de grila implicate. Daca tinem apasata cheia ALT in timp ce se folosesc cheile sageti deplasarea este un pixel per click&sageata.






Politica de confidentialitate







creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.