Disattivazione Salva Button quando errori di convalida si verificano in un Eclipse-RAP Applicazione

StackOverflow https://stackoverflow.com/questions/4839083

  •  27-10-2019
  •  | 
  •  

Domanda

Stiamo usando Eclipse API nel nostro RAP application.This utilizza Eclipse Modeling lavoro della struttura. Quando una pagina viene modificata, modello si sporca e, di conseguenza, pulsante Salva viene attivato.

Nelle nostre pagine editor, quando mai v'è un errore nella pagina, abbiamo impostato il flag di convalida della pagina Editor per falso, che a sua volta display rosso colorato segni sulla page.Then solito pulsante Salva sta diventando abilitato .

Ma, voglio cambiare questo behavior.When alcuni appare il simbolo errore nella pagina, io non voglio ottenere il pulsante Salva abilitato, .Non dovrebbe consentire all'utente di salvare il modello in fase di errore. Il pulsante Salva dovrebbe essere disattivata, Come posso raggiungere questo obiettivo. Si prega di chiarire il mio dubbio.

È stato utile?

Soluzione

L'editor generato da EMF utilizza un commandstacklistener per sparare un PROP_DIRTY per l'editor. Se questa proprietà viene licenziato, il quadro sottostante chiederà ai Method Editor #isDirty per lo stato di sporcizia. Questo è il luogo in cui è possibile implementare la logica.

@Override
public boolean isDirty() {
    Diagnostic diagnostic = validateMyModel();
    return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded() && diagnostic.getSeverity() == Diagnostic.OK;
}

Questo caso non copre il caso d'uso, che l'editor avrebbe potuto essere già sporco quando l'utente effettua una modifica non valida sul modello.

Ma questo non è il migliore IMHO modo. Perché se l'utente chiude l'editor si perdono tutte le modifiche del modello, senza alcuna notifica (a causa della mancanza sporco-bandiera). Quindi probabilmente ha fatto 100 modifiche valide, 1 valida e perde il suo modello modificato.

Un modo migliore è quello di mostrare un avviso messaggio, se l'utente vuole salvare la finestra di dialogo. Se ci sono errori nella finestra di dialogo l'editor non può cambiare il suo stato da sporco di non-sporca e l'utente deve

  • correggere tutti erros o
  • chiudere l'editor e perde tutti i suoi changens

Per raggiungere questo è necessario implementare nel metodo doSave (IProgressMonitor progressMonitor) una finestra per mostrare gli errori. La parte più difficile è quello di ignorare l'impostazione predefinita, il comportamento di chiusura di un editor di sporco. Il banco da lavoro mostrerà una finestra di dialogo con, sì, no e Annulla Per ignorare questo comportamento è necessario implementare l'interfaccia org.eclipse.ui.ISaveablePart2 nel vostro editor per sovrascrivere il metodo promptToSaveOnClose (). In questo metodo ci deve essere ancora una volta la logica che i controlli per gli errori nel modello. Se ci sono errori, questo metodo deve restituire ISaveablePart2.CANCEL in modo che l'editor non è richiudibile finché ci sono errori nel modello di sporco.

HTH Tom

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