@Override
 public boolean isWellFormed() {
   return !getDisplayName().isEmpty()
       && types.isWellFormed()
       && assertions.isWellFormed()
       && sameAs.isWellFormed();
 }
  @Override
  public void setValue(
      final LabelledFrame<NamedIndividualFrame> frame, HasEntityDataProvider entityDataProvider) {
    editedFrame = frame.getFrame();
    displayNameField.setValue(frame.getDisplayName());
    iriField.setValue(editedFrame.getSubject().getIRI().toString());
    assertions.setValue(editedFrame.getPropertyValueList());
    setDirty(false, EventStrategy.DO_NOT_FIRE_EVENTS);

    List<OWLPrimitiveData> dataList = new ArrayList<OWLPrimitiveData>();
    for (OWLClass cls : editedFrame.getClasses()) {
      final Optional<OWLEntityData> rendering = entityDataProvider.getEntityData(cls);
      if (rendering.isPresent()) {
        dataList.add(rendering.get());
      }
    }
    OWLPrimitiveDataList list = new OWLPrimitiveDataList(dataList);
    types.setValue(list);

    List<OWLPrimitiveData> sameAsList = new ArrayList<OWLPrimitiveData>();
    for (OWLNamedIndividual individual : editedFrame.getSameIndividuals()) {
      Optional<OWLEntityData> individualRendering = entityDataProvider.getEntityData(individual);
      if (individualRendering.isPresent()) {
        sameAsList.add(individualRendering.get());
      }
    }
    sameAs.setValue(new OWLPrimitiveDataList(sameAsList));
  }
 @Override
 public void clearValue() {
   displayNameField.setText("");
   iriField.setText("");
   types.clearValue();
   assertions.clearValue();
   sameAs.clearValue();
 }
 /**
  * Sets whether this widget is enabled.
  *
  * @param enabled <code>true</code> to enable the widget, <code>false</code> to disable it
  */
 @Override
 public void setEnabled(boolean enabled) {
   this.enabled = enabled;
   displayNameField.setEnabled(enabled);
   iriField.setEnabled(false);
   types.setEnabled(enabled);
   assertions.setEnabled(enabled);
   sameAs.setEnabled(enabled);
 }
 @Override
 public Optional<LabelledFrame<NamedIndividualFrame>> getValue() {
   if (editedFrame == null) {
     return Optional.absent();
   }
   PropertyValueList propertyValueList = assertions.getValue().get();
   Set<OWLClass> rawTypes = getRawTypes();
   Set<OWLNamedIndividual> sameAs = getRawSameAs();
   NamedIndividualFrame reference =
       new NamedIndividualFrame(
           editedFrame.getSubject(), rawTypes, propertyValueList.getPropertyValues(), sameAs);
   return Optional.of(new LabelledFrame<NamedIndividualFrame>(getDisplayName(), reference));
 }
 public NamedIndividualFrameEditor(ProjectId projectId) {
   super(projectId);
   //        PropertyValueGridGrammar grammar = new PropertyValueGridGrammar();
   //        grammar.addProduction(PrimitiveType.ANNOTATION_PROPERTY, PrimitiveType.LITERAL);
   //        grammar.addProduction(PrimitiveType.ANNOTATION_PROPERTY, PrimitiveType.IRI);
   //        grammar.addProduction(PrimitiveType.OBJECT_PROPERTY, PrimitiveType.NAMED_INDIVIDUAL);
   //        grammar.addProduction(PrimitiveType.OBJECT_PROPERTY, PrimitiveType.CLASS);
   //        grammar.addProduction(PrimitiveType.DATA_PROPERTY, PrimitiveType.LITERAL);
   //        grammar.addProduction(PrimitiveType.DATA_PROPERTY, PrimitiveType.DATA_TYPE);
   assertions = new PropertyValueListEditor(projectId);
   assertions.setGrammar(PropertyValueGridGrammar.getNamedIndividualGrammar());
   types = new PrimitiveDataListEditor(projectId, PrimitiveType.CLASS);
   types.setPlaceholder("Enter class name");
   sameAs = new PrimitiveDataListEditor(projectId, PrimitiveType.NAMED_INDIVIDUAL);
   sameAs.setPlaceholder("Enter individual name");
   HTMLPanel rootElement = ourUiBinder.createAndBindUi(this);
   setWidget(rootElement);
   iriField.setEnabled(false);
 }
 public boolean isDirty() {
   return assertions.isDirty() || dirty || types.isDirty() || sameAs.isDirty();
 }