Utilizzo delle copie di lavoro in un editor

Il plug-in principale di JDT fornisce delle API che consentono di creare, eliminare e modificare gli elementi Java in modo programmatico. Per informazioni sull'API fornita da JDT, vedere la sezione relativa alla manipolazione del codice Java.   

Un importante concetto nel modello Java è l'utilizzo di una copia in memoria di un'unità di compilazione, chiamata "copia di lavoro" (IWorkingCopy).  L'utilizzo di una copia di lavoro consente di modificare un'unità di compilazione in modo programmatico, prima di eseguire il commit delle modifiche alla risorsa sottostante.

Nell'interfaccia utente Java, un concetto parallelo è quello di consentire all'utente di modificare in modo esteso una risorsa prima di eseguire il commit della copia di lavoro presente nel file system.   Utilizzando una copia, l'implementazione UI consente all'utente di salvare il contenuto dell'editor Java su disco o di ritornare al contenuto originale.  

IWorkingCopyManager gestisce le copie di lavoro delle unità di compilazione Java utilizzate all'interno di un editor.   Quando si desidera modificare un'unità di compilazione in un editor, è necessario ottenere una copia di lavoro connettendo l'elemento di input dell'editor al gestore delle copie di lavoro. Le modifiche vengono eseguite sulla copia di lavoro.  

Di seguito è riportato un frammento di codice che illustra l'utilizzo del gestore delle copie di lavoro con un editor delle unità di compilazione:

    void modifyCompilationUnit(ICompilationUnit cunit) throws PartInitException, CoreException {
        IEditorPart editor= JavaUI.openInEditor(cunit);
        IEditorInput input= editor.getEditorInput();
        IWorkingCopyManager manager= JavaUI.getWorkingCopyManager();
        manager.connect(input);
        try {
            ICompilationUnit workingCopy= manager.getWorkingCopy(input);
            		// eseguire le modifiche sulla copia di lavoro utilizzando l'API del nucleo di JDT normale.
        	} finally {
            manager.disconnect(input);
        }
        	// mantenere le modifiche dell'editor oppure utilizzare editor.doSave(IProgressMonitor monitor)
        	// per salvare le modifiche in modo programmatico.
    }

Copyright IBM Corporation e altri 2000, 2003. Tutti i diritti riservati.