Drag and drop

Z Multimediaexpo.cz

Drag and drop (táhni a pusť) je v informatice operace používaná v grafickém uživatelském rozhraní, kdy uživatel v počítači „uchopí“ pomocí ukazovacího zařízení (např. myši) virtuální objekt (např. soubor nebo ikonu) a přesune ho „přetažením“ na jiné místo (nebo na jiný objekt).

Operace drag-and-drop může být využita k vyvolání různých druhů akcí nebo vytvářet různé typy asociací mezi dvěma virtuálními objekty.

Podpora operace drag-and-drop není ve všech programech, i když je poměrně rychlá a její technika se dá snadno osvojit. Nevýhodou je, že uživateli nemusí být jasné, že objekt lze přetáhnout nebo že se některé příkazy provádějí operací drag-and-drop.

Obsah

Akce

Základní sekvence využívající funkci drag-and-drop je následující:

  • Přesunout ukazatel na objekt.
  • Stisknout a podržet tlačítko na myši (nebo na jiném ukazovacím zařízení), aby byl objekt „uchopen“.
  • „Přetáhnout“ objekt na požadované místo přesunutím ukazatele na určené místo.
  • „Pustit“ objekt uvolněním tlačítka.

Tažení vyžaduje větší fyzickou námahu než pohyb se stejným ukazovacím zařízením bez držení tlačítka. Vzhledem k tomu se uživatel nemůže pohybovat tak rychle a přesně při tažení (viz Fittsův zákon).[1] Nicméně drag-and-drop operace mají tu výhodu, že můžeme skloubit dohromady dva operandy (objekt a cílovou lokaci) do jediné akce.

Problém se objeví, když pro výběr objektů i pro jejich přetažení slouží stejné tlačítko. Nepřesný pohyb může způsobit přetažení, když uživatel chce jen vybrat.

Dalším problémem je, že cíl operace drag-and-drop může být zakrytý jinými objekty. Uživatel v takovém případě musí tažení přerušit, zajistit, aby zdroj i cíl byly viditelné a začít znovu. V klasickém Mac OS slouží lišta nacházející se v horní části obrazovky jako univerzální cíl, který umožňuje anulovat přetahovací operaci. Tento problém byl vyřešen v Mac OS X se zavedením Exposé.

V operačním systému Mac OS

Drag and drop, nazváno stejně jako klikni a táhni, bylo použito v originálním Mackintoshi pro manipulování se soubory (například jejich kopírování mezi disky nebo složkami). System 7 přidal možnost otevření dokumentu v aplikaci tím, že upustí ikonu dokumentu na ikonu aplikace.

V systému 7.5, drag and drop byla rozšířena společná schránka o operace jako kopírování nebo přesouvání textového obsahu v rámci dokumentu. Obsah může být také vtažen do souborového systému k vytvoření "výstřižku souboru", které by pak mohly být uloženy a znovu použity.

Pro většinu z jeho historie Mac OS používá jediné tlačítko myši, tímto tlačítkem pokrývá velkou část horního povrchu myši. To může zmírnit ergonomické obavy udržet stisknuté tlačítko při přetahování.

V OS/2

Pracoviště nazváno jako The Workplace Shell v OS/2 rozsáhle používá pro drag and drop vedlejší tlačítko myši, přičemž primární tlačítko zůstává pro výběr a standardní klikání myši. Používá se to jako další pokročilé funkce Common User Access na rozlišení nativních OS/2 aplikací pro platformě-nezávislé porty.

V HTML

Specifikace v HTML 5 nazívající se "working draft" obsahují podporu drag and drop.[2] HTML5 podporuje rozdílné druhy funkce táhnutí a puštění zahrnující:

  • "Táhnout a pustit" text a HTML kód
  • "Táhnout a pustit" HTML elementy
  • "Táhnout a pustit" soubory

Každý z těchto typů může být použit, záleží na akci kterou právě potřebujeme. Všimněte si, že když HTML element je tažen pohybem na jeho nynější pozici, jeho ID je posláno na jeho rodičovský poziční element; takže pošle text a může být považován za první skupinu.

Webová e-mailová aplikace Google Gmail podporuje drag and drop obrázků a příloh v nejnovějším prohlížeči Google Chrome a Apple Safari (5.x). Drag and drop také podporuje Google obrázkové vyhledávání.

Na dotykovém zařízení

Většina nových zařízení s dotykovým displayem také obsahují funkci drag and drop, nebo více přesněji, dlouhý stisk a poté tah. Jako je tomu například u Apple iPhone nebo u zařízení s operačním systémem Android.

Reference

  1. KORBEL, Jan. 2009-04-20, [cit. 2016-06-23]. Dostupné online.  
  2. HTML5 W3C Working Draft