Konu Başlıkları
Yükleniyor...

Taşınabilir Paneller ve Sürüklenen Düzenin Gerçek Maliyeti

Çoklu görevde panel düzeni: serbest sürükleme mi, ızgara mı?

Ekranda paneli sürükleyip yeniden boyutlandırma, çoklu görev sorununa verilmiş en eski arayüz cevaplarından biri. Gerekçesi hep aynı yerden kurulur: kullanıcı kendi düzenini kursun. Uygulamada ise asıl maliyet sürüklemenin kendisinde değil, o düzeni saklayıp doğru şekilde geri yüklemekte ortaya çıkıyor.

Sabit panel gerçekten sorun mu?

Kalıbın savunması genelde şöyle yapılır: kullanıcı aynı anda video izliyor, belge yazıyor, bildirim takip ediyor, paneller sabitse iş akışı bozuluyor. Kulağa makul geliyor ama bir adım eksik. Kullanıcı zaten bir pencere yöneticisinin içinde çalışıyor. İşletim sistemi pencereleri taşımayı, kenara yaslamayı, ekranı ikiye bölmeyi çoktan çözmüş durumda; uygulamanın kendi içinde ikinci bir pencere yöneticisi kurması bu işi ondan devralmak demek.

Devralmanın değdiği yerler var. Aynı belgenin iki ayrı parçasına birlikte bakmak, bir grafiği beslediği veri tablosunun yanında tutmak, canlı önizlemeyi düzenleyicinin sağına almak: bunlar sekmelerle ya da ayrı işletim sistemi pencereleriyle kurulamayan ilişkiler, çünkü iki panel aynı belgenin durumunu paylaşıyor. Buna karşılık "kullanıcı ekranı istediği gibi düzenlesin" cümlesi tek başına bir gereksinim değil, temenni.

Serbest sürükleme ne getiriyor

Paneli mutlak konuma bırakan her arayüz aynı sorunları miras alır. Paneller üst üste biner, hangisinin üstte olduğu sürekli takip edilmek zorundadır, sürükleme tutamacıyla panelin içindeki tıklama hedefleri birbirine karışır. Hiçbiri çözülemez değil. Ama hepsi durum demek, ve o durum kullanıcı başına saklanıyor.

Kaydedilen düzenin ömrü

Kırılma noktası burası. Panel konumu çoğu uygulamada piksel cinsinden saklanır. Kullanıcı 1920 piksel genişliğindeki masaüstü ekranında paneli sağa, x=1600'e taşır; bu değer aynen kaydedilir. Ertesi gün aynı hesapla 1366 piksellik dizüstünde açtığında panel görünür alanın tamamen dışında kalır. Ekranda hiçbir şey yoktur, işin kötüsü "varsayılana dön" düğmesi de çoğunlukla görünmeyen panelin içindedir.

Çözümü pahalı değil. Kaydedilen değeri olduğu gibi uygulamak yerine yüklerken sınırla: yatay konumu 0 ile (pencere genişliği eksi panel genişliği) arasına kırp, dikeyde aynısını yap. Ya da konumu baştan orana çevirip sakla. Bunu bir test senaryosu haline getirmek daha da ucuz, dar bir pencerede kaydedilmiş düzeni geri yükle ve panelin görünür alanda kalıp kalmadığına bak.

Izgaraya oturan bölmeleri serbest sürüklemeden daha güvenilir buluyorum. Serbest sürüklemede saklanacak şey iki koordinat, iki boyut ve bir yığın sırası; ızgarada ise hangi bölmenin nerede durduğu ve bir bölme oranı. İkincisi ekran genişliği değiştiğinde bozulmaz, çünkü kaydedilen değer zaten mutlak bir yer değil, bir ilişki.

Geri dönüş yolu

Kişiselleştirmenin en çok atlanan parçası geri alma. Kullanıcı düzeni bozduğunda ya da kayıt bozulduğunda çıkış kapısı iki yerde olmalı:

  • Sıfırlama düğmesi panelin içinde değil, sabit bir yerde. Panel kaybolduğunda içindeki düğme de kaybolur.
  • Saklanan düzen verisinde bir sürüm numarası. Alan adları değiştiğinde eski kaydı okumaya çalışıp çökmek yerine sessizce atmak, kullanıcıyı bozuk bir ekranla baş başa bırakmaktan iyidir.

Dokunmatikte hikaye büsbütün değişiyor. Sürükleme jesti sayfa kaydırmayla çakışıyor, tutamacın hedef alanı parmakla ıskalanıyor ve zaten ekranda yan yana iki panele yer yok. Dar ekranda özelliği kapatıp tek sütuna düşmek, sürüklenebilirliği oraya da taşımaya çalışmaktan daha iyi sonuç veriyor.

Taşınabilir panel, kullanıcının gerçekten iki şeyi aynı anda görmesi gereken ekranlarda işini yapar. Geri kalan her yerde arkasında kimsenin dokunmadığı bir sürükleme tutamacı ve bozulduğunda kimsenin düzeltemediği bir kayıt tablosu bırakır.