Domanda

Ho un pulsante che crea parti.Ho bisogno di ottenere la parte attiva attualmente visibile nella parte di parte di parte e lo sto memorizzando come una chiave per qualche valore.Come dovrei ottenere la parte attiva? Ho usato il seguente codice ma sta ottenendo tutte le parti nella partStack.

            MPart graphpart = partService
                    .createPart("com.abc.xyz.project.partDescriptor.1");
            MPartStack stack = (MPartStack) modelService.find(
                    "com.abc.xyz.project.partstack.2", application);

            for (int i = 0; i < stack.getChildren().size(); i++) {
                if (stack.getChildren().get(i).isVisible()) {
                    System.out.println("values"
                            + ((MPart) stack.getChildren().get(i)).getLabel());
                    application.getTransientData().put(
                            ((MPart) stack.getChildren().get(i)).getLabel(),
                            selectedFiles);
                }
            }
.

È stato utile?

Soluzione

Da un MPart è possibile ottenere il suo contenitore direttamente con:

final MElementContainer<MUIElement> container = part.getParent();
.

(questo sarà il MPartStack)

È quindi possibile ottenere gli stack Attualmente selezionati figlio con:

MUIElement selected = container.getSelectedElement();
.

Altri suggerimenti

Usando il genitore della parte e il suo elemento selezionato ha funzionato anche per me.partiservice.getactivepartpart () Non ha funzionato perché nella nostra applicazione abbiamo diverse pile di parte e avevo bisogno di una parte da una parte di una parte che non era a fuoco in quel momento. Dovevo anche lanciare il mumielement a un mpart perché avevo bisogno di restituire un mpart, non era un problema, dal momento che Mpart si estende dal muelement. Ecco il mio codice: Inserisci la descrizione dell'immagine qui

Ho trovato la risposta.Lavora ora.

for (int i = 0; i < stack.getChildren().size(); i++) {
                        if (partService.isPartVisible((MPart) stack.getChildren().get(i))) {

                System.out.println("Storage of values"
                        + ((MPart) stack.getChildren().get(i)).getLabel());
                application.getTransientData().put(
                        ((MPart) stack.getChildren().get(i)).getLabel(),
                        selectedFiles);
            }
        }
.

Dovremmo fare uso di ricambi per controllare la pila particolare è visibile o meno.

Questo è piuttosto semplice con Eclipse E4:

    .
  1. Iniettare l'epartservice

  2. Quindi ottenere da parti parti della parte attiva.

  3. Hier è un campione del mio aggiornamento.

    public class RefreshHandler {
    
        @Inject
        EModelService modelService;
        @Inject
        MWindow window;
        @Inject
        IEventBroker broker;
        @Inject
        EPartService partService;
    
    
        @Execute
        public void execute() {
            System.out.println(this.getClass().getSimpleName() + " called");
            MPart activePart = partService.getActivePart();
    
            if(activePart != null) {
                System.out.println("--->" + activePart.getElementId());
            }
        }
    
        @CanExecute
        public boolean canExecute() {
            MPerspective activePerspective = modelService.getActivePerspective(window);
            if (activePerspective != null && activePerspective.getElementId()
                    .equals(IApplicationUIElementID.PERSPECTIVE_WORKINGSTORE_ID)) {
                return true;
            }
            return false;
        }
    
    }
    
    .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top