Package edu.stanford.bmir.protege.web.client.ui.notes.editor

Source Code of edu.stanford.bmir.protege.web.client.ui.notes.editor.NoteContentEditorViewImpl$NoteContentEditorViewImplUiBinder

package edu.stanford.bmir.protege.web.client.ui.notes.editor;

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.user.client.ui.*;
import edu.stanford.bmir.protege.web.client.ui.library.common.HasPlaceholder;
import edu.stanford.bmir.protege.web.client.ui.library.richtext.RichTextEditorPresenter;
import edu.stanford.bmir.protege.web.client.ui.library.richtext.RichTextEditorView;
import edu.stanford.bmir.protege.web.client.ui.library.richtext.RichTextToolbar;
import edu.stanford.bmir.protege.web.shared.DirtyChangedEvent;
import edu.stanford.bmir.protege.web.shared.DirtyChangedHandler;
import edu.stanford.bmir.protege.web.shared.notes.NoteContent;
import edu.stanford.bmir.protege.web.shared.notes.NoteType;

/**
* Author: Matthew Horridge<br>
* Stanford University<br>
* Bio-Medical Informatics Research Group<br>
* Date: 15/04/2013
*/
public class NoteContentEditorViewImpl extends Composite implements NoteContentEditorView {

    interface NoteContentEditorViewImplUiBinder extends UiBinder<HTMLPanel, NoteContentEditorViewImpl> {

    }

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

    @UiField
    protected TextBoxBase topicField;

    @UiField
    protected RichTextToolbar toolbar;

    @UiField
    protected RichTextEditorView bodyArea;


    private boolean dirty;

    public NoteContentEditorViewImpl() {
        HTMLPanel rootElement = ourUiBinder.createAndBindUi(this);
        initWidget(rootElement);
        RichTextEditorPresenter presenter = new RichTextEditorPresenter(toolbar, bodyArea);
    }

    @Override
    public void setMode(NoteContentEditorMode mode) {
        if (mode == NoteContentEditorMode.NEW_TOPIC) {
            setBodyPlaceholder("Enter comment");
            topicField.setVisible(true);
//            topicField.setEnabled(true);
        }
        else {
            setBodyPlaceholder("Enter reply");
            topicField.setVisible(false);
//            topicField.setEnabled(false);
        }
    }

    private void setBodyPlaceholder(String placeholder) {
        if (bodyArea instanceof HasPlaceholder) {
            ((HasPlaceholder) bodyArea).setPlaceholder(placeholder);
        }
    }


    @Override
    public void setValue(NoteContent object) {
        topicField.setText(object.getSubject().or(""));
        final String bodyHtml = object.getBody().or("");
        bodyArea.setText(bodyHtml);
        dirty = false;
    }


    @Override
    public void clearValue() {
        topicField.setText("");
        bodyArea.setText("");
        dirty = false;
    }

    @Override
    public Optional<NoteContent> getValue() {
        if (getBody().isEmpty()) {
            return Optional.absent();
        }
        NoteContent.Builder contentBuilder = NoteContent.builder();
        if (!getTopic().isEmpty()) {
            contentBuilder.setSubject(getTopic());
        }
        contentBuilder.setBody(getBody());
        contentBuilder.setNoteType(NoteType.COMMENT);
        return Optional.of(contentBuilder.build());
    }

    private String getBody() {
        return bodyArea.getText().trim();
    }

    private String getTopic() {
        return topicField.getText().trim();
    }

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

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

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

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

    @Override
    public boolean isWellFormed() {
        return getValue().isPresent();
    }

    @Override
    public Optional<Focusable> getInitialFocusable() {
        if(topicField.isVisible()) {
            return Optional.<Focusable>of(topicField);
        }
        else {
            return Optional.of((Focusable) bodyArea.getWidget());
        }
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.client.ui.notes.editor.NoteContentEditorViewImpl$NoteContentEditorViewImplUiBinder

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.