2017-07-25 2 views
0

J'ai un éditeur standard E3 dans le monde actuel E4:Faire éditeur ne refermable

public class ProjectEditor extends EditorPart { 
    // implement 
} 

Enregistré comme:

<extension point="org.eclipse.ui.editors"> 
    <editor 
     class="com.qualitype.gpm.project.rcp.ProjectEditor" 
     icon="icons/obj16/project.gif" 
     id="com.qualitype.gpm.project.rcp.ProjectEditor" 
     name="%view.project" > 
    </editor> 
</extension> 

Je veux que l'éditeur soit toujours ouvert. Mais un paramètre similaire pour les vues est manquant dans le point d'extension.

En outre, pour une vue cela fonctionnerait:

public class ProjectPerspective implements IPerspectiveFactory { 

    public void createInitialLayout(IPageLayout layout) { 
     final IViewLayout projectLayout = layout.getViewLayout(ProjectEditor.ID); 
     projectLayout.setCloseable(false); 
    } 
} 

Mais bien sûr, pas pour les éditeurs. Puisque les deux éditeurs et la vue sont techniquement la même chose (pièces de workbench), cela devrait être possible. Comment puis-je empêcher l'utilisateur de fermer mon éditeur?

Répondre

0

Vous pouvez supprimer le 'X' proche dans l'onglet de l'éditeur en effaçant le drapeau fermable MPart. Vous pouvez le faire dans la méthode init de l'éditeur:

@Override 
public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException 
{ 
    super.init(site, editorInput); 

    MPart part = getSite().getService(MPart.class); 
    part.setCloseable(false); 

Mais l'action « Fichier> Fermer » sera toujours en mesure de fermer l'éditeur car il ne vérifie pas le drapeau refermable et n'a pas de concept d'un éditeurs fermés.

+0

Comment faire la même chose sur le modèle e3 ui? – Raghu

+0

@Raghu Cette réponse est pour un éditeur e3 (mais uniquement lors de l'utilisation d'une version Eclipse 4.x). –

+0

J'ai essayé mais ça ne marche pas. J'utilise kepler. Voici mon code Objet mPart = getSite(). GetService (MPart.class); if (mPart instanceof MPart) { MPart part = (MPart) mPart; part.setCloseable (false); } Il s'exécute bien mais je peux toujours voir le bouton de fermeture sur l'éditeur – Raghu

0

Les concepteurs ne sont pas conçus pour être fermés. Ils s'ouvrent sur une ressource spécifique (ou autre entrée) et sont destinés à être fermés au gré des utilisateurs.

Si vous avez besoin d'une pièce non fermable, utilisez une vue. Vous pouvez laisser une vue implémenter ISaveable pour qu'elle participe au cycle de vie save.

+0

Ce n'est pas l'économie dont j'ai besoin, mais l'empilement de vues et d'éditeurs dans la même pile. C'est pourquoi cette partie est un éditeur. –

+0

Pourquoi voudriez-vous mélanger les éditeurs et les vues? Les concepts d'éditeurs et de vues sont fondamentalement différents et il est impossible de les empiler, du moins pas en e3. Pouvez-vous fournir un contexte? –

+0

E4 regroupe les vues et les éditeurs, donc ils ne peuvent pas être si différents. Et le client ne comprend pas non plus la différence (et c'est la raison pour laquelle je dois empiler des éditeurs et des vues). –