List of usage examples for org.eclipse.jface.fieldassist IControlContentAdapter setControlContents
public void setControlContents(Control control, String contents, int cursorPosition);
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()); } }