blob: 95291fcfb8a6457e7e96d43d3cb4da030f2f02b8 [file] [log] [blame]
/**
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*
* This copyright notice shows up in the generated Java code
*/
package org.eclipse.osbp.xtext.blip.ui.contentassist;
import com.google.common.base.Objects;
import com.google.inject.Inject;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
import org.eclipse.osbp.xtext.blip.BlipItem;
import org.eclipse.osbp.xtext.blip.common.BlipHelper;
import org.eclipse.osbp.xtext.blip.ui.contentassist.AbstractBlipDSLProposalProvider;
import org.eclipse.osbp.xtext.blip.ui.contentassist.ImageFileNameTextApplier;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
/**
* see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
*/
@SuppressWarnings("all")
public class BlipDSLProposalProvider extends AbstractBlipDSLProposalProvider {
@Inject
private TerminalsProposalProvider provider;
@Inject
private BasicDSLProposalProviderHelper providerHelper;
@Override
public void completeBlipDtoPath_DtoPath(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
final String document = context.getViewer().getDocument().get().replace("\\\"", "\'\'");
int nextquote = context.getReplaceRegion().getOffset();
char character = document.charAt(nextquote);
while (((nextquote < document.length()) && (!Character.isWhitespace(character)))) {
{
int _nextquote = nextquote;
nextquote = (_nextquote + 1);
character = document.charAt(nextquote);
}
}
ITextViewer _viewer = context.getViewer();
int _offset = context.getReplaceRegion().getOffset();
int _offset_1 = context.getReplaceRegion().getOffset();
int _minus = (nextquote - _offset_1);
_viewer.setSelectedRange(_offset, _minus);
List<String> _availableDtoPaths = BlipHelper.getAvailableDtoPaths(((BlipItem) model));
for (final String proposal : _availableDtoPaths) {
StyledString _styledString = new StyledString(proposal);
acceptor.accept(this.doCreateInStringProposal(proposal, _styledString, null,
this.getPriorityHelper().getDefaultPriority(), context));
}
}
private ConfigurableCompletionProposal doCreateInStringProposal(final String proposal, final StyledString displayString, final Image image, final int priority, final ContentAssistContext context) {
final Point selectedRange = context.getViewer().getSelectedRange();
final int replacementOffset = selectedRange.x;
final int replacementLength = selectedRange.y;
final ConfigurableCompletionProposal result = this.doCreateProposal(proposal, displayString, image, replacementOffset, replacementLength);
result.setPriority(priority);
result.setMatcher(context.getMatcher());
result.setReplaceContextLength(context.getReplaceContextLength());
return result;
}
@Override
public void completeBlip_Image(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png");
}
public void imageFilePickerProposal(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor, final String fileExtensions) {
ICompletionProposal _createCompletionProposal = this.createCompletionProposal("Select image file...", context);
ConfigurableCompletionProposal fileName = ((ConfigurableCompletionProposal) _createCompletionProposal);
boolean _notEquals = (!Objects.equal(fileName, null));
if (_notEquals) {
ImageFileNameTextApplier applier = new ImageFileNameTextApplier();
applier.setExtensions(fileExtensions.split(","));
applier.setContext(context);
fileName.setTextApplier(applier);
}
acceptor.accept(fileName);
}
@Override
public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
}
@Override
public void complete_QualifiedNameWithWildcard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
}
@Override
public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_STRING(model, ruleCall, context, acceptor);
}
@Override
public void complete_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_ID(model, ruleCall, context, acceptor);
}
}