Example usage for org.eclipse.jface.fieldassist IControlContentAdapter setControlContents

List of usage examples for org.eclipse.jface.fieldassist IControlContentAdapter setControlContents

Introduction

In this page you can find the example usage for org.eclipse.jface.fieldassist IControlContentAdapter setControlContents.

Prototype

public void setControlContents(Control control, String contents, int cursorPosition);

Source Link

Document

Set the contents of the specified control to the specified text.

Usage

From source file:org.dawnsci.common.widgets.celleditor.ExpresionCellEditor.java

License:Open Source License

private void enableContentProposal(IContentProposalProvider contentProposalProvider, KeyStroke keyStroke,
        char[] autoActivationCharacters) {
    contentProposalAdapter = new ContentProposalAdapter(text, new TextContentAdapter(), contentProposalProvider,
            keyStroke, autoActivationCharacters);

    contentProposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_IGNORE);

    // Listen for popup open/close events to be able to handle focus events correctly
    contentProposalAdapter.addContentProposalListener(new IContentProposalListener2() {

        public void proposalPopupClosed(ContentProposalAdapter adapter) {
            popupOpen = false;/* w  ww  .  j a  v  a 2s.c om*/
        }

        public void proposalPopupOpened(ContentProposalAdapter adapter) {
            popupOpen = true;
        }
    });

    contentProposalAdapter.addContentProposalListener(new IContentProposalListener() {

        @Override
        public void proposalAccepted(IContentProposal proposal) {
            IContentProposalProvider provider = contentProposalAdapter.getContentProposalProvider();

            Control control = ExpresionCellEditor.this.getControl();

            if (provider != null && provider instanceof ExpressionFunctionProposalProvider) {

                int[] lastMatchBounds = ((ExpressionFunctionProposalProvider) provider).getLastMatchBounds();
                int lastPosition = ((ExpressionFunctionProposalProvider) provider).getLastPosition();
                IControlContentAdapter contentAdapter = contentProposalAdapter.getControlContentAdapter();
                String text = contentAdapter.getControlContents(control);

                if (text.isEmpty()) {
                    contentAdapter.setControlContents(control, proposal.getContent(),
                            proposal.getContent().length());
                    return;
                }

                if (lastPosition > lastMatchBounds[1]) {
                    StringBuilder builder = new StringBuilder();
                    builder.append(text.substring(0, lastPosition));
                    builder.append(proposal.getContent());
                    contentAdapter.setControlContents(control, builder.toString(),
                            lastPosition + proposal.getContent().length());
                    return;
                }

                String match = text.substring(lastMatchBounds[0], lastMatchBounds[1]);

                if (match.contains(":")) {
                    int index = match.lastIndexOf(":");
                    StringBuilder builder = new StringBuilder();
                    builder.append(text.substring(0, lastMatchBounds[0] + index + 1));
                    builder.append(proposal.getContent());
                    builder.append(text.substring(lastMatchBounds[1]));
                    contentAdapter.setControlContents(control, builder.toString(),
                            lastMatchBounds[0] + index + proposal.getContent().length() + 1);
                } else {
                    StringBuilder builder = new StringBuilder();
                    builder.append(text.substring(0, lastMatchBounds[0]));
                    builder.append(proposal.getContent());
                    builder.append(text.substring(lastMatchBounds[1]));
                    contentAdapter.setControlContents(control, builder.toString(),
                            lastMatchBounds[0] + proposal.getContent().length());
                }
            }
        }
    });
}

From source file:org.dawnsci.common.widgets.gda.function.internal.JexlContentProposalListener.java

License:Open Source License

@Override
public void proposalAccepted(IContentProposal proposal) {

    if (proposal instanceof JexlProposal) {
        JexlProposal jexlProposal = (JexlProposal) proposal;
        int[] lastMatchBounds = jexlProposal.getProvider().getLastMatchBounds();
        int lastPosition = jexlProposal.getProvider().getLastPosition();
        IControlContentAdapter contentAdapter = adapter.getControlContentAdapter();
        String text = contentAdapter.getControlContents(control);

        if (text.isEmpty()) {
            contentAdapter.setControlContents(control, proposal.getContent(), proposal.getContent().length());
            return;
        }/*ww w .  ja v  a  2 s . co  m*/

        if (lastPosition > lastMatchBounds[1]) {
            StringBuilder builder = new StringBuilder();
            builder.append(text.substring(0, lastPosition));
            builder.append(proposal.getContent());
            contentAdapter.setControlContents(control, builder.toString(),
                    lastPosition + proposal.getContent().length());
            return;
        }

        String match = text.substring(lastMatchBounds[0], lastMatchBounds[1]);

        if (match.contains(":")) {
            int index = match.lastIndexOf(":");
            StringBuilder builder = new StringBuilder();
            builder.append(text.substring(0, lastMatchBounds[0] + index + 1));
            builder.append(proposal.getContent());
            builder.append(text.substring(lastMatchBounds[1]));
            contentAdapter.setControlContents(control, builder.toString(),
                    lastMatchBounds[0] + index + proposal.getContent().length() + 1);
        } else {
            StringBuilder builder = new StringBuilder();
            builder.append(text.substring(0, lastMatchBounds[0]));
            builder.append(proposal.getContent());
            builder.append(text.substring(lastMatchBounds[1]));
            contentAdapter.setControlContents(control, builder.toString(),
                    lastMatchBounds[0] + proposal.getContent().length());
        }
    } else {
        IControlContentAdapter contentAdapter = adapter.getControlContentAdapter();
        String content = proposal.getContent();
        contentAdapter.setControlContents(control, content, content.length());
    }
}