Přehled tříd AppKitu 3: zbývající třídy GUI - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Seriály

Více seriálů



Software

Přehled tříd AppKitu 3: zbývající třídy GUI

12. října 2005, 00.00 | Dnes dokončíme zběžný popis několika zbývajících tříd z bloku "User Interface".

Minule jsme si vysvětlili, jaké postavení má (v podstatě abstraktní) třída NSResponder, a řekli jsme si něco i o většině jejích konkrétních podtříd (s tím, že třídám NSView a NSCell už jsme se věnovali předminule). Jediný "respondér", o němž jsme se dosud vůbec nebavili, je NSText (a jeho podtřída NSTextView), a ten si, spolu s celým textovým subsystémem AppKitu, necháme na příště.

Dnes dokončíme zběžný popis několika zbývajících tříd z bloku "User Interface". Podíváme-li se opět na obrázek tříd AppKitu,

který samozřejmě ti, kteří mají instalované vývojové prostředí, mohou v plném rozlišení nalézt na vlastním disku v úvodním článku popisu AppKitu – vidíme, že jsou to tyto:

NSEvent

Pomocná třída NSEvent spolupracuje se systémem responderů. My jsme si minule v hrubých rysech ukázali, jak systém tříd AppKitu automaticky převádí události, generované uživatelem nebo operačním systémem samotným, na zprávy Objective C (např. mouseDown:, scrollWheel:, keyDown:, flagsChanged: a podobně), a ty – prostřednictvím systému responderů – předává vhodnému objektu, který je může zpracovat.

Jakkoli nezřídka tyto zprávy samotné bohatě stačí – chceme-li např. reagovat na klepnutí myši, prostě implementujeme ve vhodném kontroléru metodu mouseDown: a o nic jiného se již nemusíme starat – je často přece jen vhodné mít k dispozici komplexnější informace o původní události. Dejme tomu, že by metoda mouseDown: měla fungovat odlišným způsobem při stisknutí různých modifikátorů – její implementace by tedy měla mít možnost se obrátit "zpátky" na původní událost a ověřit, které z modifikátorů byly stisknuty, když k ní došlo.

K tomu právě slouží třída NSEvent: její instance může representovat libovolnou událost – obsahuje tedy vhodná pole pro modifikátory, jež byly stisknuté; pro čas, kdy k události došlo; pro vlastní typ události; pro souřadnice, na nichž byla myš ve chvíli, kdy událost nastala, a pro řadu dalších – a AppKit takovouto instanci automaticky předává jako argument všech zpráv, jež jsou na základě událostí generovány. Proto také mají všechna jména výše uvedených zpráv – mouseDown:, scrollWheel:, a ostatních – dvojtečku: odpovídajícím argumentem je právě instance třídy NSEvent, jež obsahuje detailní informace o odpovídající události.

NSMenu a NSMenuItem

Z instancí tříd NSMenu a NSMenuItem jsou sestaveny všechny nabídky; jak ta hlavní, jež je normálně umístěna u horního okraje obrazovky, tak i nabídky rozevírací na základě stisknutí tlačítka nebo kontextové nabídky, jež můžeme vyvolat s přepínačem ctrl nebo pravou klávesou myši.

Struktura je velmi jednoduchá – NSMenu je jen o málo více než seznam položek, jež daná nabídka obsahuje (NSMenu ovšem obsahuje informace o nadřízené nabídce – je-li taková –, o vzhledu nabídky a podobně). Každá jednotlivá položka pak je representována instancí třídy NSMenuItem; ta obsahuje především text nabídky a odkaz na akci, již má nabídka vyvolat – tou může být třeba otevření podřízené nabídky nebo odeslání obecné zprávy obecnému objektu ("target/action"). Kromě toho se instance třídy NSMenuItem starají o řadu pomocných služeb – udržují klávesové alternativy, umožňují zvýraznit konkrétní písmeno textu nabídky pro řízení nabídek z klávesnice, a podobně.

Právě díky tomu, že všechny nabídky v libovolné aplikaci jsou representovány instancemi standardních tříd, je možné implementovat taková rozšíření, jako jsou např. odtrhávací nabídky nebo možnost otevření celé hlavní nabídky aplikace na libovolném místě jako pop-upu.

NSStatusBar, NSStatusItem

Tyto dvě třídy (resp. samozřejmě jejich vhodné instance) representují pravý okraj hlavní aplikační nabídky: "status bar" je právě prostor, v němž se objevují položky jako "hlasitost", "kalendář" a podobně. Každý konkrétní prvek pak je representován instancí třídy NSStatusItem.

NSTabViewItem

Ryze pomocná třída NSTabViewItem representuje jednotlivé položky přepínače typu "tab view". Každé "view" s možností přepínat obsah pomocí záložek (NSTabView) tak obsahuje několik instancí třídy NSTabViewItem, z nichž každá representuje jednu záložku; obvykle (ale ne nutně) samy záložky přímo obsahují objekty "view", jež se uvnitř daného prostoru zobrazí po klepnutí na odpovídající záložku.

NSTableColumn

Trochu podobné postavení jako NSTabViewItem má i tato třída; její instance pro změnu representují sloupce tabulky: každá tabulka (NSTableView) tedy obsahuje libovolný počet sloupců (instancí třídy NSTableColumn), a sloupce samy pak obsahují "views" (v tomto konkrétním případě jde o "lehké" buňky, podtřídy NSCell – viz rozdíly mezi "view" a "cell" v předminulém dílu našeho seriálu) pro vykreslení záhlaví sloupce i jeho datových položek.

NSToolbar a NSToolbarItem

Podobně jako dvojice tříd NSStatusBar a NSStatusItem sloužila pro objektovou representaci položek při pravém okraji hlavní nabídky, representuje třída NSToolbar lištu příkazů v horní části libovolného okna (jež lištou příkazů disponuje) a NSToolbarItem pak konkrétní příkaz v této liště.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

 

 

 

Nejčtenější články
Nejlépe hodnocené články
Apple kurzy

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: