package org.example.entities.ui.quickfix; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.diagnostics.Diagnostic; import org.eclipse.xtext.ui.editor.model.IXtextDocument; import org.eclipse.xtext.ui.editor.model.edit.IModification; import org.eclipse.xtext.ui.editor.model.edit.IModificationContext; import org.eclipse.xtext.ui.editor.model.edit.ISemanticModification; import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider; import org.eclipse.xtext.ui.editor.quickfix.Fix; import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor; import org.eclipse.xtext.validation.Issue; import org.eclipse.xtext.xbase.lib.StringExtensions; import org.example.entities.EntitiesModelUtil; import org.example.entities.entities.Attribute; import org.example.entities.entities.Entity; import org.example.entities.validation.EntitiesValidator; @SuppressWarnings("all") public class EntitiesQuickfixProvider extends DefaultQuickfixProvider { @Fix(EntitiesValidator.HIERARCHY_CYCLE) public void removeSuperType(final Issue issue, final IssueResolutionAcceptor acceptor) { StringConcatenation _builder = new StringConcatenation(); _builder.append("Remove supertype \'"); String[] _data = issue.getData(); String _get = _data[0]; _builder.append(_get, ""); _builder.append("\' "); final ISemanticModification _function = new ISemanticModification() { @Override public void apply(final EObject element, final IModificationContext context) throws Exception { ((Entity) element).setSuperType(null); } }; acceptor.accept(issue, "Remove supertype", _builder.toString(), "delete_obj.gif", _function); } @Fix(Diagnostic.LINKING_DIAGNOSTIC) public void createMissingEntity(final Issue issue, final IssueResolutionAcceptor acceptor) { final ISemanticModification _function = new ISemanticModification() { @Override public void apply(final EObject element, final IModificationContext context) throws Exception { Entity _containerOfType = EcoreUtil2.<Entity>getContainerOfType(element, Entity.class); IXtextDocument _xtextDocument = context.getXtextDocument(); Integer _offset = issue.getOffset(); Integer _length = issue.getLength(); String _get = _xtextDocument.get((_offset).intValue(), (_length).intValue()); EntitiesModelUtil.addEntityAfter(_containerOfType, _get); } }; acceptor.accept(issue, "Create missing entity", "Create missing entity", "Entity.gif", _function); } @Fix(EntitiesValidator.INVALID_ENTITY_NAME) public void capitalizeEntityNameFirstLetter(final Issue issue, final IssueResolutionAcceptor acceptor) { String[] _data = issue.getData(); String _get = _data[0]; String _plus = ("Capitalize first letter of \'" + _get); String _plus_1 = (_plus + "\'"); final IModification _function = new IModification() { @Override public void apply(final IModificationContext context) throws Exception { final IXtextDocument xtextDocument = context.getXtextDocument(); Integer _offset = issue.getOffset(); final String firstLetter = xtextDocument.get((_offset).intValue(), 1); Integer _offset_1 = issue.getOffset(); String _firstUpper = StringExtensions.toFirstUpper(firstLetter); xtextDocument.replace((_offset_1).intValue(), 1, _firstUpper); } }; acceptor.accept(issue, "Capitalize first letter", _plus_1, "Entity.gif", _function); } @Fix(EntitiesValidator.INVALID_ATTRIBUTE_NAME) public void uncapitalizeAttributeNameFirstLetter(final Issue issue, final IssueResolutionAcceptor acceptor) { String[] _data = issue.getData(); String _get = _data[0]; String _plus = ("Uncapitalize first letter of \'" + _get); String _plus_1 = (_plus + "\'"); final ISemanticModification _function = new ISemanticModification() { @Override public void apply(final EObject element, final IModificationContext context) throws Exception { String[] _data = issue.getData(); String _get = _data[0]; String _firstLower = StringExtensions.toFirstLower(_get); ((Attribute) element).setName(_firstLower); } }; acceptor.accept(issue, "Uncapitalize first letter", _plus_1, "Attribute.gif", _function); } }