From 1fe8e9da0ac15d3c57c2c77f586d7b4906eb6821 Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Fri, 13 Oct 2023 14:14:54 +0300 Subject: [PATCH 1/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../META-INF/MANIFEST.MF | 1 + bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml | 6 + .../ui/services/BslModuleRegionsService.java | 238 ++++++++++++++++++ .../ui/services/ModuleRegionInformation.java | 147 +++++++++++ .../bsl/ModuleStructureSection.java | 31 ++- .../templates/en/command_module.bsl | 2 - .../templates/en/form_module.bsl | 8 - .../templates/ru/command_module.bsl | 2 - .../templates/ru/form_module.bsl | 8 - 9 files changed, 416 insertions(+), 27 deletions(-) create mode 100644 bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java create mode 100644 bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF index 58557794..ac90b064 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF +++ b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF @@ -23,6 +23,7 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[6.0.0,7.0 com._1c.g5.v8.dt.bsl.common;version="[6.0.0,7.0.0)", com._1c.g5.v8.dt.bsl.documentation.comment;version="[4.0.0,5.0.0)", com._1c.g5.v8.dt.bsl.model;version="[5.0.0,6.0.0)", + com._1c.g5.v8.dt.bsl.model.util;version="4.7.0", com._1c.g5.v8.dt.bsl.services;version="[7.0.0,8.0.0)", com._1c.g5.v8.dt.bsl.ui;version="[9.0.0,10.0.0)", com._1c.g5.v8.dt.bsl.ui.contentassist;version="[8.0.0,9.0.0)", diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml index 9f0c599b..a6008869 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml +++ b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml @@ -368,5 +368,11 @@ class="com.e1c.v8codestyle.internal.bsl.ui.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.ui.qfix.ServerExecutionSafeModeFix"> + + + + diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java new file mode 100644 index 00000000..a4fa742d --- /dev/null +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -0,0 +1,238 @@ +/** + * Copyright (C) 2023, 1C + */ +package com.e1c.v8codestyle.internal.bsl.ui.services; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.xtext.nodemodel.INode; +import org.eclipse.xtext.nodemodel.util.NodeModelUtils; +import org.eclipse.xtext.ui.editor.model.IXtextDocument; + +import com._1c.g5.v8.dt.bsl.common.IBslModuleRegionsService; +import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor; +import com._1c.g5.v8.dt.common.Pair; +import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant; +import com.e1c.v8codestyle.bsl.ModuleStructureSection; + +/** + * Implementation of {@link IBslModuleRegionsService} + * + * @author Kuznetsov Nikita + */ +public class BslModuleRegionsService + implements IBslModuleRegionsService +{ + private static final String FORM_NAME = "Form"; //$NON-NLS-1$ + private static final String GRAPHICAL_SCHEME_NAME = "GraphicalScheme"; //$NON-NLS-1$ + + @Override + public Pair getRegionInformation(IXtextDocument document, + List regionPreprocessors, String suffix, int defaultOffset, ScriptVariant scriptVariant, + String eventOwnerRootName, boolean isMain, boolean isCommand, boolean isTable) + { + String declaredRegionName = + getDeclaredRegionName(eventOwnerRootName, isMain, isCommand, isTable, scriptVariant); + Map regionOffsets = + getRegionOffsets(document, regionPreprocessors, declaredRegionName, scriptVariant); + int offset = getRegionOffset(regionOffsets, declaredRegionName, suffix, defaultOffset, scriptVariant); + String regionName = null; + if (!isRegionExists(regionOffsets, declaredRegionName, suffix)) + { + regionName = suffix.isEmpty() ? declaredRegionName : (declaredRegionName + suffix); + } + return new Pair<>(offset, regionName); + } + + @Override + public String wrapByRegion(String content, String regionName, String beginRegion, String endRegion, String space, + String lineSeparator) + { + StringBuilder builder = new StringBuilder(); + builder.append(lineSeparator).append(beginRegion).append(space).append(regionName); + builder.append(content); + builder.append(endRegion); + builder.append(lineSeparator); + return builder.toString(); + } + + private Map getRegionOffsets(IXtextDocument document, + List regionPreprocessors, String targetRegionName, ScriptVariant scriptVariant) + { + ModuleStructureSection[] declaredRegionNames = ModuleStructureSection.values(); + Map regionOffsets = new HashMap<>(declaredRegionNames.length / 2); + for (RegionPreprocessor regionPreprocessor : regionPreprocessors) + { + INode nodeAfter = NodeModelUtils.findActualNodeFor(regionPreprocessor.getItemAfter()); + if (nodeAfter != null) + { + String preprocessorRegionName = regionPreprocessor.getName(); + for (int regionNameIndex = 0; regionNameIndex < declaredRegionNames.length; regionNameIndex++) + { + ModuleStructureSection moduleStructureSection = declaredRegionNames[regionNameIndex]; + String declaredRegionName = moduleStructureSection.getName(scriptVariant); + if ((preprocessorRegionName != null) + && isMatchingRegion(preprocessorRegionName, declaredRegionName)) + { + INode node = NodeModelUtils.findActualNodeFor(regionPreprocessor.getItem()); + if (node != null) + { + ModuleRegionInformation moduleRegionInformation = null; + if (!preprocessorRegionName.equals(declaredRegionName)) + { + if (!moduleStructureSection.isSuffixed()) + { + continue; + } + String suffix = getSuffixOfMatchingRegion(preprocessorRegionName, declaredRegionName); + moduleRegionInformation = regionOffsets.get(declaredRegionName); + if (moduleRegionInformation == null) + { + moduleRegionInformation = ModuleRegionInformation.create(document, node, nodeAfter); + if (moduleRegionInformation == null) + { + return regionOffsets; + } + } + moduleRegionInformation.addSuffix(suffix, document, node, nodeAfter); + } + if (moduleRegionInformation == null && !moduleStructureSection.isSuffixed()) + { + moduleRegionInformation = ModuleRegionInformation.create(document, node, nodeAfter); + } + if (moduleRegionInformation != null) + { + regionOffsets.put(declaredRegionName, moduleRegionInformation); + if ((targetRegionName != null) && targetRegionName.equals(preprocessorRegionName)) + { + return regionOffsets; + } + } + } + } + } + } + } + return regionOffsets; + } + + private int getRegionOffset(Map regionOffsets, String declaredRegionName, + String suffix, int defaultOffset, ScriptVariant scriptVariant) + { + int offset = defaultOffset; + boolean createNewRegion = !isRegionExists(regionOffsets, declaredRegionName, suffix); + ModuleRegionInformation regionOffset = regionOffsets.get(declaredRegionName); + if (regionOffset != null) + { + if (!suffix.isEmpty()) + { + ModuleRegionInformation suffixedRegionInformation = regionOffset.getInformationBySuffix(suffix); + if (suffixedRegionInformation != null) + { + return suffixedRegionInformation.getBeforeEndOffset(); + } + else if (createNewRegion) + { + return getNewRegionOffset(regionOffsets, declaredRegionName, suffix, defaultOffset, scriptVariant); + } + } + return regionOffset.getBeforeEndOffset(); + } + if (createNewRegion) + { + return getNewRegionOffset(regionOffsets, declaredRegionName, suffix, defaultOffset, scriptVariant); + } + return offset; + } + + private boolean isRegionExists(Map regionOffsets, String declaredRegionName, + String suffix) + { + ModuleRegionInformation moduleRegionInformation = regionOffsets.get(declaredRegionName); + return (moduleRegionInformation != null) + && (suffix.isEmpty() || moduleRegionInformation.getInformationBySuffix(suffix) != null); + } + + private int getNewRegionOffset(Map regionOffsets, String regionName, + String suffix, int defaultOffset, ScriptVariant scriptVariant) + { + boolean placeBefore = false; + int offset = regionOffsets.isEmpty() ? 0 : defaultOffset; + ModuleStructureSection[] declaredRegionNames = ModuleStructureSection.values(); + for (int regionNameIndex = 0; regionNameIndex < declaredRegionNames.length; regionNameIndex++) + { + ModuleStructureSection moduleStructuredSection = declaredRegionNames[regionNameIndex]; + String declaredRegionName = moduleStructuredSection.getName(scriptVariant); + if (declaredRegionName.equals(regionName)) + { + placeBefore = true; + } + ModuleRegionInformation regionInformation = regionOffsets.get(declaredRegionName); + if (regionInformation != null) + { + if (placeBefore && (suffix.isEmpty() || !declaredRegionName.equals(regionName))) + { + return regionInformation.getStartOffset(); + } + offset = placeBefore ? regionInformation.getStartOffset() : regionInformation.getEndOffset(); + } + } + return offset; + } + + private String getDeclaredRegionName(String eventOwnerRootName, boolean isMain, boolean isCommand, boolean isTable, + ScriptVariant scriptVariant) + { + if (eventOwnerRootName.equals(FORM_NAME)) + { + return getDeclaredRegionNameForForm(isMain, isCommand, isTable, scriptVariant); + } + if (eventOwnerRootName.equals(GRAPHICAL_SCHEME_NAME)) + { + return getDeclaredRegionNameForGraphicalScheme(scriptVariant); + } + return getDefaultRegionName(scriptVariant); + } + + private String getDeclaredRegionNameForForm(boolean isMain, boolean isCommand, boolean isTable, + ScriptVariant scriptVariant) + { + if (isMain) + { + return ModuleStructureSection.FORM_EVENT_HANDLERS.getName(scriptVariant); + } + else if (isCommand) + { + return ModuleStructureSection.FORM_COMMAND_EVENT_HANDLERS.getName(scriptVariant); + } + else if (isTable) + { + return ModuleStructureSection.FORM_TABLE_ITEMS_EVENT_HANDLERS.getName(scriptVariant); + } + return ModuleStructureSection.FORM_HEADER_ITEMS_EVENT_HANDLERS.getName(scriptVariant); + } + + private String getDeclaredRegionNameForGraphicalScheme(ScriptVariant scriptVariant) + { + return ModuleStructureSection.EVENT_HANDLERS.getName(scriptVariant); + } + + private String getDefaultRegionName(ScriptVariant scriptVariant) + { + return ModuleStructureSection.PRIVATE.getName(scriptVariant); + } + + private String getSuffixOfMatchingRegion(String regionName, String declaredRegionName) + { + return regionName.substring(declaredRegionName.length(), regionName.length()); + } + + private boolean isMatchingRegion(String regionName, String declaredRegionName) + { + int declaredRegionNameLength = declaredRegionName.length(); + return regionName.length() >= declaredRegionNameLength + && regionName.substring(0, declaredRegionNameLength).equals(declaredRegionName); + } +} diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java new file mode 100644 index 00000000..65b9afce --- /dev/null +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java @@ -0,0 +1,147 @@ +/** + * Copyright (C) 2023, 1C + */ +package com.e1c.v8codestyle.internal.bsl.ui.services; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.xtext.nodemodel.INode; + +import com.e1c.v8codestyle.internal.bsl.ui.UiPlugin; + +/** + * Provides offset and suffixes information of module region + * + * @author Kuznetsov Nikita + */ +public class ModuleRegionInformation +{ + private int startOffset; + private int endOffset; + private int insertOffset; + + private Map suffixes; + + /** + * Start offset of module region + * + * @return offset before region declaration + */ + public int getStartOffset() + { + return startOffset; + } + + /** + * End offset of module region + * + * @return offset after region declaration + */ + public int getEndOffset() + { + return endOffset; + } + + /** + * Before end offset inside module region + * + * @return offset before end of region declaration + */ + public int getBeforeEndOffset() + { + return insertOffset; + } + + /** + * Add suffix of the name of this module region + * + * @param suffix to add to suffixes map of this module region + * @param document to update offsets, can't be {@code null} + * @param node to update offsets, can't be {@code null} + * @param nodeAfter to update offsets, can't be {@code null} + */ + public void addSuffix(String suffix, IDocument document, INode node, INode nodeAfter) + { + if (suffixes == null) + { + suffixes = new HashMap<>(); + } + ModuleRegionInformation suffixRegionInformation = create(document, node, nodeAfter); + if (suffixRegionInformation != null) + { + suffixes.put(suffix, suffixRegionInformation); + int suffixStartOffset = suffixRegionInformation.getStartOffset(); + int suffixEndOffset = suffixRegionInformation.getEndOffset(); + int suffixInsertOffset = suffixRegionInformation.getBeforeEndOffset(); + if (insertOffset < suffixInsertOffset) + { + insertOffset = suffixInsertOffset; + endOffset = suffixEndOffset; + } + if (startOffset > suffixStartOffset) + { + startOffset = suffixStartOffset; + } + } + } + + /** + * Is module region has suffixes + * + * @return {@code true} if module region has suffixes, {@code false} otherwise + */ + public boolean hasSuffixes() + { + return (suffixes != null); + } + + /** + * Get module region information by suffix if exists + * + * @param suffix {@link String} suffix of declared name module region + * @return {@link ModuleRegionInformation} if suffix exists, {@code null} otherwise + */ + public ModuleRegionInformation getInformationBySuffix(String suffix) + { + if (hasSuffixes()) + { + return suffixes.get(suffix); + } + return null; + } + + private ModuleRegionInformation(int startOffset, int endOffset, int insertOffset) + { + this.startOffset = startOffset; + this.endOffset = endOffset; + this.insertOffset = insertOffset; + } + + /** + * Create and calculate module region offsets + * + * @param document actual {@link IDocument} to get offsets from, can't be {@code null} + * @param node {@link INode} to get offsets from, can't be {@code null} + * @param nodeAfter {@link INode} to get offsets from, can't be {@code null} + * @return module region information with calculated region offsets or {@code null} + */ + public static ModuleRegionInformation create(IDocument document, INode node, INode nodeAfter) + { + try + { + int startLine = node.getTotalStartLine() - 1; + int startOffset = document.getLineOffset((startLine <= 1) ? 0 : startLine); + int endOffset = nodeAfter.getTotalOffset(); + int insertOffset = document.getLineOffset(document.getLineOfOffset(nodeAfter.getTotalOffset())); + return new ModuleRegionInformation(startOffset, endOffset, insertOffset); + } + catch (BadLocationException ex) + { + UiPlugin.log(UiPlugin.createErrorStatus("Can't create module region information", ex)); //$NON-NLS-1$ + } + return null; + } +} diff --git a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/ModuleStructureSection.java b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/ModuleStructureSection.java index 599ea313..31ef3d2c 100644 --- a/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/ModuleStructureSection.java +++ b/bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/ModuleStructureSection.java @@ -15,29 +15,37 @@ package com.e1c.v8codestyle.bsl; import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant; /** - * Standard module structure dually-named section. + * Standard module structure dually-named section; + *
Sorted by priority of module regions standard. * * @author Dmitriy Marmyshev */ public enum ModuleStructureSection { - PUBLIC("Public", "ПрограммныйИнтерфейс"), //$NON-NLS-1$ //$NON-NLS-2$ - INTERNAL("Internal", "СлужебныйПрограммныйИнтерфейс"), //$NON-NLS-1$ //$NON-NLS-2$ - PRIVATE("Private", "СлужебныеПроцедурыИФункции"), //$NON-NLS-1$ //$NON-NLS-2$ VARIABLES("Variables", "ОписаниеПеременных"), //$NON-NLS-1$ //$NON-NLS-2$ - INITIALIZE("Initialize", "Инициализация"), //$NON-NLS-1$ //$NON-NLS-2$ + PUBLIC("Public", "ПрограммныйИнтерфейс"), //$NON-NLS-1$ //$NON-NLS-2$ EVENT_HANDLERS("EventHandlers", "ОбработчикиСобытий"), //$NON-NLS-1$ //$NON-NLS-2$ + INTERNAL("Internal", "СлужебныйПрограммныйИнтерфейс"), //$NON-NLS-1$ //$NON-NLS-2$ FORM_EVENT_HANDLERS("FormEventHandlers", "ОбработчикиСобытийФормы"), //$NON-NLS-1$ //$NON-NLS-2$ FORM_HEADER_ITEMS_EVENT_HANDLERS("FormHeaderItemsEventHandlers", "ОбработчикиСобытийЭлементовШапкиФормы"), //$NON-NLS-1$ //$NON-NLS-2$ + FORM_TABLE_ITEMS_EVENT_HANDLERS("FormTableItemsEventHandlers", "ОбработчикиСобытийЭлементовТаблицыФормы", true), //$NON-NLS-1$ //$NON-NLS-2$ FORM_COMMAND_EVENT_HANDLERS("FormCommandsEventHandlers", "ОбработчикиКомандФормы"), //$NON-NLS-1$ //$NON-NLS-2$ - FORM_TABLE_ITEMS_EVENT_HANDLERS("FormTableItemsEventHandlers", "ОбработчикиСобытийЭлементовТаблицыФормы"), //$NON-NLS-1$ //$NON-NLS-2$ + PRIVATE("Private", "СлужебныеПроцедурыИФункции"), //$NON-NLS-1$ //$NON-NLS-2$ + INITIALIZE("Initialize", "Инициализация"), //$NON-NLS-1$ //$NON-NLS-2$ DEPRECATED_REGION("Deprecated", "УстаревшиеПроцедурыИФункции"); //$NON-NLS-1$ //$NON-NLS-2$ private final String[] names; + private final boolean isSuffixed; + + ModuleStructureSection(String name, String nameRu, boolean isSuffixed) + { + this.names = new String[] { name, nameRu }; + this.isSuffixed = isSuffixed; + } ModuleStructureSection(String name, String nameRu) { - this.names = new String[] { name, nameRu }; + this(name, nameRu, false); } /** @@ -61,4 +69,13 @@ public enum ModuleStructureSection return names[scriptVariant.getValue()]; } + /** + * Is module region name used only with suffix + * + * @return true if region name must be suffixed, false otherwise + */ + public boolean isSuffixed() + { + return isSuffixed; + } } diff --git a/bundles/com.e1c.v8codestyle.bsl/templates/en/command_module.bsl b/bundles/com.e1c.v8codestyle.bsl/templates/en/command_module.bsl index 67df44fe..8adad148 100644 --- a/bundles/com.e1c.v8codestyle.bsl/templates/en/command_module.bsl +++ b/bundles/com.e1c.v8codestyle.bsl/templates/en/command_module.bsl @@ -2,9 +2,7 @@ #Region EventHandlers // Enter code here. - //%CURRENT_CODE% - #EndRegion #Region Private diff --git a/bundles/com.e1c.v8codestyle.bsl/templates/en/form_module.bsl b/bundles/com.e1c.v8codestyle.bsl/templates/en/form_module.bsl index f2dda768..d2d1171a 100644 --- a/bundles/com.e1c.v8codestyle.bsl/templates/en/form_module.bsl +++ b/bundles/com.e1c.v8codestyle.bsl/templates/en/form_module.bsl @@ -6,9 +6,7 @@ #Region FormEventHandlers // Enter code here. - //%CURRENT_CODE% - #EndRegion #Region FormHeaderItemsEventHandlers @@ -17,12 +15,6 @@ #EndRegion -#Region FormTableItemsEventHandlers // - -// Enter code here. - -#EndRegion - #Region FormCommandsEventHandlers // Enter code here. diff --git a/bundles/com.e1c.v8codestyle.bsl/templates/ru/command_module.bsl b/bundles/com.e1c.v8codestyle.bsl/templates/ru/command_module.bsl index 6fcfda8e..1be65a57 100644 --- a/bundles/com.e1c.v8codestyle.bsl/templates/ru/command_module.bsl +++ b/bundles/com.e1c.v8codestyle.bsl/templates/ru/command_module.bsl @@ -2,9 +2,7 @@ #Область ОбработчикиСобытий // Код процедур и функций - //%CURRENT_CODE% - #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/bundles/com.e1c.v8codestyle.bsl/templates/ru/form_module.bsl b/bundles/com.e1c.v8codestyle.bsl/templates/ru/form_module.bsl index ffedd000..d52a296d 100644 --- a/bundles/com.e1c.v8codestyle.bsl/templates/ru/form_module.bsl +++ b/bundles/com.e1c.v8codestyle.bsl/templates/ru/form_module.bsl @@ -6,9 +6,7 @@ #Область ОбработчикиСобытийФормы // Код процедур и функций - //%CURRENT_CODE% - #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы @@ -17,12 +15,6 @@ #КонецОбласти -#Область ОбработчикиСобытийЭлементовТаблицыФормы //<ИмяТаблицыФормы> - -// Код процедур и функций - -#КонецОбласти - #Область ОбработчикиКомандФормы // Код процедур и функций From a952272ae7d9bf689581db7a39f76e7880da3e6a Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Tue, 17 Oct 2023 09:38:46 +0300 Subject: [PATCH 2/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Copyright text change and style changes --- .../ui/services/BslModuleRegionsService.java | 15 ++++++++++++--- .../ui/services/ModuleRegionInformation.java | 19 ++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java index a4fa742d..d0590c94 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -1,6 +1,15 @@ -/** - * Copyright (C) 2023, 1C - */ +/******************************************************************************* + * Copyright (C) 2023, 1C-Soft LLC and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * 1C-Soft LLC - initial API and implementation + *******************************************************************************/ package com.e1c.v8codestyle.internal.bsl.ui.services; import java.util.HashMap; diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java index 65b9afce..ed24e2bc 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java @@ -1,6 +1,15 @@ -/** - * Copyright (C) 2023, 1C - */ +/******************************************************************************* + * Copyright (C) 2023, 1C-Soft LLC and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * 1C-Soft LLC - initial API and implementation + *******************************************************************************/ package com.e1c.v8codestyle.internal.bsl.ui.services; import java.util.HashMap; @@ -17,7 +26,7 @@ import com.e1c.v8codestyle.internal.bsl.ui.UiPlugin; * * @author Kuznetsov Nikita */ -public class ModuleRegionInformation +public final class ModuleRegionInformation { private int startOffset; private int endOffset; @@ -95,7 +104,7 @@ public class ModuleRegionInformation */ public boolean hasSuffixes() { - return (suffixes != null); + return suffixes != null; } /** From afb003f6ab1ef672acd02597c1bce3ad4bb4dd14 Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Wed, 18 Oct 2023 10:20:23 +0300 Subject: [PATCH 3/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minor changes --- .../META-INF/MANIFEST.MF | 2 +- .../ui/services/ModuleRegionInformation.java | 50 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF index ac90b064..721eb61e 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF +++ b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF @@ -23,7 +23,7 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[6.0.0,7.0 com._1c.g5.v8.dt.bsl.common;version="[6.0.0,7.0.0)", com._1c.g5.v8.dt.bsl.documentation.comment;version="[4.0.0,5.0.0)", com._1c.g5.v8.dt.bsl.model;version="[5.0.0,6.0.0)", - com._1c.g5.v8.dt.bsl.model.util;version="4.7.0", + com._1c.g5.v8.dt.bsl.model.util;version="[4.7.0,5.0.0)", com._1c.g5.v8.dt.bsl.services;version="[7.0.0,8.0.0)", com._1c.g5.v8.dt.bsl.ui;version="[9.0.0,10.0.0)", com._1c.g5.v8.dt.bsl.ui.contentassist;version="[8.0.0,9.0.0)", diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java index ed24e2bc..fc9d5db0 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java @@ -34,6 +34,31 @@ public final class ModuleRegionInformation private Map suffixes; + /** + * Create and calculate module region offsets + * + * @param document actual {@link IDocument} to get offsets from, can't be {@code null} + * @param node {@link INode} to get offsets from, can't be {@code null} + * @param nodeAfter {@link INode} to get offsets from, can't be {@code null} + * @return module region information with calculated region offsets or {@code null} + */ + public static ModuleRegionInformation create(IDocument document, INode node, INode nodeAfter) + { + try + { + int startLine = node.getTotalStartLine() - 1; + int startOffset = document.getLineOffset((startLine <= 1) ? 0 : startLine); + int endOffset = nodeAfter.getTotalOffset(); + int insertOffset = document.getLineOffset(document.getLineOfOffset(nodeAfter.getTotalOffset())); + return new ModuleRegionInformation(startOffset, endOffset, insertOffset); + } + catch (BadLocationException ex) + { + UiPlugin.log(UiPlugin.createErrorStatus("Can't create module region information", ex)); //$NON-NLS-1$ + } + return null; + } + /** * Start offset of module region * @@ -128,29 +153,4 @@ public final class ModuleRegionInformation this.endOffset = endOffset; this.insertOffset = insertOffset; } - - /** - * Create and calculate module region offsets - * - * @param document actual {@link IDocument} to get offsets from, can't be {@code null} - * @param node {@link INode} to get offsets from, can't be {@code null} - * @param nodeAfter {@link INode} to get offsets from, can't be {@code null} - * @return module region information with calculated region offsets or {@code null} - */ - public static ModuleRegionInformation create(IDocument document, INode node, INode nodeAfter) - { - try - { - int startLine = node.getTotalStartLine() - 1; - int startOffset = document.getLineOffset((startLine <= 1) ? 0 : startLine); - int endOffset = nodeAfter.getTotalOffset(); - int insertOffset = document.getLineOffset(document.getLineOfOffset(nodeAfter.getTotalOffset())); - return new ModuleRegionInformation(startOffset, endOffset, insertOffset); - } - catch (BadLocationException ex) - { - UiPlugin.log(UiPlugin.createErrorStatus("Can't create module region information", ex)); //$NON-NLS-1$ - } - return null; - } } From f7e6c017052051c8c1d98079416c83a9326168cd Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Tue, 24 Oct 2023 12:47:46 +0300 Subject: [PATCH 4/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Information.java => BslModuleOffsets.java} | 16 +- .../services/BslModuleRegionInformation.java | 50 ++++++ .../ui/services/BslModuleRegionsService.java | 145 +++++++++++------- 3 files changed, 150 insertions(+), 61 deletions(-) rename bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/{ModuleRegionInformation.java => BslModuleOffsets.java} (87%) create mode 100644 bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java similarity index 87% rename from bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java rename to bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java index fc9d5db0..e6dcd980 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/ModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java @@ -26,13 +26,13 @@ import com.e1c.v8codestyle.internal.bsl.ui.UiPlugin; * * @author Kuznetsov Nikita */ -public final class ModuleRegionInformation +public final class BslModuleOffsets { private int startOffset; private int endOffset; private int insertOffset; - private Map suffixes; + private Map suffixes; /** * Create and calculate module region offsets @@ -42,7 +42,7 @@ public final class ModuleRegionInformation * @param nodeAfter {@link INode} to get offsets from, can't be {@code null} * @return module region information with calculated region offsets or {@code null} */ - public static ModuleRegionInformation create(IDocument document, INode node, INode nodeAfter) + public static BslModuleOffsets create(IDocument document, INode node, INode nodeAfter) { try { @@ -50,7 +50,7 @@ public final class ModuleRegionInformation int startOffset = document.getLineOffset((startLine <= 1) ? 0 : startLine); int endOffset = nodeAfter.getTotalOffset(); int insertOffset = document.getLineOffset(document.getLineOfOffset(nodeAfter.getTotalOffset())); - return new ModuleRegionInformation(startOffset, endOffset, insertOffset); + return new BslModuleOffsets(startOffset, endOffset, insertOffset); } catch (BadLocationException ex) { @@ -103,7 +103,7 @@ public final class ModuleRegionInformation { suffixes = new HashMap<>(); } - ModuleRegionInformation suffixRegionInformation = create(document, node, nodeAfter); + BslModuleOffsets suffixRegionInformation = create(document, node, nodeAfter); if (suffixRegionInformation != null) { suffixes.put(suffix, suffixRegionInformation); @@ -136,9 +136,9 @@ public final class ModuleRegionInformation * Get module region information by suffix if exists * * @param suffix {@link String} suffix of declared name module region - * @return {@link ModuleRegionInformation} if suffix exists, {@code null} otherwise + * @return {@link BslModuleOffsets} if suffix exists, {@code null} otherwise */ - public ModuleRegionInformation getInformationBySuffix(String suffix) + public BslModuleOffsets getInformationBySuffix(String suffix) { if (hasSuffixes()) { @@ -147,7 +147,7 @@ public final class ModuleRegionInformation return null; } - private ModuleRegionInformation(int startOffset, int endOffset, int insertOffset) + private BslModuleOffsets(int startOffset, int endOffset, int insertOffset) { this.startOffset = startOffset; this.endOffset = endOffset; diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java new file mode 100644 index 00000000..59afcce9 --- /dev/null +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java @@ -0,0 +1,50 @@ +/** + * Copyright (C) 2023, 1C + */ +package com.e1c.v8codestyle.internal.bsl.ui.services; + +import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; +import com._1c.g5.v8.dt.bsl.model.Module; + +/** + * BSL module region information with {@link String} region wrap data + * + * @author Kuznetsov Nikita + */ +public class BslModuleRegionInformation + implements IBslModuleInformation +{ + private final Module module; + private final int insertPosition; + private final String wrapData; + + public static IBslModuleInformation create(Module module, int insertPosition, String wrapData) + { + return new BslModuleRegionInformation(module, insertPosition, wrapData); + } + + private BslModuleRegionInformation(Module module, int insertPosition, String wrapData) + { + this.module = module; + this.insertPosition = insertPosition; + this.wrapData = wrapData; + } + + @Override + public Module getModule() + { + return module; + } + + @Override + public int getInsertPosition() + { + return insertPosition; + } + + @Override + public String getData() + { + return wrapData; + } +} diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java index d0590c94..6f43f611 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -16,13 +16,27 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; +import org.eclipse.xtext.resource.IResourceServiceProvider; import org.eclipse.xtext.ui.editor.model.IXtextDocument; +import com._1c.g5.v8.dt.bsl.common.IBslModuleEventData; +import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; import com._1c.g5.v8.dt.bsl.common.IBslModuleRegionsService; +import com._1c.g5.v8.dt.bsl.model.Module; import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor; -import com._1c.g5.v8.dt.common.Pair; +import com._1c.g5.v8.dt.bsl.model.util.BslUtil; +import com._1c.g5.v8.dt.bsl.resource.owner.BslOwnerComputerService; +import com._1c.g5.v8.dt.bsl.ui.event.BslModuleEventRegionData; +import com._1c.g5.v8.dt.bsl.ui.event.EventItemType; +import com._1c.g5.v8.dt.common.StringUtils; +import com._1c.g5.v8.dt.core.platform.IV8Project; +import com._1c.g5.v8.dt.core.platform.IV8ProjectManager; +import com._1c.g5.v8.dt.mcore.NamedElement; import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant; import com.e1c.v8codestyle.bsl.ModuleStructureSection; @@ -34,44 +48,55 @@ import com.e1c.v8codestyle.bsl.ModuleStructureSection; public class BslModuleRegionsService implements IBslModuleRegionsService { - private static final String FORM_NAME = "Form"; //$NON-NLS-1$ - private static final String GRAPHICAL_SCHEME_NAME = "GraphicalScheme"; //$NON-NLS-1$ - @Override - public Pair getRegionInformation(IXtextDocument document, - List regionPreprocessors, String suffix, int defaultOffset, ScriptVariant scriptVariant, - String eventOwnerRootName, boolean isMain, boolean isCommand, boolean isTable) + public IBslModuleInformation getInformation(IXtextDocument document, Module module, int defaultPosition, + IBslModuleEventData data) { - String declaredRegionName = - getDeclaredRegionName(eventOwnerRootName, isMain, isCommand, isTable, scriptVariant); - Map regionOffsets = + if (!(data instanceof BslModuleEventRegionData)) + { + return BslModuleRegionInformation.create(module, defaultPosition, null); + } + URI moduleResourceURI = module.eResource().getURI(); + IResourceServiceProvider rsp = + IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); + IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); + BslOwnerComputerService bslOwnerComputerService = rsp.get(BslOwnerComputerService.class); + IV8Project project = projectManager.getProject(moduleResourceURI); + EClass moduleOwner = bslOwnerComputerService.computeOwnerEClass(module); + BslModuleEventRegionData regionData = (BslModuleEventRegionData)data; + EObject eventOwner = regionData.getEventOwner(); + EventItemType itemType = regionData.getData(); + String suffix = getSuffix(eventOwner, itemType); + List regionPreprocessors = BslUtil.getAllRegionPreprocessors(module); + ScriptVariant scriptVariant = project.getScriptVariant(); + String declaredRegionName = getDeclaredRegionName(moduleOwner, itemType, scriptVariant); + Map regionOffsets = getRegionOffsets(document, regionPreprocessors, declaredRegionName, scriptVariant); - int offset = getRegionOffset(regionOffsets, declaredRegionName, suffix, defaultOffset, scriptVariant); + int offset = getRegionOffset(regionOffsets, declaredRegionName, suffix, defaultPosition, scriptVariant); String regionName = null; if (!isRegionExists(regionOffsets, declaredRegionName, suffix)) { regionName = suffix.isEmpty() ? declaredRegionName : (declaredRegionName + suffix); } - return new Pair<>(offset, regionName); + return BslModuleRegionInformation.create(module, offset, regionName); } @Override - public String wrapByRegion(String content, String regionName, String beginRegion, String endRegion, String space, - String lineSeparator) + public String wrap(String content, String name, String begin, String end, String space, String lineSeparator) { StringBuilder builder = new StringBuilder(); - builder.append(lineSeparator).append(beginRegion).append(space).append(regionName); - builder.append(content); - builder.append(endRegion); + builder.append(lineSeparator).append(begin).append(space).append(name); + builder.append(lineSeparator).append(content).append(lineSeparator); + builder.append(end); builder.append(lineSeparator); return builder.toString(); } - private Map getRegionOffsets(IXtextDocument document, + private Map getRegionOffsets(IXtextDocument document, List regionPreprocessors, String targetRegionName, ScriptVariant scriptVariant) { ModuleStructureSection[] declaredRegionNames = ModuleStructureSection.values(); - Map regionOffsets = new HashMap<>(declaredRegionNames.length / 2); + Map regionOffsets = new HashMap<>(declaredRegionNames.length / 2); for (RegionPreprocessor regionPreprocessor : regionPreprocessors) { INode nodeAfter = NodeModelUtils.findActualNodeFor(regionPreprocessor.getItemAfter()); @@ -88,7 +113,7 @@ public class BslModuleRegionsService INode node = NodeModelUtils.findActualNodeFor(regionPreprocessor.getItem()); if (node != null) { - ModuleRegionInformation moduleRegionInformation = null; + BslModuleOffsets moduleRegionInformation = null; if (!preprocessorRegionName.equals(declaredRegionName)) { if (!moduleStructureSection.isSuffixed()) @@ -99,7 +124,7 @@ public class BslModuleRegionsService moduleRegionInformation = regionOffsets.get(declaredRegionName); if (moduleRegionInformation == null) { - moduleRegionInformation = ModuleRegionInformation.create(document, node, nodeAfter); + moduleRegionInformation = BslModuleOffsets.create(document, node, nodeAfter); if (moduleRegionInformation == null) { return regionOffsets; @@ -109,7 +134,7 @@ public class BslModuleRegionsService } if (moduleRegionInformation == null && !moduleStructureSection.isSuffixed()) { - moduleRegionInformation = ModuleRegionInformation.create(document, node, nodeAfter); + moduleRegionInformation = BslModuleOffsets.create(document, node, nodeAfter); } if (moduleRegionInformation != null) { @@ -127,17 +152,17 @@ public class BslModuleRegionsService return regionOffsets; } - private int getRegionOffset(Map regionOffsets, String declaredRegionName, - String suffix, int defaultOffset, ScriptVariant scriptVariant) + private int getRegionOffset(Map regionOffsets, String declaredRegionName, String suffix, + int defaultOffset, ScriptVariant scriptVariant) { int offset = defaultOffset; boolean createNewRegion = !isRegionExists(regionOffsets, declaredRegionName, suffix); - ModuleRegionInformation regionOffset = regionOffsets.get(declaredRegionName); + BslModuleOffsets regionOffset = regionOffsets.get(declaredRegionName); if (regionOffset != null) { if (!suffix.isEmpty()) { - ModuleRegionInformation suffixedRegionInformation = regionOffset.getInformationBySuffix(suffix); + BslModuleOffsets suffixedRegionInformation = regionOffset.getInformationBySuffix(suffix); if (suffixedRegionInformation != null) { return suffixedRegionInformation.getBeforeEndOffset(); @@ -156,16 +181,16 @@ public class BslModuleRegionsService return offset; } - private boolean isRegionExists(Map regionOffsets, String declaredRegionName, + private boolean isRegionExists(Map regionOffsets, String declaredRegionName, String suffix) { - ModuleRegionInformation moduleRegionInformation = regionOffsets.get(declaredRegionName); + BslModuleOffsets moduleRegionInformation = regionOffsets.get(declaredRegionName); return (moduleRegionInformation != null) && (suffix.isEmpty() || moduleRegionInformation.getInformationBySuffix(suffix) != null); } - private int getNewRegionOffset(Map regionOffsets, String regionName, - String suffix, int defaultOffset, ScriptVariant scriptVariant) + private int getNewRegionOffset(Map regionOffsets, String regionName, String suffix, + int defaultOffset, ScriptVariant scriptVariant) { boolean placeBefore = false; int offset = regionOffsets.isEmpty() ? 0 : defaultOffset; @@ -178,7 +203,7 @@ public class BslModuleRegionsService { placeBefore = true; } - ModuleRegionInformation regionInformation = regionOffsets.get(declaredRegionName); + BslModuleOffsets regionInformation = regionOffsets.get(declaredRegionName); if (regionInformation != null) { if (placeBefore && (suffix.isEmpty() || !declaredRegionName.equals(regionName))) @@ -191,46 +216,60 @@ public class BslModuleRegionsService return offset; } - private String getDeclaredRegionName(String eventOwnerRootName, boolean isMain, boolean isCommand, boolean isTable, - ScriptVariant scriptVariant) + private String getDeclaredRegionName(EClass moduleOwnerClass, EventItemType itemType, ScriptVariant scriptVariant) { - if (eventOwnerRootName.equals(FORM_NAME)) + String moduleOwnerName = moduleOwnerClass.getName(); + switch (moduleOwnerName) { - return getDeclaredRegionNameForForm(isMain, isCommand, isTable, scriptVariant); + case "AbstractForm": //$NON-NLS-1$ + return getDeclaredRegionNameForForm(itemType, scriptVariant); + case "WebService": //$NON-NLS-1$ + case "HTTPService": //$NON-NLS-1$ + case "IntegrationService": //$NON-NLS-1$ + return getPrivateRegionName(scriptVariant); + default: + return getDefaultRegionName(scriptVariant); } - if (eventOwnerRootName.equals(GRAPHICAL_SCHEME_NAME)) - { - return getDeclaredRegionNameForGraphicalScheme(scriptVariant); - } - return getDefaultRegionName(scriptVariant); } - private String getDeclaredRegionNameForForm(boolean isMain, boolean isCommand, boolean isTable, - ScriptVariant scriptVariant) + private String getDeclaredRegionNameForForm(EventItemType itemType, ScriptVariant scriptVariant) { - if (isMain) + switch (itemType) { + case MAIN: return ModuleStructureSection.FORM_EVENT_HANDLERS.getName(scriptVariant); - } - else if (isCommand) - { + case COMMAND: return ModuleStructureSection.FORM_COMMAND_EVENT_HANDLERS.getName(scriptVariant); - } - else if (isTable) - { + case TABLE: return ModuleStructureSection.FORM_TABLE_ITEMS_EVENT_HANDLERS.getName(scriptVariant); + default: + return ModuleStructureSection.FORM_HEADER_ITEMS_EVENT_HANDLERS.getName(scriptVariant); } - return ModuleStructureSection.FORM_HEADER_ITEMS_EVENT_HANDLERS.getName(scriptVariant); } - private String getDeclaredRegionNameForGraphicalScheme(ScriptVariant scriptVariant) + private String getPrivateRegionName(ScriptVariant scriptVariant) { - return ModuleStructureSection.EVENT_HANDLERS.getName(scriptVariant); + return ModuleStructureSection.PRIVATE.getName(scriptVariant); } private String getDefaultRegionName(ScriptVariant scriptVariant) { - return ModuleStructureSection.PRIVATE.getName(scriptVariant); + return ModuleStructureSection.EVENT_HANDLERS.getName(scriptVariant); + } + + private String getSuffix(EObject eventOwner, EventItemType itemType) + { + if (itemType.equals(EventItemType.TABLE)) + { + while ((eventOwner = eventOwner.eContainer()) != null) + { + if (eventOwner instanceof NamedElement && eventOwner.eClass().getName().equals("Table")) //$NON-NLS-1$ + { + return ((NamedElement)eventOwner).getName(); + } + } + } + return StringUtils.EMPTY; } private String getSuffixOfMatchingRegion(String regionName, String declaredRegionName) From 540563177ad1a63400b660084a0a69b8e7a60d17 Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Tue, 24 Oct 2023 16:45:34 +0300 Subject: [PATCH 5/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename extension point Versioning --- bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF | 2 ++ bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml | 6 +++--- .../internal/bsl/ui/services/BslModuleRegionsService.java | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF index 721eb61e..fd8cf557 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF +++ b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF @@ -24,10 +24,12 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[6.0.0,7.0 com._1c.g5.v8.dt.bsl.documentation.comment;version="[4.0.0,5.0.0)", com._1c.g5.v8.dt.bsl.model;version="[5.0.0,6.0.0)", com._1c.g5.v8.dt.bsl.model.util;version="[4.7.0,5.0.0)", + com._1c.g5.v8.dt.bsl.resource.owner;version="[2.0.0,3.0.0)", com._1c.g5.v8.dt.bsl.services;version="[7.0.0,8.0.0)", com._1c.g5.v8.dt.bsl.ui;version="[9.0.0,10.0.0)", com._1c.g5.v8.dt.bsl.ui.contentassist;version="[8.0.0,9.0.0)", com._1c.g5.v8.dt.bsl.ui.editor;version="[9.0.0,10.0.0)", + com._1c.g5.v8.dt.bsl.ui.event;version="[5.0.0,6.0.0)", com._1c.g5.v8.dt.bsl.ui.menu;version="[6.0.0,7.0.0)", com._1c.g5.v8.dt.bsl.ui.quickfix;version="[4.1.0,5.0.0)", com._1c.g5.v8.dt.bsl.util;version="[8.0.0,9.0.0)", diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml index a6008869..fef518fc 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml +++ b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml @@ -369,10 +369,10 @@ - + - + diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java index 6f43f611..bfd3e050 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -26,7 +26,7 @@ import org.eclipse.xtext.ui.editor.model.IXtextDocument; import com._1c.g5.v8.dt.bsl.common.IBslModuleEventData; import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; -import com._1c.g5.v8.dt.bsl.common.IBslModuleRegionsService; +import com._1c.g5.v8.dt.bsl.common.IBslModuleInformationService; import com._1c.g5.v8.dt.bsl.model.Module; import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor; import com._1c.g5.v8.dt.bsl.model.util.BslUtil; @@ -41,12 +41,12 @@ import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant; import com.e1c.v8codestyle.bsl.ModuleStructureSection; /** - * Implementation of {@link IBslModuleRegionsService} + * Implementation of {@link IBslModuleInformationService} * * @author Kuznetsov Nikita */ public class BslModuleRegionsService - implements IBslModuleRegionsService + implements IBslModuleInformationService { @Override public IBslModuleInformation getInformation(IXtextDocument document, Module module, int defaultPosition, From 6b49456688e1a2c9fbda4f09b97d6f1932475659 Mon Sep 17 00:00:00 2001 From: Dzyuba Maksim Date: Wed, 25 Oct 2023 17:44:52 +0300 Subject: [PATCH 6/9] G5V8DT-24189_variant --- .../services/BslModuleRegionInformation.java | 18 +++----- .../ui/services/BslModuleRegionsService.java | 46 +++++++++++++------ 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java index 59afcce9..0eafe8cc 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java @@ -12,22 +12,17 @@ import com._1c.g5.v8.dt.bsl.model.Module; * @author Kuznetsov Nikita */ public class BslModuleRegionInformation - implements IBslModuleInformation + implements IBslModuleInformation { private final Module module; private final int insertPosition; - private final String wrapData; + private final String regionName; - public static IBslModuleInformation create(Module module, int insertPosition, String wrapData) - { - return new BslModuleRegionInformation(module, insertPosition, wrapData); - } - - private BslModuleRegionInformation(Module module, int insertPosition, String wrapData) + public BslModuleRegionInformation(Module module, int insertPosition, String regionName) { this.module = module; this.insertPosition = insertPosition; - this.wrapData = wrapData; + this.regionName = regionName; } @Override @@ -42,9 +37,8 @@ public class BslModuleRegionInformation return insertPosition; } - @Override - public String getData() + public String getRegionName() { - return wrapData; + return regionName; } } diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java index bfd3e050..cc519fc3 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -24,6 +24,7 @@ import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.resource.IResourceServiceProvider; import org.eclipse.xtext.ui.editor.model.IXtextDocument; +import com._1c.g5.v8.dt.bsl.common.EventItemType; import com._1c.g5.v8.dt.bsl.common.IBslModuleEventData; import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; import com._1c.g5.v8.dt.bsl.common.IBslModuleInformationService; @@ -31,8 +32,8 @@ import com._1c.g5.v8.dt.bsl.model.Module; import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor; import com._1c.g5.v8.dt.bsl.model.util.BslUtil; import com._1c.g5.v8.dt.bsl.resource.owner.BslOwnerComputerService; -import com._1c.g5.v8.dt.bsl.ui.event.BslModuleEventRegionData; -import com._1c.g5.v8.dt.bsl.ui.event.EventItemType; +import com._1c.g5.v8.dt.bsl.ui.BslGeneratorMultiLangProposals; +import com._1c.g5.v8.dt.bsl.ui.event.BslModuleEventData; import com._1c.g5.v8.dt.common.StringUtils; import com._1c.g5.v8.dt.core.platform.IV8Project; import com._1c.g5.v8.dt.core.platform.IV8ProjectManager; @@ -49,23 +50,23 @@ public class BslModuleRegionsService implements IBslModuleInformationService { @Override - public IBslModuleInformation getInformation(IXtextDocument document, Module module, int defaultPosition, - IBslModuleEventData data) + public IBslModuleInformation getInformation(IXtextDocument document, Module module, int defaultPosition, + IBslModuleEventData data) { - if (!(data instanceof BslModuleEventRegionData)) + if (!(data instanceof BslModuleEventData)) { - return BslModuleRegionInformation.create(module, defaultPosition, null); + return new BslModuleRegionInformation(module, defaultPosition, null); } URI moduleResourceURI = module.eResource().getURI(); IResourceServiceProvider rsp = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); - BslOwnerComputerService bslOwnerComputerService = rsp.get(BslOwnerComputerService.class); IV8Project project = projectManager.getProject(moduleResourceURI); + BslOwnerComputerService bslOwnerComputerService = rsp.get(BslOwnerComputerService.class); EClass moduleOwner = bslOwnerComputerService.computeOwnerEClass(module); - BslModuleEventRegionData regionData = (BslModuleEventRegionData)data; - EObject eventOwner = regionData.getEventOwner(); - EventItemType itemType = regionData.getData(); + EObject eventOwner = data.getEventOwner(); + BslModuleEventData regionData = (BslModuleEventData)data; + EventItemType itemType = regionData.getEventItemType(); String suffix = getSuffix(eventOwner, itemType); List regionPreprocessors = BslUtil.getAllRegionPreprocessors(module); ScriptVariant scriptVariant = project.getScriptVariant(); @@ -78,16 +79,33 @@ public class BslModuleRegionsService { regionName = suffix.isEmpty() ? declaredRegionName : (declaredRegionName + suffix); } - return BslModuleRegionInformation.create(module, offset, regionName); + return new BslModuleRegionInformation(module, offset, regionName); + } @Override - public String wrap(String content, String name, String begin, String end, String space, String lineSeparator) + public String wrap(String content, IBslModuleInformation name, String lineSeparator) { + if (!(name instanceof BslModuleRegionInformation)) + { + return content; + } + IResourceServiceProvider rsp = + IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(URI.createURI("*.bsl"));//$NON-NLS-1$ + IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); + IV8Project project = projectManager.getProject(name.getModule()); + BslGeneratorMultiLangProposals proposals = rsp.get(BslGeneratorMultiLangProposals.class); + proposals.setRussianLang(ScriptVariant.RUSSIAN.equals(project.getScriptVariant())); + String beginRegion = proposals.getBeginRegionPropStr(); + String endRegion = proposals.getEndRegionPropStr(); + String space = proposals.getSpacePropStr(); StringBuilder builder = new StringBuilder(); - builder.append(lineSeparator).append(begin).append(space).append(name); + builder.append(lineSeparator) + .append(beginRegion) + .append(space) + .append(((BslModuleRegionInformation)name).getRegionName()); builder.append(lineSeparator).append(content).append(lineSeparator); - builder.append(end); + builder.append(endRegion); builder.append(lineSeparator); return builder.toString(); } From 8e2519a0f259515d13fe0eb7aa52b20a0f3b5650 Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Mon, 30 Oct 2023 11:15:00 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C=20=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Another refactoring --- .../services/BslModuleRegionInformation.java | 32 +++++++---- .../ui/services/BslModuleRegionsService.java | 55 ++++++++++--------- 2 files changed, 52 insertions(+), 35 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java index 0eafe8cc..bd94421a 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java @@ -7,36 +7,48 @@ import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; import com._1c.g5.v8.dt.bsl.model.Module; /** - * BSL module region information with {@link String} region wrap data + * Built-in language module region information with {@link String} region wrap data * * @author Kuznetsov Nikita */ public class BslModuleRegionInformation implements IBslModuleInformation { - private final Module module; private final int insertPosition; + private final Module module; private final String regionName; - public BslModuleRegionInformation(Module module, int insertPosition, String regionName) + /** + * {@link BslModuleRegionInformation} constructor + * + * @param insertPosition + * @param module current {@link Module}, cannot be null + * @param regionName + */ + public BslModuleRegionInformation(int insertPosition, Module module, String regionName) { - this.module = module; this.insertPosition = insertPosition; + this.module = module; this.regionName = regionName; } - @Override - public Module getModule() - { - return module; - } - @Override public int getInsertPosition() { return insertPosition; } + @Override + public Module getModule() + { + return module; + } + + /** + * Get region name + * + * @return {@link String} region name, can be null + */ public String getRegionName() { return regionName; diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java index cc519fc3..d3aef876 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java @@ -34,6 +34,7 @@ import com._1c.g5.v8.dt.bsl.model.util.BslUtil; import com._1c.g5.v8.dt.bsl.resource.owner.BslOwnerComputerService; import com._1c.g5.v8.dt.bsl.ui.BslGeneratorMultiLangProposals; import com._1c.g5.v8.dt.bsl.ui.event.BslModuleEventData; +import com._1c.g5.v8.dt.common.PreferenceUtils; import com._1c.g5.v8.dt.common.StringUtils; import com._1c.g5.v8.dt.core.platform.IV8Project; import com._1c.g5.v8.dt.core.platform.IV8ProjectManager; @@ -55,14 +56,14 @@ public class BslModuleRegionsService { if (!(data instanceof BslModuleEventData)) { - return new BslModuleRegionInformation(module, defaultPosition, null); + return () -> defaultPosition; } URI moduleResourceURI = module.eResource().getURI(); IResourceServiceProvider rsp = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); - IV8Project project = projectManager.getProject(moduleResourceURI); BslOwnerComputerService bslOwnerComputerService = rsp.get(BslOwnerComputerService.class); + IV8Project project = projectManager.getProject(moduleResourceURI); EClass moduleOwner = bslOwnerComputerService.computeOwnerEClass(module); EObject eventOwner = data.getEventOwner(); BslModuleEventData regionData = (BslModuleEventData)data; @@ -79,35 +80,39 @@ public class BslModuleRegionsService { regionName = suffix.isEmpty() ? declaredRegionName : (declaredRegionName + suffix); } - return new BslModuleRegionInformation(module, offset, regionName); - + return new BslModuleRegionInformation(offset, module, regionName); } @Override - public String wrap(String content, IBslModuleInformation name, String lineSeparator) + public String wrap(IBslModuleInformation moduleInformation, String content) { - if (!(name instanceof BslModuleRegionInformation)) + if (moduleInformation instanceof BslModuleRegionInformation) { - return content; + BslModuleRegionInformation moduleRegionInformation = (BslModuleRegionInformation)moduleInformation; + Module module = moduleInformation.getModule(); + String regionName = moduleRegionInformation.getRegionName(); + if (module != null && regionName != null) + { + URI moduleResourceURI = module.eResource().getURI(); + IResourceServiceProvider rsp = + IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); + IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); + BslGeneratorMultiLangProposals proposals = rsp.get(BslGeneratorMultiLangProposals.class); + IV8Project project = projectManager.getProject(moduleResourceURI); + String lineSeparator = PreferenceUtils.getLineSeparator(project.getProject()); + proposals.setRussianLang(ScriptVariant.RUSSIAN.equals(project.getScriptVariant())); + String beginRegion = proposals.getBeginRegionPropStr(); + String endRegion = proposals.getEndRegionPropStr(); + String space = proposals.getSpacePropStr(); + StringBuilder builder = new StringBuilder(); + builder.append(lineSeparator).append(beginRegion).append(space).append(regionName); + builder.append(lineSeparator).append(content).append(lineSeparator); + builder.append(endRegion); + builder.append(lineSeparator); + return builder.toString(); + } } - IResourceServiceProvider rsp = - IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(URI.createURI("*.bsl"));//$NON-NLS-1$ - IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); - IV8Project project = projectManager.getProject(name.getModule()); - BslGeneratorMultiLangProposals proposals = rsp.get(BslGeneratorMultiLangProposals.class); - proposals.setRussianLang(ScriptVariant.RUSSIAN.equals(project.getScriptVariant())); - String beginRegion = proposals.getBeginRegionPropStr(); - String endRegion = proposals.getEndRegionPropStr(); - String space = proposals.getSpacePropStr(); - StringBuilder builder = new StringBuilder(); - builder.append(lineSeparator) - .append(beginRegion) - .append(space) - .append(((BslModuleRegionInformation)name).getRegionName()); - builder.append(lineSeparator).append(content).append(lineSeparator); - builder.append(endRegion); - builder.append(lineSeparator); - return builder.toString(); + return content; } private Map getRegionOffsets(IXtextDocument document, From 01f7c72e7118a2907b3ffa11edb078bf1d2b0b0b Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Wed, 1 Nov 2023 11:28:42 +0300 Subject: [PATCH 8/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../META-INF/MANIFEST.MF | 1 + bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml | 8 +++--- .../bsl/ui/services/BslModuleOffsets.java | 8 +++--- ...rmation.java => BslModuleRegionsInfo.java} | 16 +++++------ ....java => BslModuleRegionsInfoService.java} | 27 ++++++++++--------- 5 files changed, 31 insertions(+), 29 deletions(-) rename bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/{BslModuleRegionInformation.java => BslModuleRegionsInfo.java} (67%) rename bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/{BslModuleRegionsService.java => BslModuleRegionsInfoService.java} (93%) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF index fd8cf557..87a56ed4 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF +++ b/bundles/com.e1c.v8codestyle.bsl.ui/META-INF/MANIFEST.MF @@ -37,6 +37,7 @@ Import-Package: com._1c.g5.ides.ui.texteditor.xtext.embedded;version="[6.0.0,7.0 com._1c.g5.v8.dt.core.filesystem;version="[6.0.0,7.0.0)", com._1c.g5.v8.dt.core.model;version="[6.0.0,7.0.0)", com._1c.g5.v8.dt.core.platform;version="[11.0.0,12.0.0)", + com._1c.g5.v8.dt.form.model;version="[11.1.0,12.0.0)", com._1c.g5.v8.dt.lcore.ui.texteditor;version="[1.1.0,2.0.0)", com._1c.g5.v8.dt.mcore;version="[7.0.0,8.0.0)", com._1c.g5.v8.dt.metadata.mdclass;version="[9.0.0,10.0.0)", diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml index fef518fc..16fe132e 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml +++ b/bundles/com.e1c.v8codestyle.bsl.ui/plugin.xml @@ -369,10 +369,10 @@ - - + point="com._1c.g5.v8.dt.bsl.ui.bslModuleTextInsertInfoService"> + + diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java index e6dcd980..aa358cf9 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleOffsets.java @@ -60,7 +60,7 @@ public final class BslModuleOffsets } /** - * Start offset of module region + * Returns start offset of module region * * @return offset before region declaration */ @@ -70,7 +70,7 @@ public final class BslModuleOffsets } /** - * End offset of module region + * Returns end offset of module region * * @return offset after region declaration */ @@ -80,7 +80,7 @@ public final class BslModuleOffsets } /** - * Before end offset inside module region + * Returns before end offset inside module region * * @return offset before end of region declaration */ @@ -133,7 +133,7 @@ public final class BslModuleOffsets } /** - * Get module region information by suffix if exists + * Returns module region information by suffix if exists * * @param suffix {@link String} suffix of declared name module region * @return {@link BslModuleOffsets} if suffix exists, {@code null} otherwise diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java similarity index 67% rename from bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java rename to bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java index bd94421a..da347fe4 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionInformation.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java @@ -3,7 +3,7 @@ */ package com.e1c.v8codestyle.internal.bsl.ui.services; -import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; +import com._1c.g5.v8.dt.bsl.common.IBslModuleTextInsertInfo; import com._1c.g5.v8.dt.bsl.model.Module; /** @@ -11,21 +11,21 @@ import com._1c.g5.v8.dt.bsl.model.Module; * * @author Kuznetsov Nikita */ -public class BslModuleRegionInformation - implements IBslModuleInformation +public class BslModuleRegionsInfo + implements IBslModuleTextInsertInfo { private final int insertPosition; private final Module module; private final String regionName; /** - * {@link BslModuleRegionInformation} constructor + * {@link BslModuleRegionsInfo} constructor * - * @param insertPosition + * @param insertPosition int insertion offset, cannot be negative * @param module current {@link Module}, cannot be null - * @param regionName + * @param regionName {@link String} region name, can be null */ - public BslModuleRegionInformation(int insertPosition, Module module, String regionName) + public BslModuleRegionsInfo(int insertPosition, Module module, String regionName) { this.insertPosition = insertPosition; this.module = module; @@ -45,7 +45,7 @@ public class BslModuleRegionInformation } /** - * Get region name + * Returns region name * * @return {@link String} region name, can be null */ diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java similarity index 93% rename from bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java rename to bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java index d3aef876..4f2dfdb4 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java @@ -26,8 +26,8 @@ import org.eclipse.xtext.ui.editor.model.IXtextDocument; import com._1c.g5.v8.dt.bsl.common.EventItemType; import com._1c.g5.v8.dt.bsl.common.IBslModuleEventData; -import com._1c.g5.v8.dt.bsl.common.IBslModuleInformation; -import com._1c.g5.v8.dt.bsl.common.IBslModuleInformationService; +import com._1c.g5.v8.dt.bsl.common.IBslModuleTextInsertInfo; +import com._1c.g5.v8.dt.bsl.common.IBslModuleTextInsertInfoService; import com._1c.g5.v8.dt.bsl.model.Module; import com._1c.g5.v8.dt.bsl.model.RegionPreprocessor; import com._1c.g5.v8.dt.bsl.model.util.BslUtil; @@ -38,21 +38,22 @@ import com._1c.g5.v8.dt.common.PreferenceUtils; import com._1c.g5.v8.dt.common.StringUtils; import com._1c.g5.v8.dt.core.platform.IV8Project; import com._1c.g5.v8.dt.core.platform.IV8ProjectManager; +import com._1c.g5.v8.dt.form.model.FormPackage; import com._1c.g5.v8.dt.mcore.NamedElement; import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant; import com.e1c.v8codestyle.bsl.ModuleStructureSection; /** - * Implementation of {@link IBslModuleInformationService} + * Module regions related implementation of {@link IBslModuleTextInsertInfoService} * * @author Kuznetsov Nikita */ -public class BslModuleRegionsService - implements IBslModuleInformationService +public class BslModuleRegionsInfoService + implements IBslModuleTextInsertInfoService { @Override - public IBslModuleInformation getInformation(IXtextDocument document, Module module, int defaultPosition, - IBslModuleEventData data) + public IBslModuleTextInsertInfo getEventHandlerTextInsertInfo(IXtextDocument document, Module module, + int defaultPosition, IBslModuleEventData data) { if (!(data instanceof BslModuleEventData)) { @@ -80,16 +81,16 @@ public class BslModuleRegionsService { regionName = suffix.isEmpty() ? declaredRegionName : (declaredRegionName + suffix); } - return new BslModuleRegionInformation(offset, module, regionName); + return new BslModuleRegionsInfo(offset, module, regionName); } @Override - public String wrap(IBslModuleInformation moduleInformation, String content) + public String wrap(IBslModuleTextInsertInfo moduleTextInsertInfo, String content) { - if (moduleInformation instanceof BslModuleRegionInformation) + if (moduleTextInsertInfo instanceof BslModuleRegionsInfo) { - BslModuleRegionInformation moduleRegionInformation = (BslModuleRegionInformation)moduleInformation; - Module module = moduleInformation.getModule(); + BslModuleRegionsInfo moduleRegionInformation = (BslModuleRegionsInfo)moduleTextInsertInfo; + Module module = moduleTextInsertInfo.getModule(); String regionName = moduleRegionInformation.getRegionName(); if (module != null && regionName != null) { @@ -286,7 +287,7 @@ public class BslModuleRegionsService { while ((eventOwner = eventOwner.eContainer()) != null) { - if (eventOwner instanceof NamedElement && eventOwner.eClass().getName().equals("Table")) //$NON-NLS-1$ + if (eventOwner.eClass() == FormPackage.Literals.TABLE) { return ((NamedElement)eventOwner).getName(); } From 86b2d38d4f73ac25eda3baeeafbb215c38b3cead Mon Sep 17 00:00:00 2001 From: Nikita Kuznetsov Date: Tue, 14 Nov 2023 11:34:53 +0300 Subject: [PATCH 9/9] =?UTF-8?q?G5V8DT-24189=20=D0=9F=D1=80=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=89=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B5=D0=B3=D0=BE=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Code style fixes --- .../bsl/ui/services/BslModuleRegionsInfo.java | 15 ++++++++++++--- .../services/BslModuleRegionsInfoService.java | 19 ++++++++++--------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java index da347fe4..811568fa 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfo.java @@ -1,6 +1,15 @@ -/** - * Copyright (C) 2023, 1C - */ +/******************************************************************************* + * Copyright (C) 2023, 1C-Soft LLC and others. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * 1C-Soft LLC - initial API and implementation + *******************************************************************************/ package com.e1c.v8codestyle.internal.bsl.ui.services; import com._1c.g5.v8.dt.bsl.common.IBslModuleTextInsertInfo; diff --git a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java index 4f2dfdb4..91e89b48 100644 --- a/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java +++ b/bundles/com.e1c.v8codestyle.bsl.ui/src/com/e1c/v8codestyle/internal/bsl/ui/services/BslModuleRegionsInfoService.java @@ -59,12 +59,12 @@ public class BslModuleRegionsInfoService { return () -> defaultPosition; } - URI moduleResourceURI = module.eResource().getURI(); + URI moduleResourceUri = module.eResource().getURI(); IResourceServiceProvider rsp = - IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); + IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceUri); IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); BslOwnerComputerService bslOwnerComputerService = rsp.get(BslOwnerComputerService.class); - IV8Project project = projectManager.getProject(moduleResourceURI); + IV8Project project = projectManager.getProject(moduleResourceUri); EClass moduleOwner = bslOwnerComputerService.computeOwnerEClass(module); EObject eventOwner = data.getEventOwner(); BslModuleEventData regionData = (BslModuleEventData)data; @@ -94,12 +94,12 @@ public class BslModuleRegionsInfoService String regionName = moduleRegionInformation.getRegionName(); if (module != null && regionName != null) { - URI moduleResourceURI = module.eResource().getURI(); + URI moduleResourceUri = module.eResource().getURI(); IResourceServiceProvider rsp = - IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceURI); + IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(moduleResourceUri); IV8ProjectManager projectManager = rsp.get(IV8ProjectManager.class); BslGeneratorMultiLangProposals proposals = rsp.get(BslGeneratorMultiLangProposals.class); - IV8Project project = projectManager.getProject(moduleResourceURI); + IV8Project project = projectManager.getProject(moduleResourceUri); String lineSeparator = PreferenceUtils.getLineSeparator(project.getProject()); proposals.setRussianLang(ScriptVariant.RUSSIAN.equals(project.getScriptVariant())); String beginRegion = proposals.getBeginRegionPropStr(); @@ -285,11 +285,12 @@ public class BslModuleRegionsInfoService { if (itemType.equals(EventItemType.TABLE)) { - while ((eventOwner = eventOwner.eContainer()) != null) + EObject container; + while ((container = eventOwner.eContainer()) != null) { - if (eventOwner.eClass() == FormPackage.Literals.TABLE) + if (container.eClass() == FormPackage.Literals.TABLE) { - return ((NamedElement)eventOwner).getName(); + return ((NamedElement)container).getName(); } } }