Bonjour,

Nouveau dans le beau monde du single sourcing RCP-RAP, j'ai une question à poser concernant la gestion de fichiers.

En Eclipse RCP, si je veux sauvegarder une image, texte, n'importe quoi, je lance juste un FileDialog pour connaitre la destination et j'enregistre le fichier.
En Eclipse RAP à cause de la structure client-serveur, je ne peux faire ça. Selon moi il faut d'abord créer un fichier temporaire sur le serveur, puis afficher un lien de téléchargement pour que l'utilisateur puisse télécharger le fichier.

Or, l'affichage de lien de download comme indiqué sur le RAP/FAQ est du code RWT pur, non inclus dans SWT, donc impossible de faire du single sourcing ici.

Y aurait-il une solution possible pour garder un seul code RCP-RAP dans ce cas-là ?

Ca ne me parait pas impossible. La chose que je n'arrive pas à comprendre et qui pourrait me sauver, serait d'inclure mon code spécifique à RCP ou RAP dans des Fragments, et de lancer indépendamment l'une ou l'autre méthode en fonction du Target Platform. Mais là se pose alors une autre question qui est encore obscure pour moi en single sourcing:

Comment faire en sorte que l'application détecte dynamiquement la Target Platform ? Peut-être par PlatformUI ou Activator ?

Pour préciser l'idée concernant l'export en single sourcing.

Je compte:
  • Créer d'abord un fichier temporaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        File file = File.createTempFile("temp", ".tmp");
        FileUtils.saveFile(file);
  • Ensuite en fonction du Target Platform lancer deux types de code différents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        FileDialog fd = new FileDialog(Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.SAVE);
        ct.getANALYSIS_PATH()+getPartName()+".svg"));
        fd.setFileName(fileNameTemp);
        fd.setFilterExtensions(filterExt);
        String fileName = fd.open();
        if(fileName!=null){
            try {
                copy(file.getAbsolutePath(), fileName);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        //  If we run on RWT (Eclipse RAP)
        DownloadServiceHandler.createDownloadUrl(file.getAbsolutePath());

Quelqu'un saurait-il m'indiquer comment procéder ?

Merci d'avance pour votre aide.