Salta al contenuto
Nessun risultato
  • Account
  • Articoli e libri
  • bbpress template
  • Calcolatrice legge di Ohm
  • Calcolatrici e convertitori
  • Convertitore Farad condensatori
  • Convertitore Ohm resistenze
  • Convertitore sistema numerico
  • Datasheet
  • Download
  • GeXY… Idea!
  • Login
  • Password Reset
  • Privacy e condizioni
  • Progetti
  • Video list
GeXY
Login/registrati
  • Progetti
  • Forum
  • Risorse
    • Datasheets
    • Calcolatrici & convertitori
    • Libri & articoli
    • Video
GeXY

OpenLab Developer

14
  • Custom port per LogicBlock
  • Creare un project storage
  • Creare un LogicBlock
  • Setup ambiente di sviluppo e installazione librerie
  • Creare un logger storage
  • Creare un plugin base

OpenLab Studio Developer

8
  • Gestore dei tipi di dati
  • Gestore degli errori
  • Schemi validazione configurazione
  • Elenco eventi standard
  • Logger standard
  • Logger base
  • Gestore degli eventi
  • Gestore della UI

GeJSON

3
  • Validazione json
  • Parsing json
  • Uso di GeJSON
View Categories
  • Home
  • OpenLab Docs
  • OpenLab Developer
  • OpenLab Studio Developer
  • Gestore della UI

Gestore della UI

4 min read

OpenLab Studio >= 0.10.x
OpenLab SDK >= 1.0.x
Attenzione
Guida incompleta

Generale #

La gestione della UI è affidata alla classe WindowsManager. Per la UI viene usato il framework WPF. E’ pensata per gesitre in maniera centrale la UI di OpenLab Studio. Viene usata, ad esempio, per creare nuove view, recuperare i control della UI, fornisce i metodi per interagire con le varie parti della UI, etc. Questa classe gestisce i workspace, il menu di navigazione(albero a sinistra), gli shortkey, etc.

 

Gestione dei Control #

Per non passare le istanze dei componenti della ui( Control ) su e giu nel codice e per esporre i componenti che devono interagire ed essere recuperati in varie parti della UI, quisti vengono aggiunti ed estratti da una lista che associa un nome e l’istanza del componente, usando un Dictionary. E’ possibile quindi in qualsiasi punto aggiungere o estrarre un componente tramite il nome che gli è stato assegnato.

Esporre un Control #

I Component vengono istanziati all’interno di altre classi, spesso altri UserControl, ad esempio un TreeView può essere istanziato all’interno di un TableLayout, questo lo renderebbe nascosto all’esterno del TreeView a meno di renderlo public, oppure quando abbiamo più UserControl a cascata uno dentro l’altro saremmo costretti rendere public tutti gli UserControl intermedi per accedere a quelli più interni.

Per evitare questo comportamento ed esporre quello che serve e renderlo accessibile a livello globale della UI è possibile usare il metodo addUIComponent legando un nome all’istanza di un Control o sua derivata(Control è la classe base degli UserControl), come in questo esempio:

public partial class TextEditor : UserControl
{
    private TextBox txtContent;
    private FlowLayout layout;

    [...]

    public void createNewTextEditor(){
        txtContent = new TextBox();

        windowsManager.addUIComponent("txtContent", txtContent, false);
    }
    
}

Ora tramite il WindowsManager è possibile recuperare l’istanza di TextBox(txtContent) in modo globale da qualsiasi punto che abbia accesso all’istanza di WindowsManager.

Una volta che un componente è stato esposto non è più possibile nasconderlo(rimuoverlo dal WindowsManager)

Il terzo parametro(booleano) di addUIComponent indica, nel caso il Component fosse già esposto, deve essere sovrascritto o no. Se impostato su false e il Component esiste viene lanciato un eccezione Exception

Recupero di un Component #

Per recuperare un Component dal WindowsManager è possibile utilizzare il metodo getUIComponent, che tramite il nome assegnato al Component restituisce un oggetti di tipo Control di cui va fatto il casting nel tipo giusto del Component.

L’instanza di un Component può diventare nulla oppure non esistere nel WindowsManager, nel primo caso viene lanciata un eccezione NullReferenceException, nel secondo un KeyNotFoundException

Nell’esempio seguente viene recuperato il RichTextBox esposto prima, all’interno di un plugin:

public class PluginTest : Plugin
{
    [...]
    public void test()
    {
        try
        {
            ((TextBox)windowsManager.getUIComponent("TxtContent")).Text = "Hello world!!!";
        }catch(NullReferenceException){
            // Instance of Component is null
        }catch(KeyNotFoundException){
            // Component name not found
        }
    }
}

Lista dei Component esposti #

OpenLab studio stesso espone molti componenti ma è possibile che anche i plugin espongano i loro. E’ possibile recuperare la lista dei Component esposti tramite il metodo getUIComponentsNames che restituisce un array di stringhe con i nomi dei Component.

 

Gestione delle View #

Le View sono le schede del ViewsContainer, una View può contenere qualsiasi cosa, strumenti, grafici, editor di testo, etc. Possono essere dei tab nel ViewsContainer oppure essere staccati e diventare delle finestre.

Selezionare una View #

Selezionare una view significa renderla visibile. Se è un tab questo verrà selezionato mentre, se è una finestra, verrà portata in primo piano. Per farlo è possibile usare il metodo selectView che prende come argomento il nome della view oppure un l’instanza di una view.

windowsManager.selectView("viewTest");
Attenzione
L’uso di questo metodo può creare incongruenze nella UI, è preferibile usare l’acton ols.ui.selectView

Aggiungere una View #

E’ possibile aggiungere una view tramite il metodo addView, questo metodo prende come argomento il nome univoco della view, il titolo della view, l’istanza della classe Control con i componenti da visualizzare nella view, e un parametri booleani show, default true

Se esiste già una view con lo stesso nome viene lanciata un eccezione ViewAlreadyExistException.

Il metodo addView aggiunge la view al workspace corrente e al Nav Menu System, sotto la voce Current workspace->Views.

Nell’esempio seguente viene inserita una nuova view intitolata Test, con un label all’interno e viene selezionata.

Label lbl = new Label(),
lbl.Content = "test";
windowsManager.addView("test","Test",lbl,true);

 

Rimuovere una View #

Per rimuovere una view è possibile usare il metodo removeView. Questo prende come argomento il nome oppure l’istanza della view, se la view non esiste viene lanciata un eccezione ViewNotExistException.

windowsManager.removeView("test");

#

Updated on 07/10/2025

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

Powered by BetterDocs

Table of Contents
  • Generale
  • Gestione dei Control
    • Esporre un Control
    • Recupero di un Component
    • Lista dei Component esposti
  • Gestione delle View
    • Selezionare una View
    • Aggiungere una View
    • Rimuovere una View
Copyright © 2026 - Tema WordPress sviluppato da CreativeThemes