Esempio di finestra di dialogo in gedit

In informatica, una finestra di dialogo è un controllo grafico (widget) che permette a computer ed utente di comunicare fra loro tramite la visualizzazione di informazioni, la richiesta di comandi o entrambe[1].

Utilizzo

[modifica | modifica wikitesto]

La dialog box è solitamente utilizzata per fornire all'utente gli strumenti per specificare come eseguire un comando, per rispondere ad una domanda o ad un "alert". Il tipo più semplice di è l'avviso, che visualizza un messaggio e richiedere un semplice riconoscimento che il messaggio è stato letto, di solito facendo clic su "OK"; in altri casi viene richiesta una decisione su un'azione da intraprendere, facendo clic su "OK "o "Annulla". Talvolta gli avvisi sono utilizzati anche per visualizzare una "disdetta", come nel caso della chiusura sia un intenzionale o non intenzionale di un'applicazione o del sistema operativo.

Inserimento dati

[modifica | modifica wikitesto]

Le finestre di dialogo sono pensate per essere finestre piccole e transitorie che non richiedono un'interazione approfondita da parte dell'utente, quindi è importante assicurarsi che l'immissione dei dati sia efficiente. È doveroso[2]:

Disclosure control in una finestra macOS
Disclosure control in una finestra macOS
[modifica | modifica wikitesto]

Classificazione

[modifica | modifica wikitesto]

Le finestre di dialogo vengono distinte in modali e non modali, a seconda se l'interazione con il software viene bloccata o meno all'inizializzazione del dialogo.

Le finestre di dialogo modali (modal, in inglese) bloccano l'esecuzione del programma che potrebbe richiedere alcune informazioni aggiuntive prima di poter continuare, o può semplicemente richiedere di confermare un'azione potenzialmente dannosa. Le finestre di dialogo modali sono generalmente considerate come cattive soluzioni di progettazione in quanto tendono a produrre errori.

Le finestre di dialogo non modali (non-modal o modeless, in inglese) vengono utilizzate quando l'informazione richiesta non è essenziale per continuare, e così la finestra può essere lasciata aperta mentre si continua a lavorare altrove. In generale, una buona progettazione del software richiede finestre di questo tipo.

Finestra modale
Finestra modale

Le finestre di dialogo sono classificate come "modali" o "non modali", a seconda che blocchino l'interazione con il software che ha avviato la finestra di dialogo. Il tipo di finestra di dialogo visualizzata dipende dall'interazione dell'utente desiderata.

Il tipo più semplice di finestra di dialogo è l'avviso , che visualizza un messaggio e può richiedere una conferma che il messaggio è stato letto, di solito facendo clic su "OK", o una decisione se un'azione deve procedere o meno, facendo clic su "OK "o" Annulla". Gli avvisi vengono utilizzati anche per visualizzare un "avviso di terminazione", a volte che richiede la conferma della lettura dell'avviso, in caso di chiusura intenzionale o involontaria ("arresto anomalo") di un'applicazione o del sistema operativo. (Ad esempio "Gedit ha riscontrato un errore e deve essere chiuso.") Sebbene questo sia un modello di interazione frequente per le finestre di dialogo modali,esperti di usabilità in quanto inefficaci per il suo uso previsto, che è quello di proteggere dagli errori causati da azioni distruttive, e per il quale esistono alternative migliori[3][4].

Un esempio di una finestra di dialogo è la casella delle informazioni che si trova in molti programmi software, che di solito visualizza il nome del programma, il suo numero di versione e può anche includere informazioni sul copyright.

Modeless

[modifica | modifica wikitesto]

Le finestre di dialogo modali erano originariamente concepite per avvisare gli utenti di un errore o di un altro stato del sistema che richiedeva un'azione immediata da parte dell'utente. In questi casi, era essenziale che gli utenti venissero interrotti per correggere l'errore . Pertanto, posizionare la finestra di dialogo al centro dello schermo come punto focale dell'interfaccia, lo ha reso molto efficace. Il grande vantaggio di tali finestre era che attiravano l'attenzione degli utenti e consentivano loro di riconoscere il problema e correggerlo rapidamente.

Finestra modeless su macOS
Finestra modeless su macOS

Tuttavia, questo uso originale si è evoluto e successivamente le finestre di dialogo e le finestre modali vengono utilizzate in modo convincente per attirare l'attenzione dell'utente per motivi legittimi o meno legittimi[5]. Tuttavia le finestre modali presentano una serie di svantaggi:

A causa di questi svantaggi, le finestre di dialogo modali diventano problematiche se utilizzate per attività non critiche. Per questo sono state inventate le finestre modeless.

Le finestre di dialogo non modali (modeless) vengono utilizzate quando le informazioni richieste non sono essenziali per continuare e quindi la finestra può essere lasciata aperta mentre il lavoro continua altrove. Un tipo di finestra di dialogo non modale è una barra degli strumenti separata dall'applicazione principale o che può essere scollegata dall'applicazione principale e gli elementi nella barra degli strumenti possono essere utilizzati per selezionare determinate caratteristiche o funzioni dell'applicazione.

In generale, una buona progettazione del software richiede che le finestre di dialogo siano di questo tipo, ove possibile, poiché non obbligano l'utente a una particolare modalità di funzionamento. Un esempio potrebbe essere una finestra di dialogo delle impostazioni per il documento corrente, ad esempio lo sfondo e i colori del testo. L'utente può continuare ad aggiungere testo alla finestra principale qualunque sia il colore, ma può cambiarlo in qualsiasi momento utilizzando la finestra di dialogo. Spesso la stessa funzionalità può essere realizzata dai pulsanti della barra degli strumenti nella finestra principale dell'applicazione.

System modal

[modifica | modifica wikitesto]

Le finestre system modal impediscono l'interazione con qualsiasi altra finestra sullo schermo e impediscono agli utenti di passare a un'altra applicazione o di eseguire qualsiasi altra azione finché il problema presentato nella finestra di dialogo non viene risolto[6]. Le finestre di dialogo modali di sistema erano più comunemente utilizzate in passato su sistemi single tasking in cui poteva essere eseguita una sola applicazione alla volta. Un esempio è la schermata di spegnimento di molte versioni di Windows[7].

Application modal

[modifica | modifica wikitesto]

Le finestre application modal interrompono temporaneamente il programma: l'utente non può continuare senza chiudere la finestra di dialogo; il programma potrebbe richiedere alcune informazioni aggiuntive prima di poter continuare, o potrebbe semplicemente voler confermare che l'utente desidera procedere con un'azione potenzialmente pericolosa (finestra di dialogo di conferma). I professionisti dell'usabilità generalmente considerano i dialoghi modali come cattive soluzioni di progettazione, poiché sono inclini a produrre errori di modalità.

Le azioni pericolose dovrebbero essere annullabili ove possibile; una finestra di dialogo di avviso modale che appare inaspettatamente o che viene chiusa automaticamente (perché l'utente ha sviluppato un'abitudine) non proteggerà dall'azione pericolosa.

Una finestra di dialogo modale interrompe il flusso di lavoro principale. Questo effetto è stato ricercato dallo sviluppatore perché si concentra sul completamento dell'attività in corso o rifiutato perché impedisce all'utente di passare a un'attività diversa quando necessario.

Document modal

[modifica | modifica wikitesto]

Il concetto di document modal è stato utilizzato in particolare in macOS e Opera Browser. Nel primo caso, vengono visualizzati come "fogli" allegati a una finestra principale. Queste finestre di dialogo bloccano solo quella finestra fino a quando l'utente la chiude, consentendo di continuare il lavoro in altre finestre, anche all'interno della stessa applicazione[8].

In macOS, le finestre di dialogo sembrano provenire da uno slot nella finestra principale e vengono visualizzate con un'animazione di rinforzo. Questo aiuta a far capire all'utente che la finestra di dialogo è allegata alla finestra genitore, non solo mostrata di fronte ad essa. Non è possibile eseguire alcun lavoro nel documento sottostante stesso mentre è visualizzata la finestra di dialogo, ma la finestra principale può ancora essere spostata, ridimensionata e ridotta a icona e altre finestre possono essere portate in primo piano in modo che l'utente possa lavorarci[9]:

Lo stesso tipo di finestra di dialogo può essere confrontato con le finestre di dialogo modali "standard" utilizzate in Windows e in altri sistemi operativi.

Le somiglianze includono:

Le differenze sono:

Entrambi i meccanismi hanno dei difetti:

Nel web

[modifica | modifica wikitesto]

Le finestre di dialogo sono ben viste dal punto di vista usabile e accessibile per i seguenti tipi di interazioni[10]:

I partecipanti non rispondono positivamente all'utilizzo di modali per[10]:

Esempio in HTML, CSS e JS

[modifica | modifica wikitesto]
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}

.modal {
  display:
  position:
  z-index: 1;
  padding-top: 100px;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgb(0,0,0);
  background-color: rgba(0,0,0,0.4);
}

.modal-content {
  background-color: #fefefe;
  margin: auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
}

.close {
  color: #aaaaaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}
</style>
</head>
<body>

<h2>Esempio</h2>

<button id="myBtn">Open Modal</button>

<div id="myModal" class="modal">

  <div class="modal-content">
    <span class="close">&times;</span>
    <p>L'azione è andata a buon fine</p>
  </div>

</div>

<script>
var modal = document.getElementById("myModal");

var btn = document.getElementById("myBtn");

var span = document.getElementsByClassName("close")[0];

btn.onclick = function() {
  modal.style.display = "block";
}

span.onclick = function() {
  modal.style.display = "none";
}

window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

</body>
</html>

Note

[modifica | modifica wikitesto]
  1. ^ (EN) Dialogue box definition and meaning | Collins English Dictionary, su www.collinsdictionary.com. URL consultato il 4 marzo 2021.
  2. ^ a b Dialogs - Windows and Views - macOS - Human Interface Guidelines - Apple Developer, su developer.apple.com. URL consultato il 4 marzo 2021.
  3. ^ Jef Raskin, The Humane Interface, Addison Wesley, 2000, ISBN 0-201-37937-6.
  4. ^ Alan Cooper, About Face 2.0: The Essentials of Interaction Design, Wiley, 17 marzo 2003, ISBN 0-7645-2641-3.
  5. ^ (EN) World Leaders in Research-Based User Experience, Modal & Nonmodal Dialogs: When (& When Not) to Use Them, su Nielsen Norman Group. URL consultato il 4 marzo 2021.
  6. ^ Aza Raskin, A List Apart: Never Use a Warning When you Mean Undo
  7. ^ usability - What is a Modal Dialog Window?, su User Experience Stack Exchange. URL consultato il 4 marzo 2021.
  8. ^ How to Use Modality in Dialogs (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features), su docs.oracle.com. URL consultato il 4 marzo 2021.
  9. ^ User Experience: Apple Human Interface Guidelines: Types of Dialogs and When to Use Them, su mirror.informatimago.com. URL consultato il 4 marzo 2021.
  10. ^ a b What are the pros and cons of using modals in web interfaces?, su Quora. URL consultato il 4 marzo 2021.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica