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

Source Code of edu.stanford.bmir.protege.web.client.ui.obo.XRefEditorImpl

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.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.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.google.gwt.user.client.ui.Widget;
import edu.stanford.bmir.protege.web.shared.DirtyChangedEvent;
import edu.stanford.bmir.protege.web.shared.DirtyChangedHandler;
import edu.stanford.bmir.protege.web.shared.obo.OBOXRef;

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

    interface XRefEditorImplUiBinder extends UiBinder<HTMLPanel, XRefEditorImpl> {

    }

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


    @UiField
    protected TextBoxBase databaseNameField;

    @UiField
    protected TextBoxBase databaseIdField;

    @UiField
    protected TextBoxBase descriptionField;


    private boolean dirty = false;


    public XRefEditorImpl() {
        HTMLPanel rootElement = ourUiBinder.createAndBindUi(this);
        initWidget(rootElement);
    }

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

    @UiHandler("databaseNameField")
    protected void handleDatabaseNameFieldChanged(ValueChangeEvent<String> event) {
        dirty = true;
        fireEvent(new DirtyChangedEvent());
        ValueChangeEvent.fire(this, getValue());
    }


    @UiHandler("databaseIdField")
    protected void handleDatabaseIdFieldChanged(ValueChangeEvent<String> event) {
        dirty = true;
        fireEvent(new DirtyChangedEvent());
        ValueChangeEvent.fire(this, getValue());
    }


    @UiHandler("descriptionField")
    protected void handleDescriptionFieldChanged(ValueChangeEvent<String> event) {
        dirty = true;
        fireEvent(new DirtyChangedEvent());
        ValueChangeEvent.fire(this, getValue());
    }

    @Override
    public boolean isWellFormed() {
        return (getDatabaseName().isEmpty() && getDatabaseId().isEmpty() && getDescription().isEmpty()) || (!getDatabaseName().isEmpty() && !getDatabaseId().isEmpty());
    }

    @Override
    public void setValue(OBOXRef object) {
        databaseNameField.setText(object.getDatabaseName());
        databaseIdField.setText(object.getDatabaseId());
        descriptionField.setText(object.getDescription());
        dirty = false;
    }

    @Override
    public void clearValue() {
        databaseNameField.setText("");
        databaseIdField.setText("");
        descriptionField.setText("");
    }

    @Override
    public Optional<OBOXRef> getValue() {
        String databaseName = getDatabaseName();
        if(databaseName.isEmpty()) {
            return Optional.absent();
        }
        String databaseId = getDatabaseId();
        if(databaseId.isEmpty()) {
            return Optional.absent();
        }
        String description = getDescription();
        return Optional.of(new OBOXRef(databaseName, databaseId, description));
    }


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

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

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



    private String getDescription() {
        return descriptionField.getValue().trim();
    }

    private String getDatabaseId() {
        return databaseIdField.getValue().trim();
    }

    private String getDatabaseName() {
        return databaseNameField.getValue().trim();
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.client.ui.obo.XRefEditorImpl

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.