Cette page est une liste de conseils pour adapter les systèmes (sous-répertoires jmri.jmrix) vers le nouveau format multi-système. C'est clairement un travail en cours!
Fondamentalement, vous devez obtenir toutes les variables statiques et les ()méthodes en instance hors du code. A leur place, vous mettrez des références à des procédures spécifiques d'un objet SystemConnectionMemo qui porte les références qui ont l'habitude d'être statiques.
Dans le même temps, nous faisons la mise à jour du modèle Swing, et un couple d'autres nettoyages mineurs sur le code.
Ajouter toute ces choses
Modifier la classe ConnectionConfig pour prendre et enregistrer une référence à un objet SerialPortAdapter, et le retourner depuis la méthode getAdapter(). Aussi enlevez la métode() en instance et sa mise en Å"uvre.
protected void setIntrucsstance() { if (adapter == null) { adapter = new PR3Adapter(); } }
Modifier la classe d'adaptateur (exemple: PR3Adapter) pour éliminer l'exemple () et sa mise en Å"uvre.
La classe configurexml/ConnectionConfigXml doit avoir une procédure ajoutée:
protected void getInstance(Object object) { adapter = ((ConnectionConfig)object).getAdapter(); }Nous devrions sans doute le remanier plus tard, mais ceci est la forme actuelle pour veiller à ce que la bonne classe ConnectionConfig soit utilisée. Nous le laissons inchangé pour le moment pour éviter la concurrence avec les serial/network refactoring
Aussi, changez ceci
protected void getInstance() { adapter= new PR3Adapter(); }pour ceci:
protected void getInstance() { adapter = new LnHexFilePort(); }
Modifier la classe d'adaptateur (par exemple PR3Adapter) pour enlever l'exemple() de procédure et son application.
La classe configurexml / ConnectionConfigXml a besoin d'avoir une procédure ajoutée:
protected void getInstance(Object object) { adapter = ((ConnectionConfig)object).getAdapter(); }
Le gestionnaire doit également utiliser le préfixe du système au lieu d'une seule lettre système fixée. En utilisant par exemple ". startsWith (getSystemPrefix () +"T")" est une bonne approche. Ne pas juste vérifier que le nom commence par le préfixe parce par exemple "L" et "L2" ne sont pas univoques.
Placez là le code pour faire le menu , en cas de besoin quitter une sous-classe derrière la migration. (voir jmri.jmrix.loconet.LocoNetMenu et jmri.jmrix.loconet.swing.LocoNetMenu pour un modèle)
Créer une classe de fabrique ComponentFactory dans le souspaquet swing qui peut par exemple créer le menu, et, éventuellement, les arbres, etc
Modifier jmri.jmrix.ActiveSystemsMenu pour éliminer la classe, la création de menu est automatique à partir de maintenant. ((Chaque fois que vous créer et enregistrer un * SystemConnectionMemo, vous enregistrez aussi le ComponentFactory)
Pour garder les choses en actions, il est préférable de convertir les sous-classes JmriPane. Temporairement, la connexion du système est alors crééz via l'utilisation de classes internes, comme jmri.jmrix.loconet.locomon.LocoMonPane$Default Cela demande aux gens de réinitialiser leurs préférences pour les actions de démarrage , boutons, etc Nous n'allons pas les faire migrer pour pour eux.