😕Interfaces simples
Ne vous aventurez pas dans les options avancés, restez ici !
Afin de simplifier le processus de création d'interface, il existe de nombreuses choses faites pour vous simplifier la vie. A moins que vous soyez sur que c'est insuffisant, restez dans les sentiers cloutés.
Introduction
Ce que vous allez créer ici est un moule qui permettra a l'utilisateur du Mocka (et de votre extension) d'utiliser vos interfaces. Afin de bien différencier le moule du produit, le 'moule' sera appelé par la suite 'ExtInterface' - pour interface d'extension. Une des choses importantes pour votre extension, c'est que l'utilisateur puisse bien ajouter une ou plusieurs fois chaque interface. L'intérêt de l'extinterface est double : d'enregistrer qu'une seule fois le "nom" d'une extInterface, mais également de pouvoir créer autant d'interfaces que l'on souhaite.
ExtInterface
Dans votre fichier init, vous aller envoyer toute vos extInterfaces au Mocka pour que ce dernier puisse gérer le menu contextuel et les pages. Pour ça, c'est très simple :
function FileInit(mocka){
mocka.AddExtension(extension);
}Je vous vois déjà froncer les sourcils. Ne vous en faites pas, je vais tout expliquer. En fait, une extension peut contenir plusieurs type d'interfaces (donc plusieurs extInterface). Donc vous devez juste créer un tableau de vos extInterfaces, créer une extension tel qu'il suit, et le tour est joué !
function FileInit(mocka){
mocka.AddExtension(new Extension("File", extInterfaces);
}Ne reste plus qu'a créer la ou les ExtInterface.
function FileInit(mocka){
extInterfaces = [new ExtInterface("Explorateur de fichier", FileExplorer, defaultCreateFileExplorer)];
mocka.AddExtension(new Extension("File", extInterfaces);
}Ou FileExplorer correspond a la classe de l'interface, et defaultCreateFileExplorer la fonction utilisée qui retourner l'interface provenant de la classe donné en second paramètre.
FileExplorer doit impérativement hériter, même indirectement, de la classe Interface
Si vous avez fait tout ça, vous devrier être prêt pour attaquer la classe principale. Dans cet exemple, il s'agira de la classe FileExplorer(x,y).
Interface
Une interface doit impérativement être l'enfant (directement ou indirectement) enfant de la classe Interface.
Vous pouvez directement en hériter, ou utiliser les classes intermédiaires que j'ai créé permettant plus de liberté au niveau des affichages entre interfaces. -> La 'BaseInterface' et la 'ConnectedInterface' prennent toute deux un paramètre 'interfaces'. Dans cette liste, vous devez y mettre des classes héritant de la classe 'Interface'. A chaque fois que vous appelerez le 'draw' sur la page parente, cette dernière le rappelera sur votre classe, plus sur toute les interfaces dont la classe est dans la liste 'interfaces'. Les interfaces qui peuvent être appelée doivent impérativement hériter soit de 'ConnectedInterface' ou 'LinkedInterface'. Peu clair ? Voici un exemple :
A chaque fois qu'une interface FileExplorer (donc une instance) est 'draw', normalement toute les instances de 'FileExplorerInfo' et de 'FileExplorerNavBar' devraient l'être aussi. Pour que cela soit mis en place, il faut appeler la page. Pour cela, il va falloir créer la fonction draw. Il est important de donner en paramètre de cette fonction un "initiator", qui va correspondre a l'élément ayant demandé l'affichage. Vous allez en comprendre l'utilité après.
Et maintenant, ne reste qu'a vérifier si l'appel du draw vient de la page, ou pas. S'il vient de la page, alors c'est a ce moment qu'il vous faut executer tout votre code d'affichage, sinon, ça veut dire que toute les interfaces liées n'ont pas encore été ré-affichées. Vous devrez donc appeler celui de la page, en donnant comme initiateur l'interface qui appelle !
Pour pouvoir 'facilement' savoir quelle page est celle concernée, je vous conseille de l'enregistrer à la création de votre interface.
Si vous avez bien suivi, alors vous avez remarqué que le 'FileExplorerInfo' n'appellera jamais en affichage le FileExplorer, parce que ce dernier est hérité d'une 'BaseInterface', donc ne peut pas être appelé depuis autre chose que lui même !
Ne reste à la fin qu'à rappeler le draw parent (très important !), et vous devriez être good !
On va donc pouvoir attaquer les propriétés des interfaces... Accrochez vous !
Last updated