Package edu.stanford.bmir.protege.web.client.ui.obo

Source Code of edu.stanford.bmir.protege.web.client.ui.obo.OBOTermSynonymEditorImpl$OBOTermSynonymEditorImplUiBinder

package edu.stanford.bmir.protege.web.client.ui.obo;

import com.google.common.base.Optional;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.*;
import edu.stanford.bmir.protege.web.resources.WebProtegeResourceBundle;
import edu.stanford.bmir.protege.web.shared.DirtyChangedEvent;
import edu.stanford.bmir.protege.web.shared.DirtyChangedHandler;
import edu.stanford.bmir.protege.web.shared.obo.OBOTermSynonym;
import edu.stanford.bmir.protege.web.shared.obo.OBOTermSynonymScope;
import edu.stanford.bmir.protege.web.shared.obo.OBOXRef;

import java.util.Collections;
import java.util.List;

/**
* Author: Matthew Horridge<br>
* Stanford University<br>
* Bio-Medical Informatics Research Group<br>
* Date: 17/06/2013
*/
public class OBOTermSynonymEditorImpl extends Composite implements OBOTermSynonymEditor {

    interface OBOTermSynonymEditorImplUiBinder extends UiBinder<HTMLPanel, OBOTermSynonymEditorImpl> {

    }

    private static OBOTermSynonymEditorImplUiBinder ourUiBinder = GWT.create(OBOTermSynonymEditorImplUiBinder.class);

    @UiField
    protected TextBox synonymField;


    @UiField
    protected ListBox synonymTypeField;


    @UiField
    protected XRefListEditor xrefListField;


    private boolean dirty;


    public OBOTermSynonymEditorImpl() {
        WebProtegeResourceBundle.INSTANCE.style().ensureInjected();
        HTMLPanel rootElement = ourUiBinder.createAndBindUi(this);
        initWidget(rootElement);
        setupSynonymTypeField();
    }

    private void setupSynonymTypeField() {
        for(OBOTermSynonymScope synonymScope : OBOTermSynonymScope.values()) {
            synonymTypeField.addItem(synonymScope.getDisplayText());
        }
    }



    @Override
    public Widget getWidget() {
        return this;
    }


    @UiHandler("synonymField")
    protected void handleSynonymNameChanged(ValueChangeEvent<String> event) {
        setDirty(true);
        ValueChangeEvent.fire(this, getValue());
    }

    @UiHandler("synonymTypeField")
    protected void handleSynonymScopeChanged(ChangeEvent event) {
        setDirty(true);
        ValueChangeEvent.fire(this, getValue());

    }

    @UiHandler("xrefListField")
    protected void handleXRefsChanged(ValueChangeEvent<Optional<List<OBOXRef>>> event) {
        setDirty(true);
        ValueChangeEvent.fire(this, getValue());
    }



    @Override
    public boolean isWellFormed() {
        return true;
    }

    @Override
    public void setValue(OBOTermSynonym object) {
        synonymField.setValue(object.getName());
        synonymTypeField.setSelectedIndex(object.getScope().ordinal());
        xrefListField.setValue(object.getXRefs());
        dirty = false;
    }

    @Override
    public void clearValue() {
        synonymField.setText("");
        synonymTypeField.setSelectedIndex(0);
        xrefListField.clearValue();
        dirty = false;
    }

    @Override
    public Optional<OBOTermSynonym> getValue() {
        final String synonymName = getSynonymName();
        if(synonymName.isEmpty()) {
            return Optional.absent();
        }
        final List<OBOXRef> xrefs = xrefListField.getValue().or(Collections.<OBOXRef>emptyList());
        return Optional.of(new OBOTermSynonym(xrefs, synonymName, getSynonymScope()));
    }

    private OBOTermSynonymScope getSynonymScope() {
        final int selectedIndex = synonymTypeField.getSelectedIndex();
        if(selectedIndex == -1) {
            return OBOTermSynonymScope.EXACT;
        }
        return OBOTermSynonymScope.values()[selectedIndex];
    }

    private String getSynonymName() {
        return synonymField.getValue().trim();
    }


    private void setDirty(boolean dirty) {
        this.dirty = dirty;
        fireEvent(new DirtyChangedEvent());
    }

    @Override
    public boolean isDirty() {
        return dirty || xrefListField.isDirty();
    }

    @Override
    public HandlerRegistration addDirtyChangedHandler(DirtyChangedHandler handler) {
        return addHandler(handler, DirtyChangedEvent.TYPE);
    }

    @Override
    public HandlerRegistration addValueChangeHandler(ValueChangeHandler<Optional<OBOTermSynonym>> handler) {
        return addHandler(handler, ValueChangeEvent.getType());
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.client.ui.obo.OBOTermSynonymEditorImpl$OBOTermSynonymEditorImplUiBinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.