10 Haziran 2012 Pazar

Dojo ( ve CoffeeScript ) ile basit bir panel oluşturma ve yerleşim örneği

Önceki yazıda Merhaba dojo demiştim, şimdi temel yerleşim nesnelerini kullanarak küçük bir şeyler yapıyorum.

Yapmak istediğim sayfanın en üstünde Gnome3 paneline benzer bir panel oluşturup panelin soluna uygulama menülerini sağına da kullanıcı girişi için açılır bir düğme eklemek, hepsi bu.


HTML Sayfası önceki örnek ile aynı, sadece Dojo'nun standart CSS dosyasını ekledim.

index.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Örnek:Merhaba Dojo!</title>
    <!-- Dojo'yu yükle -->
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dijit/themes/claro/claro.css">
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js" data-dojo-config="async: true, isDebug: true"></script>
</head>
<body class="claro" style="margin:0;">
    <!-- Uygulamayı Çalıştır -->
    <script src="main.js"></script>
</body>
</html>

main.coffee
require { baseUrl : "/" }, [ "dojo/dom",  "panelModule" ], ( dom, panelModule ) ->
 panelModule.setPanel()

panelModule.coffee
define \
 ["dojo/dom",  "dijit/layout/ContentPane", "dijit/layout/BorderContainer", "userModule", "dojo/domReady!"],  
 (dom, ContentPane, BorderContainer, userModule) -> 
  
  #Önce kullanacağımız sabit nesneleri bir oluşturalım
  
  #Bu herşeyi içine koyacağımız bir çanta
  #'headline' içeriği yatay yerleştireceğimizi belirtiyoruz
  #".dijitReset" Sınıfın öntanımlı biçimlendirmesini sıfırlıyor, sonra kendimiz bir stil belirliyoruz
  container = new BorderContainer(design:"headline", baseClass:".dijitReset", \
   style: "overflow:hidden; color:white; border: 0; background-color:#333333; width: 100%; height: 32px; ")
  
  #ContentPane içine birşeyler doldurabileceğiniz bir <div> tagı aslında,
  #Tab, Stack, Acordion gibi Container nesnelerde bölüm içeriklerini bunun içine dolduruyoruz

  #Bu aslında bir menü olması gereken bir nesne, belki sonraki yazılarda...
  #'region' davranışı belirliyor, en iyisi http://dojotoolkit.org/documentation/tutorials/1.7/dijit_layout/ adresine bakın
  menuContainer = new ContentPane(region:"center",  style: "overflow:hidden; ", content:"menü1 | menü2 | menü3 | menü4")
  
  #Bu da kullanıcı girişi için kullanılacak düğmenin taşıyıcısı
  #İçeriği userModule veriyor
  userContainer = new ContentPane(region:"right",  style: "overflow:hidden; ", content: new userModule.setUser() )

  #Hepsini çantaya dolduralım
  container.addChild(menuContainer)
  container.addChild(userContainer)
  
  setPanel: () ->
   #Çantayı Body'e ekliyoruz
   #Ve startup() ile biçimi oluşturuyoruz, bu işlevi DOM'a eklenen her nesne için yapmak lazım
   #Yoksa ekranda biçimsiz şeyler görebilirsiniz
   dojo.body().appendChild( container.domNode )
   container.startup()

userModule.coffee
define \
 ["dojo/dom", "dijit/form/DropDownButton", "dijit/TooltipDialog",  "dojo/domReady!"],  
 (dom, DropDownButton, TooltipDialog) -> 
  
  #Bir açılan düğme ve açılacak bir diyalog oluşturuyoruz
  #'containerNode' ile hangi nesnenin üyesi olacağını tespit ediyoruz,
  #Yani <div>DropDown <div>Tooltip</div> </div> yapmış oluyoruz.
  userButton = new DropDownButton(label:"Giriş yapın", baseClass:".dijitReset")
  userDialog = new TooltipDialog( title: "Kullanıcı girişi", containerNode:userButton)
  #Düğmenin hangi nesneyi açacağını tespit ediyoruz, aslında olayları (events) bağlamış oluyoruz
  userButton.dropDown = userDialog
  console.log(userButton)
  
  setUser: () ->
   #HTML Kodunu döndürüyoruz, böylece uygulamanın istenilen yerine eklenebilir
   return(userButton.domNode)

Küçük uygulamanın görüntüsü şöyle;


Sonraki yazıda projeyi sunucuya taşıyorum.

Hiç yorum yok:

Yorum Gönder