From c84c8d1a94f2294992f1035e4c303d57f633cd67 Mon Sep 17 00:00:00 2001 From: "Vladimir.Orlov" Date: Mon, 22 Dec 2014 14:02:30 +0300 Subject: [PATCH 01/63] fixed EDU builds. --- python/edu/build/idea.nsi | 123 +++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 69 deletions(-) diff --git a/python/edu/build/idea.nsi b/python/edu/build/idea.nsi index 688d9bc40aaf..ffdc1ead3a51 100644 --- a/python/edu/build/idea.nsi +++ b/python/edu/build/idea.nsi @@ -347,7 +347,7 @@ FunctionEnd !insertmacro MUI_PAGE_WELCOME Page custom uninstallOldVersionDialog - +Var productDir Var control_fields Var max_fields @@ -686,7 +686,25 @@ skip_default_instdir: FunctionEnd -Function DoAssociation +Function ProductRegistration + StrCmp "${PRODUCT_WITH_VER}" "${MUI_PRODUCT} ${VER_BUILD}" eapInfo releaseInfo +eapInfo: + StrCpy $3 "${PRODUCT_WITH_VER}(EAP)" + goto createRegistration +releaseInfo: + StrCpy $3 "${PRODUCT_WITH_VER}" +createRegistration: + StrCpy $0 "HKCR" + StrCpy $1 "Applications\${PRODUCT_EXE_FILE}\shell\open" + StrCpy $2 "FriendlyAppName" + call OMWriteRegStr + StrCpy $1 "Applications\${PRODUCT_EXE_FILE}\shell\open\command" + StrCpy $2 "" + StrCpy $3 '$INSTDIR\bin\${PRODUCT_EXE_FILE} "%1"' + call OMWriteRegStr +FunctionEnd + +Function ProductAssociation ; back up old value of an association ReadRegStr $1 HKCR $R4 "" StrCmp $1 "" skip_backup @@ -816,12 +834,16 @@ get_user_choice: !insertmacro INSTALLOPTIONS_READ $R3 "Desktop.ini" "Field $R2" "State" StrCmp $R3 1 "" next_association !insertmacro INSTALLOPTIONS_READ $R4 "Desktop.ini" "Field $R2" "Text" - call DoAssociation + call ProductAssociation next_association: IntOp $R2 $R2 + 1 IntCmp $R1 $R2 get_user_choice done get_user_choice -done: +done: + ;registration application to be presented in Open With list + call ProductRegistration + ;reset icon cache + System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ; $STARTMENU_FOLDER stores name of IDEA folder in Start Menu, ; save it name in the "MenuFolder" RegValue @@ -852,8 +874,8 @@ done: StrCmp $0 "" 0 "${Index}-Skip" WriteRegStr HKCR "IntelliJIdeaProjectFile" "" "IntelliJ IDEA Project File" WriteRegStr HKCR "IntelliJIdeaProjectFile\shell" "" "open" - WriteRegStr HKCR "IntelliJIdeaProjectFile\DefaultIcon" "" "$INSTDIR\bin\idea.exe,0" "${Index}-Skip:" + WriteRegStr HKCR "IntelliJIdeaProjectFile\DefaultIcon" "" "$INSTDIR\bin\${PRODUCT_EXE_FILE},0" WriteRegStr HKCR "IntelliJIdeaProjectFile\shell\open\command" "" \ '$INSTDIR\bin\${PRODUCT_EXE_FILE} "%1"' !undef Index @@ -1004,6 +1026,7 @@ FunctionEnd ;------------------------------------------------------------------------------ Function un.onInit + StrCpy $baseRegKey "HKCU" ;admin perm. is required to uninstall? ${UnStrStr} $R0 $INSTDIR $PROGRAMFILES StrCmp $R0 $INSTDIR requred_admin_perm UAC_Done @@ -1046,33 +1069,6 @@ UAC_Done: !insertmacro INSTALLOPTIONS_EXTRACT "DeleteSettings.ini" FunctionEnd -Function OMEnumRegKey - StrCmp $0 "HKCU" hkcu - EnumRegKey $3 HKLM $1 $4 - goto done -hkcu: - EnumRegKey $3 HKCU $1 $4 -done: -FunctionEnd - -Function un.OMReadRegStr - StrCmp $0 "HKCU" hkcu - ReadRegStr $3 HKLM $1 $2 - goto done -hkcu: - ReadRegStr $3 HKCU $1 $2 -done: -FunctionEnd - -Function un.OMDeleteRegValue - StrCmp $0 "HKCU" hkcu - DeleteRegValue HKLM $1 $2 - goto done -hkcu: - DeleteRegValue HKCU $1 $2 -done: -FunctionEnd - Function un.ReturnBackupRegValue ;replace Default str with the backup value (if there is the one) and then delete backup ; $1 - key (for example ".java") @@ -1086,34 +1082,6 @@ noBackup: Pop $0 FunctionEnd -Function un.OMDeleteRegKeyIfEmpty - StrCmp $0 "HKCU" hkcu - DeleteRegKey /ifempty HKLM $1 - goto done -hkcu: - DeleteRegKey /ifempty HKCU $1 -done: -FunctionEnd - -Function un.OMDeleteRegKey - StrCmp $0 "HKCU" hkcu - DeleteRegKey /ifempty HKLM $1 - goto done -hkcu: - DeleteRegKey /ifempty HKCU $1 -done: -FunctionEnd - -Function un.OMWriteRegStr - StrCmp $0 "HKCU" hkcu - WriteRegStr HKLM $1 $2 $3 - goto done -hkcu: - WriteRegStr HKCU $1 $2 $3 -done: -FunctionEnd - - ;------------------------------------------------------------------------------ ; custom uninstall pages ;------------------------------------------------------------------------------ @@ -1198,6 +1166,7 @@ FunctionEnd Section "Uninstall" + StrCpy $productDir $INSTDIR StrCpy $baseRegKey "HKCU" ; Uninstaller is in the \bin directory, we need upper level dir StrCpy $INSTDIR $INSTDIR\.. @@ -1254,7 +1223,6 @@ skip_delete_settings: StrCmp $R9 "" "" clear_shortcuts ReadRegStr $R9 HKLM "Software\${MANUFACTURER}\${PRODUCT_REG_VER}" "MenuFolder" StrCmp $R9 "" clear_Registry - StrCpy $baseRegKey "HKLM" StrCpy $5 "Software\${MANUFACTURER}" ; call un.winVersion ; ${If} $0 == "1" @@ -1279,10 +1247,10 @@ keep_current_user: clear_Registry: StrCpy $5 "Software\${MANUFACTURER}" -; call un.winVersion -; ${If} $0 == "1" -; StrCpy $5 "Software\Wow6432Node\${MANUFACTURER}" -; ${EndIf} + call un.winVersion + ${If} $0 == "1" + StrCpy $5 "Software\Wow6432Node\${MANUFACTURER}" + ${EndIf} StrCpy $0 $baseRegKey StrCpy $1 "$5\${PRODUCT_REG_VER}" @@ -1300,14 +1268,13 @@ loop: Call un.ReturnBackupRegValue goto loop finish_uninstall: + StrCpy $0 $baseRegKey StrCpy $1 "$5\${PRODUCT_REG_VER}" StrCpy $2 "Build" - Call un.OMDeleteRegValue - StrCpy $2 "" - Call un.OMDeleteRegValue + Call un.OMReadRegStr StrCpy $1 "$5\${PRODUCT_REG_VER}" - Call un.OMDeleteRegKeyIfEmpty + Call un.OMDeleteRegKey StrCpy $1 "$5\${MUI_PRODUCT}" Call un.OMDeleteRegKeyIfEmpty @@ -1315,6 +1282,24 @@ finish_uninstall: StrCpy $1 "$5" Call un.OMDeleteRegKeyIfEmpty + StrCpy $0 "HKCR" + StrCpy $1 "Applications\${PRODUCT_EXE_FILE}" + StrCpy $2 "" + Call un.OMDeleteRegKey + StrCpy $0 "HKCR" + StrCpy $1 "${PRODUCT_PATHS_SELECTOR}" + StrCpy $2 "" + Call un.OMDeleteRegKey + + StrCpy $0 "HKCR" + StrCpy $1 "IntelliJIdeaProjectFile\DefaultIcon" + StrCpy $2 "" + call un.OMReadRegStr + StrCmp $3 "$productDir\${PRODUCT_EXE_FILE},0" remove_IntelliJIdeaProjectFile done +remove_IntelliJIdeaProjectFile: + StrCpy $1 "IntelliJIdeaProjectFile" + Call un.OMDeleteRegKey +done: DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_WITH_VER}" ; UNCOMMENT THIS IN RELEASE BUILD From ab8676d59af53a79a6d73007563c739472f3565e Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 22 Dec 2014 12:06:31 +0100 Subject: [PATCH 02/63] title case for action name --- .../openapi/vcs/changes/shelf/ImportIntoShelfAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java index 7e62df697a85..1b413dee79a4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ImportIntoShelfAction.java @@ -40,7 +40,7 @@ import java.util.List; */ public class ImportIntoShelfAction extends DumbAwareAction { public ImportIntoShelfAction() { - super("Import patches...", "Copies patch file to shelf", null); + super("Import Patches...", "Copies a patch file to the shelf", null); } @Override From 5d738faa697909f9d8bc1f44b479f5d75ee9f32b Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 22 Dec 2014 14:15:52 +0300 Subject: [PATCH 03/63] IDEA-58130 Improve editor performance during working with large files written in a single line force soft wraps for document with very long lines (limit is configurable in registry) --- .../openapi/editor/impl/EditorImpl.java | 16 +++++ .../ForcedSoftWrapsNotificationProvider.java | 71 +++++++++++++++++++ .../openapi/editor/impl/SettingsImpl.java | 4 ++ .../src/messages/EditorBundle.properties | 5 +- .../src/META-INF/PlatformExtensions.xml | 1 + .../util/resources/misc/registry.properties | 3 + 6 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 platform/platform-impl/src/com/intellij/openapi/editor/impl/ForcedSoftWrapsNotificationProvider.java diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 0b54147990d0..7d9d231cd6d8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -130,6 +130,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi @NonNls public static final Object IGNORE_MOUSE_TRACKING = "ignore_mouse_tracking"; public static final Key PERMANENT_HEADER = Key.create("PERMANENT_HEADER"); public static final Key DO_DOCUMENT_UPDATE_TEST = Key.create("DoDocumentUpdateTest"); + public static final Key FORCED_SOFT_WRAPS = Key.create("forced.soft.wraps"); private static final boolean HONOR_CAMEL_HUMPS_ON_TRIPLE_CLICK = Boolean.parseBoolean(System.getProperty("idea.honor.camel.humps.on.triple.click")); private static final Key BUFFER = Key.create("buffer"); @@ -323,6 +324,11 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi initTabPainter(); myIsViewer = viewer; mySettings = new SettingsImpl(this, project); + boolean forceSoftWraps = !mySettings.isUseSoftWraps() && shouldSoftWrapsBeForced(myDocument); + if (forceSoftWraps) { + mySettings.setUseSoftWrapsQuiet(); + putUserData(FORCED_SOFT_WRAPS, Boolean.TRUE); + } mySelectionModel = new SelectionModelImpl(this); myMarkupModel = new EditorMarkupModelImpl(this); @@ -548,6 +554,16 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + private static boolean shouldSoftWrapsBeForced(Document document) { + int lineWidthLimit = Registry.intValue("editor.soft.wrap.force.limit"); + for (int i = 0; i < document.getLineCount(); i++) { + if (document.getLineEndOffset(i) - document.getLineStartOffset(i) > lineWidthLimit) { + return true; + } + } + return false; + } + @NotNull static Color adjustThumbColor(@NotNull Color base, boolean dark) { return dark ? ColorUtil.withAlpha(ColorUtil.shift(base, 1.35), 0.5) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/ForcedSoftWrapsNotificationProvider.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/ForcedSoftWrapsNotificationProvider.java new file mode 100644 index 000000000000..daec6275ec7c --- /dev/null +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/ForcedSoftWrapsNotificationProvider.java @@ -0,0 +1,71 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.editor.impl; + +import com.intellij.notification.NotificationDisplayType; +import com.intellij.notification.NotificationsConfiguration; +import com.intellij.notification.impl.NotificationsConfigurationImpl; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.EditorBundle; +import com.intellij.openapi.fileEditor.FileEditor; +import com.intellij.openapi.fileEditor.TextEditor; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Key; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.ui.EditorNotificationPanel; +import com.intellij.ui.EditorNotifications; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class ForcedSoftWrapsNotificationProvider extends EditorNotifications.Provider { + private static final Key KEY = Key.create("forced.soft.wraps.notification.panel"); + private static final String NOTIFICATION_SETTINGS_KEY = "Forced soft wraps in editor"; + + @NotNull + @Override + public Key getKey() { + return KEY; + } + + @Nullable + @Override + public EditorNotificationPanel createNotificationPanel(@NotNull final VirtualFile file, @NotNull final FileEditor fileEditor) { + if (!(fileEditor instanceof TextEditor)) return null; + final Editor editor = ((TextEditor)fileEditor).getEditor(); + final Project project = editor.getProject(); + if (project == null + || !Boolean.TRUE.equals(editor.getUserData(EditorImpl.FORCED_SOFT_WRAPS)) + || NotificationsConfigurationImpl.getSettings(NOTIFICATION_SETTINGS_KEY).getDisplayType() == NotificationDisplayType.NONE) return null; + + final EditorNotificationPanel panel = new EditorNotificationPanel(); + panel.setText(EditorBundle.message("forced.soft.wrap.message")); + panel.createActionLabel(EditorBundle.message("forced.soft.wrap.hide.message"), new Runnable() { + @Override + public void run() { + editor.putUserData(EditorImpl.FORCED_SOFT_WRAPS, null); + EditorNotifications.getInstance(project).updateNotifications(file); + } + }); + panel.createActionLabel(EditorBundle.message("forced.soft.wrap.dont.show.again.message"), new Runnable() { + @Override + public void run() { + NotificationsConfiguration.getNotificationsConfiguration().changeSettings(NOTIFICATION_SETTINGS_KEY, NotificationDisplayType.NONE, false, false); + EditorNotifications.getInstance(project).updateAllNotifications(); + } + }); + return panel; + } +} diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java index 560fec4fb8a0..6a7b3be213f2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/SettingsImpl.java @@ -545,6 +545,10 @@ public class SettingsImpl implements EditorSettings { myUseSoftWraps = newValue; fireEditorRefresh(); } + + public void setUseSoftWrapsQuiet() { + myUseSoftWraps = Boolean.TRUE; + } @Override public boolean isAllSoftWrapsShown() { diff --git a/platform/platform-resources-en/src/messages/EditorBundle.properties b/platform/platform-resources-en/src/messages/EditorBundle.properties index 4cff2b744d91..575bd2d4b37b 100644 --- a/platform/platform-resources-en/src/messages/EditorBundle.properties +++ b/platform/platform-resources-en/src/messages/EditorBundle.properties @@ -21,4 +21,7 @@ hector.inspections.slider.label=Inspections action.duplicate.block=&Duplicate Block action.duplicate.line=&Duplicate Line increase.editor.font=Increase Font Size -decrease.editor.font=Decrease Font Size \ No newline at end of file +decrease.editor.font=Decrease Font Size +forced.soft.wrap.message=This document contains very long line(s). Soft wraps were forcibly enabled to improve editor performance. +forced.soft.wrap.hide.message=Hide notification +forced.soft.wrap.dont.show.again.message=Don't show again \ No newline at end of file diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index b45e068f1afd..14ef0cd79cc2 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -335,6 +335,7 @@ + diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index aabe0235a7bf..0cefc572b11d 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -138,6 +138,9 @@ editor.add.carets.on.double.control.arrows=true editor.durable.folding.state=true editor.durable.folding.state.description=If set, collapsed fold regions will preserve their state after a wider variety of document editing changes +editor.soft.wrap.force.limit=1000 +editor.soft.wrap.force.limit.description=If document contains lines longer than this value, soft wraps will be forcibly enabled in editor due to performance reasons + ide.showIndexRebuildMessage=false ide.tabbedPane.bufferedPaint=true From cdb00ec6c5e24664893b40c864877c30b2a4f344 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 18:14:34 +0300 Subject: [PATCH 04/63] IDEA-COMMUNITY-CR-1230 followup --- .../openapi/editor/ex/DocumentEx.java | 12 ++++++- .../openapi/editor/impl/DocumentImpl.java | 34 +++++++++---------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java b/platform/core-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java index 7e127598dab4..f0638c94e348 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -83,7 +83,17 @@ public interface DocumentEx extends Document { @NotNull List getGuardedBlocks(); + + /** + * Get all range markers + * and hand them to the {@code processor} in their {@link RangeMarker#getStartOffset()} order + */ boolean processRangeMarkers(@NotNull Processor processor); + + /** + * Get range markers which {@link com.intellij.openapi.util.TextRange#intersects(int, int)} the specified range + * and hand them to the {@code processor} in their {@link RangeMarker#getStartOffset()} order + */ boolean processRangeMarkersOverlappingWith(int start, int end, @NotNull Processor processor); } diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java index a9ac8c880521..d380056e8a47 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java @@ -332,11 +332,11 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { } } - public ReadonlyFragmentModificationHandler getReadonlyFragmentModificationHandler() { + ReadonlyFragmentModificationHandler getReadonlyFragmentModificationHandler() { return myReadonlyFragmentModificationHandler; } - public void setReadonlyFragmentModificationHandler(final ReadonlyFragmentModificationHandler readonlyFragmentModificationHandler) { + void setReadonlyFragmentModificationHandler(final ReadonlyFragmentModificationHandler readonlyFragmentModificationHandler) { myReadonlyFragmentModificationHandler = readonlyFragmentModificationHandler; } @@ -364,13 +364,13 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { } @TestOnly - public int getRangeMarkersSize() { + int getRangeMarkersSize() { return myRangeMarkers.size() + myPersistentRangeMarkers.size(); } @TestOnly - public int getRangeMarkersNodeSize() { - return myRangeMarkers.nodeSize()+myPersistentRangeMarkers.size(); + int getRangeMarkersNodeSize() { + return myRangeMarkers.nodeSize()+myPersistentRangeMarkers.nodeSize(); } @Override @@ -693,7 +693,7 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { getLineSet().clearModificationFlags(); } - public void clearLineModificationFlagsExcept(@NotNull int[] caretLines) { + void clearLineModificationFlagsExcept(@NotNull int[] caretLines) { IntArrayList modifiedLines = new IntArrayList(caretLines.length); LineSet lineSet = getLineSet(); for (int line : caretLines) { @@ -716,8 +716,8 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { assertNotNestedModification(); boolean enableRecursiveModifications = Registry.is("enable.recursive.document.changes"); // temporary property, to remove in IDEA 16 myChangeInProgress = true; - final DocumentEvent event; try { + final DocumentEvent event; try { event = doBeforeChangedUpdate(offset, oldString, newString, wholeTextReplaced); } @@ -742,11 +742,9 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { Application app = ApplicationManager.getApplication(); if (app != null) { FileDocumentManager manager = FileDocumentManager.getInstance(); - if (manager != null) { - VirtualFile file = manager.getFile(this); - if (file != null && !file.isValid()) { - LOG.error("File of this document has been deleted."); - } + VirtualFile file = manager.getFile(this); + if (file != null && !file.isValid()) { + LOG.error("File of this document has been deleted."); } } assertInsideCommand(); @@ -878,9 +876,9 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { private final Ref myCachedDocumentListenersRef; private final List myDocumentListeners; - public DocumentListenerDisposable(@NotNull DocumentListener listener, - @NotNull Ref cachedDocumentListenersRef, - @NotNull List documentListeners) { + private DocumentListenerDisposable(@NotNull DocumentListener listener, + @NotNull Ref cachedDocumentListenersRef, + @NotNull List documentListeners) { myListener = listener; myCachedDocumentListenersRef = cachedDocumentListenersRef; myDocumentListeners = documentListeners; @@ -1085,7 +1083,7 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { return "DocumentImpl[" + FileDocumentManager.getInstance().getFile(this) + "]"; } - public void requestTabTracking() { + void requestTabTracking() { ApplicationManager.getApplication().assertIsDispatchThread(); if (myTabTrackingRequestors++ == 0) { myMightContainTabs = false; @@ -1093,14 +1091,14 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { } } - public void giveUpTabTracking() { + void giveUpTabTracking() { ApplicationManager.getApplication().assertIsDispatchThread(); if (--myTabTrackingRequestors == 0) { myMightContainTabs = true; } } - public boolean mightContainTabs() { + boolean mightContainTabs() { return myMightContainTabs; } From 6caa6c1fbd8babe154d739a1816a990eaaf2788c Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 18:15:39 +0300 Subject: [PATCH 05/63] cleanup --- .../components/impl/stores/DefaultStateSerializer.java | 5 +++-- .../usageView/src/com/intellij/usages/UsageLimitUtil.java | 3 +-- .../com/intellij/usages/impl/SearchForUsagesRunnable.java | 2 +- .../src/com/intellij/usages/impl/UsageViewImpl.java | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/stores/DefaultStateSerializer.java b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/stores/DefaultStateSerializer.java index 71fb2056386d..2b810028626a 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/stores/DefaultStateSerializer.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/stores/DefaultStateSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import com.intellij.openapi.util.WriteExternalException; import com.intellij.util.ReflectionUtil; import com.intellij.util.xmlb.Accessor; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; +import com.intellij.util.xmlb.XmlSerializationException; import com.intellij.util.xmlb.XmlSerializer; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -71,7 +72,7 @@ public class DefaultStateSerializer { @SuppressWarnings({"unchecked"}) @Nullable - public static T deserializeState(@Nullable Element stateElement, Class stateClass, @Nullable T mergeInto) throws StateStorageException { + public static T deserializeState(@Nullable Element stateElement, Class stateClass, @Nullable T mergeInto) throws StateStorageException,XmlSerializationException { if (stateElement == null) return mergeInto; if (stateClass.equals(Element.class)) { diff --git a/platform/usageView/src/com/intellij/usages/UsageLimitUtil.java b/platform/usageView/src/com/intellij/usages/UsageLimitUtil.java index 61fd1d91abd7..fbee3a7b9316 100644 --- a/platform/usageView/src/com/intellij/usages/UsageLimitUtil.java +++ b/platform/usageView/src/com/intellij/usages/UsageLimitUtil.java @@ -48,13 +48,12 @@ public class UsageLimitUtil { public static Result showTooManyUsagesWarning(@NotNull final Project project, @NotNull final String message, @NotNull final UsageViewPresentation usageViewPresentation) { - final String[] buttons = {UsageViewBundle.message("button.text.continue"), UsageViewBundle.message("button.text.abort")}; int result = runOrInvokeAndWait(new Computable() { @Override public Integer compute() { String title = UsageViewBundle.message("find.excessive.usages.title", StringUtil.capitalize(StringUtil.pluralize(usageViewPresentation.getUsagesWord()))); return Messages.showOkCancelDialog(project, message, - title, buttons[0], buttons[1], + title, UsageViewBundle.message("button.text.continue"), UsageViewBundle.message("button.text.abort"), Messages.getWarningIcon()); } }); diff --git a/platform/usageView/src/com/intellij/usages/impl/SearchForUsagesRunnable.java b/platform/usageView/src/com/intellij/usages/impl/SearchForUsagesRunnable.java index 680e621a8f16..449c462d7668 100644 --- a/platform/usageView/src/com/intellij/usages/impl/SearchForUsagesRunnable.java +++ b/platform/usageView/src/com/intellij/usages/impl/SearchForUsagesRunnable.java @@ -277,7 +277,7 @@ class SearchForUsagesRunnable implements Runnable { rangeBlinker.startBlinking(); } - private UsageViewImpl getUsageView(ProgressIndicator indicator) { + private UsageViewImpl getUsageView(@NotNull ProgressIndicator indicator) { UsageViewImpl usageView = myUsageViewRef.get(); if (usageView != null) return usageView; int usageCount = myUsageCountWithoutDefinition.get(); diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java index d981aac222a1..566acce9ca60 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java @@ -772,7 +772,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra return configurableTarget == null ? getShowUsagesWithSettingsShortcut() : configurableTarget.getShortcut(); } - void associateProgress(ProgressIndicator indicator) { + void associateProgress(@NotNull ProgressIndicator indicator) { associatedProgress = indicator; } From 3d1595ca4064145eb20c19143e9b79bbaedac054 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 18:25:25 +0300 Subject: [PATCH 06/63] diagnostics for EA-60403 - assert: PsiMethodCallExpressionImpl.getArgumentList --- .../impl/source/tree/java/PsiMethodCallExpressionImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java index 9bbb90a677cd..f8dbb9d2c1f3 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -97,8 +97,9 @@ public class PsiMethodCallExpressionImpl extends ExpressionPsiElement implements @NotNull public PsiExpressionList getArgumentList() { PsiExpressionList list = (PsiExpressionList)findChildByRoleAsPsiElement(ChildRole.ARGUMENT_LIST); - if (list != null) return list; - LOG.error("Invalid PSI. Children:" + DebugUtil.psiToString(this, false)); + if (list == null) { + LOG.error("Invalid PSI for'" + getText() + ". Parent:" + DebugUtil.psiToString(getParent(), false)); + } return list; } From 8206d46992fde993133b228eec55ad0196b08b36 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 20:28:06 +0300 Subject: [PATCH 07/63] cleanup --- .../diff/impl/incrementalMerge/Change.java | 15 ++++++++------- .../diff/impl/incrementalMerge/ChangeSide.java | 5 +++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/Change.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/Change.java index 793d74002fdc..9b05f0ba3916 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/Change.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/Change.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,13 +70,11 @@ public abstract class Change { RangeMarker originalRangeMarker = getRangeMarker(original); RangeMarker rangeMarker = getRangeMarker(targetSide); - if (originalRangeMarker != null && rangeMarker != null) { - TextRange textRange = modifyDocument(getProject(), originalRangeMarker, rangeMarker); - if (textRange != null && isValid()) { - updateTargetRangeMarker(targetSide, textRange); - } - onApplied(); + TextRange textRange = modifyDocument(getProject(), originalRangeMarker, rangeMarker); + if (textRange != null && isValid()) { + updateTargetRangeMarker(targetSide, textRange); } + onApplied(); } /** @@ -142,10 +140,12 @@ public abstract class Change { return getChangeList().getProject(); } + @NotNull private ChangeHighlighterHolder getHighlighterHolder(FragmentSide side) { return getChangeSide(side).getHighlighterHolder(); } + @NotNull private RangeMarker getRangeMarker(FragmentSide side) { ChangeSide changeSide = getChangeSide(side); LOG.assertTrue(changeSide != null); @@ -226,6 +226,7 @@ public abstract class Change { return myRange; } + @NotNull @Override public ChangeHighlighterHolder getHighlighterHolder() { return myHighlighterHolder; diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java index 31b40d8fe913..94023839ed81 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; /** * @author Kirill Likhodedov */ -public abstract class ChangeSide { +abstract class ChangeSide { public int getStart() { return getRange().getStartOffset(); @@ -43,6 +43,7 @@ public abstract class ChangeSide { @NotNull public abstract DiffRangeMarker getRange(); + @NotNull public abstract ChangeHighlighterHolder getHighlighterHolder(); public boolean contains(int offset) { From a702d113ec7d7c0e907afd65bb23a294cea190e9 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 20:29:57 +0300 Subject: [PATCH 08/63] ensure there is no extra document listener (IDEA-COMMUNITY-CR-1230 followup) --- .../incrementalMerge/DiffRangeMarker.java | 71 ++++++++----------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/DiffRangeMarker.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/DiffRangeMarker.java index 05b4a26f08e8..8890b2a3f37d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/DiffRangeMarker.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/DiffRangeMarker.java @@ -15,48 +15,31 @@ */ package com.intellij.openapi.diff.impl.incrementalMerge; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.RangeMarker; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; class DiffRangeMarker implements RangeMarker { - private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.diff.impl.incrementalMerge.DiffRangeMarker"); private final RangeMarker myRangeMarker; - private RangeInvalidListener myListener; DiffRangeMarker(@NotNull Document document, @NotNull TextRange range, RangeInvalidListener listener) { myRangeMarker = document.createRangeMarker(range.getStartOffset(), range.getEndOffset()); - myListener = listener; if (listener != null) { - final InvalidRangeDispatcher notifier = InvalidRangeDispatcher.addClient(document); - document.addDocumentListener(new DocumentAdapter() { - @Override - public void beforeDocumentChange(DocumentEvent e) { - if (myListener != null) { - notifier.notify(new RangeInvalidListener() { - @Override - public void onRangeInvalidated() { - if (!isValid() && myListener != null) myListener.onRangeInvalidated(); - } - }); - } - } - }); + InvalidRangeDispatcher.addClient(document, this, listener); } } - public void removeListener(RangeInvalidListener listener) { - LOG.assertTrue(myListener == listener || myListener == null); - myListener = null; - InvalidRangeDispatcher.removeClient(getDocument()); + public void removeListener(@NotNull RangeInvalidListener listener) { + InvalidRangeDispatcher.removeClient(getDocument(), this, listener); } interface RangeInvalidListener { @@ -65,43 +48,45 @@ class DiffRangeMarker implements RangeMarker { private static class InvalidRangeDispatcher extends DocumentAdapter { private static final Key KEY = Key.create("deferedNotifier"); - private final ArrayList myDeferedNotifications = new ArrayList(); - private int myClientCount = 0; + private final Map myDiffRangeMarkers = ContainerUtil.newConcurrentMap(); @Override public void documentChanged(DocumentEvent e) { - if (myDeferedNotifications.isEmpty()) return; - RangeInvalidListener[] notifications = myDeferedNotifications.toArray(new RangeInvalidListener[myDeferedNotifications.size()]); - myDeferedNotifications.clear(); - for (RangeInvalidListener notification : notifications) { - notification.onRangeInvalidated(); + for (Iterator> iterator = myDiffRangeMarkers.entrySet().iterator(); + iterator.hasNext(); ) { + Map.Entry entry = iterator.next(); + DiffRangeMarker diffRangeMarker = entry.getKey(); + RangeInvalidListener listener = entry.getValue(); + if (!diffRangeMarker.isValid() && listener != null) { + listener.onRangeInvalidated(); + iterator.remove(); + } } } - public void notify(@NotNull RangeInvalidListener listener) { - myDeferedNotifications.add(listener); - } - - private static InvalidRangeDispatcher addClient(@NotNull Document document) { + private static void addClient(@NotNull Document document, + @NotNull DiffRangeMarker marker, + @NotNull RangeInvalidListener listener) { InvalidRangeDispatcher notifier = document.getUserData(KEY); if (notifier == null) { notifier = new InvalidRangeDispatcher(); document.putUserData(KEY, notifier); document.addDocumentListener(notifier); } - notifier.myClientCount++; - return notifier; + assert !notifier.myDiffRangeMarkers.containsKey(marker); + notifier.myDiffRangeMarkers.put(marker, listener); } - private static void removeClient(Document document) { + private static void removeClient(@NotNull Document document, + @NotNull DiffRangeMarker marker, + @NotNull RangeInvalidListener listener) { InvalidRangeDispatcher notifier = document.getUserData(KEY); - notifier.onClientRemoved(document); + assert notifier != null; + notifier.onClientRemoved(document, marker, listener); } - private void onClientRemoved(Document document) { - myClientCount--; - LOG.assertTrue(myClientCount >= 0); - if (myClientCount == 0) { + private void onClientRemoved(@NotNull Document document, @NotNull DiffRangeMarker marker, @NotNull RangeInvalidListener listener) { + if (myDiffRangeMarkers.remove(marker) == listener && myDiffRangeMarkers.isEmpty()) { document.putUserData(KEY, null); document.removeDocumentListener(this); } From 192572c72e07af990029710ad483057368a9aed0 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 21:15:29 +0300 Subject: [PATCH 09/63] move memory stress inside loop (Linux tests) --- .../util/containers/ConcurrentMapsTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/util/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java b/platform/util/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java index 7bb66066e24a..f97d78434835 100644 --- a/platform/util/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java +++ b/platform/util/testSrc/com/intellij/util/containers/ConcurrentMapsTest.java @@ -47,8 +47,8 @@ public class ConcurrentMapsTest { @SuppressWarnings("unchecked") ConcurrentWeakHashMap map = new ConcurrentWeakHashMap(TObjectHashingStrategy.IDENTITY); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them do { + tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them System.gc(); } while (!map.processQueue()); @@ -85,8 +85,8 @@ public class ConcurrentMapsTest { ConcurrentWeakHashMap map = new ConcurrentWeakHashMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them do { + tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them System.gc(); } while (!map.processQueue()); @@ -109,8 +109,8 @@ public class ConcurrentMapsTest { ConcurrentSoftHashMap map = new ConcurrentSoftHashMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); do { + tryGcSoftlyReachableObjects(); System.gc(); } while (!map.processQueue()); @@ -125,8 +125,8 @@ public class ConcurrentMapsTest { (ConcurrentWeakValueHashMap)ContainerUtil.createConcurrentWeakValueMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them do { + tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them System.gc(); } while (!map.processQueue()); @@ -140,8 +140,8 @@ public class ConcurrentMapsTest { ConcurrentSoftValueHashMap map = new ConcurrentSoftValueHashMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); do { + tryGcSoftlyReachableObjects(); System.gc(); } while (!map.processQueue()); @@ -190,8 +190,8 @@ public class ConcurrentMapsTest { SoftKeySoftValueHashMap map = new SoftKeySoftValueHashMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); do { + tryGcSoftlyReachableObjects(); System.gc(); } while (!map.processQueue()); @@ -203,8 +203,8 @@ public class ConcurrentMapsTest { WeakKeyWeakValueHashMap map = new WeakKeyWeakValueHashMap(); map.put(new Object(), new Object()); - tryGcSoftlyReachableObjects(); do { + tryGcSoftlyReachableObjects(); System.gc(); } while (!map.processQueue()); From a170094753df45f09148ba19fb80295db1ceafaa Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 19 Dec 2014 22:10:05 +0300 Subject: [PATCH 10/63] compilation --- .../intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java index 94023839ed81..885f82516b6d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ChangeSide.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; /** * @author Kirill Likhodedov */ -abstract class ChangeSide { +public abstract class ChangeSide { public int getStart() { return getRange().getStartOffset(); From 477204696e4191b65b31e1e60b5e565b18de528c Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 14:28:47 +0300 Subject: [PATCH 11/63] EA-62599 - assert: ApplicationImpl.invokeAndWait --- .../progress/util/TooManyUsagesStatus.java | 18 +++++- .../ide/util/gotoByName/ChooseByNameBase.java | 56 +++++++++---------- .../usages/impl/UsageViewManagerImpl.java | 18 +++--- 3 files changed, 51 insertions(+), 41 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/progress/util/TooManyUsagesStatus.java b/platform/core-impl/src/com/intellij/openapi/progress/util/TooManyUsagesStatus.java index f44d497edefa..a20d42d38bf8 100644 --- a/platform/core-impl/src/com/intellij/openapi/progress/util/TooManyUsagesStatus.java +++ b/platform/core-impl/src/com/intellij/openapi/progress/util/TooManyUsagesStatus.java @@ -15,6 +15,7 @@ */ package com.intellij.openapi.progress.util; +import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolder; @@ -28,6 +29,11 @@ import java.util.concurrent.atomic.AtomicReference; public class TooManyUsagesStatus { private static final Key KEY = Key.create("TooManyUsagesStatus"); private static final NullStatus NULL_STATUS = new NullStatus(); + private final ProgressIndicator myIndicator; + + private TooManyUsagesStatus(@NotNull ProgressIndicator indicator) { + myIndicator = indicator; + } @NotNull public static TooManyUsagesStatus getFrom(@Nullable ProgressIndicator indicator) { @@ -38,7 +44,7 @@ public class TooManyUsagesStatus { public static TooManyUsagesStatus createFor(@NotNull ProgressIndicator indicator) { TooManyUsagesStatus data = null; if (indicator instanceof UserDataHolder) { - data = new TooManyUsagesStatus(); + data = new TooManyUsagesStatus(indicator); ((UserDataHolder)indicator).putUserData(KEY, data); } return data; @@ -65,8 +71,12 @@ public class TooManyUsagesStatus { public void pauseProcessingIfTooManyUsages() { if (tooManyUsagesStatus.get() == Status.WARNING_DIALOG_SHOWN) { //assert ApplicationManager.getApplication().isDispatchThread() || !ApplicationManager.getApplication().isReadAccessAllowed(); + long start = System.currentTimeMillis(); try { - waitWhileUserClick.await(1, TimeUnit.SECONDS); + while (System.currentTimeMillis() < start + 1000) { + if (waitWhileUserClick.await(10, TimeUnit.MILLISECONDS)) break; + if (myIndicator.isCanceled()) break; + } } catch (InterruptedException ignored) { } @@ -74,6 +84,10 @@ public class TooManyUsagesStatus { } private static class NullStatus extends TooManyUsagesStatus { + private NullStatus() { + super(new EmptyProgressIndicator()); + } + @Override public boolean switchTooManyUsagesStatus() { return false; diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index f5c06224f8c7..ff3ad83bcafe 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -48,6 +48,7 @@ import com.intellij.openapi.progress.Task; import com.intellij.openapi.progress.util.ProgressIndicatorBase; import com.intellij.openapi.progress.util.ProgressIndicatorUtils; import com.intellij.openapi.progress.util.ReadTask; +import com.intellij.openapi.progress.util.TooManyUsagesStatus; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.*; import com.intellij.openapi.util.*; @@ -71,8 +72,8 @@ import com.intellij.ui.popup.PopupOwner; import com.intellij.ui.popup.PopupPositionManager; import com.intellij.ui.popup.PopupUpdateProcessor; import com.intellij.usageView.UsageInfo; -import com.intellij.usageView.UsageViewBundle; import com.intellij.usages.*; +import com.intellij.usages.impl.UsageViewManagerImpl; import com.intellij.util.Alarm; import com.intellij.util.Consumer; import com.intellij.util.Processor; @@ -102,7 +103,6 @@ import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; public abstract class ChooseByNameBase { private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.gotoByName.ChooseByNameBase"); @@ -1541,18 +1541,18 @@ public abstract class ChooseByNameBase { new CalcElementsThread(myPattern, myCheckboxState, myCallback, myModalityState, myScopeExpanded).scheduleThread(); } - public void addElementsByPattern(@NotNull String pattern, + private void addElementsByPattern(@NotNull String pattern, @NotNull final Set elements, - @NotNull final ProgressIndicator cancelled, + @NotNull final ProgressIndicator indicator, boolean everywhere) { long start = System.currentTimeMillis(); myProvider.filterElements( ChooseByNameBase.this, pattern, everywhere, - cancelled, + indicator, new Processor() { @Override public boolean process(Object o) { - if (cancelled.isCanceled()) return false; + if (indicator.isCanceled()) return false; elements.add(o); if (isOverflow(elements)) { @@ -1653,8 +1653,9 @@ public abstract class ChooseByNameBase { cancelListUpdater(); final UsageViewPresentation presentation = new UsageViewPresentation(); - final String prefixPattern = myFindUsagesTitle + " \'" + myTextField.getText().trim() + "\'"; - final String nonPrefixPattern = myFindUsagesTitle + " \'*" + myTextField.getText().trim() + "*\'"; + final String text = myTextField.getText(); + final String prefixPattern = myFindUsagesTitle + " \'" + text.trim() + "\'"; + final String nonPrefixPattern = myFindUsagesTitle + " \'*" + text.trim() + "*\'"; presentation.setCodeUsagesString(prefixPattern); presentation.setUsagesInGeneratedCodeString(prefixPattern + " in generated code"); presentation.setDynamicUsagesString(nonPrefixPattern); @@ -1667,45 +1668,38 @@ public abstract class ChooseByNameBase { fillUsages(Arrays.asList(elements[0]), usages, targets, false); fillUsages(Arrays.asList(elements[1]), usages, targets, true); if (myListModel.contains(EXTRA_ELEM)) { //start searching for the rest - final String text = myTextField.getText(); final boolean everywhere = myCheckBox.isSelected(); - final LinkedHashSet prefixMatchElementsArray = new LinkedHashSet(); - final LinkedHashSet nonPrefixMatchElementsArray = new LinkedHashSet(); + final Set prefixMatchElementsArray = new LinkedHashSet(); + final Set nonPrefixMatchElementsArray = new LinkedHashSet(); hideHint(); ProgressManager.getInstance().run(new Task.Modal(myProject, prefixPattern, true) { private ChooseByNameBase.CalcElementsThread myCalcUsagesThread; - @Override public void run(@NotNull final ProgressIndicator indicator) { ensureNamesLoaded(everywhere); indicator.setIndeterminate(true); - ApplicationManager.getApplication().runReadAction(new Runnable() { + final TooManyUsagesStatus tooManyUsagesStatus = TooManyUsagesStatus.createFor(indicator); + myCalcUsagesThread = new CalcElementsThread(text, everywhere, null, ModalityState.NON_MODAL, false) { + @Override + protected boolean isOverflow(@NotNull Set elementsArray) { + tooManyUsagesStatus.pauseProcessingIfTooManyUsages(); + if (elementsArray.size() > UsageLimitUtil.USAGES_LIMIT - myMaximumListSizeLimit && tooManyUsagesStatus.switchTooManyUsagesStatus()) { + int usageCount = elementsArray.size() + myMaximumListSizeLimit; + UsageViewManagerImpl.showTooManyUsagesWarning(getProject(), tooManyUsagesStatus, indicator, presentation, usageCount, null); + } + return false; + } + }; + ApplicationManager.getApplication().runReadAction(new Runnable() { @Override public void run() { - final boolean[] overFlow = {false}; - myCalcUsagesThread = new CalcElementsThread(text, everywhere, null, ModalityState.NON_MODAL, false) { - private final AtomicBoolean userAskedToAbort = new AtomicBoolean(); - @Override - protected boolean isOverflow(@NotNull Set elementsArray) { - if (elementsArray.size() > UsageLimitUtil.USAGES_LIMIT - myMaximumListSizeLimit && !userAskedToAbort.getAndSet(true)) { - final UsageLimitUtil.Result ret = UsageLimitUtil.showTooManyUsagesWarning(myProject, UsageViewBundle - .message("find.excessive.usage.count.prompt", elementsArray.size() + myMaximumListSizeLimit, StringUtil.pluralize(presentation.getUsagesWord())), presentation); - if (ret == UsageLimitUtil.Result.ABORT) { - overFlow[0] = true; - return true; - } - } - return false; - } - }; - boolean anyPlace = isSearchInAnyPlace(); setSearchInAnyPlace(false); myCalcUsagesThread.addElementsByPattern(text, prefixMatchElementsArray, indicator, everywhere); setSearchInAnyPlace(anyPlace); - if (anyPlace && !overFlow[0]) { + if (anyPlace && !indicator.isCanceled()) { myCalcUsagesThread.addElementsByPattern(text, nonPrefixMatchElementsArray, indicator, everywhere); nonPrefixMatchElementsArray.removeAll(prefixMatchElementsArray); } diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java index 2445bb2653d5..04cce1726d38 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java @@ -220,20 +220,22 @@ public class UsageViewManagerImpl extends UsageViewManager { } - static void showTooManyUsagesWarning(@NotNull final Project project, - @NotNull final TooManyUsagesStatus tooManyUsagesStatus, - @NotNull final ProgressIndicator indicator, - @NotNull final UsageViewPresentation presentation, - final int usageCount, - final UsageViewImpl usageView) { + public static void showTooManyUsagesWarning(@NotNull final Project project, + @NotNull final TooManyUsagesStatus tooManyUsagesStatus, + @NotNull final ProgressIndicator indicator, + @NotNull final UsageViewPresentation presentation, + final int usageCount, + @Nullable final UsageViewImpl usageView) { UIUtil.invokeLaterIfNeeded(new Runnable() { @Override public void run() { if (usageView != null && usageView.searchHasBeenCancelled() || indicator.isCanceled()) return; String message = UsageViewBundle.message("find.excessive.usage.count.prompt", usageCount, StringUtil.pluralize(presentation.getUsagesWord())); UsageLimitUtil.Result ret = UsageLimitUtil.showTooManyUsagesWarning(project, message, presentation); - if (ret == UsageLimitUtil.Result.ABORT && usageView != null) { - usageView.cancelCurrentSearch(); + if (ret == UsageLimitUtil.Result.ABORT) { + if (usageView != null) { + usageView.cancelCurrentSearch(); + } indicator.cancel(); } tooManyUsagesStatus.userResponded(); From 2f73716a0eba1e3c601992ebc086451f1fb20c07 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Dec 2014 13:09:46 +0100 Subject: [PATCH 12/63] IDEA-64131 support for links in comments --- .../impl/source/javadoc/PsiDocTokenImpl.java | 12 +++ .../javaDoc/LinksInJavaDoc.java | 8 ++ .../daemon/JavadocHighlightingTest.java | 34 ++++++++ .../ArbitraryPlaceUrlReferenceProvider.java | 83 +++++++++++++++++++ .../paths/GlobalPathReferenceProvider.java | 23 +++-- .../providers/JavaReferenceContributor.java | 5 ++ 6 files changed, 158 insertions(+), 7 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java create mode 100644 platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTokenImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTokenImpl.java index 85301458d047..4225844fe754 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTokenImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTokenImpl.java @@ -15,8 +15,11 @@ */ package com.intellij.psi.impl.source.javadoc; +import com.intellij.psi.JavaDocTokenType; import com.intellij.psi.JavaElementVisitor; import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiReference; +import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry; import com.intellij.psi.impl.source.tree.LeafPsiElement; import com.intellij.psi.javadoc.PsiDocToken; import com.intellij.psi.tree.IElementType; @@ -42,6 +45,15 @@ public class PsiDocTokenImpl extends LeafPsiElement implements PsiDocToken{ } } + @NotNull + @Override + public PsiReference[] getReferences() { + if (getTokenType() == JavaDocTokenType.DOC_COMMENT_DATA) { + return ReferenceProvidersRegistry.getReferencesFromProviders(this, PsiDocToken.class); + } + return super.getReferences(); + } + public String toString(){ return "PsiDocToken:" + getTokenType().toString(); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java new file mode 100644 index 000000000000..35c3ef7e3115 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java @@ -0,0 +1,8 @@ +/** + * + * The Unicode Standard + */ +class LinksInJavaDoc { + // Since Java 7 classloading is parallel on parallel capable classloader (http://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html) + // Parallel classloading avoids deadlocks like https://youtrack.jetbrains.com/issue/IDEA-131621, +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java index 10d5bc064dcd..3d435c4adad6 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java @@ -4,10 +4,17 @@ import com.intellij.JavaTestUtil; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.javaDoc.JavaDocLocalInspection; import com.intellij.codeInspection.javaDoc.JavaDocReferenceInspection; +import com.intellij.openapi.paths.WebReference; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.LanguageLevel; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiRecursiveElementWalkingVisitor; +import com.intellij.psi.PsiReference; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.List; + public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { private static final String BASE_PATH = "/codeInsight/daemonCodeAnalyzer/javaDoc"; @@ -107,6 +114,33 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } + public void testLinksInJavaDoc() throws Exception { + configureByFile(BASE_PATH + "/" + getTestName(false) + ".java"); + final List refs = new ArrayList(); + myFile.accept(new PsiRecursiveElementWalkingVisitor() { + @Override + public void visitElement(PsiElement element) { + for(PsiReference ref:element.getReferences()) { + if (ref instanceof WebReference) refs.add((WebReference)ref); + } + + super.visitElement(element); + } + }); + + String[] targets = {"http://www.unicode.org/unicode/standard/standard.html", + "http://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html", + "https://youtrack.jetbrains.com/issue/IDEA-131621"}; + assertTrue(refs.size() == targets.length); + int i = 0; + + for(WebReference ref:refs) { + assertEquals(ref.getCanonicalText(), targets[i++]); + assertTrue(ref.isSoft()); + assertNotNull(ref.resolve()); + } + } + protected void doTest() throws Exception { super.doTest(BASE_PATH + "/" + getTestName(false) + ".java", true, false); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java new file mode 100644 index 000000000000..3a305ef0a6cd --- /dev/null +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java @@ -0,0 +1,83 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.documentation; + +import com.intellij.openapi.paths.GlobalPathReferenceProvider; +import com.intellij.openapi.paths.PathReferenceManager; +import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.UserDataCache; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiReference; +import com.intellij.psi.PsiReferenceProvider; +import com.intellij.psi.util.CachedValue; +import com.intellij.psi.util.CachedValueProvider; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.util.ProcessingContext; +import com.intellij.util.SmartList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** +* Created by Maxim.Mossienko on 12/19/2014. +*/ +public class ArbitraryPlaceUrlReferenceProvider extends PsiReferenceProvider { + public static final ArbitraryPlaceUrlReferenceProvider INSTANCE = new ArbitraryPlaceUrlReferenceProvider(); + + private static final Pattern urlPattern = Pattern.compile("((mailto\\:|(news|(ht|f)tp(s?))\\://){1}[^\\s\\),\"']+)"); + private static final UserDataCache, PsiElement, Object> ourRefsCache = new UserDataCache, PsiElement, Object>("psielement.url.refs") { + private final AtomicReference myReferenceProvider = new AtomicReference(); + + @Override + protected CachedValue compute(final PsiElement element, Object p) { + return CachedValuesManager + .getManager(element.getProject()).createCachedValue(new CachedValueProvider() { + public Result compute() { + Matcher matcher = urlPattern.matcher(element.getText()); + + List refs = null; + GlobalPathReferenceProvider provider = myReferenceProvider.get(); + + while (matcher.find()) { + final int start = matcher.start(); + final int end = matcher.end(); + if (refs == null) refs = new SmartList(); + if (provider == null) { + provider = (GlobalPathReferenceProvider)PathReferenceManager.getInstance().getGlobalWebPathReferenceProvider(); + myReferenceProvider.lazySet(provider); + } + + provider.createUrlReference(element, matcher.group(0), new TextRange(start, end), refs); + } + + return new Result(refs != null ? refs.toArray(new PsiReference[refs.size()]) : PsiReference.EMPTY_ARRAY, + element); + } + }, false); + + } + }; + + + @NotNull + @Override + public PsiReference[] getReferencesByElement(@NotNull final PsiElement element, @NotNull ProcessingContext context) { + return ourRefsCache.get(element, null).getValue(); + } +} diff --git a/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java b/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java index bc4b97d781f5..38156ce3cffa 100644 --- a/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java @@ -49,14 +49,23 @@ public class GlobalPathReferenceProvider implements PathReferenceProvider { if (manipulator == null) { return false; } - final TextRange range = manipulator.getRangeInElement(psiElement); - final String s = range.substring(psiElement.getText()); - if (isWebReferenceUrl(s)) { - references.add(new WebReference(psiElement, range)); + return createUrlReference( + psiElement, + manipulator.getRangeInElement(psiElement).substring(psiElement.getText()), + manipulator.getRangeInElement(psiElement), + references + ); + } + + public boolean createUrlReference(@NotNull PsiElement psiElement, + String url, + TextRange rangeInElement, @NotNull List references) { + if (isWebReferenceUrl(url)) { + references.add(new WebReference(psiElement, rangeInElement)); + return true; } - else if (s.contains("://") || s.startsWith("//") || startsWithAllowedPrefix(s)) { - final PsiReference reference = PsiReferenceBase.createSelfReference(psiElement, psiElement); - references.add(reference); + else if (url.contains("://") || url.startsWith("//") || startsWithAllowedPrefix(url)) { + references.add(PsiReferenceBase.createSelfReference(psiElement, psiElement)); return true; } return false; diff --git a/plugins/java-i18n/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/JavaReferenceContributor.java b/plugins/java-i18n/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/JavaReferenceContributor.java index b38f94079933..1a0fe723e3e5 100644 --- a/plugins/java-i18n/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/JavaReferenceContributor.java +++ b/plugins/java-i18n/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/JavaReferenceContributor.java @@ -16,11 +16,13 @@ package com.intellij.psi.impl.source.resolve.reference.impl.providers; import com.intellij.codeInsight.AnnotationUtil; +import com.intellij.codeInsight.documentation.ArbitraryPlaceUrlReferenceProvider; import com.intellij.codeInspection.i18n.JavaI18nUtil; import com.intellij.patterns.PlatformPatterns; import com.intellij.psi.*; import com.intellij.psi.filters.ElementFilter; import com.intellij.psi.filters.position.FilterPattern; +import com.intellij.psi.javadoc.PsiDocToken; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -52,5 +54,8 @@ public class JavaReferenceContributor extends PsiReferenceContributor{ return true; } })), filePathReferenceProvider); + registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiDocToken.class), ArbitraryPlaceUrlReferenceProvider.INSTANCE); + // todo register for all ? + registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiComment.class), ArbitraryPlaceUrlReferenceProvider.INSTANCE); } } From b4bde8b2061d786cb65a3b5f58d5cc533b867a86 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 13:16:40 +0100 Subject: [PATCH 13/63] use HttpRequests, add HttpRequests.getString --- .../com/intellij/util/io/HttpRequests.java | 35 +++++++++++++++++++ .../intellij/util/io/HttpRequestsTest.java | 11 ++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/platform/platform-api/src/com/intellij/util/io/HttpRequests.java b/platform/platform-api/src/com/intellij/util/io/HttpRequests.java index 08a5e6063d2d..bea10e9b625b 100644 --- a/platform/platform-api/src/com/intellij/util/io/HttpRequests.java +++ b/platform/platform-api/src/com/intellij/util/io/HttpRequests.java @@ -24,7 +24,9 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.util.ArrayUtil; +import com.intellij.util.ReflectionUtil; import com.intellij.util.SystemProperties; import com.intellij.util.net.HttpConfigurable; import com.intellij.util.net.NetUtils; @@ -38,6 +40,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.net.URLClassLoader; import java.net.URLConnection; +import java.nio.charset.Charset; import java.util.zip.GZIPInputStream; /** @@ -194,10 +197,42 @@ public abstract class HttpRequests { } }); } + + @NotNull + public String getString(@Nullable final ProgressIndicator indicator) throws IOException { + return connect(new HttpRequests.RequestProcessor() { + @Override + public String process(@NotNull HttpRequests.Request request) throws IOException { + int contentLength = request.getConnection().getContentLength(); + BufferExposingByteArrayOutputStream out = new BufferExposingByteArrayOutputStream(contentLength > 0 ? contentLength : 16 * 1024); + NetUtils.copyStreamContent(indicator, request.getInputStream(), out, contentLength); + + Charset charset = CharsetToolkit.UTF8_CHARSET; + String contentEncoding = request.getConnection().getContentEncoding(); + if (contentEncoding != null) { + try { + charset = Charset.forName(contentEncoding); + } + catch (Exception ignored) { + charset = CharsetToolkit.UTF8_CHARSET; + } + } + return new String(out.getInternalBuffer(), 0, out.size(), charset); + } + }); + } } @NotNull public static RequestBuilder request(@NotNull String url) { + if (ApplicationManager.getApplication() == null) { + try { + return ((HttpRequests)ReflectionUtil.newInstance(Class.forName("com.intellij.util.io.HttpRequestsImpl"))).createRequestBuilder(url); + } + catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } return ServiceManager.getService(HttpRequests.class).createRequestBuilder(url); } diff --git a/platform/platform-tests/testSrc/com/intellij/util/io/HttpRequestsTest.java b/platform/platform-tests/testSrc/com/intellij/util/io/HttpRequestsTest.java index 682b646a53e8..b6549ab094c9 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/io/HttpRequestsTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/io/HttpRequestsTest.java @@ -22,10 +22,10 @@ import org.junit.Test; import java.io.IOException; import java.net.SocketTimeoutException; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.*; -public class HttpRequestsTest { +public class HttpRequestsTest { private final HttpRequests.RequestProcessor myProcessor = new HttpRequests.RequestProcessor() { @SuppressWarnings("ResultOfMethodCallIgnored") @Override @@ -57,4 +57,9 @@ public class HttpRequestsTest { HttpRequests.request("http://openjdk.java.net").readTimeout(1).connect(myProcessor); fail(); } + + @Test(timeout = 5000) + public void testReadString() throws IOException { + assertThat(HttpRequests.request("http://openjdk.java.net").getString(null), containsString("Download")); + } } From ad5c077e06a89bd5a90e8dda4b2df3330b3ed184 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 22 Dec 2014 15:24:28 +0300 Subject: [PATCH 14/63] VCS tests: removed dangerous code which disables plugins inside test --- .../vcs/AbstractVcsTestCase.java | 50 ++++++------------- .../testSrc/org/zmlx/hg4idea/test/HgTest.java | 5 -- .../org/jetbrains/idea/SvnTestCase.java | 5 -- 3 files changed, 16 insertions(+), 44 deletions(-) diff --git a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/AbstractVcsTestCase.java b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/AbstractVcsTestCase.java index b64e222e7792..bc20186244dd 100644 --- a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/AbstractVcsTestCase.java +++ b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/AbstractVcsTestCase.java @@ -59,8 +59,6 @@ public abstract class AbstractVcsTestCase { protected IdeaProjectTestFixture myProjectFixture; protected boolean myInitChangeListManager = true; - protected abstract String getPluginName(); - protected TestClientRunner createClientRunner() { return createClientRunner(null); } @@ -90,42 +88,26 @@ public abstract class AbstractVcsTestCase { } protected void initProject(final File clientRoot, String testName) throws Exception { - final String key = "idea.load.plugins.id"; - final String was = System.getProperty(key); - try { - final String pluginName = getPluginName(); - if (pluginName != null) { - System.setProperty(key, pluginName); - } - String name = testName; - final TestFixtureBuilder testFixtureBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(name); - myProjectFixture = testFixtureBuilder.getFixture(); - testFixtureBuilder.addModule(EmptyModuleFixtureBuilder.class).addContentRoot(clientRoot.toString()); - myProjectFixture.setUp(); - myProject = myProjectFixture.getProject(); + final TestFixtureBuilder testFixtureBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(testName); + myProjectFixture = testFixtureBuilder.getFixture(); + testFixtureBuilder.addModule(EmptyModuleFixtureBuilder.class).addContentRoot(clientRoot.toString()); + myProjectFixture.setUp(); + myProject = myProjectFixture.getProject(); - projectCreated(); + projectCreated(); - if (myInitChangeListManager) { - ((ProjectComponent) ChangeListManager.getInstance(myProject)).projectOpened(); - } - ((ProjectComponent) VcsDirtyScopeManager.getInstance(myProject)).projectOpened(); - - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - myWorkingCopyDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(clientRoot); - assert myWorkingCopyDir != null; - } - }); + if (myInitChangeListManager) { + ((ProjectComponent) ChangeListManager.getInstance(myProject)).projectOpened(); } - finally { - if (was != null) { - System.setProperty(key, was); - } else { - System.clearProperty(key); + ((ProjectComponent) VcsDirtyScopeManager.getInstance(myProject)).projectOpened(); + + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + myWorkingCopyDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(clientRoot); + assert myWorkingCopyDir != null; } - } + }); ((ProjectLevelVcsManagerImpl)ProjectLevelVcsManager.getInstance(myProject)).waitForInitialized(); } diff --git a/plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgTest.java b/plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgTest.java index 43bb2121a9c9..007bc9ad8bc4 100644 --- a/plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgTest.java +++ b/plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgTest.java @@ -111,11 +111,6 @@ public abstract class HgTest extends AbstractVcsTestCase { }); } - @Override - protected String getPluginName() { - return "hg4idea"; - } - protected abstract HgTestRepository initRepositories() throws Exception; protected abstract void tearDownRepositories() throws Exception; diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/SvnTestCase.java b/plugins/svn4idea/testSource/org/jetbrains/idea/SvnTestCase.java index 393995a29da8..3ab15eb94e98 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/SvnTestCase.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/SvnTestCase.java @@ -113,11 +113,6 @@ public abstract class SvnTestCase extends AbstractJunitVcsTestCase { listener.after(events); } - @Override - protected String getPluginName() { - return "Subversion"; - } - @Before public void setUp() throws Exception { System.out.println("Native client for status: " + isUseNativeAcceleration()); From 7126e1498314846e57922c09a792b9bc0751ee91 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Dec 2014 13:33:40 +0100 Subject: [PATCH 15/63] open mail client on mailto: links --- .../daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java | 1 + .../intellij/codeInsight/daemon/JavadocHighlightingTest.java | 4 +++- .../intellij/openapi/paths/GlobalPathReferenceProvider.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java index 35c3ef7e3115..f4d84f9ab982 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java @@ -5,4 +5,5 @@ class LinksInJavaDoc { // Since Java 7 classloading is parallel on parallel capable classloader (http://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html) // Parallel classloading avoids deadlocks like https://youtrack.jetbrains.com/issue/IDEA-131621, + // Use mailto:webmaster@jetbrains.com to report abuse } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java index 3d435c4adad6..52c201d3cb54 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java @@ -130,7 +130,9 @@ public class JavadocHighlightingTest extends LightDaemonAnalyzerTestCase { String[] targets = {"http://www.unicode.org/unicode/standard/standard.html", "http://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html", - "https://youtrack.jetbrains.com/issue/IDEA-131621"}; + "https://youtrack.jetbrains.com/issue/IDEA-131621", + "mailto:webmaster@jetbrains.com" + }; assertTrue(refs.size() == targets.length); int i = 0; diff --git a/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java b/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java index 38156ce3cffa..bef8449529bd 100644 --- a/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/paths/GlobalPathReferenceProvider.java @@ -31,7 +31,7 @@ import java.util.List; public class GlobalPathReferenceProvider implements PathReferenceProvider { @NonNls private static final String[] PREFIXES = { - "mailto:", "tel:", "sms:", "skype:", "data:", "xmpp:" + "tel:", "sms:", "skype:", "data:", "xmpp:" }; public static boolean startsWithAllowedPrefix(String s) { @@ -72,7 +72,7 @@ public class GlobalPathReferenceProvider implements PathReferenceProvider { } public static boolean isWebReferenceUrl(String url) { - return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("about:"); + return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("about:") || url.startsWith("mailto:"); } @Override From c714a777e61e09d603f8dece58e076935a4692dc Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Mon, 22 Dec 2014 15:51:37 +0300 Subject: [PATCH 16/63] Move class loading from the EDT to a pooled thread --- .../options/ex/ConfigurableCardPanel.java | 8 +- .../src/com/intellij/ui/CardLayoutPanel.java | 76 +++++++++++++------ 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java index f851bda95b39..232bc62c7b3b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java @@ -29,7 +29,13 @@ import java.awt.BorderLayout; /** * @author Sergey.Malenkov */ -public class ConfigurableCardPanel extends CardLayoutPanel { +public class ConfigurableCardPanel extends CardLayoutPanel { + @Override + protected Configurable prepare(Configurable key) { + ConfigurableWrapper.cast(Configurable.class, key); // create wrapped configurable on a pooled thread + return key; + } + @Override protected JComponent create(final Configurable configurable) { return configurable == null ? null : ApplicationManager.getApplication().runReadAction(new Computable() { diff --git a/platform/platform-impl/src/com/intellij/ui/CardLayoutPanel.java b/platform/platform-impl/src/com/intellij/ui/CardLayoutPanel.java index 09b39042abce..ac4968903b20 100644 --- a/platform/platform-impl/src/com/intellij/ui/CardLayoutPanel.java +++ b/platform/platform-impl/src/com/intellij/ui/CardLayoutPanel.java @@ -26,13 +26,34 @@ import java.util.Iterator; import java.util.Map.Entry; /** + * @param the type of an object used as a key + * @param the type of an object used to create a component + * @param the type of a component to create + * * @author Sergey.Malenkov */ -public abstract class CardLayoutPanel extends JComponent { +public abstract class CardLayoutPanel extends JComponent { private final IdentityHashMap myContent = new IdentityHashMap(); private K myKey; - protected abstract V create(K key); + /** + * Prepares the specified key object to return the temporary object + * that can be used to create a component view. + * This method may be called on a pooled thread. + * + * @param key the key object + * @return the object used to create a component + */ + protected abstract UI prepare(K key); + + /** + * Creates a component view from the temporary object. + * This method is usually called on the EDT. + * + * @param ui + * @return + */ + protected abstract V create(UI ui); protected void dispose(K key) { } @@ -44,12 +65,12 @@ public abstract class CardLayoutPanel extends JComponent public V getValue(K key, boolean create) { V value = myContent.get(key); return create && value == null && !myContent.containsKey(key) - ? createValue(key) + ? createValue(key, prepare(key)) : value; } - private V createValue(K key) { - V value = create(key); + private V createValue(K key, UI ui) { + V value = create(ui); myContent.put(key, value); if (value != null) { value.setVisible(false); @@ -61,39 +82,44 @@ public abstract class CardLayoutPanel extends JComponent public ActionCallback select(K key, boolean now) { myKey = key; ActionCallback callback = new ActionCallback(); - select(callback, key, now); + if (now) { + select(callback, key, prepare(key)); + } + else { + selectLater(callback, key); + } return callback; } - private void select(ActionCallback callback, K key, boolean now) { + private void select(ActionCallback callback, K key, UI ui) { if (myKey != key) { callback.setRejected(); } else { V value = myContent.get(key); - boolean create = value == null && !myContent.containsKey(key); - if (create && !now) { - selectLater(callback, key, true); + if (value == null && !myContent.containsKey(key)) { + value = createValue(key, ui); } - else { - if (create) { - value = createValue(key); - } - for (Component component : getComponents()) { - component.setVisible(component == value); - } - callback.setDone(); + for (Component component : getComponents()) { + component.setVisible(component == value); } + callback.setDone(); } } - private void selectLater(final ActionCallback callback, final K key, final boolean create) { - ApplicationManager.getApplication().invokeLater(new Runnable() { + private void selectLater(final ActionCallback callback, final K key) { + ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { @Override public void run() { - select(callback, key, create); + final UI ui = prepare(key); + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + select(callback, key, ui); + } + }, ModalityState.any()); } - }, ModalityState.any()); + }); } @Override @@ -113,6 +139,9 @@ public abstract class CardLayoutPanel extends JComponent @Override public Dimension getPreferredSize() { + if (isPreferredSizeSet()) { + return super.getPreferredSize(); + } for (Component component : getComponents()) { if (component.isVisible()) { return component.getPreferredSize(); @@ -123,6 +152,9 @@ public abstract class CardLayoutPanel extends JComponent @Override public Dimension getMinimumSize() { + if (isMinimumSizeSet()) { + return super.getMinimumSize(); + } for (Component component : getComponents()) { if (component.isVisible()) { return component.getMinimumSize(); From fdbffc6b99d799eaacf470603c0143a7bbfda57d Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 12:11:36 +0100 Subject: [PATCH 17/63] check psi validity with ensureValid (EA-63292 - assert: SmartPointerManagerImpl.createSmartPsiElementPointer) --- .../psi/impl/smartPointers/SmartPointerManagerImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index 4f0fa1b7dd1d..408a3656daac 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -30,6 +30,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.source.tree.MarkersHolderFileViewProvider; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.reference.SoftReference; import com.intellij.util.containers.UnsafeWeakList; import org.jetbrains.annotations.NotNull; @@ -143,6 +144,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { @NotNull public SmartPsiElementPointer createSmartPsiElementPointer(@NotNull E element, PsiFile containingFile) { if (containingFile != null && !containingFile.isValid() || containingFile == null && !element.isValid()) { + PsiUtilCore.ensureValid(element); LOG.error("Invalid element:" + element); } SmartPointerEx pointer = getCachedPointer(element); From f919fbb0d8bd6e3e73d79a8f4457fe7d7570897f Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 12:15:05 +0100 Subject: [PATCH 18/63] earlier diagnostics for missing modifier list when implementing a method (EA-56844 - NPE: JavaTreeGenerator.markGeneratedIfNeeded) --- .../com/intellij/psi/impl/source/tree/JavaTreeGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaTreeGenerator.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaTreeGenerator.java index c310f5effc08..b5ca2ea117c3 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaTreeGenerator.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/JavaTreeGenerator.java @@ -61,6 +61,9 @@ public class JavaTreeGenerator implements TreeGenerator { final LanguageLevel level = PsiUtil.getLanguageLevel(original); final DummyHolder holder = DummyHolderFactory.createHolder(original.getManager(), new JavaDummyElement(text, MOD_LIST, level), null); final TreeElement modifierListElement = holder.getTreeElement().getFirstChildNode(); + if (modifierListElement == null) { + throw new AssertionError("No modifier list for \"" + text + '\"'); + } return markGeneratedIfNeeded(original, modifierListElement); } @@ -148,7 +151,7 @@ public class JavaTreeGenerator implements TreeGenerator { return Factory.createSingleLeafElement(type, text, 0, text.length(), table, manager, CodeEditUtil.isNodeGenerated(original.getNode())); } - private static TreeElement markGeneratedIfNeeded(PsiElement original, TreeElement copy) { + private static TreeElement markGeneratedIfNeeded(@NotNull PsiElement original, @NotNull TreeElement copy) { if (CodeEditUtil.isNodeGenerated(original.getNode())) { copy.acceptTree(new GeneratedMarkerVisitor()); } From d751ddd81c34fca0ddce0fa09d16ce6e00f5b0e0 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 13:08:12 +0100 Subject: [PATCH 19/63] non-code anno gutter icons: add an explanation --- ...ExternalAnnotationsLineMarkerProvider.java | 43 +++++++++++++------ .../BytecodeAnalysisIntegrationTest.java | 6 ++- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java index b4f318de8e4b..33ca812d78d2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java @@ -38,6 +38,7 @@ import com.intellij.psi.*; import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.awt.RelativePoint; import com.intellij.util.Function; +import com.intellij.util.containers.ContainerUtil; import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -50,7 +51,24 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider private static final Function ourTooltipProvider = new Function() { @Override public String fun(PsiElement nameIdentifier) { - return XmlStringUtil.wrapInHtml(JavaDocInfoGenerator.generateSignature(nameIdentifier.getParent())); + PsiModifierListOwner owner = (PsiModifierListOwner)nameIdentifier.getParent(); + + boolean hasInferred = false; + boolean hasExternal = false; + for (PsiAnnotation annotation : findSignatureNonCodeAnnotations(owner)) { + hasExternal |= AnnotationUtil.isExternalAnnotation(annotation); + hasInferred |= AnnotationUtil.isInferredAnnotation(annotation); + } + + String header; + if (hasInferred && hasExternal) { + header = "External and inferred"; + } else if (hasInferred) { + header = "Inferred"; + } else { + header = "External"; + } + return XmlStringUtil.wrapInHtml(header + " annotations available. Full signature:

\n" + JavaDocInfoGenerator.generateSignature(owner)); } }; @@ -65,7 +83,7 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider PsiElement nameIdentifier = ((PsiNameIdentifierOwner)owner).getNameIdentifier(); if (nameIdentifier == null || !nameIdentifier.getTextRange().equals(element.getTextRange())) return null; - if (!shouldShowSignature((PsiModifierListOwner)owner)) { + if (findSignatureNonCodeAnnotations((PsiModifierListOwner)owner).isEmpty()) { return null; } @@ -76,38 +94,35 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider GutterIconRenderer.Alignment.RIGHT); } - private static boolean shouldShowSignature(PsiModifierListOwner owner) { - if (hasNonCodeAnnotations(owner)) { - return true; - } + private static List findSignatureNonCodeAnnotations(PsiModifierListOwner owner) { + List result = ContainerUtil.newArrayList(findOwnNonCodeAnnotations(owner)); if (owner instanceof PsiMethod) { for (PsiParameter parameter : ((PsiMethod)owner).getParameterList().getParameters()) { - if (hasNonCodeAnnotations(parameter)) { - return true; - } + result.addAll(findOwnNonCodeAnnotations(parameter)); } } - return false; + return result; } - private static boolean hasNonCodeAnnotations(@NotNull PsiModifierListOwner element) { + private static List findOwnNonCodeAnnotations(@NotNull PsiModifierListOwner element) { + List result = ContainerUtil.newArrayList(); Project project = element.getProject(); PsiAnnotation[] externalAnnotations = ExternalAnnotationsManager.getInstance(project).findExternalAnnotations(element); if (externalAnnotations != null) { for (PsiAnnotation annotation : externalAnnotations) { if (isVisibleAnnotation(annotation)) { - return true; + result.add(annotation); } } } for (PsiAnnotation annotation : InferredAnnotationsManager.getInstance(project).findInferredAnnotations(element)) { if (isVisibleAnnotation(annotation)) { - return true; + result.add(annotation); } } - return false; + return result; } private static boolean isVisibleAnnotation(@NotNull PsiAnnotation annotation) { diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/BytecodeAnalysisIntegrationTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/BytecodeAnalysisIntegrationTest.java index 8a7340c76093..c3d5bc8cafd2 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/BytecodeAnalysisIntegrationTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/BytecodeAnalysisIntegrationTest.java @@ -132,14 +132,16 @@ public class BytecodeAnalysisIntegrationTest extends JavaCodeInsightFixtureTestC public void testInferredAnnoGutter() { setUpLibraries(); openDecompiledClass("org.apache.velocity.util.ExceptionUtils"); - checkHasGutter("@Contract("null,_,_->null") \n" + + checkHasGutter("Inferred annotations available. Full signature:

\n" + + "@Contract("null,_,_->null") \n" + "public static Throwable createWithCause("); } public void testExternalAnnoGutter() { setUpExternalUpAnnotations(); openDecompiledClass("java.lang.Boolean"); - checkHasGutter("@org.jetbrains.annotations.Contract("null->false") \n" + + checkHasGutter("External and inferred annotations available. Full signature:

\n" + + "@org.jetbrains.annotations.Contract("null->false") \n" + "private static boolean toBoolean(@org.jetbrains.annotations.Nullable String var0)"); } From 52a2de3b566de1dca0d13aad327e86fc4088f871 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 13:44:38 +0100 Subject: [PATCH 20/63] don't infer annotations in anonymous classes unless they'll be useful --- .../dataFlow/ContractInference.java | 17 +----- .../dataFlow/InferenceFromSourceUtil.java | 55 +++++++++++++++++++ .../dataFlow/NullityInference.java | 2 +- .../dataFlow/PurityInference.java | 5 +- .../ContractInferenceFromSourceTest.groovy | 23 ++++++++ 5 files changed, 86 insertions(+), 16 deletions(-) create mode 100644 java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/InferenceFromSourceUtil.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java index 1fc3ea176503..7dcf36afb4ee 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java @@ -17,17 +17,12 @@ package com.intellij.codeInspection.dataFlow; import com.intellij.codeInsight.NullableNotNullManager; import com.intellij.codeInspection.dataFlow.MethodContract.ValueConstraint; -import com.intellij.openapi.roots.FileIndexFacade; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.RecursionManager; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; -import com.intellij.psi.util.CachedValueProvider; -import com.intellij.psi.util.CachedValuesManager; -import com.intellij.psi.util.PsiModificationTracker; -import com.intellij.psi.util.PsiUtilCore; +import com.intellij.psi.util.*; import com.intellij.util.Function; import com.intellij.util.NullableFunction; import com.intellij.util.containers.ContainerUtil; @@ -47,10 +42,10 @@ public class ContractInference { @NotNull public static List inferContracts(@NotNull final PsiMethod method) { - if (isLibraryCode(method)) { + if (!InferenceFromSourceUtil.shouldInferFromSource(method)) { return Collections.emptyList(); } - + return CachedValuesManager.getCachedValue(method, new CachedValueProvider>() { @Nullable @Override @@ -66,12 +61,6 @@ public class ContractInference { } }); } - - static boolean isLibraryCode(@NotNull PsiMethod method) { - if (method instanceof PsiCompiledElement) return true; - VirtualFile virtualFile = PsiUtilCore.getVirtualFile(method); - return virtualFile != null && FileIndexFacade.getInstance(method.getProject()).isInLibrarySource(virtualFile); - } } class ContractInferenceInterpreter { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/InferenceFromSourceUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/InferenceFromSourceUtil.java new file mode 100644 index 000000000000..408277627937 --- /dev/null +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/InferenceFromSourceUtil.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.dataFlow; + +import com.intellij.openapi.roots.FileIndexFacade; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import com.intellij.psi.search.LocalSearchScope; +import com.intellij.psi.search.searches.MethodReferencesSearch; +import com.intellij.psi.util.PsiUtil; +import com.intellij.psi.util.PsiUtilCore; +import org.jetbrains.annotations.NotNull; + +/** + * @author peter + */ +public class InferenceFromSourceUtil { + static boolean shouldInferFromSource(@NotNull PsiMethod method) { + if (isLibraryCode(method) || + method.hasModifierProperty(PsiModifier.ABSTRACT) || + PsiUtil.canBeOverriden(method) || + method.getBody() == null) { + return false; + } + + if (method.hasModifierProperty(PsiModifier.STATIC)) return true; + + return !isUnusedInAnonymousClass(method); + } + + private static boolean isUnusedInAnonymousClass(@NotNull PsiMethod method) { + PsiClass containingClass = method.getContainingClass(); + return containingClass instanceof PsiAnonymousClass && + MethodReferencesSearch.search(method, new LocalSearchScope(containingClass), false).findFirst() == null; + } + + private static boolean isLibraryCode(@NotNull PsiMethod method) { + if (method instanceof PsiCompiledElement) return true; + VirtualFile virtualFile = PsiUtilCore.getVirtualFile(method); + return virtualFile != null && FileIndexFacade.getInstance(method.getProject()).isInLibrarySource(virtualFile); + } +} diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullityInference.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullityInference.java index 5b79e8637678..ab02b5bf7648 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullityInference.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullityInference.java @@ -35,7 +35,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class NullityInference { public static Nullness inferNullity(final PsiMethod method) { - if (ContractInference.isLibraryCode(method)) { + if (!InferenceFromSourceUtil.shouldInferFromSource(method)) { return Nullness.UNKNOWN; } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/PurityInference.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/PurityInference.java index 6ceaeec72ae5..ee81e7c09fd3 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/PurityInference.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/PurityInference.java @@ -34,7 +34,10 @@ import java.util.List; public class PurityInference { public static boolean inferPurity(@NotNull final PsiMethod method) { - if (ContractInference.isLibraryCode(method) || method.getReturnType() == PsiType.VOID || method.getBody() == null || method.isConstructor()) { + if (!InferenceFromSourceUtil.shouldInferFromSource(method) || + method.getReturnType() == PsiType.VOID || + method.getBody() == null || + method.isConstructor()) { return false; } diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/ContractInferenceFromSourceTest.groovy b/java/java-tests/testSrc/com/intellij/codeInspection/ContractInferenceFromSourceTest.groovy index 1ee47eccb835..2d2aeb7c92e5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/ContractInferenceFromSourceTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInspection/ContractInferenceFromSourceTest.groovy @@ -16,6 +16,8 @@ package com.intellij.codeInspection import com.intellij.codeInspection.dataFlow.ContractInference +import com.intellij.psi.PsiAnonymousClass +import com.intellij.psi.util.PsiTreeUtil import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase /** @@ -448,6 +450,27 @@ public static boolean isBlank(String s) { assert c == ['null -> true'] } + public void "test no inference for unused anonymous class methods where annotations won't be used anyway"() { + def method = PsiTreeUtil.findChildOfType(myFixture.addClass(""" +class Foo {{ + new Object() { + Object foo() { return null;} + }; +}}"""), PsiAnonymousClass).methods[0] + assert ContractInference.inferContracts(method).collect { it as String } == [] + } + + public void "test inference for used anonymous class methods"() { + def method = PsiTreeUtil.findChildOfType(myFixture.addClass(""" +class Foo {{ + new Object() { + Object foo() { return null;} + Object bar() { return foo();} + }; +}}"""), PsiAnonymousClass).methods[0] + assert ContractInference.inferContracts(method).collect { it as String } == [' -> null'] + } + private String inferContract(String method) { return assertOneElement(inferContracts(method)) } From 5abac1528e1f49bfc3bb3fe4eeaa5481fe4507ef Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 22 Dec 2014 13:49:40 +0100 Subject: [PATCH 21/63] + getDelegate() method --- platform/util/src/com/intellij/ui/Graphics2DDelegate.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/platform/util/src/com/intellij/ui/Graphics2DDelegate.java b/platform/util/src/com/intellij/ui/Graphics2DDelegate.java index 1d13b77b367c..1e37bd7950f5 100644 --- a/platform/util/src/com/intellij/ui/Graphics2DDelegate.java +++ b/platform/util/src/com/intellij/ui/Graphics2DDelegate.java @@ -37,6 +37,10 @@ public class Graphics2DDelegate extends Graphics2D{ myDelegate=g2d; } + public Graphics2D getDelegate() { + return myDelegate; + } + @Override public void addRenderingHints(Map hints) { myDelegate.addRenderingHints(hints); From 2a8e0b6a379ad15b3986d29458ca6ecce44404f8 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Mon, 22 Dec 2014 16:05:53 +0300 Subject: [PATCH 22/63] maven: allow to run maven tests with maven module classpath only --- .../java/org/jetbrains/idea/maven/MavenImportingTestCase.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java index abf2d4b9c243..0b769d2774b3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java @@ -19,6 +19,7 @@ package org.jetbrains.idea.maven; import com.intellij.compiler.server.BuildManager; import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.PathManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.progress.EmptyProgressIndicator; @@ -69,6 +70,7 @@ public abstract class MavenImportingTestCase extends MavenTestCase { if (myGlobalSettingsFile != null) { VfsRootAccess.allowRootAccess(myGlobalSettingsFile.getAbsolutePath()); } + VfsRootAccess.allowRootAccess(PathManager.getOptionsPath()); } @Override @@ -84,6 +86,7 @@ public abstract class MavenImportingTestCase extends MavenTestCase { if (myGlobalSettingsFile != null) { VfsRootAccess.disallowRootAccess(myGlobalSettingsFile.getAbsolutePath()); } + VfsRootAccess.allowRootAccess(PathManager.getOptionsPath()); Messages.setTestDialog(TestDialog.DEFAULT); myProjectsManager.projectClosed(); removeFromLocalRepository("test"); From 71e6bc0d961c76e6d3ee57aaf545baef17680377 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Mon, 22 Dec 2014 16:13:06 +0300 Subject: [PATCH 23/63] IDEA-134480 Make one-row IntelliJ tabs shorter if there is no space in tabs container Fix for last tab length --- .../ui/tabs/impl/singleRow/CompressibleSingleRowLayout.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/CompressibleSingleRowLayout.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/CompressibleSingleRowLayout.java index 7fe4b14af49d..f921d12c28d4 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/CompressibleSingleRowLayout.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/singleRow/CompressibleSingleRowLayout.java @@ -84,7 +84,7 @@ public class CompressibleSingleRowLayout extends SingleRowLayout { int length; if (needCompression) { length = iterator.hasNext() ? (int)(getStrategy().getLengthIncrement(label.getPreferredSize()) * (float)data.toFitLength / lengthEstimation) - : data.toFitLength - spentLength; + : data.toFitLength - spentLength - data.toLayout.size() / 2; spentLength += length; } else { From e6b338744583b59e8c40d022ae007b726976e080 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 22 Dec 2014 16:17:53 +0300 Subject: [PATCH 24/63] build scripts: include sources.zip to distribution for UpSource --- build/scripts/utils.gant | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/build/scripts/utils.gant b/build/scripts/utils.gant index a1e04fd29841..ba22ca404a99 100644 --- a/build/scripts/utils.gant +++ b/build/scripts/utils.gant @@ -14,6 +14,7 @@ * limitations under the License. */ + import org.jetbrains.jps.gant.JpsGantTool import org.jetbrains.jps.gant.TeamCityBuildInfoPrinter import org.jetbrains.jps.model.java.JavaSourceRootType @@ -627,6 +628,24 @@ binding.setVariable("zipSources", { String home, String targetDir -> notifyArtifactBuilt(sources) }) +binding.setVariable("zipSourcesOfModules", { String home, String targetDir, Collection modules -> + String sources = "$targetDir/sources.zip" + projectBuilder.stage("zip sources of ${modules.size()} modules to $sources") + + ant.mkdir(dir: targetDir) + ant.delete(file: sources) + ant.zip(destfile: sources) { + modules.each { + JpsModule module = findModule(it) + module.getSourceRoots(JavaSourceRootType.SOURCE).flatten().collect {it.file}.each { File srcRoot -> + zipfileset(prefix: module.name, dir: srcRoot.absolutePath) + } + } + } + + notifyArtifactBuilt(sources) +}) + /** * E.g. * From 424d169a8f51e04b6d3ca003d0dfbeb362ed18c2 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Dec 2014 14:03:19 +0100 Subject: [PATCH 25/63] better reg exp for urls in UrlFilter --- .../lang-api/src/com/intellij/execution/filters/UrlFilter.java | 2 +- .../documentation/ArbitraryPlaceUrlReferenceProvider.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/filters/UrlFilter.java b/platform/lang-api/src/com/intellij/execution/filters/UrlFilter.java index cac68aa3a32a..c9bf47d6e435 100644 --- a/platform/lang-api/src/com/intellij/execution/filters/UrlFilter.java +++ b/platform/lang-api/src/com/intellij/execution/filters/UrlFilter.java @@ -27,7 +27,7 @@ import java.util.regex.Pattern; * @author yole */ public class UrlFilter implements Filter { - public static final Pattern URL_PATTERN = Pattern.compile("\\b(https?://|www\\.)[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]"); + public static final Pattern URL_PATTERN = Pattern.compile("\\b(mailto\\:|(news|(ht|f)tp(s?))\\://|www\\.)[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]"); @Nullable @Override diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java index 3a305ef0a6cd..765b88dda7c6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInsight.documentation; +import com.intellij.execution.filters.UrlFilter; import com.intellij.openapi.paths.GlobalPathReferenceProvider; import com.intellij.openapi.paths.PathReferenceManager; import com.intellij.openapi.util.TextRange; @@ -40,7 +41,7 @@ import java.util.regex.Pattern; public class ArbitraryPlaceUrlReferenceProvider extends PsiReferenceProvider { public static final ArbitraryPlaceUrlReferenceProvider INSTANCE = new ArbitraryPlaceUrlReferenceProvider(); - private static final Pattern urlPattern = Pattern.compile("((mailto\\:|(news|(ht|f)tp(s?))\\://){1}[^\\s\\),\"']+)"); + private static final Pattern urlPattern = UrlFilter.URL_PATTERN; private static final UserDataCache, PsiElement, Object> ourRefsCache = new UserDataCache, PsiElement, Object>("psielement.url.refs") { private final AtomicReference myReferenceProvider = new AtomicReference(); From 2a129f317903a1c04e575ace9221b84cd0d65880 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Dec 2014 14:22:35 +0100 Subject: [PATCH 26/63] inline field --- .../documentation/ArbitraryPlaceUrlReferenceProvider.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java index 765b88dda7c6..9bd3fe96b5cf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/ArbitraryPlaceUrlReferenceProvider.java @@ -33,7 +33,6 @@ import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * Created by Maxim.Mossienko on 12/19/2014. @@ -41,7 +40,6 @@ import java.util.regex.Pattern; public class ArbitraryPlaceUrlReferenceProvider extends PsiReferenceProvider { public static final ArbitraryPlaceUrlReferenceProvider INSTANCE = new ArbitraryPlaceUrlReferenceProvider(); - private static final Pattern urlPattern = UrlFilter.URL_PATTERN; private static final UserDataCache, PsiElement, Object> ourRefsCache = new UserDataCache, PsiElement, Object>("psielement.url.refs") { private final AtomicReference myReferenceProvider = new AtomicReference(); @@ -50,7 +48,7 @@ public class ArbitraryPlaceUrlReferenceProvider extends PsiReferenceProvider { return CachedValuesManager .getManager(element.getProject()).createCachedValue(new CachedValueProvider() { public Result compute() { - Matcher matcher = urlPattern.matcher(element.getText()); + Matcher matcher = UrlFilter.URL_PATTERN.matcher(element.getText()); List refs = null; GlobalPathReferenceProvider provider = myReferenceProvider.get(); From dc7ea33ce9a61d7da452805adf08a02951b0ab3f Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Mon, 22 Dec 2014 16:28:12 +0300 Subject: [PATCH 27/63] do not execute image render on value copy --- .../xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java index eaa1d1aa1830..51ca1fa28b3a 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java @@ -75,7 +75,7 @@ public abstract class XFetchValueActionBase extends AnAction { if (node instanceof XValueNodeImpl) { XValueNodeImpl valueNode = (XValueNodeImpl)node; XFullValueEvaluator fullValueEvaluator = valueNode.getFullValueEvaluator(); - if (fullValueEvaluator == null) { + if (fullValueEvaluator == null || !fullValueEvaluator.isShowValuePopup()) { String rawValue; if (valueNode.getValueContainer() instanceof XValueTextProvider) { rawValue = ((XValueTextProvider)valueNode.getValueContainer()).getValueText(); From b539d9872676e60662025a9ffa299d01acd58570 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 14:35:22 +0100 Subject: [PATCH 28/63] serialization: constant order of template configurations --- .../src/com/intellij/execution/impl/RunManagerImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java index 9172d7280cd8..769cd314585d 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java @@ -58,8 +58,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo private final Map myTypesByName = new LinkedHashMap(); - private final Map myTemplateConfigurationsMap = - new THashMap(); + private final Map myTemplateConfigurationsMap = new TreeMap(); private final Map myConfigurations = new LinkedHashMap(); // template configurations are not included here private final Map mySharedConfigurations = new THashMap(); @@ -558,7 +557,6 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo addConfigurationElement(parentNode, configuration); } - // temp && stable configurations, !unknown JDOMExternalizableStringList order = null; for (RunnerAndConfigurationSettings each : myConfigurations.values()) { if (each.getType() instanceof UnknownConfigurationType) { From 1db6ac529f25d4639108ea4a373e438d677f96a8 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 15:41:30 +0300 Subject: [PATCH 29/63] supply getDisplayName --- .../psi/search/GlobalSearchScopesCore.java | 45 +++++++++++++++++++ .../search/NonClasspathDirectoriesScope.java | 19 +++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/platform/analysis-api/src/com/intellij/psi/search/GlobalSearchScopesCore.java b/platform/analysis-api/src/com/intellij/psi/search/GlobalSearchScopesCore.java index 76db4a7cc765..a45bc13625a7 100644 --- a/platform/analysis-api/src/com/intellij/psi/search/GlobalSearchScopesCore.java +++ b/platform/analysis-api/src/com/intellij/psi/search/GlobalSearchScopesCore.java @@ -19,6 +19,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiBundle; @@ -27,6 +28,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.search.scope.packageSet.*; import com.intellij.util.ArrayUtil; +import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -88,6 +90,12 @@ public class GlobalSearchScopesCore { return mySet.getName(); } + @NotNull + @Override + public Project getProject() { + return super.getProject(); + } + @Override public int compare(@NotNull VirtualFile file1, @NotNull VirtualFile file2) { return 0; @@ -255,6 +263,18 @@ public class GlobalSearchScopesCore { } return super.uniteWith(scope); } + + @NotNull + @Override + public Project getProject() { + return super.getProject(); + } + + @NotNull + @Override + public String getDisplayName() { + return "Directory '" + myDirectory.getName() + "'"; + } } static class DirectoriesScope extends GlobalSearchScope { @@ -265,6 +285,9 @@ public class GlobalSearchScopesCore { super(project); myWithSubdirectories = withSubdirectories; myDirectories = directories; + if (directories.length < 2) { + throw new IllegalArgumentException("Expected >1 directories, but got: " + Arrays.asList(directories)); + } } @Override @@ -353,5 +376,27 @@ public class GlobalSearchScopesCore { } return super.uniteWith(scope); } + + @NotNull + @Override + public Project getProject() { + return super.getProject(); + } + + @NotNull + @Override + public String getDisplayName() { + if (myDirectories.length == 1) { + VirtualFile root = myDirectories[0]; + return "Directory '" + root.getName() + "'"; + } + return "Directories " + StringUtil.join(myDirectories, new Function() { + @Override + public String fun(VirtualFile file) { + return "'" + file.getName() + "'"; + } + }, ", "); + } + } } diff --git a/platform/core-api/src/com/intellij/psi/search/NonClasspathDirectoriesScope.java b/platform/core-api/src/com/intellij/psi/search/NonClasspathDirectoriesScope.java index 0cf15e6970c2..921cddcf8cae 100644 --- a/platform/core-api/src/com/intellij/psi/search/NonClasspathDirectoriesScope.java +++ b/platform/core-api/src/com/intellij/psi/search/NonClasspathDirectoriesScope.java @@ -17,8 +17,10 @@ package com.intellij.psi.search; import com.intellij.openapi.module.Module; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -42,7 +44,7 @@ public class NonClasspathDirectoriesScope extends GlobalSearchScope { } @NotNull - public static GlobalSearchScope compose(List roots) { + public static GlobalSearchScope compose(@NotNull List roots) { if (roots.isEmpty()) { return EMPTY_SCOPE; } @@ -88,4 +90,19 @@ public class NonClasspathDirectoriesScope extends GlobalSearchScope { result = 31 * result + myRoots.hashCode(); return result; } + + @NotNull + @Override + public String getDisplayName() { + if (myRoots.size() == 1) { + VirtualFile root = myRoots.iterator().next(); + return "Directory '" + root.getName() + "'"; + } + return "Directories " + StringUtil.join(myRoots, new Function() { + @Override + public String fun(VirtualFile file) { + return "'" + file.getName() + "'"; + } + }, ", "); + } } From ef7ca2bebdc69f341754ca2e0944ba6aa672dd77 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 16:38:07 +0300 Subject: [PATCH 30/63] reverted --- .../src/org/jetbrains/io/PowerSupplyKit.java | 120 +++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/org/jetbrains/io/PowerSupplyKit.java b/platform/platform-impl/src/org/jetbrains/io/PowerSupplyKit.java index 6464c6afb5c2..16c23e102155 100644 --- a/platform/platform-impl/src/org/jetbrains/io/PowerSupplyKit.java +++ b/platform/platform-impl/src/org/jetbrains/io/PowerSupplyKit.java @@ -15,11 +15,129 @@ */ package org.jetbrains.io; +import com.intellij.ide.PowerSaveMode; +import com.intellij.notification.*; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.registry.Registry; +import com.intellij.util.lang.UrlClassLoader; +import org.jetbrains.annotations.NotNull; + +import javax.swing.event.HyperlinkEvent; + + public class PowerSupplyKit { - public static void checkPowerSupply() { + private static final String POWER_SUPPLY_GROUP_ID = "Power Supply Integration"; + private static boolean shouldCheckCordUnplug = Registry.is("check.power.supply.for.mbp") && SystemInfo.isMacIntel64; + //private static boolean shouldCheckDiscreteCard = + // Registry.is("check.power.supply.for.mbp") && SystemInfo.isMacIntel64 && hasDiscreteCard(); + static { + if (shouldCheckCordUnplug) { + UrlClassLoader.loadPlatformLibrary("MacNativeKit"); + } } + private static native void startListenPowerSupply (PowerSupplyKitCallback callback); + private static native boolean isPlugged(); + private static native String[] getInfo (); + private static boolean automaticallySwitchInPowerSaveModeOnUnpluggedCordEvent; + + // The first notification has been shown and + // power callback has been configurated + private static boolean powerSupplyKitHasBeenInitialized; + + private static boolean hasDiscreteCard() { + String [] models = getInfo(); + + if (models.length > 1) { + return true; + //for (String model : models) { + // if (model.contains("NVIDIA")) return true; + //} + } + + return false; + } + + public static void checkPowerSupply() { + + if (!shouldCheckCordUnplug) return; + + new Thread() { + @Override + public void run() { + startListenPowerSupply(new PowerSupplyKitCallback() { + @Override + public void call() { + initializeIfNeeded(); + PowerSaveMode.setEnabled(automaticallySwitchInPowerSaveModeOnUnpluggedCordEvent && isPlugged()); + } + }); + } + }.start(); + shouldCheckCordUnplug = false; + } + + private static void initializeIfNeeded() { + + if (powerSupplyKitHasBeenInitialized) return; + + NotificationsConfiguration.getNotificationsConfiguration().register( + POWER_SUPPLY_GROUP_ID, + NotificationDisplayType.STICKY_BALLOON, + false); + + final NotificationType type = NotificationType.INFORMATION; + + final NotificationListener listener = new NotificationListener() { + @Override + public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { + if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + final String description = event.getDescription(); + if ("doNotShow".equals(description)) { + NotificationsConfiguration.getNotificationsConfiguration().changeSettings(POWER_SUPPLY_GROUP_ID, NotificationDisplayType.NONE, false, false); + notification.expire(); + } + if ("automatically".equals(description)) { + automaticallySwitchInPowerSaveModeOnUnpluggedCordEvent = true; + } + } + + } + }; + + //final String message = "We have noticed that your computer power cord is disconnected and you are using" + + // " a discrete video card on you MacBook Pro. You can switch " + + // " to the integrated video card. This significantly extend your battery life." + + // " Do no show this message anymore"; + + final String automaticPowerSafeModeSwitchMessage = "We have noticed that your computer power cord is disconnected. " + + "On unplugging your power cord we can automatically switch " + + "your Mac Book in a Power Save mode . This can extend your battery life." + + " Do no show this message anymore"; + + //final String powerSafeModeTurnedOnMesssage = "Power Save mode is turned on. Do no show this message anymore"; + + //final Notification notification = new Notification(POWER_SUPPLY_GROUP_ID, "Discrete video card warning", message, type, listener); + final Notification automaticPowerSafeModeSwitchNotification = + new Notification(POWER_SUPPLY_GROUP_ID, "Automatically enable Power Save mode", + automaticPowerSafeModeSwitchMessage, type, listener); + + + //final Notification powerSafeModeSwitchedNotification = + // new Notification(POWER_SUPPLY_GROUP_ID, "\"Power Save\" mode ", message, type, listener); + + ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().getMessageBus(). + syncPublisher(Notifications.TOPIC).notify(automaticPowerSafeModeSwitchNotification); + } + }); + + powerSupplyKitHasBeenInitialized = true; + } } From 05191c5c02ff1f55c9d557666753f2bd9da935a6 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 16:38:43 +0300 Subject: [PATCH 31/63] replaced with directory scope --- .../intellij/find/impl/FindInProjectUtil.java | 50 ++++--------------- 1 file changed, 9 insertions(+), 41 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index 3bf96d0891af..718b830f8c7d 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -42,10 +42,14 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Factory; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.*; +import com.intellij.openapi.vfs.LocalFileProvider; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.ex.VirtualFileManagerEx; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopesCore; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.SearchScope; import com.intellij.ui.content.Content; @@ -435,7 +439,6 @@ public class FindInProjectUtil { sink.put(UsageView.USAGE_SCOPE, scope); } } - } @NotNull @@ -445,44 +448,9 @@ public class FindInProjectUtil { VirtualFile directory = psiDir == null ? null : psiDir.getVirtualFile(); Module module = findModel.getModuleName() == null ? null : ModuleManager.getInstance(project).findModuleByName(findModel.getModuleName()); return findModel.isCustomScope() && customScope != null ? customScope : - directory != null ? new UnderDirectoryScope(directory) : - module != null ? GlobalSearchScope.moduleScope(module) : - findModel.isProjectScope() ? GlobalSearchScope.projectScope(project) : - GlobalSearchScope.allScope(project); - } - - private static class UnderDirectoryScope extends GlobalSearchScope { - @NotNull private final VirtualFile myRoot; - - private UnderDirectoryScope(@NotNull VirtualFile root) { - myRoot = root; - assert root.isDirectory(); - } - - @NotNull - @Override - public String getDisplayName() { - return "Directory '" + myRoot.getName() + "'"; - } - - @Override - public boolean contains(@NotNull VirtualFile file) { - return VfsUtilCore.isAncestor(myRoot, file, false); - } - - @Override - public int compare(@NotNull VirtualFile file1, @NotNull VirtualFile file2) { - return 0; - } - - @Override - public boolean isSearchInModuleContent(@NotNull Module aModule) { - return false; - } - - @Override - public boolean isSearchInLibraries() { - return false; - } + directory != null ? GlobalSearchScopesCore.directoryScope(project, directory, true) : + module != null ? GlobalSearchScope.moduleScope(module) : + findModel.isProjectScope() ? GlobalSearchScope.projectScope(project) : + GlobalSearchScope.allScope(project); } } From b48786354e4ade6f7ae03710c172d685774b107a Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 22 Dec 2014 16:51:18 +0300 Subject: [PATCH 32/63] IDEA-134536 Create scratch file from selection --- .../ide/scratch/NewScratchFileAction.java | 82 +++++++++++++++---- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/NewScratchFileAction.java b/platform/lang-impl/src/com/intellij/ide/scratch/NewScratchFileAction.java index 394e64050c71..d6cbd4e4cb17 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/NewScratchFileAction.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/NewScratchFileAction.java @@ -20,12 +20,16 @@ import com.intellij.ide.util.PropertiesComponent; import com.intellij.lang.Language; import com.intellij.lang.LanguageUtil; import com.intellij.lang.StdLanguages; -import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.editor.Caret; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileTypes.LanguageFileType; -import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListPopup; @@ -35,8 +39,7 @@ import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.LanguageSubstitutors; -import com.intellij.psi.PsiFile; +import com.intellij.psi.*; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.Consumer; import com.intellij.util.containers.ContainerUtil; @@ -52,7 +55,7 @@ import java.util.List; /** * @author ignatov */ -public class NewScratchFileAction extends AnAction implements DumbAware { +public class NewScratchFileAction extends DumbAwareAction { public static final int MAX_VISIBLE_SIZE = 20; public NewScratchFileAction() { @@ -61,9 +64,14 @@ public class NewScratchFileAction extends AnAction implements DumbAware { @Override public void update(@NotNull AnActionEvent e) { - e.getPresentation().setEnabledAndVisible(e.getProject() != null && Registry.is("ide.scratch.enabled")); + e.getPresentation().setEnabledAndVisible(isEnabled(e)); } - + + public static boolean isEnabled(@NotNull AnActionEvent e) { + return e.getProject() != null && Registry.is("ide.scratch.enabled"); + } + + @NotNull public static List getLastUsedLanguagesIds(Project project) { String[] values = PropertiesComponent.getInstance(project).getValues(ScratchpadManager.class.getName()); return values == null ? ContainerUtil.emptyList() : ContainerUtil.list(values); @@ -75,26 +83,67 @@ public class NewScratchFileAction extends AnAction implements DumbAware { if (project == null) return; PsiFile file = e.getData(CommonDataKeys.PSI_FILE); - Language context = file != null ? file.getLanguage() : null; + Editor editor = e.getData(CommonDataKeys.EDITOR); + + Language language = getLanguageFromCaret(project, editor, file); + String text = getSelectionText(editor); + if (language != null && text != null) { + openNewFile(project, language, text); + return; + } - ListPopup popup = buildLanguagePopup(project, context, new Consumer() { + ListPopup popup = buildLanguagePopup(project, language, new Consumer() { @Override - public void consume(Language language) { - FeatureUsageTracker.getInstance().triggerFeatureUsed("scratch"); - VirtualFile file = ScratchpadManager.getInstance(project).createScratchFile(substitute(project, language)); - FileEditorManager.getInstance(project).openFile(file, true); + public void consume(@NotNull Language language) { + openNewFile(project, language, ""); } }); popup.showCenteredInCurrentWindow(project); } + @Nullable + public String getSelectionText(@Nullable Editor editor) { + if (editor == null) return null; + return editor.getSelectionModel().getSelectedText(); + } + + @Nullable + public Language getLanguageFromCaret(@NotNull Project project, + @Nullable Editor editor, + @Nullable PsiFile psiFile) { + if (editor == null) return null; + if (psiFile == null) return null; + Caret caret = editor.getCaretModel().getPrimaryCaret(); + int offset = caret.getOffset(); + PsiElement element = InjectedLanguageManager.getInstance(project).findInjectedElementAt(psiFile, offset); + element = element == null ? psiFile.findElementAt(offset) : element; + Language language = element != null ? element.getLanguage() : psiFile.getLanguage(); + return substitute(project, language); + } + + public static void openNewFile(@NotNull Project project, @NotNull Language language, @NotNull final String text) { + FeatureUsageTracker.getInstance().triggerFeatureUsed("scratch"); + VirtualFile file = ScratchpadManager.getInstance(project).createScratchFile(substitute(project, language)); + PsiFile psiFile = PsiManager.getInstance(project).findFile(file); + final Document document = psiFile == null ? null : PsiDocumentManager.getInstance(project).getDocument(psiFile); + if (document != null && StringUtil.isNotEmpty(text)) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + document.setText(text); + } + }); + } + FileEditorManager.getInstance(project).openFile(file, true); + } + @NotNull public static Language substitute(@NotNull Project project, @NotNull Language language) { return LanguageSubstitutors.INSTANCE.substituteLanguage(language, new LightVirtualFile(), project); } @NotNull - static ListPopup buildLanguagePopup(@NotNull Project project, @Nullable Language context, final Consumer onChoosen) { + static ListPopup buildLanguagePopup(@NotNull Project project, @Nullable Language context, @NotNull final Consumer onChoosen) { List languages = LanguageUtil.getFileLanguages(); final List ids = ContainerUtil.newArrayList(getLastUsedLanguagesIds(project)); if (context != null) { @@ -118,7 +167,7 @@ public class NewScratchFileAction extends AnAction implements DumbAware { new BaseListPopupStep("Choose Language", languages) { @NotNull @Override - public String getTextFor(Language value) { + public String getTextFor(@NotNull Language value) { return value.getDisplayName(); } @@ -134,7 +183,7 @@ public class NewScratchFileAction extends AnAction implements DumbAware { } @Override - public Icon getIconFor(Language language) { + public Icon getIconFor(@NotNull Language language) { LanguageFileType associatedLanguage = language.getAssociatedFileType(); return associatedLanguage != null ? associatedLanguage.getIcon() : null; } @@ -150,6 +199,7 @@ public class NewScratchFileAction extends AnAction implements DumbAware { ListPopupStep step = popup.getListStep(); List values = step.getValues(); for (Object v : values) { + //noinspection unchecked nameLen = Math.max(nameLen, step.getTextFor(v).length()); } if (values.size() > MAX_VISIBLE_SIZE) { From ca03441fcbc6e349709ea07035b6192c4264736a Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Mon, 22 Dec 2014 16:58:54 +0300 Subject: [PATCH 33/63] gradle: do not set project gradle jvm by default --- .../plugins/gradle/settings/GradleProjectSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleProjectSettings.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleProjectSettings.java index 7b25028b4b7d..54ab8818e9b8 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleProjectSettings.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleProjectSettings.java @@ -27,7 +27,7 @@ import org.jetbrains.annotations.Nullable; public class GradleProjectSettings extends ExternalProjectSettings { @Nullable private String myGradleHome; - @Nullable private String myGradleJvm = ExternalSystemJdkUtil.USE_PROJECT_JDK; + @Nullable private String myGradleJvm; @Nullable private DistributionType distributionType; private boolean disableWrapperSourceDistributionNotification; From 95b8fcd2e645678b9716ff3f1adf96001d9b4afd Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 22 Dec 2014 15:17:20 +0100 Subject: [PATCH 34/63] some javadoc --- .../src/com/intellij/framework/FrameworkGroup.java | 8 ++++++++ .../src/com/intellij/framework/FrameworkOrGroup.java | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/java/idea-ui/src/com/intellij/framework/FrameworkGroup.java b/java/idea-ui/src/com/intellij/framework/FrameworkGroup.java index a3705c263cbd..ac8d6b63c475 100644 --- a/java/idea-ui/src/com/intellij/framework/FrameworkGroup.java +++ b/java/idea-ui/src/com/intellij/framework/FrameworkGroup.java @@ -8,6 +8,10 @@ import java.util.Collections; import java.util.List; /** + * Represents a group of frameworks. in the frameworks tree ("Additional Libraries and Frameworks" + * in the New Project dialog or the tree displayed in the "Add Framework Support" dialog). + * Frameworks in a group can have a common version number. + * * @author nik */ public abstract class FrameworkGroup implements FrameworkOrGroup { @@ -26,6 +30,10 @@ public abstract class FrameworkGroup implements Fram @NotNull public abstract Icon getIcon(); + /** + * Returns the list of known versions of the framework group. The list is shown to the user + * and allows them to choose the version used in their project. + */ @NotNull public List getGroupVersions() { return Collections.emptyList(); diff --git a/java/idea-ui/src/com/intellij/framework/FrameworkOrGroup.java b/java/idea-ui/src/com/intellij/framework/FrameworkOrGroup.java index 8265b71d4658..9b491f602a84 100644 --- a/java/idea-ui/src/com/intellij/framework/FrameworkOrGroup.java +++ b/java/idea-ui/src/com/intellij/framework/FrameworkOrGroup.java @@ -20,8 +20,11 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; /** + * Represents a single node (framework or group) in the frameworks tree ("Additional Libraries and Frameworks" + * in the New Project dialog or the tree displayed in the "Add Framework Support" dialog). + * * @author Dmitry Avdeev - * Date: 09.10.13 + * @since 09.10.13 */ public interface FrameworkOrGroup { @NotNull From a6cb8d488cbec8fda68d192d9c8a30f6c6c2a016 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 15:16:02 +0100 Subject: [PATCH 35/63] =?UTF-8?q?export=20settings=20=E2=80=94=20don't=20p?= =?UTF-8?q?rocess=20ExtensionComponentAdapter,=20don't=20log=20"class=20no?= =?UTF-8?q?t=20found"=20if=20junior=20IDE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/components/impl/ServiceManagerImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java index 017d9a08cbba..05ce99453036 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java @@ -25,10 +25,12 @@ import com.intellij.openapi.components.ServiceDescriptor; import com.intellij.openapi.components.ex.ComponentManagerEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.*; +import com.intellij.openapi.extensions.impl.ExtensionComponentAdapter; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; import com.intellij.util.PairProcessor; +import com.intellij.util.PlatformUtils; import com.intellij.util.io.storage.HeavyProcessLatch; import com.intellij.util.pico.AssignableToComponentAdapter; import com.intellij.util.pico.ConstructorInjectionComponentAdapter; @@ -114,7 +116,13 @@ public class ServiceManagerImpl implements BaseComponent { } } catch (Throwable e) { - LOG.error(e); + if (PlatformUtils.isIdeaUltimate()) { + LOG.error(e); + } + else { + // well, component registered, but required jar is not added to classpath (community edition or junior IDE) + LOG.warn(e); + } continue; } @@ -122,7 +130,7 @@ public class ServiceManagerImpl implements BaseComponent { break; } } - else if (o instanceof ComponentAdapter) { + else if (o instanceof ComponentAdapter && !(o instanceof ExtensionComponentAdapter)) { try { aClass = ((ComponentAdapter)o).getComponentImplementation(); } From 6d6c24f917127916a603d9603c4112de04ee31a0 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 15:21:01 +0100 Subject: [PATCH 36/63] Do not log ProcessCanceledException --- .../impl/stores/ComponentStoreImpl.java | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/ComponentStoreImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/ComponentStoreImpl.java index 2f8650670058..a1ec60a41c54 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/ComponentStoreImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/ComponentStoreImpl.java @@ -15,11 +15,7 @@ */ package com.intellij.openapi.components.impl.stores; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.application.WriteAction; -import com.intellij.openapi.application.ex.ApplicationManagerEx; +import com.intellij.openapi.application.*; import com.intellij.openapi.components.*; import com.intellij.openapi.components.StateStorage.SaveSession; import com.intellij.openapi.components.impl.ComponentManagerImpl; @@ -27,6 +23,7 @@ import com.intellij.openapi.components.impl.stores.StateStorageManager.Externali import com.intellij.openapi.components.store.ReadOnlyModificationException; import com.intellij.openapi.components.store.StateStorageBase; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.ui.Messages; @@ -59,7 +56,7 @@ public abstract class ComponentStoreImpl implements IComponentStore.Reloadable { protected abstract StateStorage getDefaultsStorage(); @Override - public void initComponent(@NotNull final Object component, boolean service) { + public void initComponent(@NotNull Object component, boolean service) { if (component instanceof SettingsSavingComponent) { mySettingsSavingComponents.add((SettingsSavingComponent)component); } @@ -68,25 +65,27 @@ public abstract class ComponentStoreImpl implements IComponentStore.Reloadable { return; } - ApplicationManagerEx.getApplicationEx().runReadAction(new Runnable() { - @Override - public void run() { - try { - if (component instanceof PersistentStateComponent) { - initPersistentComponent((PersistentStateComponent)component, null, false); - } - else { - initJdomExternalizable((JDOMExternalizable)component); - } - } - catch (StateStorageException e) { - throw e; - } - catch (Exception e) { - LOG.error(e); - } + AccessToken token = ReadAction.start(); + try { + if (component instanceof PersistentStateComponent) { + initPersistentComponent((PersistentStateComponent)component, null, false); } - }); + else { + initJdomExternalizable((JDOMExternalizable)component); + } + } + catch (StateStorageException e) { + throw e; + } + catch (ProcessCanceledException e) { + throw e; + } + catch (Exception e) { + LOG.error(e); + } + finally { + token.finish(); + } } @Override From b5c31694cbcc5a4cf190628bd86c445819c22ff7 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 22 Dec 2014 13:57:50 +0100 Subject: [PATCH 37/63] moves: open result in editor (IDEA-133015) --- .../ConvertToInstanceMethodDialog.java | 10 ++++ .../ConvertToInstanceMethodProcessor.java | 4 ++ .../refactoring/move/MoveDialogBase.java | 55 +++++++++++++++++++ .../MoveClassToInnerProcessor.java | 14 +++++ .../MoveClassesOrPackagesDialog.form | 10 +++- .../MoveClassesOrPackagesDialog.java | 27 ++++++++- .../MoveClassesOrPackagesProcessor.java | 15 +++++ ...ClassesOrPackagesToNewDirectoryDialog.java | 30 +++++++++- ...veClassesOrPackagesToNewDirectoryForm.form | 14 ++++- .../move/moveInner/MoveInnerDialog.form | 12 +++- .../move/moveInner/MoveInnerDialog.java | 21 ++++++- .../move/moveInner/MoveInnerProcessor.java | 12 +++- .../MoveInstanceMethodDialog.java | 14 +++++ .../MoveInstanceMethodDialogBase.java | 3 +- .../MoveInstanceMethodProcessor.java | 16 ++++++ .../move/moveMembers/MoveMembersDialog.java | 22 ++++++-- .../moveMembers/MoveMembersProcessor.java | 14 +++++ .../MoveFilesOrDirectoriesDialog.java | 19 ++++++- .../MoveFilesOrDirectoriesProcessor.java | 5 ++ .../MoveFilesOrDirectoriesUtil.java | 6 +- 20 files changed, 297 insertions(+), 26 deletions(-) create mode 100644 java/java-impl/src/com/intellij/refactoring/move/MoveDialogBase.java diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java index be2b088dd6b4..d054943e6a7f 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java @@ -78,4 +78,14 @@ public class ConvertToInstanceMethodDialog extends MoveInstanceMethodDialogBase }.installOn(variableChooser); return variableChooser; } + + @Override + protected String getMovePropertySuffix() { + return null; + } + + @Override + protected String getCbTitle() { + return null; + } } diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java index 5804445d7141..ff362fbf3fe4 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java @@ -18,6 +18,7 @@ package com.intellij.refactoring.convertToInstanceMethod; import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.history.LocalHistory; import com.intellij.history.LocalHistoryAction; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; @@ -231,6 +232,7 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor { if (!myTargetClass.isInterface()) { PsiMethod method = addMethodToClass(myTargetClass); fixVisibility(method, usages); + EditorHelper.openInEditor(method); } else { final PsiMethod interfaceMethod = addMethodToClass(myTargetClass); @@ -240,6 +242,8 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor { modifierList.setModifierProperty(PsiModifier.PROTECTED, false); RefactoringUtil.makeMethodAbstract(myTargetClass, interfaceMethod); + EditorHelper.openInEditor(interfaceMethod); + for (final PsiClass psiClass : inheritors) { final PsiMethod newMethod = addMethodToClass(psiClass); PsiUtil.setModifierProperty(newMethod, myNewVisibility != null && !myNewVisibility.equals(VisibilityUtil.ESCALATE_VISIBILITY) ? myNewVisibility diff --git a/java/java-impl/src/com/intellij/refactoring/move/MoveDialogBase.java b/java/java-impl/src/com/intellij/refactoring/move/MoveDialogBase.java new file mode 100644 index 000000000000..256aacb6876f --- /dev/null +++ b/java/java-impl/src/com/intellij/refactoring/move/MoveDialogBase.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.refactoring.move; + +import com.intellij.ide.util.PropertiesComponent; +import com.intellij.openapi.project.Project; +import com.intellij.refactoring.ui.RefactoringDialog; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public abstract class MoveDialogBase extends RefactoringDialog { + + private JCheckBox myOpenEditorCb; + + protected abstract String getMovePropertySuffix(); + protected abstract String getCbTitle(); + + protected JCheckBox initOpenInEditorCb() { + myOpenEditorCb = new JCheckBox(getCbTitle(), PropertiesComponent.getInstance().getBoolean("Move" + getMovePropertySuffix() +".OpenInEditor", + isEnabledByDefault())); + return myOpenEditorCb; + } + + protected boolean isEnabledByDefault() { + return true; + } + + protected void saveOpenInEditorOption() { + if (myOpenEditorCb != null) { + PropertiesComponent.getInstance().setValue("Move" + getMovePropertySuffix() +".OpenInEditor", String.valueOf(myOpenEditorCb.isSelected())); + } + } + + protected boolean isOpenInEditor() { + return myOpenEditorCb != null && myOpenEditorCb.isSelected(); + } + + protected MoveDialogBase(@NotNull Project project, boolean canBeParent) { + super(project, canBeParent); + } +} diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java index 48ab4c42887a..03739a7ab5d1 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassToInnerProcessor.java @@ -15,6 +15,7 @@ */ package com.intellij.refactoring.move.moveClassesOrPackages; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; @@ -39,6 +40,7 @@ import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Processor; import com.intellij.util.VisibilityUtil; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; @@ -60,6 +62,7 @@ public class MoveClassToInnerProcessor extends BaseRefactoringProcessor { private final boolean mySearchInNonJavaFiles; private NonCodeUsageInfo[] myNonCodeUsages; private final MoveCallback myMoveCallback; + private boolean myOpenInEditor; public MoveClassToInnerProcessor(Project project, final PsiClass[] classesToMove, @@ -167,6 +170,13 @@ public class MoveClassToInnerProcessor extends BaseRefactoringProcessor { element.delete(); } } + + if (myOpenInEditor && !oldToNewElementsMapping.isEmpty()) { + final PsiElement item = ContainerUtil.getFirstItem(oldToNewElementsMapping.values()); + if (item != null) { + EditorHelper.openInEditor(item); + } + } } catch (IncorrectOperationException e) { LOG.error(e); @@ -324,6 +334,10 @@ public class MoveClassToInnerProcessor extends BaseRefactoringProcessor { }); } + public void setOpenInEditor(boolean openInEditor) { + myOpenInEditor = openInEditor; + } + private static class ConflictsCollector { private final PsiClass myClassToMove; private final MultiMap myConflicts; diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.form b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.form index a69d2e872668..60a7d8d5e2a8 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.form +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.form @@ -112,7 +112,7 @@ - + @@ -135,6 +135,14 @@ + + + + + + + + diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java index 3bbcf743506c..e0d206e733c1 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java @@ -39,6 +39,7 @@ import com.intellij.psi.util.PsiUtilCore; import com.intellij.refactoring.*; import com.intellij.refactoring.move.MoveCallback; import com.intellij.refactoring.move.MoveClassesOrPackagesCallback; +import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.move.MoveHandler; import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil; import com.intellij.refactoring.ui.ClassNameReferenceEditor; @@ -64,7 +65,7 @@ import java.awt.event.ActionListener; import java.util.List; import java.util.Set; -public class MoveClassesOrPackagesDialog extends RefactoringDialog { +public class MoveClassesOrPackagesDialog extends MoveDialogBase { @NonNls private static final String RECENTS_KEY = "MoveClassesOrPackagesDialog.RECENTS_KEY"; private final PsiElement[] myElementsToMove; private final MoveCallback myMoveCallback; @@ -90,6 +91,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { private ComboboxWithBrowseButton myDestinationFolderCB; private JPanel myTargetPanel; private JLabel myTargetDestinationLabel; + private JPanel myOpenInEditorPanel; private boolean myHavePackages; private boolean myTargetDirectoryFixed; private boolean mySuggestToMoveToAnotherRoot; @@ -138,6 +140,13 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { myInnerClassChooser.requestFocus(); } }); + + for (PsiElement element : elementsToMove) { + if (element.getContainingFile() != null) { + myOpenInEditorPanel.add(initOpenInEditorCb(), BorderLayout.EAST); + break; + } + } } private void updateControlsEnabled() { @@ -376,6 +385,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { } protected void doAction() { + saveOpenInEditorOption(); if (isMoveToPackage()) { invokeMoveToPackage(); } @@ -419,6 +429,7 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { MoveClassesOrPackagesProcessor processor = createMoveToPackageProcessor(destination, myElementsToMove, myMoveCallback); if (processor.verifyValidPackageName()) { + processor.setOpenInEditor(isOpenInEditor()); invokeRefactoring(processor); } } @@ -476,7 +487,9 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { for (int i = 0; i < myElementsToMove.length; i++) { classesToMove[i] = (PsiClass)myElementsToMove[i]; } - invokeRefactoring(createMoveToInnerProcessor(targetClass, classesToMove, myMoveCallback)); + final MoveClassToInnerProcessor processor = createMoveToInnerProcessor(targetClass, classesToMove, myMoveCallback); + processor.setOpenInEditor(isOpenInEditor()); + invokeRefactoring(processor); } //for scala plugin @@ -510,4 +523,14 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { private List getSourceRoots() { return JavaProjectRootsUtil.getSuitableDestinationSourceRoots(myProject); } + + @Override + protected String getMovePropertySuffix() { + return "Class"; + } + + @Override + protected String getCbTitle() { + return "Open moved in editor"; + } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java index 54ddf03a5c57..1d4548b23abf 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java @@ -15,6 +15,7 @@ */ package com.intellij.refactoring.move.moveClassesOrPackages; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; @@ -71,6 +72,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { private final MoveCallback myMoveCallback; protected @NotNull final MoveDestination myMoveDestination; protected NonCodeUsageInfo[] myNonCodeUsages; + private boolean myOpenInEditor; public MoveClassesOrPackagesProcessor(Project project, PsiElement[] elements, @@ -203,6 +205,10 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { return myMoveDestination.getTargetPackage(); } + public void setOpenInEditor(boolean openInEditor) { + myOpenInEditor = openInEditor; + } + protected static class ConflictsUsageInfo extends UsageInfo { private final Collection myConflicts; @@ -540,6 +546,15 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { } myNonCodeUsages = CommonMoveUtil.retargetUsages(usages, oldToNewElementsMapping); + + if (myOpenInEditor) { + for (PsiElement element : myElementsToMove) { + if (element.getContainingFile() != null) { + EditorHelper.openInEditor(element); + break; + } + } + } } catch (IncorrectOperationException e) { myNonCodeUsages = new NonCodeUsageInfo[0]; diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java index 2640b2492a34..b70564343ac1 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java @@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.refactoring.*; import com.intellij.refactoring.move.MoveCallback; +import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.move.MoveHandler; import com.intellij.refactoring.ui.RefactoringDialog; import com.intellij.ui.DocumentAdapter; @@ -43,6 +44,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.DocumentEvent; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; @@ -51,7 +53,7 @@ import java.util.Set; /** * @author ven */ -public class MoveClassesOrPackagesToNewDirectoryDialog extends RefactoringDialog { +public class MoveClassesOrPackagesToNewDirectoryDialog extends MoveDialogBase { private static final Logger LOG = Logger.getInstance("com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesToNewDirectoryDialog"); private final PsiDirectory myDirectory; @@ -124,6 +126,12 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends RefactoringDialog myPreserveSourceRoot.setSelected(sameModule); } init(); + for (PsiElement element : elementsToMove) { + if (element.getContainingFile() != null) { + myOpenInEditor.add(initOpenInEditorCb(), BorderLayout.WEST); + break; + } + } } private TextFieldWithBrowseButton myDestDirectoryField; @@ -132,6 +140,7 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends RefactoringDialog private JPanel myRootPanel; private JLabel myNameLabel; private JCheckBox myPreserveSourceRoot; + private JPanel myOpenInEditor; private boolean isSearchInNonJavaFiles() { return mySearchForTextOccurrencesCheckBox.isSelected(); @@ -179,6 +188,7 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends RefactoringDialog final boolean searchForTextOccurences = isSearchInNonJavaFiles(); refactoringSettings.MOVE_SEARCH_IN_COMMENTS = searchInComments; refactoringSettings.MOVE_SEARCH_FOR_TEXT = searchForTextOccurences; + saveOpenInEditorOption(); invokeRefactoring(createRefactoringProcessor(project, directory, aPackage, searchInComments, searchForTextOccurences)); } @@ -218,12 +228,28 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends RefactoringDialog MoveClassesOrPackagesProcessor processor = createMoveClassesOrPackagesProcessor(myDirectory.getProject(), myElementsToMove, destination, searchInComments, searchForTextOccurences, myMoveCallback); - + + processor.setOpenInEditor(isOpenInEditor()); if (processor.verifyValidPackageName()) { return processor; } return null; } + + @Override + protected String getMovePropertySuffix() { + return "ClassWithTarget"; + } + + @Override + protected String getCbTitle() { + return "Open moved classes in editor"; + } + + @Override + protected boolean isEnabledByDefault() { + return false; + } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form index 75f157521894..069ddf6153db 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form @@ -1,9 +1,9 @@

- + - + @@ -69,9 +69,17 @@ - + + + + + + + + + diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.form b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.form index 7e30dc6901cc..8fb954645c7b 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.form +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.form @@ -1,6 +1,6 @@ - + @@ -23,7 +23,7 @@ - + @@ -89,6 +89,14 @@ + + + + + + + + diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java index cb502377f83b..71539abd98c0 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerDialog.java @@ -20,6 +20,7 @@ */ package com.intellij.refactoring.move.moveInner; +import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; @@ -37,6 +38,7 @@ import com.intellij.refactoring.HelpID; import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.PackageWrapper; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.move.MoveInstanceMembersUtil; import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesUtil; import com.intellij.refactoring.ui.NameSuggestionsField; @@ -52,13 +54,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.List; import java.util.Map; import java.util.Set; -public class MoveInnerDialog extends RefactoringDialog { +public class MoveInnerDialog extends MoveDialogBase { private final Project myProject; private final PsiClass myInnerClass; private final PsiElement myTargetContainer; @@ -74,11 +77,22 @@ public class MoveInnerDialog extends RefactoringDialog { private JLabel myPackageNameLabel; private JLabel myClassNameLabel; private JLabel myParameterNameLabel; + private JPanel myOpenInEditorPanel; private SuggestedNameInfo mySuggestedNameInfo; private final PsiClass myOuterClass; @NonNls private static final String RECENTS_KEY = "MoveInnerDialog.RECENTS_KEY"; + @Override + protected String getMovePropertySuffix() { + return "Inner"; + } + + @Override + protected String getCbTitle() { + return "Open moved member in editor"; + } + public MoveInnerDialog(Project project, PsiClass innerClass, MoveInnerProcessor processor, final PsiElement targetContainer) { super(project, true); myProject = project; @@ -91,6 +105,7 @@ public class MoveInnerDialog extends RefactoringDialog { myPackageNameLabel.setLabelFor(myPackageNameField.getChildComponent()); myClassNameLabel.setLabelFor(myClassNameField); myParameterNameLabel.setLabelFor(myParameterField); + myOpenInEditorPanel.add(initOpenInEditorCb(), BorderLayout.EAST); } public boolean isSearchInComments() { @@ -297,6 +312,10 @@ public class MoveInnerDialog extends RefactoringDialog { if (target == null) return; myProcessor.setup(getInnerClass(), className, isPassOuterClass(), parameterName, isSearchInComments(), isSearchInNonJavaFiles(), target); + + final boolean openInEditor = isOpenInEditor(); + saveOpenInEditorOption(); + myProcessor.setOpenInEditor(openInEditor); invokeRefactoring(myProcessor); } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java index d56b8c02844e..a95d6ef78a7f 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.move.moveInner; import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.CodeInsightUtilCore; +import com.intellij.ide.util.EditorHelper; import com.intellij.lang.findUsages.DescriptiveNameUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileEditor.FileEditorManager; @@ -70,6 +71,7 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor { private boolean mySearchInComments; private boolean mySearchInNonJavaFiles; private NonCodeUsageInfo[] myNonCodeUsages; + private boolean myOpenInEditor; public MoveInnerProcessor(Project project, MoveCallback moveCallback) { super(project); @@ -267,9 +269,9 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor { ChangeContextUtil.decodeContextInfo(newClass, null, null); } - PsiFile targetFile = newClass.getContainingFile(); - OpenFileDescriptor descriptor = new OpenFileDescriptor(myProject, targetFile.getVirtualFile(), newClass.getTextOffset()); - FileEditorManager.getInstance(myProject).openTextEditor(descriptor, true); + if (myOpenInEditor) { + EditorHelper.openInEditor(newClass); + } if (myMoveCallback != null) { myMoveCallback.refactoringCompleted(); @@ -530,4 +532,8 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor { public String getParameterName() { return myParameterNameOuterClass; } + + public void setOpenInEditor(boolean openInEditor) { + myOpenInEditor = openInEditor; + } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java index 1c058d2fe855..7a82ff79d60f 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java @@ -85,6 +85,8 @@ public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase { mainPanel.add(parametersPanel, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0,0)); } + mainPanel.add(initOpenInEditorCb(), new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1, 0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0,0)); + separator.setLabelFor(myList); validateTextFields(myList.getSelectedIndex()); @@ -148,8 +150,10 @@ public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase { final MoveInstanceMethodProcessor processor = new MoveInstanceMethodProcessor(myMethod.getProject(), myMethod, targetVariable, myVisibilityPanel.getVisibility(), + isOpenInEditor(), parameterNames); if (!verifyTargetClass(processor.getTargetClass())) return; + saveOpenInEditorOption(); invokeRefactoring(processor); } @@ -167,4 +171,14 @@ public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase { protected void doHelpAction() { HelpManager.getInstance().invokeHelp(HelpID.MOVE_INSTANCE_METHOD); } + + @Override + protected String getMovePropertySuffix() { + return "Instance"; + } + + @Override + protected String getCbTitle() { + return "Open moved method in editor"; + } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java index b839f3bdfe0d..a02fceb859d2 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java @@ -25,6 +25,7 @@ import com.intellij.psi.PsiVariable; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.ui.JavaVisibilityPanel; import com.intellij.refactoring.ui.RefactoringDialog; import com.intellij.ui.ScrollPaneFactory; @@ -38,7 +39,7 @@ import java.awt.*; /** * @author dsl */ -public abstract class MoveInstanceMethodDialogBase extends RefactoringDialog { +public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase { protected final PsiMethod myMethod; protected final PsiVariable[] myVariables; diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java index ca844f0a5bb9..3aa806ed98f8 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodProcessor.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.move.moveInstanceMethod; import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.generation.OverrideImplementUtil; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; @@ -62,16 +63,27 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ private PsiVariable myTargetVariable; private PsiClass myTargetClass; private final String myNewVisibility; + private final boolean myOpenInEditor; private final Map myOldClassParameterNames; + public MoveInstanceMethodProcessor(final Project project, + final PsiMethod method, + final PsiVariable targetVariable, + final String newVisibility, + final Map oldClassParameterNames) { + this(project, method, targetVariable, newVisibility, false, oldClassParameterNames); + } + public MoveInstanceMethodProcessor(final Project project, final PsiMethod method, final PsiVariable targetVariable, final String newVisibility, + boolean openInEditor, final Map oldClassParameterNames) { super(project); myMethod = method; myTargetVariable = targetVariable; + myOpenInEditor = openInEditor; myOldClassParameterNames = oldClassParameterNames; LOG.assertTrue(myTargetVariable instanceof PsiParameter || myTargetVariable instanceof PsiField); LOG.assertTrue(myTargetVariable.getType() instanceof PsiClassType); @@ -247,6 +259,10 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{ reference.bindToElement(method); } VisibilityUtil.fixVisibility(UsageViewUtil.toElements(usages), method, myNewVisibility); + + if (myOpenInEditor) { + EditorHelper.openInEditor(method); + } } catch (IncorrectOperationException e) { LOG.error(e); diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersDialog.java index a8daa9e733fe..f5eb13ce7376 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersDialog.java @@ -15,10 +15,7 @@ */ package com.intellij.refactoring.move.moveMembers; -import com.intellij.ide.util.ClassFilter; -import com.intellij.ide.util.PackageUtil; -import com.intellij.ide.util.TreeClassChooser; -import com.intellij.ide.util.TreeClassChooserFactory; +import com.intellij.ide.util.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.event.DocumentAdapter; @@ -38,6 +35,7 @@ import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.classMembers.MemberInfoChange; import com.intellij.refactoring.move.MoveCallback; +import com.intellij.refactoring.move.MoveDialogBase; import com.intellij.refactoring.ui.JavaVisibilityPanel; import com.intellij.refactoring.ui.MemberSelectionPanel; import com.intellij.refactoring.ui.MemberSelectionTable; @@ -61,7 +59,7 @@ import java.util.Collection; import java.util.List; import java.util.Set; -public class MoveMembersDialog extends RefactoringDialog implements MoveMembersOptions { +public class MoveMembersDialog extends MoveDialogBase implements MoveMembersOptions { @NonNls private static final String RECENTS_KEY = "MoveMembersDialog.RECENTS_KEY"; private MyMemberInfoModel myMemberInfoModel; @@ -76,6 +74,16 @@ public class MoveMembersDialog extends RefactoringDialog implements MoveMembersO JavaVisibilityPanel myVisibilityPanel; private final JCheckBox myIntroduceEnumConstants = new JCheckBox(RefactoringBundle.message("move.enum.constant.cb"), true); + @Override + protected String getMovePropertySuffix() { + return "Member"; + } + + @Override + protected String getCbTitle() { + return "Open moved members in editor"; + } + public MoveMembersDialog(Project project, PsiClass sourceClass, final PsiClass initialTargetClass, @@ -195,6 +203,7 @@ public class MoveMembersDialog extends RefactoringDialog implements MoveMembersO myVisibilityPanel = new JavaVisibilityPanel(true, true); myVisibilityPanel.setVisibility(null); panel.add(myVisibilityPanel, BorderLayout.EAST); + panel.add(initOpenInEditorCb(), BorderLayout.SOUTH); return panel; } @@ -246,8 +255,9 @@ public class MoveMembersDialog extends RefactoringDialog implements MoveMembersO public String getTargetClassName() { return MoveMembersDialog.this.getTargetClassName(); } - })); + }, isOpenInEditor())); + saveOpenInEditorOption(); JavaRefactoringSettings.getInstance().MOVE_PREVIEW_USAGES = isPreviewUsages(); } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java index cc594a37c107..3e7dba171d64 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java @@ -15,6 +15,7 @@ */ package com.intellij.refactoring.move.moveMembers; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; @@ -56,6 +57,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { private PsiClass myTargetClass; private final Set myMembersToMove = new LinkedHashSet(); private final MoveCallback myMoveCallback; + private final boolean myOpenInEditor; private String myNewVisibility; // "null" means "as is" private String myCommandName = MoveMembersImpl.REFACTORING_NAME; private MoveMembersOptions myOptions; @@ -65,8 +67,13 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { } public MoveMembersProcessor(Project project, @Nullable MoveCallback moveCallback, MoveMembersOptions options) { + this(project, moveCallback, options, false); + } + + public MoveMembersProcessor(Project project, @Nullable MoveCallback moveCallback, MoveMembersOptions options, boolean openInEditor) { super(project); myMoveCallback = moveCallback; + myOpenInEditor = openInEditor; setOptions(options); } @@ -231,6 +238,13 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { if (myMoveCallback != null) { myMoveCallback.refactoringCompleted(); } + + if (myOpenInEditor && !movedMembers.isEmpty()) { + final PsiMember item = ContainerUtil.getFirstItem(movedMembers.values()); + if (item != null) { + EditorHelper.openInEditor(item); + } + } } catch (IncorrectOperationException e) { LOG.error(e); diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesDialog.java b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesDialog.java index 5a4e7ef70faa..76c07b93ffe9 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesDialog.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesDialog.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.move.moveFilesOrDirectories; import com.intellij.ide.util.DirectoryUtil; +import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.application.ApplicationManager; @@ -56,6 +57,8 @@ import java.util.List; public class MoveFilesOrDirectoriesDialog extends DialogWrapper { @NonNls private static final String RECENT_KEYS = "MoveFile.RECENT_KEYS"; + @NonNls private static final String MOVE_FILES_OPEN_IN_EDITOR = "MoveFile.OpenInEditor"; + public interface Callback { void run(MoveFilesOrDirectoriesDialog dialog); @@ -68,6 +71,7 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper { private final Callback myCallback; private PsiDirectory myTargetDirectory; private JCheckBox myCbSearchForReferences; + private JCheckBox myOpenInEditorCb; public MoveFilesOrDirectoriesDialog(Project project, Callback callback) { super(project, true); @@ -124,10 +128,15 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper { myCbSearchForReferences = new NonFocusableCheckBox(RefactoringBundle.message("search.for.references")); myCbSearchForReferences.setSelected(RefactoringSettings.getInstance().MOVE_SEARCH_FOR_REFERENCES_FOR_FILE); + myOpenInEditorCb = new NonFocusableCheckBox("Open moved files in editor"); + myOpenInEditorCb.setSelected(isOpenInEditor()); + return FormBuilder.createFormBuilder().addComponent(myNameLabel) .addLabeledComponent(RefactoringBundle.message("move.files.to.directory.label"), myTargetDirectoryField, UIUtil.LARGE_VGAP) .addTooltip(RefactoringBundle.message("path.completion.shortcut", shortcutText)) - .addComponentToRightColumn(myCbSearchForReferences, UIUtil.LARGE_VGAP).getPanel(); + .addComponentToRightColumn(myCbSearchForReferences, UIUtil.LARGE_VGAP) + .addComponentToRightColumn(myOpenInEditorCb, UIUtil.LARGE_VGAP) + .getPanel(); } public void setData(PsiElement[] psiElements, PsiDirectory initialTargetDirectory, @NonNls String helpID) { @@ -169,12 +178,20 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper { HelpManager.getInstance().invokeHelp(myHelpID); } + public static boolean isOpenInEditor() { + if (ApplicationManager.getApplication().isUnitTestMode()) { + return false; + } + return PropertiesComponent.getInstance().getBoolean(MOVE_FILES_OPEN_IN_EDITOR, true); + } + private void validateOKButton() { setOKActionEnabled(myTargetDirectoryField.getChildComponent().getText().length() > 0); } @Override protected void doOKAction() { + PropertiesComponent.getInstance().setValue(MOVE_FILES_OPEN_IN_EDITOR, String.valueOf(myOpenInEditorCb.isSelected())); //myTargetDirectoryField.getChildComponent().addCurrentTextToHistory(); RecentsManager.getInstance(myProject).registerRecentEntry(RECENT_KEYS, myTargetDirectoryField.getChildComponent().getText()); RefactoringSettings.getInstance().MOVE_SEARCH_FOR_REFERENCES_FOR_FILE = myCbSearchForReferences.isSelected(); diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java index 5217b5795b7c..fe0a1bcd0ec0 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java @@ -16,6 +16,7 @@ package com.intellij.refactoring.move.moveFilesOrDirectories; +import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.paths.PsiDynaReference; @@ -190,6 +191,10 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor { retargetUsages(usages, oldToNewMap); + if (MoveFilesOrDirectoriesDialog.isOpenInEditor() && !movedFiles.isEmpty()) { + EditorHelper.openInEditor(movedFiles.get(0)); + } + // Perform CVS "add", "remove" commands on moved files. if (myMoveCallback != null) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesUtil.java b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesUtil.java index 885ce5b07214..286420d0c8e0 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesUtil.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesUtil.java @@ -136,18 +136,16 @@ public class MoveFilesOrDirectoriesUtil { LOG.assertTrue(targetDirectory != null); targetElement[0] = targetDirectory; - PsiManager manager = PsiManager.getInstance(project); try { final int[] choice = elements.length > 1 || elements[0] instanceof PsiDirectory ? new int[]{-1} : null; final List els = new ArrayList(); - for (int i = 0, newElementsLength = newElements.length; i < newElementsLength; i++) { - final PsiElement psiElement = newElements[i]; + for (final PsiElement psiElement : newElements) { if (psiElement instanceof PsiFile) { final PsiFile file = (PsiFile)psiElement; final boolean fileExist = ApplicationManager.getApplication().runWriteAction(new Computable() { @Override public Boolean compute() { - return CopyFilesOrDirectoriesHandler.checkFileExist(targetDirectory, choice, file, file.getName(), "Move"); + return CopyFilesOrDirectoriesHandler.checkFileExist(targetDirectory, choice, file, file.getName(), "Move"); } }); if (fileExist) continue; From db8eaf24f684b377c88b7faa702d346a69181bd5 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 22 Dec 2014 14:14:17 +0100 Subject: [PATCH 38/63] add logging IDEA-CR-1105 --- .../intellij/psi/augment/PsiAugmentProvider.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java b/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java index b404c94b83d2..98df2e44e4c7 100644 --- a/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java +++ b/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.augment; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.psi.PsiElement; @@ -29,6 +30,7 @@ import java.util.List; public abstract class PsiAugmentProvider { + private static final Logger LOG = Logger.getInstance("#" + PsiAugmentProvider.class.getName()); public static final ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.lang.psiAugmentProvider"); @NotNull @@ -64,9 +66,14 @@ public abstract class PsiAugmentProvider { @Nullable public static PsiType getInferredType(PsiTypeElement typeElement) { for (PsiAugmentProvider provider : Extensions.getExtensions(EP_NAME)) { - final PsiType type = provider.inferType(typeElement); - if (type != null) { - return type; + try { + final PsiType type = provider.inferType(typeElement); + if (type != null) { + return type; + } + } + catch (Exception e) { + LOG.error("provider: " + provider, e); } } return null; From 06f8e15a4f65841a5cd41db246ed624b0fe9fead Mon Sep 17 00:00:00 2001 From: Andrey Starovoyt Date: Mon, 22 Dec 2014 17:52:24 +0300 Subject: [PATCH 39/63] webstorm: refactor GithubProjectGenerator + move common part to platform --- .../GithubProjectGeneratorPeer.form | 27 +- .../GithubProjectGeneratorPeer.java | 260 +++++++----------- .../util/ui/ReloadableComboBoxPanel.form | 34 +++ .../util/ui/ReloadableComboBoxPanel.java | 190 +++++++++++++ 4 files changed, 321 insertions(+), 190 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.form create mode 100644 platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.java diff --git a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.form b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.form index 1772de981680..2a2fa91b28b5 100644 --- a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.form +++ b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.form @@ -13,43 +13,20 @@ - + - - - - - - - - - - - - - - - - - - - - - - - + - diff --git a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.java b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.java index 2a94fdb52778..7c069b566d13 100644 --- a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.java +++ b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubProjectGeneratorPeer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,59 +15,110 @@ */ package com.intellij.lang.javascript.boilerplate; -import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; -import com.intellij.icons.AllIcons; import com.intellij.ide.util.projectWizard.SettingsStep; -import com.intellij.openapi.actionSystem.ActionToolbar; -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.impl.ActionButton; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.platform.WebProjectGenerator; import com.intellij.platform.templates.github.GithubTagInfo; -import com.intellij.ui.JBColor; import com.intellij.ui.ListCellRendererWrapper; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.ui.AsyncProcessIcon; -import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.ReloadableComboBoxPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.awt.*; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Set; +import java.util.*; /** * @author Sergey Simonchik */ public class GithubProjectGeneratorPeer implements WebProjectGenerator.GeneratorPeer { + private void createUIComponents() { + myReloadableComboBoxPanel = new ReloadableComboBoxPanel() { - private static final String CONTROL_PLACE = "Github.Project.Generator.Reload"; + @SuppressWarnings("unchecked") + @Override + protected void doUpdateValues(@NotNull Set tags) { + if (!shouldUpdate(tags)) { + return; + } - private enum UpdateStatus { - UPDATING, IDLE + List sortedTags = createSortedTagList(tags); + GithubTagInfo selectedItem = getSelectedValue(); + if (selectedItem == null && sortedTags.size() > 0) { + selectedItem = sortedTags.get(0); + } + myComboBox.removeAllItems(); + myComboBox.addItem(myMasterTag); + for (GithubTagInfo tag : sortedTags) { + myComboBox.addItem(tag); + } + if (selectedItem != null) { + // restore previously selected item + for (int i = 0; i < myComboBox.getItemCount(); i++) { + GithubTagInfo item = GithubTagInfo.tryCast(myComboBox.getItemAt(i)); + if (item != null && item.getName().equals(selectedItem.getName())) { + myComboBox.setSelectedIndex(i); + break; + } + } + } + myComboBox.updateUI(); + fireStateChanged(); + } + + private boolean shouldUpdate(Set newTags) { + if (myComboBox.getItemCount() == 0) { + return true; + } + int count = myComboBox.getItemCount(); + Set oldTags = Sets.newHashSet(); + for (int i = 1; i < count; i++) { + GithubTagInfo item = ObjectUtils.tryCast(myComboBox.getItemAt(i), GithubTagInfo.class); + if (item != null) { + oldTags.add(item); + } + } + return !oldTags.equals(newTags); + } + + @SuppressWarnings("unchecked") + @NotNull + @Override + protected JComboBox createValuesComboBox() { + JComboBox box = super.createValuesComboBox(); + box.setRenderer(new ListCellRendererWrapper() { + @Override + public void customize(JList list, GithubTagInfo tag, int index, boolean selected, boolean hasFocus) { + final String text; + if (tag == null) { + text = isBackgroundJobRunning() ? "Loading..." : "Unavailable"; + } + else { + text = tag.getName(); + } + setText(text); + } + }); + + return box; + } + }; + + myVersionPanel = myReloadableComboBoxPanel.getMainPanel(); } private final List myListeners = ContainerUtil.newArrayList(); private final GithubTagInfo myMasterTag; private final GithubTagListProvider myTagListProvider; - private final AsyncProcessIcon myLoadingVersionIcon = new AsyncProcessIcon("Getting github tags"); - private final JLabel myErrorMessage = new JLabel(); - private JComboBox myComboBox; private JComponent myComponent; private JPanel myVersionPanel; - private JPanel myActionPanel; - private UpdateStatus myUpdateStatus; + private ReloadableComboBoxPanel myReloadableComboBoxPanel; public GithubProjectGeneratorPeer(@NotNull AbstractGithubTagDownloadedProjectGenerator generator) { - myErrorMessage.setForeground(JBColor.RED); String ghUserName = generator.getGithubUserName(); String ghRepoName = generator.getGithubRepositoryName(); myMasterTag = new GithubTagInfo( @@ -75,87 +126,33 @@ public class GithubProjectGeneratorPeer implements WebProjectGenerator.Generator String.format("https://github.com/%s/%s/zipball/master", ghUserName, ghRepoName) ); - myComboBox.setRenderer(new ListCellRendererWrapper() { + myTagListProvider = new GithubTagListProvider(ghUserName, ghRepoName); + + myReloadableComboBoxPanel.setDataProvider(new ReloadableComboBoxPanel.DataProvider() { @Override - public void customize(JList list, GithubTagInfo tag, int index, boolean selected, boolean hasFocus) { - final String text; - if (tag == null) { - text = isBackgroundJobRunning() ? "Loading..." : "Unavailable"; - } - else { - text = tag.getName(); - } - setText(text); + public Set getCachedValues() { + return myTagListProvider.getCachedTags(); + } + + @Override + public void updateValuesAsynchronously() { + myTagListProvider.updateTagListAsynchronously(GithubProjectGeneratorPeer.this); } }); - myTagListProvider = new GithubTagListProvider(ghUserName, ghRepoName); - fillActionPanel(); - ImmutableSet cachedTags = myTagListProvider.getCachedTags(); - if (cachedTags != null) { - onTagsUpdated(cachedTags); - } - reloadTagsInBackground(); + myReloadableComboBoxPanel.reloadValuesInBackground(); } void onTagsUpdated(@NotNull ImmutableSet tags) { - changeUpdateStatus(UpdateStatus.IDLE); - if (!shouldUpdate(tags)) { - return; - } - List sortedTags = createSortedTagList(tags); - GithubTagInfo selectedItem = getSelectedTag(); - if (selectedItem == null && sortedTags.size() > 0) { - selectedItem = sortedTags.get(0); - } - myComboBox.removeAllItems(); - myComboBox.addItem(myMasterTag); - for (GithubTagInfo tag : sortedTags) { - myComboBox.addItem(tag); - } - if (selectedItem != null) { - // restore previously selected item - for (int i = 0; i < myComboBox.getItemCount(); i++) { - GithubTagInfo item = GithubTagInfo.tryCast(myComboBox.getItemAt(i)); - if (item != null && item.getName().equals(selectedItem.getName())) { - myComboBox.setSelectedIndex(i); - break; - } - } - } - myComboBox.updateUI(); - fireStateChanged(); + myReloadableComboBoxPanel.onUpdateValues(tags); } void onTagsUpdateError(@NotNull final String errorMessage) { - UIUtil.invokeLaterIfNeeded(new Runnable() { - @Override - public void run() { - if (getSelectedTag() == null) { - myErrorMessage.setText(errorMessage); - } - changeUpdateStatus(UpdateStatus.IDLE); - } - }); - } - - private boolean shouldUpdate(@NotNull ImmutableSet newTags) { - if (myComboBox.getItemCount() == 0) { - return true; - } - int count = myComboBox.getItemCount(); - Set oldTags = Sets.newHashSet(); - for (int i = 1; i < count; i++) { - GithubTagInfo item = ObjectUtils.tryCast(myComboBox.getItemAt(i), GithubTagInfo.class); - if (item != null) { - oldTags.add(item); - } - } - return !oldTags.equals(newTags); + myReloadableComboBoxPanel.onValuesUpdateError(errorMessage); } @NotNull - private static List createSortedTagList(@NotNull ImmutableCollection tags) { + private static List createSortedTagList(@NotNull Collection tags) { List sortedTags = ContainerUtil.newArrayList(tags); Collections.sort(sortedTags, new Comparator() { @Override @@ -184,13 +181,13 @@ public class GithubProjectGeneratorPeer implements WebProjectGenerator.Generator @Override public void buildUI(@NotNull SettingsStep settingsStep) { settingsStep.addSettingsField("\u001BVersion:", myVersionPanel); - settingsStep.addSettingsComponent(myErrorMessage); + settingsStep.addSettingsComponent(myReloadableComboBoxPanel.getErrorComponent()); } @NotNull @Override public GithubTagInfo getSettings() { - GithubTagInfo tag = getSelectedTag(); + GithubTagInfo tag = myReloadableComboBoxPanel.getSelectedValue(); if (tag == null) { throw new RuntimeException("[internal error] No versions available."); } @@ -200,11 +197,11 @@ public class GithubProjectGeneratorPeer implements WebProjectGenerator.Generator @Override @Nullable public ValidationInfo validate() { - GithubTagInfo tag = getSelectedTag(); + GithubTagInfo tag = myReloadableComboBoxPanel.getSelectedValue(); if (tag != null) { return null; } - String errorMessage = StringUtil.notNullize(myErrorMessage.getText()); + String errorMessage = StringUtil.notNullize(myReloadableComboBoxPanel.getErrorComponent().getText()); if (errorMessage.isEmpty()) { errorMessage = "Versions have not been loaded yet."; } @@ -213,7 +210,7 @@ public class GithubProjectGeneratorPeer implements WebProjectGenerator.Generator @Override public boolean isBackgroundJobRunning() { - return myUpdateStatus == UpdateStatus.UPDATING; + return myReloadableComboBoxPanel.isBackgroundJobRunning(); } @Override @@ -221,78 +218,11 @@ public class GithubProjectGeneratorPeer implements WebProjectGenerator.Generator myListeners.add(listener); } - @Nullable - private GithubTagInfo getSelectedTag() { - return GithubTagInfo.tryCast(myComboBox.getSelectedItem()); - } private void fireStateChanged() { - GithubTagInfo tag = getSelectedTag(); + GithubTagInfo tag = myReloadableComboBoxPanel.getSelectedValue(); for (WebProjectGenerator.SettingsStateListener listener : myListeners) { listener.stateChanged(tag != null); } } - - private void reloadTagsInBackground() { - changeUpdateStatus(UpdateStatus.UPDATING); - myErrorMessage.setText(null); - myTagListProvider.updateTagListAsynchronously(this); - } - - private void changeUpdateStatus(@NotNull UpdateStatus status) { - CardLayout cardLayout = (CardLayout) myActionPanel.getLayout(); - cardLayout.show(myActionPanel, status.name()); - if (status == UpdateStatus.UPDATING) { - myLoadingVersionIcon.resume(); - } - else { - myLoadingVersionIcon.suspend(); - } - myUpdateStatus = status; - } - - private void fillActionPanel() { - myActionPanel.add(createReloadButtonPanel(), UpdateStatus.IDLE.name()); - myActionPanel.add(createReloadInProgressPanel(), UpdateStatus.UPDATING.name()); - changeUpdateStatus(UpdateStatus.IDLE); - } - - @NotNull - private JPanel createReloadButtonPanel() { - ReloadAction reloadAction = new ReloadAction(); - ActionButton reloadButton = new ActionButton( - reloadAction, - reloadAction.getTemplatePresentation().clone(), - CONTROL_PLACE, - ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE - ); - JPanel panel = new JPanel(new BorderLayout(0, 0)); - panel.add(reloadButton, BorderLayout.WEST); - return panel; - } - - @NotNull - private JPanel createReloadInProgressPanel() { - JPanel panel = new JPanel(); - panel.add(myLoadingVersionIcon); - return panel; - } - - private class ReloadAction extends AnAction { - - private ReloadAction() { - super("Reload versions", null, AllIcons.Actions.Refresh); - } - - @Override - public void actionPerformed(AnActionEvent e) { - GithubProjectGeneratorPeer.this.reloadTagsInBackground(); - } - - @Override - public void update(AnActionEvent e) { - e.getPresentation().setEnabled(true); - } - } - } diff --git a/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.form b/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.form new file mode 100644 index 000000000000..3f7b56801418 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.form @@ -0,0 +1,34 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.java b/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.java new file mode 100644 index 000000000000..fb6849aa1396 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/util/ui/ReloadableComboBoxPanel.java @@ -0,0 +1,190 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.util.ui; + +import com.intellij.icons.AllIcons; +import com.intellij.openapi.actionSystem.ActionToolbar; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.impl.ActionButton; +import com.intellij.openapi.ui.ComboBox; +import com.intellij.ui.JBColor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.awt.*; +import java.util.Set; + +public abstract class ReloadableComboBoxPanel { + public interface DataProvider { + + /** + * returns init cached values + */ + @Nullable + Set getCachedValues(); + + /** + * After getting values method must call #onUpdateValues or #onValuesUpdateError + */ + void updateValuesAsynchronously(); + } + + private static final String CONTROL_PLACE = "UI.Configuration.Component.Reload.Panel"; + + private final AsyncProcessIcon myLoadingVersionIcon = new AsyncProcessIcon("Getting possible values"); + + private final JLabel myErrorMessage = new JLabel(); + @Nullable + private volatile DataProvider myDataProvider; + @Nullable + private volatile UpdateStatus myUpdateStatus; + protected JComboBox myComboBox; + + protected JPanel myActionPanel; + protected JPanel myMainPanel; + public ReloadableComboBoxPanel() { + myErrorMessage.setForeground(JBColor.RED); + fillActionPanel(); + } + + public final void setDataProvider(@NotNull DataProvider dataProvider) { + myDataProvider = dataProvider; + + Set cachedValues = dataProvider.getCachedValues(); + if (cachedValues != null) { + onUpdateValues(cachedValues); + } + } + + protected abstract void doUpdateValues(@NotNull Set values); + + @SuppressWarnings("unchecked") + public T getSelectedValue() { + return (T)myComboBox.getSelectedItem(); + } + + @NotNull + public final JLabel getErrorComponent() { + return myErrorMessage; + } + + public final boolean isBackgroundJobRunning() { + return myUpdateStatus == UpdateStatus.UPDATING; + } + + public final void onUpdateValues(@NotNull Set values) { + changeUpdateStatus(UpdateStatus.IDLE); + doUpdateValues(values); + } + + public final void reloadValuesInBackground() { + if (myUpdateStatus == UpdateStatus.UPDATING) return; + changeUpdateStatus(UpdateStatus.UPDATING); + myErrorMessage.setText(null); + DataProvider provider = myDataProvider; + assert provider != null; + provider.updateValuesAsynchronously(); + } + + private void changeUpdateStatus(@NotNull UpdateStatus status) { + CardLayout cardLayout = (CardLayout)myActionPanel.getLayout(); + cardLayout.show(myActionPanel, status.name()); + if (status == UpdateStatus.UPDATING) { + myLoadingVersionIcon.resume(); + } + else { + myLoadingVersionIcon.suspend(); + } + myUpdateStatus = status; + } + + private void fillActionPanel() { + myActionPanel.add(createReloadButtonPanel(), UpdateStatus.IDLE.name()); + myActionPanel.add(createReloadInProgressPanel(), UpdateStatus.UPDATING.name()); + changeUpdateStatus(UpdateStatus.IDLE); + } + + public final void onValuesUpdateError(@NotNull final String errorMessage) { + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + if (getSelectedValue() == null) { + myErrorMessage.setText(errorMessage); + } + changeUpdateStatus(UpdateStatus.IDLE); + } + }); + } + + + @NotNull + private JPanel createReloadButtonPanel() { + ReloadAction reloadAction = new ReloadAction(); + ActionButton reloadButton = new ActionButton( + reloadAction, + reloadAction.getTemplatePresentation().clone(), + CONTROL_PLACE, + ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE + ); + JPanel panel = new JPanel(new BorderLayout(0, 0)); + panel.add(reloadButton, BorderLayout.WEST); + return panel; + } + + @NotNull + public final JPanel getMainPanel() { + return myMainPanel; + } + + @NotNull + private JPanel createReloadInProgressPanel() { + JPanel panel = new JPanel(); + panel.add(myLoadingVersionIcon); + return panel; + } + + private final class ReloadAction extends AnAction { + + private ReloadAction() { + super("Reload list", null, AllIcons.Actions.Refresh); + } + + @Override + public void actionPerformed(AnActionEvent e) { + reloadValuesInBackground(); + } + + @Override + public void update(AnActionEvent e) { + e.getPresentation().setEnabled(true); + } + } + + private enum UpdateStatus { + UPDATING, IDLE + } + + @NotNull + protected JComboBox createValuesComboBox() { + return new ComboBox(); + } + + private void createUIComponents() { + myComboBox = createValuesComboBox(); + } +} From 6fbf9bc1044e47a11bd78f21dd964cd5805f962a Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 18:02:14 +0300 Subject: [PATCH 40/63] comment added for CR-IC-7060 --- .../src/com/intellij/find/impl/FindInProjectUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java index 718b830f8c7d..3d064e69cc9e 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectUtil.java @@ -448,7 +448,9 @@ public class FindInProjectUtil { VirtualFile directory = psiDir == null ? null : psiDir.getVirtualFile(); Module module = findModel.getModuleName() == null ? null : ModuleManager.getInstance(project).findModuleByName(findModel.getModuleName()); return findModel.isCustomScope() && customScope != null ? customScope : - directory != null ? GlobalSearchScopesCore.directoryScope(project, directory, true) : + // we don't have to check for myProjectFileIndex.isExcluded(file) here like FindInProjectTask.collectFilesInScope() does + // because all found usages are guaranteed to be not in excluded dir + directory != null ? GlobalSearchScopesCore.directoryScope(project, directory, findModel.isWithSubdirectories()) : module != null ? GlobalSearchScope.moduleScope(module) : findModel.isProjectScope() ? GlobalSearchScope.projectScope(project) : GlobalSearchScope.allScope(project); From 6c3bb203d3102f9c057e92e804273404a7578f4e Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 22 Dec 2014 18:03:03 +0300 Subject: [PATCH 41/63] test added --- .../usages/impl/UsageViewManagerTest.java | 39 +++++++++++++++++++ .../usages/impl/UsageViewManagerImpl.java | 13 +------ 2 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 platform/platform-tests/testSrc/com/intellij/usages/impl/UsageViewManagerTest.java diff --git a/platform/platform-tests/testSrc/com/intellij/usages/impl/UsageViewManagerTest.java b/platform/platform-tests/testSrc/com/intellij/usages/impl/UsageViewManagerTest.java new file mode 100644 index 000000000000..3e38bd2bbb4a --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/usages/impl/UsageViewManagerTest.java @@ -0,0 +1,39 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.usages.impl; + +import com.intellij.find.FindModel; +import com.intellij.find.impl.FindInProjectUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.search.GlobalSearchScopesCore; +import com.intellij.psi.search.SearchScope; +import com.intellij.testFramework.PlatformTestCase; +import com.intellij.usages.UsageTarget; +import com.intellij.usages.UsageViewManager; + +public class UsageViewManagerTest extends PlatformTestCase { + public void testScopeCreatedForFindInDirectory() { + VirtualFile dir = getProject().getBaseDir(); + FindModel findModel = new FindModel(); + findModel.setDirectoryName(dir.getPath()); + findModel.setWithSubdirectories(true); + findModel.setProjectScope(false); + UsageTarget target = new FindInProjectUtil.StringUsageTarget(getProject(), findModel); + UsageViewManagerImpl manager = (UsageViewManagerImpl)UsageViewManager.getInstance(getProject()); + SearchScope scope = manager.getMaxSearchScopeToWarnOfFallingOutOf(new UsageTarget[]{target}); + assertEquals(scope, GlobalSearchScopesCore.directoryScope(getProject(), dir, true)); + } +} diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java index 04cce1726d38..455718c1160d 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java @@ -122,16 +122,7 @@ public class UsageViewManagerImpl extends UsageViewManager { @NotNull final UsageViewPresentation presentation, @NotNull final FindUsagesProcessPresentation processPresentation, @Nullable final UsageViewStateListener listener) { - final SearchScope searchScope = getMaxSearchScopeToWarnOfFallingOutOf(searchFor); - return doSearchAndShow(searchFor, searcherFactory, presentation, processPresentation, listener, searchScope); - } - - private UsageView doSearchAndShow(@NotNull final UsageTarget[] searchFor, - @NotNull final Factory searcherFactory, - @NotNull final UsageViewPresentation presentation, - @NotNull final FindUsagesProcessPresentation processPresentation, - @Nullable final UsageViewStateListener listener, - @NotNull final SearchScope searchScopeToWarnOfFallingOutOf) { + final SearchScope searchScopeToWarnOfFallingOutOf = getMaxSearchScopeToWarnOfFallingOutOf(searchFor); final AtomicReference usageViewRef = new AtomicReference(); Task.Backgroundable task = new Task.Backgroundable(myProject, getProgressTitle(presentation), true, new SearchInBackgroundOption()) { @@ -159,7 +150,7 @@ public class UsageViewManagerImpl extends UsageViewManager { } @NotNull - private SearchScope getMaxSearchScopeToWarnOfFallingOutOf(@NotNull UsageTarget[] searchFor) { + SearchScope getMaxSearchScopeToWarnOfFallingOutOf(@NotNull UsageTarget[] searchFor) { UsageTarget target = searchFor[0]; if (target instanceof TypeSafeDataProvider) { final SearchScope[] scope = new SearchScope[1]; From c278b96fb102d25d339f1ea31e08268651d33337 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 22 Dec 2014 16:31:25 +0100 Subject: [PATCH 42/63] change variables foreground color in code templates to fit both themes --- .../code/Groovy JUnit SetUp Method.groovy.html | 4 ++-- .../code/Groovy JUnit TearDown Method.groovy.html | 4 ++-- .../code/Groovy JUnit Test Case.groovy.html | 4 ++-- .../code/Groovy JUnit Test Method.groovy.html | 4 ++-- .../code/Groovy New Method Body.groovy.html | 10 +++++----- .../fileTemplates/code/Spock Test Method.groovy.html | 4 ++-- .../code/Spock cleanup Method.groovy.html | 4 ++-- .../fileTemplates/code/Spock_SetUp_Method.groovy.html | 4 ++-- .../fileTemplates/code/JUnit3 SetUp Method.java.html | 4 ++-- .../code/JUnit3 TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/JUnit3 Test Class.java.html | 4 ++-- .../fileTemplates/code/JUnit3 Test Method.java.html | 4 ++-- .../code/JUnit4 Parameters Method.java.html | 4 ++-- .../fileTemplates/code/JUnit4 SetUp Method.java.html | 4 ++-- .../code/JUnit4 TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/JUnit4 Test Class.java.html | 4 ++-- .../fileTemplates/code/JUnit4 Test Method.java.html | 4 ++-- .../code/TestNG Parameters Method.java.html | 4 ++-- .../fileTemplates/code/TestNG SetUp Method.java.html | 4 ++-- .../code/TestNG TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/TestNG Test Class.java.html | 4 ++-- .../fileTemplates/code/TestNG Test Method.java.html | 4 ++-- 22 files changed, 47 insertions(+), 47 deletions(-) diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html index 02c3b66e19d7..e8360470a4c0 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html index 046d8efa5b4f..08404640028f 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html index bfdc7bd7bbcb..47d614cb9f7f 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html index 0278d7b08131..161eee337cb9 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html index 5a4cbfb7f3c7..1387825252c6 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html @@ -14,27 +14,27 @@ Predefined variables will take the following values: - ${RETURN_TYPE} + ${RETURN_TYPE}   a return type of a created method - ${DEFAULT_RETURN_VALUE} + ${DEFAULT_RETURN_VALUE}   a value returned by the method by default - ${METHOD_NAME} + ${METHOD_NAME}   name of the created method - ${CLASS_NAME} + ${CLASS_NAME}   qualified name of the class where method is created - ${SIMPLE_CLASS_NAME} + ${SIMPLE_CLASS_NAME}   non-qualified name of the class where method is implemented diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html index f9789fc6a2c4..de008797b276 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html index 0517d8d4bc17..b9fa69155891 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html index 379785f36c3f..e399c7964e8f 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html index a22b80b884f3..bde7150aae4e 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html index da1d3ae9ce26..478453b1fc3b 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html index 845e8be9069f..59cd39047881 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html index b718403b4417..60769552475a 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html index 51fd9c2f15ef..14b4d06db138 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html index e700267e9aa3..871418d3a633 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html index 5a419263f69a..e70abd5bdc07 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html index 7a1542436cf2..53eb2e354806 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html index 7a04a90e35cd..b605e09c7f96 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html index f6084e6774bb..e639b1fa00fc 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html index 7f8b8e648874..ba218a740486 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html index 8c6e6d6685d5..6961b4a59868 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html b/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html index 972b59a13ae8..7ddf9fc1afcf 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html index b86268203ed8..108b5cdd4d98 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. From 1e58a765a73a8d49b0a21558212e7571f24d7e27 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 22 Dec 2014 18:46:21 +0300 Subject: [PATCH 43/63] IDEA-134214 drag & drop sometimes copies selection --- .../openapi/editor/impl/EditorImpl.java | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 7d9d231cd6d8..061fc5bb07a8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -250,6 +250,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private boolean myEmbeddedIntoDialogWrapper; @Nullable private CachedFontContent myLastCache; private int myDragOnGutterSelectionStartLine = -1; + private RangeMarker myDraggedRange; private boolean mySoftWrapsChanged; @@ -4344,10 +4345,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (caretShift != 0) { if (myMousePressedEvent != null) { if (mySettings.isDndEnabled()) { - boolean isCopy = UIUtil.isControlKeyDown(e) || isViewer() || !getDocument().isWritable(); - mySavedCaretOffsetForDNDUndoHack = oldCaretOffset; - getContentComponent().getTransferHandler() - .exportAsDrag(getContentComponent(), e, isCopy ? TransferHandler.COPY : TransferHandler.MOVE); + if (myDraggedRange == null) { + boolean isCopy = UIUtil.isControlKeyDown(e) || isViewer() || !getDocument().isWritable(); + mySavedCaretOffsetForDNDUndoHack = oldCaretOffset; + getContentComponent().getTransferHandler() + .exportAsDrag(getContentComponent(), e, isCopy ? TransferHandler.COPY : TransferHandler.MOVE); + } } else { selectionModel.removeSelection(); @@ -4364,6 +4367,13 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + private void clearDraggedRange() { + if (myDraggedRange != null) { + myDraggedRange.dispose(); + myDraggedRange = null; + } + } + private void createSelectionTill(@NotNull LogicalPosition targetPosition) { List caretStates = new ArrayList(myCaretStateBeforeLastPress); if (myRectangularSelectionInProgress) { @@ -5587,6 +5597,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi myLastMousePressedLocation = xyToLogicalPosition(e.getPoint()); myCaretStateBeforeLastPress = isToggleCaretEvent(e) ? myCaretModel.getCaretsAndSelections() : Collections.emptyList(); myCurrentDragIsSubstantial = false; + clearDraggedRange(); final int clickOffset = logicalPositionToOffset(myLastMousePressedLocation); putUserData(EditorActionUtil.EXPECTED_CARET_OFFSET, clickOffset); @@ -6240,16 +6251,14 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private static class MyTransferHandler extends TransferHandler { - private RangeMarker myDraggedRange = null; - - private static Editor getEditor(@NotNull JComponent comp) { + private static EditorImpl getEditor(@NotNull JComponent comp) { EditorComponentImpl editorComponent = (EditorComponentImpl)comp; return editorComponent.getEditor(); } @Override public boolean importData(@NotNull final JComponent comp, @NotNull final Transferable t) { - final EditorImpl editor = (EditorImpl)getEditor(comp); + final EditorImpl editor = getEditor(comp); final EditorDropHandler dropHandler = editor.getDropHandler(); if (dropHandler != null && dropHandler.canHandleDrop(t.getTransferDataFlavors())) { @@ -6258,11 +6267,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } final int caretOffset = editor.getCaretModel().getOffset(); - if (myDraggedRange != null && myDraggedRange.getStartOffset() <= caretOffset && caretOffset < myDraggedRange.getEndOffset()) { + if (editor.myDraggedRange != null + && editor.myDraggedRange.getStartOffset() <= caretOffset && caretOffset < editor.myDraggedRange.getEndOffset()) { return false; } - if (myDraggedRange != null) { + if (editor.myDraggedRange != null) { editor.getCaretModel().moveToOffset(editor.mySavedCaretOffsetForDNDUndoHack); } @@ -6276,7 +6286,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi editor.getSelectionModel().removeSelection(); final int offset; - if (myDraggedRange != null) { + if (editor.myDraggedRange != null) { editor.getCaretModel().moveToOffset(caretOffset); offset = caretOffset; } @@ -6337,12 +6347,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi @Override @Nullable protected Transferable createTransferable(JComponent c) { - Editor editor = getEditor(c); + EditorImpl editor = getEditor(c); String s = editor.getSelectionModel().getSelectedText(); if (s == null) return null; int selectionStart = editor.getSelectionModel().getSelectionStart(); int selectionEnd = editor.getSelectionModel().getSelectionEnd(); - myDraggedRange = editor.getDocument().createRangeMarker(selectionStart, selectionEnd); + editor.myDraggedRange = editor.getDocument().createRangeMarker(selectionStart, selectionEnd); return new StringSelection(s); } @@ -6360,8 +6370,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (last != null && !(last instanceof EditorComponentImpl)) return; - final Editor editor = getEditor(source); - if (action == MOVE && !editor.isViewer() && myDraggedRange != null) { + final EditorImpl editor = getEditor(source); + if (action == MOVE && !editor.isViewer() && editor.myDraggedRange != null) { if (!FileDocumentManager.getInstance().requestWriting(editor.getDocument(), editor.getProject())) { return; } @@ -6374,7 +6384,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi Document doc = editor.getDocument(); doc.startGuardedBlockChecking(); try { - doc.deleteString(myDraggedRange.getStartOffset(), myDraggedRange.getEndOffset()); + doc.deleteString(editor.myDraggedRange.getStartOffset(), editor.myDraggedRange.getEndOffset()); } catch (ReadOnlyFragmentModificationException e) { EditorActionManager.getInstance().getReadonlyFragmentModificationHandler(doc).handle(e); @@ -6388,7 +6398,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi }, EditorBundle.message("move.selection.command.name"), DND_COMMAND_KEY, UndoConfirmationPolicy.DEFAULT, editor.getDocument()); } - myDraggedRange = null; + editor.clearDraggedRange(); } } From 2f5921cee9bf72d686c1fb394ad47fd4cfb2967a Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 22 Dec 2014 16:53:03 +0100 Subject: [PATCH 44/63] remove italic for env variables in templates --- .../code/Groovy JUnit SetUp Method.groovy.html | 4 ++-- .../code/Groovy JUnit TearDown Method.groovy.html | 4 ++-- .../code/Groovy JUnit Test Case.groovy.html | 4 ++-- .../code/Groovy JUnit Test Method.groovy.html | 4 ++-- .../code/Groovy New Method Body.groovy.html | 10 +++++----- .../fileTemplates/code/Spock Test Method.groovy.html | 4 ++-- .../code/Spock cleanup Method.groovy.html | 4 ++-- .../fileTemplates/code/Spock_SetUp_Method.groovy.html | 4 ++-- .../fileTemplates/code/JUnit3 SetUp Method.java.html | 4 ++-- .../code/JUnit3 TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/JUnit3 Test Class.java.html | 4 ++-- .../fileTemplates/code/JUnit3 Test Method.java.html | 4 ++-- .../code/JUnit4 Parameters Method.java.html | 4 ++-- .../fileTemplates/code/JUnit4 SetUp Method.java.html | 4 ++-- .../code/JUnit4 TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/JUnit4 Test Class.java.html | 4 ++-- .../fileTemplates/code/JUnit4 Test Method.java.html | 4 ++-- .../code/TestNG Parameters Method.java.html | 4 ++-- .../fileTemplates/code/TestNG SetUp Method.java.html | 4 ++-- .../code/TestNG TearDown Method.java.html | 4 ++-- .../src/fileTemplates/code/TestNG Test Class.java.html | 4 ++-- .../fileTemplates/code/TestNG Test Method.java.html | 4 ++-- 22 files changed, 47 insertions(+), 47 deletions(-) diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html index e8360470a4c0..59bf56df03e5 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit SetUp Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html index 08404640028f..b31948642b23 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit TearDown Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html index 47d614cb9f7f..d5fe228ec24e 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Case.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html index 161eee337cb9..2f27795254f2 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy JUnit Test Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html index 1387825252c6..a98243ef53ce 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Groovy New Method Body.groovy.html @@ -14,27 +14,27 @@ Predefined variables will take the following values: - ${RETURN_TYPE} + ${RETURN_TYPE}   a return type of a created method - ${DEFAULT_RETURN_VALUE} + ${DEFAULT_RETURN_VALUE}   a value returned by the method by default - ${METHOD_NAME} + ${METHOD_NAME}   name of the created method - ${CLASS_NAME} + ${CLASS_NAME}   qualified name of the class where method is created - ${SIMPLE_CLASS_NAME} + ${SIMPLE_CLASS_NAME}   non-qualified name of the class where method is implemented diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html index de008797b276..8a162f4ad3a8 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock Test Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html index b9fa69155891..538317fa6376 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock cleanup Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html index e399c7964e8f..0ae62ac4e8b8 100644 --- a/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html +++ b/plugins/groovy/groovy-psi/resources/fileTemplates/code/Spock_SetUp_Method.groovy.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html index bde7150aae4e..d41bedc88e66 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 SetUp Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html index 478453b1fc3b..a20a8a351f81 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 TearDown Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html index 59cd39047881..a015267dedfd 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html index 60769552475a..738f32f0401f 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit3 Test Method.java.html @@ -13,12 +13,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html index 14b4d06db138..7844aa2260b0 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Parameters Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html index 871418d3a633..b48a5a892f58 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 SetUp Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html index e70abd5bdc07..199a4ec1e722 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 TearDown Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html index 53eb2e354806..c2ff42e4777c 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html b/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html index b605e09c7f96..1b7bde93b677 100644 --- a/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html +++ b/plugins/junit/src/fileTemplates/code/JUnit4 Test Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html index e639b1fa00fc..da1766197222 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Parameters Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html index ba218a740486..9736ca8b96e1 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG SetUp Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html index 6961b4a59868..f7f3b58393d1 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG TearDown Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html b/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html index 7ddf9fc1afcf..5b04f0197f7a 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Test Class.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created class. - ${BODY} + ${BODY}   generated class body. diff --git a/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html b/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html index 108b5cdd4d98..81b82b324de1 100644 --- a/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html +++ b/plugins/testng/src/fileTemplates/code/TestNG Test Method.java.html @@ -12,12 +12,12 @@ Predefined variables will take the following values: - ${NAME} + ${NAME}   name of the created method. - ${BODY} + ${BODY}   generated method body. From 487a5bfc2a83eed5554a02889f33dc8de2e8cc95 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 22 Dec 2014 19:02:39 +0300 Subject: [PATCH 45/63] IDEA-132491 Enter/Exit to/from distraction free mode should respect my preferences also use application component for storing values --- .../ToggleDistractionFreeModeAction.java | 69 +++++++++---------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java b/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java index 196d36ea5a6b..ba932e1d5d6a 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java @@ -20,12 +20,11 @@ import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings; import com.intellij.ide.ui.LafManager; import com.intellij.ide.ui.UISettings; import com.intellij.ide.util.PropertiesComponent; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.editor.ex.util.EditorUtil; -import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.registry.RegistryValue; @@ -33,7 +32,9 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; -public class ToggleDistractionFreeModeAction extends AnAction implements DumbAware { +import static java.lang.String.valueOf; + +public class ToggleDistractionFreeModeAction extends DumbAwareAction { private static final String key = "editor.distraction.free.mode"; @Override @@ -51,49 +52,24 @@ public class ToggleDistractionFreeModeAction extends AnAction implements DumbAwa public void actionPerformed(@NotNull AnActionEvent e) { Project project = e.getProject(); RegistryValue value = Registry.get(key); - boolean v = !value.asBoolean(); - value.setValue(v); + boolean enter = !value.asBoolean(); + value.setValue(enter); if (project == null) return; - PropertiesComponent p = PropertiesComponent.getInstance(project); + PropertiesComponent p = PropertiesComponent.getInstance(); UISettings ui = UISettings.getInstance(); EditorSettingsExternalizable.OptionSet eo = EditorSettingsExternalizable.getInstance().getOptions(); DaemonCodeAnalyzerSettings ds = DaemonCodeAnalyzerSettings.getInstance(); String before = "BEFORE.DISTRACTION.MODE."; - if (v) { - p.setValue(before + "SHOW_STATUS_BAR", String.valueOf(ui.SHOW_STATUS_BAR)); ui.SHOW_STATUS_BAR = false; - p.setValue(before + "SHOW_MAIN_TOOLBAR", String.valueOf(ui.SHOW_MAIN_TOOLBAR)); ui.SHOW_MAIN_TOOLBAR = false; - p.setValue(before + "SHOW_NAVIGATION_BAR", String.valueOf(ui.SHOW_NAVIGATION_BAR)); ui.SHOW_NAVIGATION_BAR = false; - p.setValue(before + "HIDE_TOOL_STRIPES", String.valueOf(ui.HIDE_TOOL_STRIPES)); ui.HIDE_TOOL_STRIPES = true; - p.setValue(before + "EDITOR_TAB_PLACEMENT", String.valueOf(ui.EDITOR_TAB_PLACEMENT)); ui.EDITOR_TAB_PLACEMENT = UISettings.TABS_NONE; - - p.setValue(before + "IS_FOLDING_OUTLINE_SHOWN", String.valueOf(eo.IS_FOLDING_OUTLINE_SHOWN)); eo.IS_FOLDING_OUTLINE_SHOWN = false; - p.setValue(before + "IS_WHITESPACES_SHOWN", String.valueOf(eo.IS_WHITESPACES_SHOWN)); eo.IS_WHITESPACES_SHOWN = false; - p.setValue(before + "ARE_LINE_NUMBERS_SHOWN", String.valueOf(eo.ARE_LINE_NUMBERS_SHOWN)); eo.ARE_LINE_NUMBERS_SHOWN = false; - //p.setValue(before + "IS_RIGHT_MARGIN_SHOWN", String.valueOf(eo.IS_RIGHT_MARGIN_SHOWN)); eo.IS_RIGHT_MARGIN_SHOWN = false; - p.setValue(before + "IS_INDENT_GUIDES_SHOWN", String.valueOf(eo.IS_INDENT_GUIDES_SHOWN)); eo.IS_INDENT_GUIDES_SHOWN = false; - - p.setValue(before + "SHOW_METHOD_SEPARATORS", String.valueOf(ds.SHOW_METHOD_SEPARATORS)); ds.SHOW_METHOD_SEPARATORS = false; - + String after = "AFTER.DISTRACTION.MODE."; + if (enter) { + applyAndSave(p, ui, eo, ds, before, after, false); TogglePresentationModeAction.storeToolWindows(project); } else { - ui.SHOW_STATUS_BAR = p.getBoolean(before + "SHOW_STATUS_BAR", true); - ui.SHOW_MAIN_TOOLBAR = p.getBoolean(before + "SHOW_MAIN_TOOLBAR", true); - ui.SHOW_NAVIGATION_BAR = p.getBoolean(before + "SHOW_NAVIGATION_BAR", true); - ui.HIDE_TOOL_STRIPES = p.getBoolean(before + "HIDE_TOOL_STRIPES", true); - ui.EDITOR_TAB_PLACEMENT = p.getOrInitInt(before + "EDITOR_TAB_PLACEMENT", SwingConstants.TOP); - - eo.IS_FOLDING_OUTLINE_SHOWN = p.getBoolean(before + "IS_FOLDING_OUTLINE_SHOWN", true); - eo.IS_WHITESPACES_SHOWN = p.getBoolean(before + "IS_WHITESPACES_SHOWN", false); - eo.ARE_LINE_NUMBERS_SHOWN = p.getBoolean(before + "ARE_LINE_NUMBERS_SHOWN", false); - //eo.IS_RIGHT_MARGIN_SHOWN = p.getBoolean(before + "IS_RIGHT_MARGIN_SHOWN", true); - eo.IS_INDENT_GUIDES_SHOWN = p.getBoolean(before + "IS_INDENT_GUIDES_SHOWN", false); - - ds.SHOW_METHOD_SEPARATORS = p.getBoolean(before + "SHOW_METHOD_SEPARATORS", false); - + applyAndSave(p, ui, eo, ds, after, before, true); TogglePresentationModeAction.restoreToolWindows(project, true, false); } @@ -103,4 +79,27 @@ public class ToggleDistractionFreeModeAction extends AnAction implements DumbAwa DaemonCodeAnalyzer.getInstance(project).settingsChanged(); EditorFactory.getInstance().refreshAllEditors(); } + + public static void applyAndSave(@NotNull PropertiesComponent p, + @NotNull UISettings ui, + @NotNull EditorSettingsExternalizable.OptionSet eo, + @NotNull DaemonCodeAnalyzerSettings ds, + String before, String after, boolean value) { + // @formatter:off + p.setValue(before + "SHOW_STATUS_BAR", valueOf(ui.SHOW_STATUS_BAR)); ui.SHOW_STATUS_BAR = p.getBoolean(after + "SHOW_STATUS_BAR", value); + p.setValue(before + "SHOW_MAIN_TOOLBAR", valueOf(ui.SHOW_MAIN_TOOLBAR)); ui.SHOW_MAIN_TOOLBAR = p.getBoolean(after + "SHOW_MAIN_TOOLBAR", value); + p.setValue(before + "SHOW_NAVIGATION_BAR", valueOf(ui.SHOW_NAVIGATION_BAR)); ui.SHOW_NAVIGATION_BAR = p.getBoolean(after + "SHOW_NAVIGATION_BAR", value); + + p.setValue(before + "IS_FOLDING_OUTLINE_SHOWN", valueOf(eo.IS_FOLDING_OUTLINE_SHOWN)); eo.IS_FOLDING_OUTLINE_SHOWN = p.getBoolean(after + "IS_FOLDING_OUTLINE_SHOWN", value); + p.setValue(before + "IS_WHITESPACES_SHOWN", valueOf(eo.IS_WHITESPACES_SHOWN)); eo.IS_WHITESPACES_SHOWN = p.getBoolean(after + "IS_WHITESPACES_SHOWN", value); + p.setValue(before + "ARE_LINE_NUMBERS_SHOWN", valueOf(eo.ARE_LINE_NUMBERS_SHOWN)); eo.ARE_LINE_NUMBERS_SHOWN = p.getBoolean(after + "ARE_LINE_NUMBERS_SHOWN", value); + p.setValue(before + "IS_RIGHT_MARGIN_SHOWN", valueOf(eo.IS_RIGHT_MARGIN_SHOWN)); eo.IS_RIGHT_MARGIN_SHOWN = p.getBoolean(after + "IS_RIGHT_MARGIN_SHOWN", value); + p.setValue(before + "IS_INDENT_GUIDES_SHOWN", valueOf(eo.IS_INDENT_GUIDES_SHOWN)); eo.IS_INDENT_GUIDES_SHOWN = p.getBoolean(after + "IS_INDENT_GUIDES_SHOWN", value); + + p.setValue(before + "SHOW_METHOD_SEPARATORS", valueOf(ds.SHOW_METHOD_SEPARATORS)); ds.SHOW_METHOD_SEPARATORS = p.getBoolean(after + "SHOW_METHOD_SEPARATORS", value); + + p.setValue(before + "HIDE_TOOL_STRIPES", valueOf(ui.HIDE_TOOL_STRIPES)); ui.HIDE_TOOL_STRIPES = p.getBoolean(after + "HIDE_TOOL_STRIPES", !value); + p.setValue(before + "EDITOR_TAB_PLACEMENT", valueOf(ui.EDITOR_TAB_PLACEMENT)); ui.EDITOR_TAB_PLACEMENT = p.getOrInitInt(after + "EDITOR_TAB_PLACEMENT", value ? SwingConstants.TOP : UISettings.TABS_NONE); + // @formatter:on + } } From 1fe37f3aacd9708419918cb65a24f35cca26d5ae Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 22 Dec 2014 17:00:37 +0100 Subject: [PATCH 46/63] removed dead code --- .../org/intellij/images/thumbnail/actions/EnterAction.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/images/src/org/intellij/images/thumbnail/actions/EnterAction.java b/images/src/org/intellij/images/thumbnail/actions/EnterAction.java index b608b82f97c7..d0cb098f33a4 100644 --- a/images/src/org/intellij/images/thumbnail/actions/EnterAction.java +++ b/images/src/org/intellij/images/thumbnail/actions/EnterAction.java @@ -57,7 +57,7 @@ public final class EnterAction extends AnAction { if (selection.length > 0) { if (selection.length == 1 && selection[0].isDirectory()) { presentation.setVisible(true); - } else if (selection.length > 0) { + } else { boolean notImages = false; ImageFileTypeManager typeManager = ImageFileTypeManager.getInstance(); for (VirtualFile file : selection) { @@ -65,9 +65,6 @@ public final class EnterAction extends AnAction { } presentation.setEnabled(!notImages); presentation.setVisible(false); - } else { - presentation.setVisible(false); - presentation.setEnabled(false); } } else { presentation.setVisible(false); From 30f24dfa2f492f8f9a4f3f2f33dba9dd82049b9a Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 16:50:43 +0100 Subject: [PATCH 47/63] IDEA-134525 'Cyclic Expand Word' works wrong in groovy javadocs --- .../lang/groovydoc/lexer/GroovyDocLexer.java | 7 ++--- .../plugins/groovy/GroovyActionsTest.groovy | 28 ++++++++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/GroovyDocLexer.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/GroovyDocLexer.java index 128e8498ea5a..1c86d5ab3589 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/GroovyDocLexer.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/groovydoc/lexer/GroovyDocLexer.java @@ -16,10 +16,7 @@ package org.jetbrains.plugins.groovy.lang.groovydoc.lexer; -import com.intellij.lexer.Lexer; -import com.intellij.lexer.LexerBase; -import com.intellij.lexer.LookAheadLexer; -import com.intellij.lexer.MergingLexerAdapter; +import com.intellij.lexer.*; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; @@ -100,7 +97,7 @@ public class GroovyDocLexer extends MergingLexerAdapter { @Override public int getState() { - return myState; + return getTokenStart() == 0 ? 0 : myState; } @Override diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyActionsTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyActionsTest.groovy index dff034d87443..31b20cd633e3 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyActionsTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/GroovyActionsTest.groovy @@ -13,17 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jetbrains.plugins.groovy; +package org.jetbrains.plugins.groovy - -import com.intellij.ide.DataManager import com.intellij.openapi.actionSystem.IdeActions -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.editor.actionSystem.EditorActionHandler -import com.intellij.openapi.editor.actionSystem.EditorActionManager import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase import org.jetbrains.plugins.groovy.util.TestUtils - /** * @author peter */ @@ -117,6 +111,22 @@ this.allOptions = [:]; ''') } + public void "test hippie completion in groovydoc"() { + myFixture.configureByText 'a.groovy', ''' +class A { + + /** long + */ + void longName() {} + void example() {} +} +''' + performEditorAction(IdeActions.ACTION_HIPPIE_COMPLETION) + assert myFixture.editor.document.text.contains('** longName\n') + performEditorAction(IdeActions.ACTION_HIPPIE_COMPLETION) + assert myFixture.editor.document.text.contains('** longName\n') + } + void testSWforMemberWithDoc() { doTestForSelectWord(4, '''\ class A { @@ -159,9 +169,7 @@ class A { } private void performEditorAction(final String actionId) { - final EditorActionHandler handler = EditorActionManager.instance.getActionHandler(actionId); - final Editor editor = myFixture.editor; - handler.execute(editor, DataManager.instance.getDataContext(editor.contentComponent)); + myFixture.performEditorAction(actionId) } } From 7af31d3c29f2361605b56bcc36ea638aa3baa9e0 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 16:55:31 +0100 Subject: [PATCH 48/63] javadoc cleanup --- .../src/com/intellij/openapi/project/DumbService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/core-api/src/com/intellij/openapi/project/DumbService.java b/platform/core-api/src/com/intellij/openapi/project/DumbService.java index a0f5b43ce308..bd62966b283b 100644 --- a/platform/core-api/src/com/intellij/openapi/project/DumbService.java +++ b/platform/core-api/src/com/intellij/openapi/project/DumbService.java @@ -34,7 +34,7 @@ import java.util.List; /** * A service managing IDEA's 'dumb' mode: when indices are updated in background and the functionality is very much limited. - * Only the explicitly allowed functionality is available. Usually it's allowed by implementing {@link com.intellij.openapi.project.DumbAware} interface. + * Only the explicitly allowed functionality is available. Usually it's allowed by implementing {@link DumbAware} interface. * * If you want to register a toolwindow, which will be enabled during the dumb mode, please use {@link com.intellij.openapi.wm.ToolWindowManager}'s * registration methods which have 'canWorkInDumMode' parameter. @@ -45,7 +45,7 @@ public abstract class DumbService { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.project.DumbService"); /** - * @see com.intellij.openapi.project.Project#getMessageBus() + * @see Project#getMessageBus() */ public static final Topic DUMB_MODE = new Topic("dumb mode", DumbModeListener.class); From 55f673b801f57e9cf3e0e7f67c9991852a7bb1fa Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 17:08:13 +0100 Subject: [PATCH 49/63] avoid slow & expensive resolve in dumb mode except explicit goto declaration actions --- .../intellij/psi/impl/JavaPsiFacadeImpl.java | 9 +++++-- .../intellij/openapi/project/DumbService.java | 20 +++++++++++++++ .../com/intellij/mock/MockDumbService.java | 9 +++++++ .../actions/GotoDeclarationAction.java | 4 +++ .../actions/GotoTypeDeclarationAction.java | 25 +++++++++++++------ .../openapi/project/DumbServiceImpl.java | 12 +++++++++ 6 files changed, 70 insertions(+), 9 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java index bf75430563ed..13232679dcf5 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java @@ -94,7 +94,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { public PsiClass findClass(@NotNull final String qualifiedName, @NotNull GlobalSearchScope scope) { ProgressIndicatorProvider.checkCanceled(); // We hope this method is being called often enough to cancel daemon processes smoothly - if (DumbService.getInstance(getProject()).isDumb()) { + if (shouldUseSlowResolve()) { PsiClass[] classes = findClassesInDumbMode(qualifiedName, scope); if (classes.length != 0) { return classes[0]; @@ -134,7 +134,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { @Override @NotNull public PsiClass[] findClasses(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { - if (DumbService.getInstance(getProject()).isDumb()) { + if (shouldUseSlowResolve()) { return findClassesInDumbMode(qualifiedName, scope); } @@ -147,6 +147,11 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { return classes.toArray(new PsiClass[classes.size()]); } + private boolean shouldUseSlowResolve() { + DumbService dumbService = DumbService.getInstance(getProject()); + return dumbService.isDumb() && dumbService.isAlternativeResolutionEnabled(); + } + @NotNull private PsiElementFinder[] finders() { PsiElementFinder[] answer = myElementFinders; diff --git a/platform/core-api/src/com/intellij/openapi/project/DumbService.java b/platform/core-api/src/com/intellij/openapi/project/DumbService.java index bd62966b283b..0215dc6dd4ea 100644 --- a/platform/core-api/src/com/intellij/openapi/project/DumbService.java +++ b/platform/core-api/src/com/intellij/openapi/project/DumbService.java @@ -210,6 +210,26 @@ public abstract class DumbService { return o instanceof DumbAware; } + /** + * Enables or disables alternative resolve strategies for the current thread.

+ * + * Normally reference resolution uses index, and hence is not available in dumb mode. In some cases, alternative ways + * of performing resolve are available, although much slower. It's impractical to always use these ways because it'll + * lead to overloaded CPU (especially given there's also indexing in progress). But for some explicit user actions + * (e.g. explicit Goto Declaration) turning these slower methods is beneficial.

+ * + * A typical usage would involve try-finally, where the alternative resolution is first enabled, then an action is performed, + * and then alternative resolution is turned off in the finally block. + */ + public abstract void setAlternativeResolutionEnabled(boolean enabled); + + /** + * @return whether alternative resolution is enabled for the current thread. + * + * @see #setAlternativeResolutionEnabled(boolean) + */ + public abstract boolean isAlternativeResolutionEnabled(); + /** * @see #DUMB_MODE */ diff --git a/platform/core-impl/src/com/intellij/mock/MockDumbService.java b/platform/core-impl/src/com/intellij/mock/MockDumbService.java index 1e1179cc5ee8..359fc8f64550 100644 --- a/platform/core-impl/src/com/intellij/mock/MockDumbService.java +++ b/platform/core-impl/src/com/intellij/mock/MockDumbService.java @@ -74,6 +74,15 @@ public class MockDumbService extends DumbService { return myProject; } + @Override + public void setAlternativeResolutionEnabled(boolean enabled) { + } + + @Override + public boolean isAlternativeResolutionEnabled() { + return false; + } + public void smartInvokeLater(@NotNull final Runnable runnable) { runnable.run(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java index d34cbf4cfa09..d816b7fd042d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java @@ -76,6 +76,7 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code public void invoke(@NotNull final Project project, @NotNull Editor editor, @NotNull PsiFile file) { PsiDocumentManager.getInstance(project).commitAllDocuments(); + DumbService.getInstance(project).setAlternativeResolutionEnabled(true); try { int offset = editor.getCaretModel().getOffset(); PsiElement[] elements = findAllTargetElements(project, editor, offset); @@ -105,6 +106,9 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code catch (IndexNotReadyException e) { DumbService.getInstance(project).showDumbModeNotification("Navigation is not available here during index update"); } + finally { + DumbService.getInstance(project).setAlternativeResolutionEnabled(false); + } } public static PsiNameIdentifierOwner findElementToShowUsagesOf(@NotNull Editor editor, @NotNull PsiFile file, int offset) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java index 190ce1d913bd..3f0efe8b2e58 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java @@ -27,6 +27,8 @@ import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; @@ -64,14 +66,23 @@ public class GotoTypeDeclarationAction extends BaseCodeInsightAction implements public void invoke(@NotNull final Project project, @NotNull Editor editor, @NotNull PsiFile file) { PsiDocumentManager.getInstance(project).commitAllDocuments(); - int offset = editor.getCaretModel().getOffset(); - PsiElement[] symbolTypes = findSymbolTypes(editor, offset); - if (symbolTypes == null || symbolTypes.length == 0) return; - if (symbolTypes.length == 1) { - navigate(project, symbolTypes[0]); + DumbService.getInstance(project).setAlternativeResolutionEnabled(true); + try { + int offset = editor.getCaretModel().getOffset(); + PsiElement[] symbolTypes = findSymbolTypes(editor, offset); + if (symbolTypes == null || symbolTypes.length == 0) return; + if (symbolTypes.length == 1) { + navigate(project, symbolTypes[0]); + } + else { + NavigationUtil.getPsiElementPopup(symbolTypes, CodeInsightBundle.message("choose.type.popup.title")).showInBestPositionFor(editor); + } } - else { - NavigationUtil.getPsiElementPopup(symbolTypes, CodeInsightBundle.message("choose.type.popup.title")).showInBestPositionFor(editor); + catch (IndexNotReadyException e) { + DumbService.getInstance(project).showDumbModeNotification("Navigation is not available here during index update"); + } + finally { + DumbService.getInstance(project).setAlternativeResolutionEnabled(false); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java index 7b3bd2198cf9..0c4f65544295 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java @@ -63,6 +63,7 @@ public class DumbServiceImpl extends DumbService implements Disposable { private final Queue myRunWhenSmartQueue = new Queue(5); private final Project myProject; + private ThreadLocal myAlternativeResolution = new ThreadLocal(); public DumbServiceImpl(Project project) { myProject = project; @@ -104,6 +105,17 @@ public class DumbServiceImpl extends DumbService implements Disposable { return myProject; } + @Override + public boolean isAlternativeResolutionEnabled() { + return Boolean.TRUE.equals(myAlternativeResolution.get()); + } + + @Override + public void setAlternativeResolutionEnabled(boolean enabled) { + assert isAlternativeResolutionEnabled() != enabled : "Nested alternative resolution mode is not supported"; + myAlternativeResolution.set(enabled); + } + @Override public boolean isDumb() { return myDumb; From bcafd578374f5bbafa0ce551891f04e94b11d754 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 22 Dec 2014 19:24:21 +0300 Subject: [PATCH 50/63] update javaee icons --- platform/icons/src/javaee/JavaeeAppModule.png | Bin 528 -> 1011 bytes .../icons/src/javaee/JavaeeAppModule@2x.png | Bin 0 -> 1200 bytes .../src/javaee/JavaeeAppModule@2x_dark.png | Bin 0 -> 1196 bytes .../icons/src/javaee/JavaeeAppModule_dark.png | Bin 0 -> 1014 bytes platform/icons/src/javaee/WebService.png | Bin 687 -> 1321 bytes platform/icons/src/javaee/WebService2.png | Bin 0 -> 1441 bytes platform/icons/src/javaee/WebService2@2x.png | Bin 0 -> 2079 bytes .../icons/src/javaee/WebService2@2x_dark.png | Bin 0 -> 2046 bytes platform/icons/src/javaee/WebService@2x.png | Bin 0 -> 1938 bytes .../icons/src/javaee/WebServiceClient.png | Bin 754 -> 1402 bytes .../icons/src/javaee/WebServiceClient2.png | Bin 0 -> 1506 bytes .../icons/src/javaee/WebServiceClient2@2x.png | Bin 0 -> 2242 bytes .../src/javaee/WebServiceClient2@2x_dark.png | Bin 0 -> 2198 bytes .../src/javaee/WebServiceClient2_dark.png | Bin 0 -> 1494 bytes .../icons/src/javaee/WebServiceClient@2x.png | Bin 0 -> 2128 bytes platform/icons/src/javaee/WebService_dark.png | Bin 0 -> 1430 bytes platform/icons/src/javaee/application_xml.png | Bin 482 -> 1189 bytes .../icons/src/javaee/application_xml@2x.png | Bin 0 -> 1458 bytes .../src/javaee/application_xml@2x_dark.png | Bin 0 -> 1453 bytes .../icons/src/javaee/application_xml_dark.png | Bin 0 -> 1189 bytes .../src/javaee/buildOnFrameDeactivation.png | Bin .../icons/src/javaee/dataSourceImport.png | Bin 735 -> 1451 bytes .../icons/src/javaee/dataSourceImport@2x.png | Bin 0 -> 3042 bytes .../src/javaee/databaseSchemaImportLegend.png | Bin .../icons/src/javaee/dbSchemaImportBig.png | Bin 2025 -> 3042 bytes .../icons/src/javaee/dbSchemaImportBig@2x.png | Bin 0 -> 6391 bytes platform/icons/src/javaee/ejb-jar_xml.png | Bin 641 -> 1335 bytes platform/icons/src/javaee/ejb-jar_xml@2x.png | Bin 0 -> 1751 bytes platform/icons/src/javaee/ejbClass.png | Bin 797 -> 1528 bytes platform/icons/src/javaee/ejbClass@2x.png | Bin 0 -> 2375 bytes platform/icons/src/javaee/ejbModule.png | Bin 682 -> 1154 bytes platform/icons/src/javaee/ejbModule@2x.png | Bin 0 -> 1508 bytes .../src/javaee/embeddedAttributeOverlay.png | Bin 162 -> 998 bytes .../javaee/embeddedAttributeOverlay@2x.png | Bin 0 -> 1023 bytes .../embeddedAttributeOverlay@2x_dark.png | Bin 0 -> 1025 bytes .../javaee/embeddedAttributeOverlay_dark.png | Bin 0 -> 1000 bytes platform/icons/src/javaee/entityBean.png | Bin 686 -> 1196 bytes platform/icons/src/javaee/entityBean@2x.png | Bin 0 -> 1394 bytes .../icons/src/javaee/entityBean@2x_dark.png | Bin 0 -> 1395 bytes platform/icons/src/javaee/entityBeanBig.png | Bin 1193 -> 1312 bytes .../icons/src/javaee/entityBeanBig@2x.png | Bin 0 -> 1582 bytes .../src/javaee/entityBeanBig@2x_dark.png | Bin 0 -> 1592 bytes .../icons/src/javaee/entityBeanBig_dark.png | Bin 0 -> 1311 bytes platform/icons/src/javaee/entityBean_dark.png | Bin 0 -> 1201 bytes platform/icons/src/javaee/home.png | Bin 759 -> 1480 bytes platform/icons/src/javaee/home@2x.png | Bin 0 -> 2229 bytes .../src/javaee/inheritedAttributeOverlay.png | Bin 141 -> 1123 bytes .../javaee/inheritedAttributeOverlay@2x.png | Bin 0 -> 1361 bytes .../inheritedAttributeOverlay@2x_dark.png | Bin 0 -> 1345 bytes .../javaee/inheritedAttributeOverlay_dark.png | Bin 0 -> 1107 bytes .../icons/src/javaee/interceptorClass.png | Bin 788 -> 1505 bytes .../icons/src/javaee/interceptorClass@2x.png | Bin 0 -> 2314 bytes .../icons/src/javaee/interceptorMethod.png | Bin 797 -> 1468 bytes .../icons/src/javaee/interceptorMethod@2x.png | Bin 0 -> 2323 bytes platform/icons/src/javaee/jpaFacet.png | Bin 711 -> 1198 bytes platform/icons/src/javaee/jpaFacet@2x.png | Bin 0 -> 1806 bytes platform/icons/src/javaee/local.png | Bin 772 -> 1418 bytes platform/icons/src/javaee/local@2x.png | Bin 0 -> 1919 bytes platform/icons/src/javaee/local@2x_dark.png | Bin 0 -> 1918 bytes platform/icons/src/javaee/localHome.png | Bin 765 -> 1467 bytes platform/icons/src/javaee/localHome@2x.png | Bin 0 -> 2050 bytes .../icons/src/javaee/localHome@2x_dark.png | Bin 0 -> 2015 bytes platform/icons/src/javaee/localHome_dark.png | Bin 0 -> 1465 bytes platform/icons/src/javaee/local_dark.png | Bin 0 -> 1415 bytes platform/icons/src/javaee/messageBean.png | Bin 656 -> 1235 bytes platform/icons/src/javaee/messageBean@2x.png | Bin 0 -> 1572 bytes .../icons/src/javaee/persistenceAttribute.png | Bin 742 -> 1382 bytes .../src/javaee/persistenceAttribute@2x.png | Bin 0 -> 2033 bytes .../src/javaee/persistenceEmbeddable.png | Bin 686 -> 1198 bytes .../src/javaee/persistenceEmbeddable@2x.png | Bin 0 -> 2307 bytes .../javaee/persistenceEmbeddable@2x_dark.png | Bin 0 -> 2315 bytes .../src/javaee/persistenceEmbeddable_dark.png | Bin 0 -> 1201 bytes .../icons/src/javaee/persistenceEntity.png | Bin 729 -> 1208 bytes .../icons/src/javaee/persistenceEntity@2x.png | Bin 0 -> 2339 bytes .../src/javaee/persistenceEntity@2x_dark.png | Bin 0 -> 2344 bytes .../src/javaee/persistenceEntityListener.png | Bin 788 -> 1505 bytes .../javaee/persistenceEntityListener@2x.png | Bin 0 -> 2314 bytes .../src/javaee/persistenceEntity_dark.png | Bin 0 -> 1214 bytes platform/icons/src/javaee/persistenceId.png | Bin 747 -> 1429 bytes .../icons/src/javaee/persistenceId@2x.png | Bin 0 -> 2252 bytes .../src/javaee/persistenceId@2x_dark.png | Bin 0 -> 2254 bytes .../src/javaee/persistenceIdRelationship.png | Bin 590 -> 1357 bytes .../javaee/persistenceIdRelationship@2x.png | Bin 0 -> 1959 bytes .../persistenceIdRelationship@2x_dark.png | Bin 0 -> 2003 bytes .../javaee/persistenceIdRelationship_dark.png | Bin 0 -> 1388 bytes .../icons/src/javaee/persistenceId_dark.png | Bin 0 -> 1431 bytes .../javaee/persistenceMappedSuperclass.png | Bin 704 -> 1355 bytes .../javaee/persistenceMappedSuperclass@2x.png | Bin 0 -> 2629 bytes .../src/javaee/persistenceRelationship.png | Bin 492 -> 1304 bytes .../src/javaee/persistenceRelationship@2x.png | Bin 0 -> 1719 bytes platform/icons/src/javaee/persistenceUnit.png | Bin 790 -> 1210 bytes .../icons/src/javaee/persistenceUnit@2x.png | Bin 0 -> 1838 bytes platform/icons/src/javaee/remote.png | Bin 750 -> 1411 bytes platform/icons/src/javaee/remote@2x.png | Bin 0 -> 2067 bytes platform/icons/src/javaee/remote@2x_dark.png | Bin 0 -> 2062 bytes platform/icons/src/javaee/remote_dark.png | Bin 0 -> 1421 bytes platform/icons/src/javaee/sessionBean.png | Bin 703 -> 1208 bytes platform/icons/src/javaee/sessionBean@2x.png | Bin 0 -> 1434 bytes .../src/javaee/updateRunningApplication.png | Bin 641 -> 1463 bytes .../javaee/updateRunningApplication@2x.png | Bin 1549 -> 2430 bytes platform/icons/src/javaee/webModule.png | Bin 747 -> 1235 bytes platform/icons/src/javaee/webModule@2x.png | Bin 0 -> 1755 bytes platform/icons/src/javaee/webModuleGroup.png | Bin 604 -> 1251 bytes .../icons/src/javaee/webModuleGroup@2x.png | Bin 0 -> 1721 bytes platform/icons/src/javaee/web_xml.png | Bin 430 -> 1398 bytes platform/icons/src/javaee/web_xml@2x.png | Bin 917 -> 2033 bytes 106 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 platform/icons/src/javaee/JavaeeAppModule.png create mode 100755 platform/icons/src/javaee/JavaeeAppModule@2x.png create mode 100755 platform/icons/src/javaee/JavaeeAppModule@2x_dark.png create mode 100755 platform/icons/src/javaee/JavaeeAppModule_dark.png mode change 100644 => 100755 platform/icons/src/javaee/WebService.png create mode 100755 platform/icons/src/javaee/WebService2.png create mode 100755 platform/icons/src/javaee/WebService2@2x.png create mode 100755 platform/icons/src/javaee/WebService2@2x_dark.png create mode 100755 platform/icons/src/javaee/WebService@2x.png mode change 100644 => 100755 platform/icons/src/javaee/WebServiceClient.png create mode 100755 platform/icons/src/javaee/WebServiceClient2.png create mode 100755 platform/icons/src/javaee/WebServiceClient2@2x.png create mode 100755 platform/icons/src/javaee/WebServiceClient2@2x_dark.png create mode 100755 platform/icons/src/javaee/WebServiceClient2_dark.png create mode 100755 platform/icons/src/javaee/WebServiceClient@2x.png create mode 100755 platform/icons/src/javaee/WebService_dark.png mode change 100644 => 100755 platform/icons/src/javaee/application_xml.png create mode 100755 platform/icons/src/javaee/application_xml@2x.png create mode 100755 platform/icons/src/javaee/application_xml@2x_dark.png create mode 100755 platform/icons/src/javaee/application_xml_dark.png mode change 100644 => 100755 platform/icons/src/javaee/buildOnFrameDeactivation.png mode change 100644 => 100755 platform/icons/src/javaee/dataSourceImport.png create mode 100755 platform/icons/src/javaee/dataSourceImport@2x.png mode change 100644 => 100755 platform/icons/src/javaee/databaseSchemaImportLegend.png mode change 100644 => 100755 platform/icons/src/javaee/dbSchemaImportBig.png create mode 100755 platform/icons/src/javaee/dbSchemaImportBig@2x.png mode change 100644 => 100755 platform/icons/src/javaee/ejb-jar_xml.png create mode 100755 platform/icons/src/javaee/ejb-jar_xml@2x.png mode change 100644 => 100755 platform/icons/src/javaee/ejbClass.png create mode 100755 platform/icons/src/javaee/ejbClass@2x.png mode change 100644 => 100755 platform/icons/src/javaee/ejbModule.png create mode 100755 platform/icons/src/javaee/ejbModule@2x.png mode change 100644 => 100755 platform/icons/src/javaee/embeddedAttributeOverlay.png create mode 100755 platform/icons/src/javaee/embeddedAttributeOverlay@2x.png create mode 100755 platform/icons/src/javaee/embeddedAttributeOverlay@2x_dark.png create mode 100755 platform/icons/src/javaee/embeddedAttributeOverlay_dark.png mode change 100644 => 100755 platform/icons/src/javaee/entityBean.png create mode 100755 platform/icons/src/javaee/entityBean@2x.png create mode 100755 platform/icons/src/javaee/entityBean@2x_dark.png mode change 100644 => 100755 platform/icons/src/javaee/entityBeanBig.png create mode 100755 platform/icons/src/javaee/entityBeanBig@2x.png create mode 100755 platform/icons/src/javaee/entityBeanBig@2x_dark.png create mode 100755 platform/icons/src/javaee/entityBeanBig_dark.png create mode 100755 platform/icons/src/javaee/entityBean_dark.png mode change 100644 => 100755 platform/icons/src/javaee/home.png create mode 100755 platform/icons/src/javaee/home@2x.png mode change 100644 => 100755 platform/icons/src/javaee/inheritedAttributeOverlay.png create mode 100755 platform/icons/src/javaee/inheritedAttributeOverlay@2x.png create mode 100755 platform/icons/src/javaee/inheritedAttributeOverlay@2x_dark.png create mode 100755 platform/icons/src/javaee/inheritedAttributeOverlay_dark.png mode change 100644 => 100755 platform/icons/src/javaee/interceptorClass.png create mode 100755 platform/icons/src/javaee/interceptorClass@2x.png mode change 100644 => 100755 platform/icons/src/javaee/interceptorMethod.png create mode 100755 platform/icons/src/javaee/interceptorMethod@2x.png mode change 100644 => 100755 platform/icons/src/javaee/jpaFacet.png create mode 100755 platform/icons/src/javaee/jpaFacet@2x.png mode change 100644 => 100755 platform/icons/src/javaee/local.png create mode 100755 platform/icons/src/javaee/local@2x.png create mode 100755 platform/icons/src/javaee/local@2x_dark.png mode change 100644 => 100755 platform/icons/src/javaee/localHome.png create mode 100755 platform/icons/src/javaee/localHome@2x.png create mode 100755 platform/icons/src/javaee/localHome@2x_dark.png create mode 100755 platform/icons/src/javaee/localHome_dark.png create mode 100755 platform/icons/src/javaee/local_dark.png mode change 100644 => 100755 platform/icons/src/javaee/messageBean.png create mode 100755 platform/icons/src/javaee/messageBean@2x.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceAttribute.png create mode 100755 platform/icons/src/javaee/persistenceAttribute@2x.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceEmbeddable.png create mode 100755 platform/icons/src/javaee/persistenceEmbeddable@2x.png create mode 100755 platform/icons/src/javaee/persistenceEmbeddable@2x_dark.png create mode 100755 platform/icons/src/javaee/persistenceEmbeddable_dark.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceEntity.png create mode 100755 platform/icons/src/javaee/persistenceEntity@2x.png create mode 100755 platform/icons/src/javaee/persistenceEntity@2x_dark.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceEntityListener.png create mode 100755 platform/icons/src/javaee/persistenceEntityListener@2x.png create mode 100755 platform/icons/src/javaee/persistenceEntity_dark.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceId.png create mode 100755 platform/icons/src/javaee/persistenceId@2x.png create mode 100755 platform/icons/src/javaee/persistenceId@2x_dark.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceIdRelationship.png create mode 100755 platform/icons/src/javaee/persistenceIdRelationship@2x.png create mode 100755 platform/icons/src/javaee/persistenceIdRelationship@2x_dark.png create mode 100755 platform/icons/src/javaee/persistenceIdRelationship_dark.png create mode 100755 platform/icons/src/javaee/persistenceId_dark.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceMappedSuperclass.png create mode 100755 platform/icons/src/javaee/persistenceMappedSuperclass@2x.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceRelationship.png create mode 100755 platform/icons/src/javaee/persistenceRelationship@2x.png mode change 100644 => 100755 platform/icons/src/javaee/persistenceUnit.png create mode 100755 platform/icons/src/javaee/persistenceUnit@2x.png mode change 100644 => 100755 platform/icons/src/javaee/remote.png create mode 100755 platform/icons/src/javaee/remote@2x.png create mode 100755 platform/icons/src/javaee/remote@2x_dark.png create mode 100755 platform/icons/src/javaee/remote_dark.png mode change 100644 => 100755 platform/icons/src/javaee/sessionBean.png create mode 100755 platform/icons/src/javaee/sessionBean@2x.png mode change 100644 => 100755 platform/icons/src/javaee/updateRunningApplication.png mode change 100644 => 100755 platform/icons/src/javaee/updateRunningApplication@2x.png mode change 100644 => 100755 platform/icons/src/javaee/webModule.png create mode 100755 platform/icons/src/javaee/webModule@2x.png mode change 100644 => 100755 platform/icons/src/javaee/webModuleGroup.png create mode 100755 platform/icons/src/javaee/webModuleGroup@2x.png mode change 100644 => 100755 platform/icons/src/javaee/web_xml.png mode change 100644 => 100755 platform/icons/src/javaee/web_xml@2x.png diff --git a/platform/icons/src/javaee/JavaeeAppModule.png b/platform/icons/src/javaee/JavaeeAppModule.png old mode 100644 new mode 100755 index 0a67d92456055c85268b8fe08557cdf7c409c940..33406cae8c2b520d697c295ddd78719901db24f7 GIT binary patch literal 1011 zcmaJ=J#5oJ7 z48x2T@=A%$$HOr+NdITP9cpwMC)p|~;|1btE@Ea3TtlE>X^W_YG-GvTAEg;);H+7x zlB#+`(y_&9A%+Vqhq4(aJsmijzJv&;Q? zuPy1K!A@TV=|G|a79tu5tYzDif(+ZzmFPM==2_5!kfjWJWU8vp0U5gpB)CLG7hoKu zL=GlkdY_bTLVx`JQ`oDlI*2bJ4>w$$UfjY&7|M}k7ik2$6^xfVRh+A1 zg1tI+fGmT_dDAwq?_FxaRaGk39?@(a6_gB11vt|*q**1IjKyJYDwPr;%*Lm(VoprR zN-~xd<1m%za22dKEM$`o*XVMiLQihk36?`6E66qPAtUEv3$!wp%-&vU-#TOqRkU7yIo5+-M&XQZFZM-^}(G_K7A4Of-+MHKGc349!?LOU*CK% z+w9ka;>YXH%VRG;OXV*cHwU(AeaG^97sl@IZfnI8D}(DN-@RtjkIwNs-=FmBBw5ge zr*B6ds@r|St;g>xjlPNG$Vl_&kK4`s(Ly zZ}OUdFKYRN)OC*vw>)jz|MLIyc<11Rnx6Ul?|!-U=I4`-zpA_Edn|n9-LX5kXHW2w zM^O{@CQja$**LR4uWep_-K2v0$wixPRCdodt=Vo-yS=t&e(kOob-fGfdl&Sa`7mwS zj@c`Buey1y_Zhp3@-*Nomx08>*o_+TH+_Uc&o_)Lc?AxUmKQ6!gasBm=o3Fm# zeErj@dFP$CKkvT#dGGzN`|p1}eE;*|`(KYf{(AiJmr?b$XPPA{rbzF zH(&pJ`2OeP_dj2L{{8an@Auz-UFJQg>Yjh=^^d7r<3K?qUJ~RN%)rAR5R+Wo**$aF zh8<_ly!-j{9|){s7I^?vGRxD&F{C0c_mnH&VFL!2i&IYe?c|#_69_*36VFUaPh9zT z*44`f^_OP8QCTh6eD4vD$RE3^{3DMyB^vBbzF3fP>r84qAJ2oIJ7W7T1>Ipa-Lc-D zJyUVsrKehruXpS}`?*MSo`>U#Lp!g}``mG4)rNddVadWdMoiiZ4QrJ7G?fijU*9G9 v%TTJs%=J|w14GE9E6nVIeN189KVNc(TZqZuR^Q42bS8tRtDnm{r-UW|S%4rg diff --git a/platform/icons/src/javaee/JavaeeAppModule@2x.png b/platform/icons/src/javaee/JavaeeAppModule@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..ef5d15f75c4bf8f5f2283acb9ce03a74855bb590 GIT binary patch literal 1200 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 literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47&8KVLR|Ho6aN4I4H3eVE;uXc_sHj8WmN|m?G){W>?3h4>X z?*MYEdlqJ8M@xpx6pdZs99EznF=gwn{@eveS|-o+Y~L1=S;kgCyFsPy}E+Qi?D=n+ED668Ts3M`Xp{8N=uGZqv&YrZc#S6Qq#P-gZ zG-3ACiF5lV&1#u9Cw57fSpFdV};q1hVhoi4vUGn7l zmS>yAULG)d`TqQyW9skES$sO9_4(J$Z@0{UZsPp;Zu+l#zP}&G{(hGHe>=nfQ%wKQ z@ocQ%;{*o1VM&l5DC~K~mGum~BBEk@`zKAAvvU20eJ9VHzi{#Tt=o6+-h1@;$@Awg zUcLYP_1pKKzyALFSLu`B2-JMk)5S4FB0ThbAlD%S9)^J3Tjs6~U9QwIziE2Fhih_2 zg*o_^Uk***eRWrcHpeq%#eNncFRTBK`&ny~1TuvfEW|(kWT+yRck5a93H-aBAI>mZ^H}B9Z_bT6A-fu$9T64{TT)i! zwcw0F8RI;*2%oD*_w?|#+jgu>S#)~Z({s$ta~2-(=56H?RxrM`|9sE7b>E&U?z*~G s_U)X~eg7NS8qdmo{I0w5-@SU~Yqb#<6qj%Q0Q3-pr>mdKI;Vst0Ot!hCjbBd diff --git a/platform/icons/src/javaee/WebService2.png b/platform/icons/src/javaee/WebService2.png new file mode 100755 index 0000000000000000000000000000000000000000..fba89103bed0450261fd174709e9e02c5392bd28 GIT binary patch literal 1441 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 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebService2@2x_dark.png b/platform/icons/src/javaee/WebService2@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..36ba06cc491aa96220a74be7e44f8ac270ce0920 GIT binary patch literal 2046 zcmaJ?YfuyC8eT-ChKn}@1UZDD#TLjt5F$YXArNRN#MFQTXh;@VCE1uPB&33X+G0nr zpoqoW;a-Xw4hIy7ax2Qkf~CqRsE7=VfL17=f)qF#EB5?2oSoVIF7rIk`@HY>&bP;d zgZ#`eHW&Z^%((t+K00Fc?1qiSta1@B;N<}ds9~4Ov z54MAz0AT0<2||%j-WLopEX9lT7`$34N7(@2xkD`%i4TAXHVTY^WK7(+t^tRIBut!; z#v}6NK42{5uTg-zG(iHf=788kg4^MR^;9!Z0V#-xuxe?XOvz9)aqo2*=v==|z+vA* zkONHIU#3EN!B`(y0b*%*nyZ*dqGH`W@FW_EN+-Es$wU%`K%@{z6ju_NLG)mdXxI-A z4vnUeL^Jqo&WBj&iiwLw5IKWDP^naS6$K9~VhAJ;4-W#7Odyk8QG}~9QHF@rt}>Jq&CK8D>x;vdlBKcBT6c)#q!*ZjN zs4QmgVX@K`KWhvq1%v07^ItSc-k0F#}rO3uRfo4_wLe zUZ~4*38)!@{#^g-oR_xH=Fv|-b}hR2*!Q3eZFU9P)gn$D2LM(oxonm|-8UrU#o78= zBvW*ei@!6tkBYWJ_c~np0hod+`M~a@_tSz6972Ble64XyhWG5~x`U}WgN=jD`KJSq z+2FB7-x>N_IHVnIG4PLd7`pqNO?Fkh_vWvq<6RROH@OcQY@GzmiQSiOT)dF<^jxp| z(;FgwKwZx5QOk4nho%O$?|p2#s7sAWInwC1Z?HhIx&x zDF%n`D}e3mqqVntLn6e+^uq1dg+WxSEY2?P4zBQ5)hUy}{DQUGf+zb2$6lXV@z6ZV zC#JN(VL`H`r8>Q9TM;QL9k8_YegoQds}kLmYlnKYrKxLDSp(2O*l^{i#x`MZHy?q(yesVTXmDsS?xNB#nYjTlm z$%R+xkc&+ec5C+7WczJ)U&-E5t9I>{^o%zNP9tu2f>~w$PXjwEwLS{-j@-1w|n9jzVEqj&Of}~Q{Y+>@=n{I6ViTkAf|bfY&hbN zAKl+Il^C!Q%_CDK<+5`WOO_M5kVx}$e4xllOWXGL?b)hzmpWc=Ett$dB+cA(veZ&) z%X1pTba#w&PMF`A5Nr`FboDqcCbI@lKv3K;k&ApD_o_GSmj#<`atWMC*rZzG#StvX@=J1Hd{uXYeAsexBwLRJ6y%r_bZ&nDacDJ=vj@LEJ_khj^S-#T)XG_fz%^+zd~BBr&5R)53bLIQ}(w$>A5QI zEAxJ~r@FxLSOl^vZAFdU5Meeqh@78Qyk2H^t6W1Huenqlm-h)~AfovEox^p!pw;4} zq2g{G`BbOQ2?950?Hg}4KC`{Ga=xNz-&-HaLrq(jmYl1)^kuKhM!}gK&vgxH?*_BN zo059h@u{bJqZ@VWy&`QR3Z_y)kC(wcrDqqNeeAc0U(wyNmD`#wTl!sWx4LB_4tq1Y zf6b>07sgtLZRs-#s^ga~mMuo6{->{>xt%+<3%NC0eB+)yJCbR5*pS(O^QXweQ|6Yi z<;t(=ImL0O?>N;J-v4&e6!duE7ZjgJb~hOmogTKb6PkX}*JoW+UVUoa%PRNR9g))& zaaJipMcO=R&(-Fjo~Pphd9~LHe^5#I3E@|EYLNxZ%*vV3=nH1Oiwnq~TEGw}Jsx73 T9x(8|{*TP{4PsyQ-k0_tM&M6U literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebService@2x.png b/platform/icons/src/javaee/WebService@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dba849cf4891db069812e3f0ca8d691376dd8b GIT binary patch literal 1938 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|>(qotd(p{0eng{h&TtBHlVp|ORrk(-%? zi-n_sp#e;VL91WY_2COp*wIq-C!ng>kmMZi?;->WLiz`(-p>Eakt zaqG$S*bI?yk>mf3t#@Bmnf*r1aHUFSc38_YMK;mgKMYH21#Tz&PB^mdMtfMTr_`1p z5y##ei~JX5)&?j~af%9%=MuZ*x`E@Wi?hj%1ri?2rmM5J%)Z;ZD}J-_Jn46*3g#A? ztGz(yY`^f0^<(xvu3NWn$M?z> z6eXB%d?@)P|AEyU`^Mgnd`iANg0(K1A0;>5OZsEpGXF>K424-8hg;gezn|I1Z29;B zm!DAVk+i%cUb8Ih1=>5-`yR7?Gbcc%=lPOji_ZG}F}t1jvL%$~j#7}m!o8rF?a2ai z%F~1urCq;w$ht7!PtrG>f8*ruH7Z9+X z%`erH(>E12JJv3o{`F&p;8Tt3Gs^|02}ZjbsW|POWoX^fB9~c)x0$lG4w24Axn8mw*3Q5pp$b7AL>Ysr;(y zCF=z~?&3nirx1 z9(@x%t8sAoEB%I$9S7onh zRq#ktux1v=uDg0`g8UXN{8jHFm$kztsA+pGr$}YcgrzzrzOCU`17)Odw-o7!%0!$w z+4*D&=UF2i&lxA>>}J*Ws%ftHlC?r-o`VY8j;Aboywe|FdCR|n;lIMW`gT9JAICoL z>9bvvb0V#jr9Dki>iWx6p$m^Rw7Zm~iXT4@F#Z>u_3?PKnna$tPvnQ476INZ#xr$x z31@HonkD`2c!-3jcux!a^7ZH3_AKDCvXls3W>h-k{LE?0*}h-69^0w)8M9x~t^84&G}*P9du<-;L6LPS$0sK!+P7ysYxQnDYO_o` zqf|cP?E$w(GJ&~|WsEoUODA8w#GEwY$Gu|~JJuD)Y+uZrv*8!hE5@r?ft!4vDoyiC z-lIFKeW8ZDwc3{V8&|D*({$mD%Pe-$Y;J+vJr1Hv`@ggPxFKeD{o0Ppu@@4fYR^4j zSzl5dx<0Z_q|WEYoUr9pmtGpZsyO!k-q%zArM=ewz5h{}k&VG=a?G_f-UHh~wWO!3 KpUXO@geCxY@CK0p literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebServiceClient.png b/platform/icons/src/javaee/WebServiceClient.png old mode 100644 new mode 100755 index 63df7e02a0c7fd421e9d735681e70464fef46b9a..9e1c7579ce45e59afb1b7c516f3fc9b6d4d5ea9e GIT binary patch literal 1402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}lJa|;V2VUI2$*<4On9mVa^UGcH4m8Bi-4(Gxi0Gg0|VoGPZ!6K zid#v4{{OdUR&8K)@tI}9IeU(tKz!4tuMIzp{Fo;=*b3}#>pHI7sn77J)!~nH$I*rz zg0mSF&hlEsWU(AQ!H~ltJn2BT$~R_(KE|X%jlRaNg9oH@^b*=GeUCTbvi_HpY`6H- zXP+l0!|(l<-@noRabnuGX+Qp#*$2c4-b|8k=InU9;LWV=|DoGBJ3n<;WdBRa_)v4e zLNj6gm+kTU`J10C$a=J(>H*sw)+Aw#YJP6<>1nfGiLn*#d(ZR#|Nqn-9~!1RPWafZ zetPBA{d(Y*Z()v*}vlWgxuOm51&e#wVnGd$us}vzqjST%l{Y$Sn)@j zH2KV7<;|RafB%2E+n*0#yY=jpb6c{$ilp8DWX5Cn@2`9&qptLGrkxq{)jz*K&Q}(` z$(_FNBM+0V+y8u*zdt_yE;xGkLH+Ey8-JLkDsKGv|25X(tnC?|`k##v6J~$R7O&Fz z(|W0E(*OH1AO6)Z5zDACVAfdrKfQo?Qe6+v|A|+N7cFNFR58<7HI3n;w#GTOq;=K% zMXwzasrhp}w)Y)VgceI?0_!7{3^|6zNcFmtn{s|E6b(DLeG20Xp|)-QhP4Zhw90Xx z@T`;%O1t&tkNo?*3EH>pT@OF0Y}hfE)8CKvsok-!_FE(xKmO&LWqq+x&Y^*kq3Fqy UE!rPbDnO;7r>mdKI;Vst0I-t@oB#j- delta 741 zcmeyx^@(+YWIZzj1A~Sxe=q|B6u7u^ zSV48qLI}5I^0L&@E(qHvwhXQYnGu}dv2|B}%jCI0L8tJn+yzH!>e9_3o9ep?1^<6N zUy&*M|M%C-ir$}IVx z&u0IB*7oy3Bl9$4m(UDj&vcRO)xP!phi@IL6gm;i@g?lcgVX$_wiD;}{d!Yw>Y4WJ z>48V*b2d#9T-wOAtV8C>^DTi%g;^CfSFbMdsaaqbm{wGgaPe^TuY0~{7Fqn?&TxHC zaZ-xs-}l?M-Fh-_PV9u)Qw0kSv=)b+ZjqinZLwOxQm>c*=g{o72|dpqZt9&eschB( zuc`ItTykoF{`+#baLUqcpMTx_|5U4|MCjM+&8+{!IX;JpZV&wbardw1^Rh~dL^2)B zFN?PTBh0iU$PXA}QC`Z|=R7`h@x}T6Z?9rEoHP(;S{X5gg^_oC@AIF3^=|+AdG8;? zUxu%D|9y#l@_pW;-+x!lF8ZPZG~lAAi(`m{BDb$qneqe zMK=GGTz!?DJAN3~b$9Pya6*1U%(n$D8m^hK8^U&9%lJ|$#|Siog@JLF;V}&dLmtD` zA+p>$S5Mx5rn356)W2;lO2uz$|2|t>{3$hzv-j!Tq#3U+ceUFq8%Dmc`yQut_4G>z z9@)FrR~O0LiL2k&wfXm|rEL8*0_kQUp|xN9e72YRy_Htq?&0B7?S1ug{`!e&v#xi) zdv(-AI##h)XZ_@$+v{Ex#-DMvJC|I}b-`L-#`^mV3=ic0N!Z%H4BBK3bQ*)FtDnm{ Hr-UW|kv?Kz diff --git a/platform/icons/src/javaee/WebServiceClient2.png b/platform/icons/src/javaee/WebServiceClient2.png new file mode 100755 index 0000000000000000000000000000000000000000..f9cbd8f9cd9c404d94de829659ac8460cc56dd47 GIT binary patch literal 1506 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 G68-`T?5Mo} literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebServiceClient2@2x_dark.png b/platform/icons/src/javaee/WebServiceClient2@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..c99727025e5dc6f246660201a244266c3121cdf1 GIT binary patch literal 2198 zcmaJ@c~nyQ9w(n#=~x!NEX};4uN^KZ1fobNqA0lFKIs_3)tK0XOMulmE~QbHnx*4b z<}~@VDa&4|rKw5wrnFFt+_I-FT3K1P+t`C9oB8AQ?m74Vmh<_1zT4-Is|gA6v$C+W zKp+rSOn*AZumZ++j=AA0Pf2-YSeC%P(Qud~5ms_#5Q4^+BtQUD#7%-Y5SOn`{tfa( zApYhg2#r6JHLwu~PpV4FK&%^xb3@}?$yj$XjsSdlP=;tS zej=GeXMBleI8jiWU|329L8VfOQMzFyvLq1a?(Pm^T|rk@v;l#ZtHm%^g%-=5XB6m= zoF@}VVSz*p7!|n*5(P{_88ZE&1d;TstXTe~O@@YnDy|g7VX(%MW`Jz=|A&f1U(s@y z1O1ur{}h&otECXgf#ec}jAs~JqO&oSlA}c1>k2@g(4(xZ$#?Fj`vdM_% z+vs=0rEN`ki?_Y^V~1bVH8myBkZXE>TC*~SXm_i>vdj~*{vgVOEV_xGa4 z2a2v06wGQh-vpyU(9Ac9+f{+AB=qmRt~+Cc(;x67arF5k0_~ZKYqgc-tNyv=!{Dp@ z)D7Je^DM{($?t4v9qZiYI$&}-ygi!+8}@X^=jo8qONqx*SSD@IiF5_+b%<`w_RxDu zL4?KY>BK73>E7@zWvU$g~GB(bntom70>y-8Jcq&fC@# zx-(9o?nRc zgQDiL?V*?TwUa`}_l`VVJt4nCJ}qssaN>(4;0NpNx86N?b9yl)7u$QQf|DI{@h%#< zdfDP^u7=nOXfs$NXP}myXo09qCss%}ksulbo2$ z$h_9mub-E!@jCsy%=#kQjkXIh3Mo_!#B~M`hh+MB-Wuh;u zCPvjSaE|w_`1tQ_yUVUDs2$gHUY*~&cHWixCzCnIrzPVcYVzNi({SP6j7um=9rZOJoI%d6b@ah}4 zPU}fHpQl~c_=zpMlpfFU>(qJlskL3DDpDf#deSrhw08}u^5by~VIAW?2h>!T$Z|D2 zZT=#!>W2sYt*)h(TSGc_2?tIE6~6=Zam;}WFBFZxq@NRgvcMt&YdS*neKtfG{}hc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|}aLuWTL6H5zo3sXZwR})KD3s)B-6GK-= zQ)4G%BS)BCm;B_?+|;}hnBEkGUPqjIK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~Z@ zJgD9j+-|YJsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4&*@y3}q3=B-(o-U3d z6}Og5KASD|d(sntJh{y$AOJ-XB<@w@P* zHl06$1~1(DZ&*bZ`s5xm(|9rC!`e5DvyNZjG4$4Vk=XrVYs~HZHV5kmGlUJ5tYSOe zw{Y?>%oY3*v*zG&CsvMg{a@S_^IkGnhyJVC&7;4e$UBy?O)Y)w^cZB{Qv;L)vCv+J-co9WVBA@n|-vc(jwF8 z(xQxK3;u~HKGAxn!>yyn_G{q^;{{JX_O7k{zop7v(pVucXa#%k)SVLw9&|t5ob=UY z+A}pyL7DdL6T;UrNT1ETaGO$b6C2&1Da)QX zo9ZYOJ}68QT*m+GUE+5$sc7pNu30Xz&-dST6TOhL+hbAst{>hFj11k;%#UYVPrn5! OX+2&2T-G@yGywqk@iO!P literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebServiceClient@2x.png b/platform/icons/src/javaee/WebServiceClient@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..38cc043356e2483de18879d280401b044969c8c6 GIT binary patch literal 2128 zcmaJ?c~ld39uF0wc+ldJZ4n_Rh$%wukVC?i06_>sL`bOxLo$#c$;8P(LZDiy2Qe&1 z@!%B2;sZqll*7UUMHCPeam95JIaCm#NLN^J5$FahcK=v*-kbRy@ALV5ug`m<^Y`;w zv(jQE0)bfL&EpCTD|+Ewfi!$oTJ5A^`3m+B!n?o-SS^A8gqs8m2hiSfQ6wM$M3T7u zt$-5(v23#}PzVe8zAP~)$BPy)c#T|XU?UJtE*hmsybplU;XtHJ!N!c&Hek>)2^$kk z;}iKx4j`5Bv=FdM>lY~2?h`X57#C->lZIswkOQy?t&vA7R4fe}^Ffzo*e_fYFz62u zcpn?{M^Zw*KbiwV0GfuUIf#iQDw@v3lV~I=gJh2;6G;>TkwPF*97tpqk;x*_&>tU+ zAsQr!UX6!l`H~5tybgJ6g&t;5=cxYlRzXB$Ycit!a)_MfJGVyg$lc< zzy(xdNT!5kpaQ+1C<+H-U^d2(=^rJ?m7io4s*i0lG>o7TDG4MzaiOF|AfNyLp>p{r zvIUF=D zSf-GGYSq^t;Cw#ITcLtQ3Nhf#Wn&Bic$rMX@}N3$sB}jLgU+ClNFG!sl}PmTU{D>o z6gLW$=Dx_~g5nrCpnw;-l0Ui3CAkYukSh(5xd0@K1tgvjC`W&&m?c{}7sn;_K5`{X z=R#kSOE4ruSeWa7&3W<4V4j8TC)XMdpL`D}3}%N6t}Yuc>_Z@oZ+mmy0yW)Dr{kj6 z$EMiOXScG4k4=}N@ z+Dr9}GG3cRdxR`Gx&meAUM7$VMmoEyMy4v_?+xbM19Ms#wNE{GVQ;+;Olg$ir67qgG{`EJk5&ijUJ80%%oX3-%S$W)dIoC?A37qeD&UR&2 z<|I{{cEH%Pp|sOOaW(mEB|hfJo&3xp#?ujf0>IVp-_3x0abY3;8P@ z39ljNN0o1~5_&HWP5m7%)(R);c8=fZ#ci!QDXkW^7rmS=uo(q4b(jOgK8?Ha)|QVE zzPZK$*KW!((ix8adTQXXB`)&t5&cQi%7<USH z8Gye%N?LLDT%fI`yOVhf7HQ&kx97#T`i_p7a(U-=!jaquFt| zg3Oz^Dh#nAwp<)dHX8`x*Sb}Qsn=PjE&I0J$ovIrW6E^IK#B?HCF0nwL*d3uqeL|4 z6lcTZoWs~>PEG+*W|){Br)S_Qe$Gra<1w#H8?SPqLasTkWY~Kt$I7#^wzLBct!jo>s4Q&SwC7@;IutD^+`hS7@c_a1||JlRqWs zYAHwqYHYQ&f+%o{R}Unpu+PzC4bEI1$z&btzHVwej*011HI%qFxX=!FM^uo5?CNzz zwBaxgSe+=1*r7H3R|~=BqHv&~en8Yc@xVcvt(HcWUy!E`-9Uyf7wP+Rqt5Eg17?rU z)#Xi`;(j@A+l`WVket73t;4{kBU=wPSvQbYfdj)VXq1W!b-N`)ZFL?z$%UZ1=gNAvcZ2 z9R{xZB$*X3g6tG^hvyFFwwSuWCac`POk%w%-}cW)IM`A(K0xT?>E~V28m$$mrgN_> q-avC_E(IUgebF2oG#mVb5#oVaae0^hg|UTyytjuRx72-a;(q}8fpEwG literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/WebService_dark.png b/platform/icons/src/javaee/WebService_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..9fea41ede95bd8d3be784250db8a9f2ec00009ce GIT binary patch literal 1430 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}YmBLj02Co>Ck3sXZwR}&{^QzJ`rCpQCU zCs#8I6K9xSm;B_?+|;}hnBEkGUUQs!K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}~% zJgD9j+-@<&saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(GOusdsfq{wJ)5S5Q z;?|Pj^VwG%MCy!Zo>bYb_-A=K5pO#vmGH;;-U0VQ=j2Z=ClY)d5}!W| z^5|L`bx!)u!5>FvD7@`zh+6g4{%F|?;g$ElKmKxY!~esIjA^mDzYiRcNh``y9b yVIJ}9ai7X|YazDZCY#u!e&`lmc>Tw{fsw(t^1)92zP0tBlG4-F&t;ucLK6Ug8W<)3 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/application_xml.png b/platform/icons/src/javaee/application_xml.png old mode 100644 new mode 100755 index 8bd86a3211ce3dae05bb1c990d4649067d2fc12b..80b5d50e8cc8635b0cc002df4afa020f84190b61 GIT binary patch literal 1189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~kVQzruhHvr(0azaO%|uIz}H9uSoF>69Oh45EGtifgE_cPt5}+_99@a&bC>zjDdks%G1R$ zq~cc6pa1{unK{nPwH7~gfLE$vhu|?!KR>q1K0HU7H5Asli>Dl1G(oUi;zVhm!yfTd z?Ymn9?{X{tnQg!m@%bYE(drXf6JiCJl>RKMJNT#}HG#L#Fz}#(>FiCF0kIznd;iz7 zU1C%|=MYo(OWgVDulEUMU)$a%*qI$@@&0`8^?u1)OqK`#Tx0N4_|G5aY>@Qu)8+j< zr~Usn{TAey8sNc zN$KXzY}_~A8%(%V&ee1Arp^u@HpwQwXCgBbH_V(MnYhAp)-|&hYbv{vzWmQ_N?2=HU}RZYQdwPGL{w}0(s%pm zvzMBgppSu$Nl3td+W~jk>Ux#k--*#j(uBvwzgQdDO?E_Sld2)`%UoHURh&qS!8EfW_E9UjCg{M{O7Iw=&$_gwf)Ru{pP3r^xFQ<0RGSb z{@RZI<)8no2LG=P|F|RnyDk66PyfnT|Irrz(|P~YHUHH{|JF_a*`|MS-%H>wN(000JbQchCl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}dGqk*f5k&}g)v#Ft>tBI4jiKDBdvAKzv zn}xZnu{lhyOMY@`Zfaf$Om7N8uQN`)pp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZn4B^ z9#n4%Znrq%)TVL91WY_2COp*wIq-C!ng>kmMZi?;ID5ri1_mZ|PZ!6K zid#v4{{OdUHkx5wuD6Qe>2{-~V)%Rm%kuzHWTZ z!*l#hM=^t;9g~y=f9#pK#>R)Q(J zpuYT~Czofd^RQ35_OPc($Ampq_}g)xEgBXFKYTsxZSed2dijK3_wU<((D?E5tFmWi zLqc8h6+i!9^`Z|u*r$J6yo7NBbAw{h+Y_%8Z>XuTpI9;5_(S)p#+&Eg&uRQIrFE*~ z(Hp|+*u-Q_3LBP{a=1AjIdkY(!n4`k4;kEa_9kDlW}5IreRa;U0tU+jzloAJ`4~71 Z7-W6F%)D-EyB1W6db;|#taD0e0s!B`70Lhr literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/application_xml@2x_dark.png b/platform/icons/src/javaee/application_xml@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..3f5ef3d2e214d922d0c31b2808a6a86f72c83b62 GIT binary patch literal 1453 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|3lvx$?li?M~7v#Ft>tBI3|xuK)6tDBpJ ziHVDokr7OVL91WY_2COp*wIq-C!ng>kmMZi?ON7m;#0|S$ir;B4q z#jT`2|Nq-F8_lpT*IUK#a)DgO>gvfIhK2$1CQOC08@nKsd1!}NFd3T{WHZNF!~q27TnG2zGY2P;3% z|HXG8)l#)DVd1o=Ppq0+XHA>@m}8L)!|9bhJ1&O{xydE};n$n}?|-_>s^tO+UpGGI z;W>V$qnN?aj!DXbKlV&qW8=fu=@VqalAlkU!gj*Kx( zbf&=W2BX9G4DZdnjo%nH$jxsH>rWRpVwtma!AdEXvbbNz4jke+xw%p8PQtJ2@@#FY z?)w{VG97sFv2hu1PT+*rXA5!;{hQHwC|D#l@xjv;7CmhfHHW|js%N>Zfn!?8M z%-rqmmnHwh1^WUfr#O2u8?Z}gZs0#?rfB)#;OqN5@Av&<-TbswG3*cPvwN%k>knQ% zP{iUZQ}FMgeoxa2{R_72>;E1oU{IcR&+w%zqsO1gp=QYz4KfDHPxR!lGq6Z7yp}t= U>Ykj%XHWs^>FVdQ&MBb@01U_w-v9sr literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/application_xml_dark.png b/platform/icons/src/javaee/application_xml_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..d6fb5223c7f16a555d23270b839d325d46823f4c GIT binary patch literal 1189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}Y~Ggn7fR}%{}XH!E%R})7AOBYKEBMT=J zXJa=fBQuy@m;B_?+|;}hnBEkGUQ?WUK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~5( zJgD9j+-@<(saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R!mxQa0|TR!r;B4q z#jT`2|Nq-FbDWuLEq>?#uT;Yh!DF6&er%V0c#bq{D6DfAPdT_~f?&7AiPAoYJ>sX@ zcee=Mydu6{1-oD!M< D^J|m$ literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/buildOnFrameDeactivation.png b/platform/icons/src/javaee/buildOnFrameDeactivation.png old mode 100644 new mode 100755 diff --git a/platform/icons/src/javaee/dataSourceImport.png b/platform/icons/src/javaee/dataSourceImport.png old mode 100644 new mode 100755 index 417055dba923fc297fb66f21ee30b4c71c327564..da01da4a5a28f5119f34909c6da6740f4e2b3cae GIT binary patch literal 1451 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}}hGjms0V`B?*b2CFjR})8LH)CgW6IU|} zBS!;6GdGxCm;B_?+|;}hnBEkGUK5;pK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~H- zJgD9j+-@<#saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xW8&3L1_mYtPZ!6K zid#!2*=C41iX6ZH=1kq4x;Z;p7E6e@^l+tnEL@(Tps>+1F+EZ7kdmN17c2M14Hpuc zxWYNay3*A>oT|7tUU1mZ(Hfy~l66moOL6tiCw6=8ygOsD`Q*Io6)vCJ&8>}p-<$nE zU*gNRmE7i)-y{^DENm+5D&BXD>DMf_gMUrz0$R+hYM-(`xcRWJ?y$-7!)Ug-+!>vyvw3=h5Sw7_8E3h z6DA!sWH!0Y)DaykT=nyui1wGC2ke(t{yWs<)-K3&A#~CES6lKu#8u9Ivwar&kL&6M z9g&CMHlMqnUN_^^j-(8}XFm1)tFABmdq-U4@?;l9hSVPl+@f0=7oJGm8Dgz(xA@z< z#pmD4?mVZb-ga!m`Dr`69Jczlltp;vNF5Miown!HfwZ&t**j;@6}hY zudDxju=x7Aw9T?Wl+jhB=32+Q^Jn$e?NDrz@l*Mpwn$!S->*4ha(`;RYjk9@UAyvZ z?PY}=1;KqwC)pPLGb#zVu|;{x%Nz4|S!}bJyw2gT&SSfPUH60%n;Wl52`QGSui4P( z(6IaNazopr0Dws$LI3~& delta 712 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 delta 2012 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 OBGgs1mES1YVE+fyZhQd% literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/ejb-jar_xml.png b/platform/icons/src/javaee/ejb-jar_xml.png old mode 100644 new mode 100755 index 4fa3a36c91e6cba439dc6cd1610cd1c743a095dc..979a8d4beff9c793020cb6f41a5173ad47079e69 GIT binary patch literal 1335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0L_H)mH%H%kk1b8|yOR}&`_M@v@=Ge>6w zCo^+P6IYmCm;B_?+|;}hnBEkGUPqjIK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~Z@ zJgD9j+-|YJsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R*lOV`1_s78o-U3d z6}OW9{Qqyy%yDL}wfLa}yiyH21dn<8`LSL0;W^T*p|H+fJmuh`34+}cCrbMq_K2Tq z-`yg3ms|1AYy+N%&lmZRR-ee45G%l>^k-S!!AA|L3A}}dfd>stXK$(ui2YF5`@f#; z5~K1thnTuw;?7rpy-z6n+V(!d&MKnzjpa257VUf0f6WiivB)#nZ`x3teri#^c;gxM ziOX^n6eSg|9hc&sKL1~8MBOX#JN*tD9vp3-f1PQ|z9qH4zlJB?na&nX3S~iFk*S}UERL^|K!y4 zf9WbGepz0Pi_S3PXFqMJk{Wt~Q&VD=$F)OF5?t$;Hj1e{-266WN~z|r{{_+96T~@= z?3dt7S+?%~c|K0VJ^SY|i6@F%9RKjS*>=KK4iV`VqsexQr`$DU%RBkDVB&oFo&~cW zJ0u=x(iZ-^-%5CXX{l6_)UO-7)UaiMM_ql;Cej#{IWZljocqnUoAnSZHuD}S%5m#~XDu$Nk}n`g0h zAF+x?wUJr1td+W~jk>UxzJ@BneH_KRq0EaY(W_w8%(~gBO5Deg-I^xlz;EcLGV;!L z_SlbDUSRvucl+wP`|7*<>%RQWU;NK${LgOu=d1kaul(t?{mf$h=BNGi)&9+3{?7pZ z&;b70j{fAE{(t44|Evc8uMYpR7yq~;|GO>!$4~#tRR79Y|ITaw(H8&HD*w}Y|I{`3 z*Ma!gi2BR``q6g!*m?TvzgbyQXfv8n#0?d&j*GQ* zb`K9NfC@OI%ZRG_stYMsLIvzH6Etkfg!FRrAOeP-E>2$ZLQ2IUIbZ=sDalm7FgX#$ z!r&~B0Bj>?qLoF8nMg^RZgdPtfF)m0-^f_nBtk7&p#mhp<(MHTtD-HQ9TXVg0}^1i zG&dC#5D+Vmiu8^L8_H{-sU;{Np~DRVU~BmW1O#}PkbTF-$Bx2B0RV<>9-7Xu{$Bt9 N002ovPDHLkV1gicLGb_p diff --git a/platform/icons/src/javaee/ejb-jar_xml@2x.png b/platform/icons/src/javaee/ejb-jar_xml@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..f012149664312a3ab45b5581a39c83ab50d1451f GIT binary patch literal 1751 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|w8ft$0lrKN?rxw)aCtBIqFg{6g|xrMob zk+Y+PnKMkUOMY@`Zfaf$Om7N8uOm*qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZUI`3 z%PkPSDY)HYfm5$O&@uX;ctwh5m=G}WfSB-93*^AleQF*su@?bT^{mB@4+1lbkEe@c zNX4xq(|vt}9Yv0(M{x;7J8H2ruj!b`9B(Ms!Okhj7#Jx0*fl9>ibm%Ol_fEz5_*RY zb}#5%aI9IpBarEY<37C^2_|0ALW|YvT$#4q%6+_+n;EyTD|)El$QZt)(Vz5=RS^L5YQFa$gpD>tCF8< zd&J>0E4MZ=Eie;g(md+2#>U~T-HT09{ztUfR>-wftS{VbyWrNf-bQ23yIH@ZM73kz zcq+YZe;ai-{L)PEO$@n#v*xU-+h8KRDR%h@wMzM5{y*O(Iye@bZ@YMPdDV{fHutR8 zaZlU34yg-F&dLQ?{+Qd~Ad|m;gDcbX-2rnnmsCfdU|(Mvyz(~BG#Kkpm&CxI(5aqCJ>yt9!Gl$+2fQT_R5?4wVgmLBE{cRt_V zu(4jL(Nyy6_Ng`-ISx)gwAOBsi%Mg``HCIQTkag^?m7N=OURR=W2b5h=PjBe!u3(x zC){_zmkuMv)*aEJ98Cp#HWaVCvp`&;u{i36<$lAX84Co?CMpOyUN_$&?vRl9(#*%! z@KHhJoy~isI)o#h?OqVNssFlG+9ucE9H-)TpO&zD*z?IM#iv~P{r0y{s_VOF^f>iS zKFu7i!rmQKS@HUl*92C9AA6rXZxBrn+oo`N-Tr{0j%8e&EpcbH6^ah+Gz|$m6XFnb zucEY=7pcf>{slZ{c{zk!iT`;^za2Gw$YJFg_~g*b&G5$4gYv%Sk~lS0sUd zu4r1{m&Ll)ZigHXd=2Gb`RZbQcF{!(!Ha9A^>6mGckEoLoOnyLfz72u@`CD8g^Jll3zxw)fG(khNQ{i?^*#b0{@QZ!GJcys25P`Ca3WrEULNBpCXY V5-00PUDE?qHJ+}1F6*2UngFs9qT&Dm literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/ejbClass.png b/platform/icons/src/javaee/ejbClass.png old mode 100644 new mode 100755 index 5b3ab2957b50cb9830f6c39e35c63f7875c9a852..caf3496dbe5b0aeb2f196cc8897929e3938a189e GIT binary patch literal 1528 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*Fb5}UI2$*<4On9mVa^UGcH4m8Bi-4)xpi1=t0|Qg8r;B4q z#jT`2|Nq-Ft2VH@h~)0-)lp*-VoH)%2y5=T%kaq8!G^Qreu6{;OVdmV$>(0&pFenW z6c~Oe*wDnf|Id%L{~sMT|GPYY|C9f}|J!qFY!REyc<{}dGpoOfx=18SB{oc-EZXr? zQiXNr4?Vkz&A*<%-@nkndB%b)mqxSmm#2y+K1oVX{lU&7mLs9U9>g5PeMPzLO;Ze~ zW1gMgf~Nfrt@iutQ*UgqkUD%enEl~8jTxI+eVVT{T(PVEzLep_+9t^d>SxZgUgKf1 ze(s+zA?RXSfwyj}^apXxO%7R&Y(Fw&JKCfd96WmL(1-W(E>{ogHqNh>Qu}_oQY<&2C{h9yu zHBGxNUe=%)0FK&vRVOuR`_~~?9 z!_FCxPd67Ri1HdIoVwkA->&xWPidKmoIOlD=OVxI6b73yF7ET3HUIJafAe!)19{|P zC;uz%p6}qL6l%a6$N1Uh(&6Xt|JDEf$(?bc-XbmGX&rai$B!E??$`aflK-oh^grW` zd5y1v6P=85-_EzMKP+cg`}^n9+5SBD>;AB{GM=}uoPE}SwI@D4^3?n_XA=K>w-!1P z%YQ`t;^#wB3%vRE{Qt6*qoejlMl50`OV9<$JIfG{m3Mph$0P* w?V*iAoRcIp)ZZ~ZDpCkzQ?1q5$19M)pmm?q&9RxU3{)0-y85}Sb4q9e02VMsY5)KL delta 785 zcmV+s1Md9z3!Mg#8Gi!+001a04^sdD0l832R7E6JmjD0%BvqCSBt;}umLye{BvqCZ zB|t!NuOlfpM02oAc(YS`wIo%RG%hMFEiY<~ziW=aT86=7jKn=JC6unzGAt~LtRrPCMqcyVCZ=*!S1t z`rPOG;_Le3>-vbs{Ex)^(c%8t<^J2~{^IQZlwcNaK{CnU|Czx5o5cT|#s8kV=by05 zpv3>6#{Z#iBc#UvrOE%Pbt|jP|E$gbnX=Hz-2cnr|ICXh%+=@4-v83!|I*|C=SXjVpTeV0mKfOTkJt;R-I^xf>i^*E|KaNY<-l*{?f>QO|LCSNQDcDV@c-@d|L*hu@AUuj&UX0CY5LfC z{LNqg+n)ai8(_3^dJi&EfV0t&Fo^>hV$d*p_B z*_lhQ0tMK#yjwckGvgwy%_{+2n*z>^HG>h~)!0Ojz08 zBD=VwvDU=cSPblRE=eW5H2;j~7!zYogy+Q7jE#*&m>H0K&Mw8z%m@IEuq}`}^{`(6 P015yANkvXXu0mjfSa8x; diff --git a/platform/icons/src/javaee/ejbClass@2x.png b/platform/icons/src/javaee/ejbClass@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..1658386b9c44e14aa13bc468ca92158873ae5762 GIT binary patch literal 2375 zcmaJ@XH-*p9!;bONEw$h2#7I(&_WsnNB|L1NWg%E5KyFqEU}Bk4 zGLR;uXUTx*tOzzQYXgtShX<{I1%M=-fCx}F!LO`(vIFc_6eg;sf?C9+fujz}b8uy_m}@2Nw0$}`0ZF6b$iBjyz- zfSe~2N)f0ZDTew7u=zqCo$Fbv3*VsL2eTuJjlCiDM8MWU~0 zxq=1!o$vn?ma{XZ0EPv~B}y4jH#h-eE|io+mH}LaM8=j#(&xLlI!&UG$kQZJ7?})n zjTMUd5|!NTGn~mJF~o8OSIh$#lt8#n04)^qNfaMEkx28V`1$(!;&4=NBG%V0IG9ZI z@x_PuQvLkqxfBUcDFVcbc`pBNF7=z-IVXsuy2unjCd>f%G?_#M`&=@uCJb1%1o5Qsq&gA&XJpK4;W z)1zY?K4~W=>MkVo7Km!)c^P?7!w^1-Z-KK#nC4#(UFmGNY_Vmq)uS{G-TP$_%8)U$ za6!l_qx%|4vQe96x%pxrM@wm**@F0m+M}MT(doqI=-;LBk>O>?(xKjl$@1(wuSZpz z_sR{ZQ6q^yX4*lddD0I`jvWC@40llWk5|X9jMYOyhoR9q=}HiCS>Hi#0veh?ZD1T9 zyF9F(wEy0p(PU4y6}VqDYO>hxldt>AECjZS2X->AyLIYY&A+4J&=aA<-SbUOVleIg5Cdg#<=AJdE}Y_@=!j> z-Q#@WcLN7Uf6_a-zVpNb=gDKe0LWKaL*BjvlRyZYs2M=D`;tG|0sEBOs|^yi}f0Wrh) z;)7T#W7z5yCkbswQjDf5M0*a79+ zvEoMq=0BA%EsfaMi|r`StZTvx-dowddzk+;)$Inc;Ci$MMbnNC1th{#e(@+D05?po zOKasUVzXCNT#sK#9a~yaK^hxpJ%{Z5d0>Ix{BOx!@6X)}wFqb1~7twByUSRyJGZWX!H+Rbfc7@x%{XRUf*vwqa4UFc*7DV|cEavM=P z6({*#w5x~TcQ6e-(c`O_lzDil-z?zWa*YnT*x&?2X$8L|GpjWFqV%QdyDGCCZQq&F zpD#0MyU&_2{!o4C-5a{mbkDyyhUmkyhC39>iK*MTvg5nSEyYs!0`=~ZgLOL<*)xw` zTO4Dx*76(Ie#~54PgZ}r!;yEcdo`+DF>7019_|c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|M*HzOBw0~ZT(a|=U5R})J!OE))1Cl?Dx z3o|EE6H}O8m;B_?+|;}hnBEkGURRuYK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtAP zJgD9j+-`BksaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6Wu+7-i+%TWaSW-r zmGtNTe|u)thR#N(15C*ke)qgr1xsvyZWa8lsnNWlHKzCAcWudMB7*4$xE1E{A6Y-) zNJU5KL1qEPFP|qi99^9%C{u5D`ft*+ny)R<_52&zbi{ua#=kIL{bIX)&zt#@l6FR$ z|Nqrm`R8SXPQW`!fp7t?BjIW5!*|`Zo&UBd!l?3Mde}y9kD{jzGQI|47XRv|J^TIF z>;AK!cOrD!LIh17hzmcr7U<16p&queJ0MfkiR}XebB=irv+>LIR$v2}H>jz4z PfJy~VS3j3^P6i9E! zw_%gM@b~=L>i5y+_R8b-!rt_{+Va%t_~!Hbd9>J)&hg9S_R!|`$>a6p@%rKK`L@~f zuhjC+=J%G7i2vMqLW8-!hAPa9DAB86Q;fXa?fJFX@~+hJrqA%o<@SGXUHr{o_|0jd zZX>C6E47hX-+%A=Jb$>Brnp&EQ^9>4v34J^ibgnnw>5mXo2k3z^7_Z&_IG*?kUi#R1^3HZhq2l!U{o(KW+Uxk`z;Ds#_w@SxONhJI>-f^>_|4|`$>jFo@cNOG zk?5u}-I^xZsY*?w;_>(V?DhP>-t@TI^VI42>GS)alYfPBXIOB2fJC0)>-79ukiAo+ z;`jUgm55kN0000WbW%=J0Jx^GMhuII{{9dC`I%$>T<-b)bM@W9BS`#7JvTADv3~mq~w$|Q#ExB%_69PwvMizzJZ~Uu?bY5*37)LtX!$GsyYH95E-Q! z6RQ*#pO7jF5wKLXvbM3cQ*>~25(5jkxVpJ}czSs&`uO^Zg9I|OvU76t@(T(T6%-_Z z0+Ng%5Ev935~`>mh2$k^1qB5e7GzJ#%E_bfp%wrDD$*gaM-Uby00000NkvXXu0mjf DC^K&- diff --git a/platform/icons/src/javaee/ejbModule@2x.png b/platform/icons/src/javaee/ejbModule@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..5cb822c35be15c1d1ffbaa3d788baaa8de7a9535 GIT binary patch literal 1508 zcmaJ>drT8|96yRh!52;#L!Od?q%};YPW@{PXVGCGgcdC(|dOrf&DK)Yr z*?<`sEwI^hye!D~<`!7JWmbYh(iXt;-J~es0K6G?J61b6(yc}YbxCm_x<(Or5W<(K zkrzps40*7YW&xZmOHQ(4xDrk!WOy>JRN?brIfg4xOo8HxBwS8n1c@iZLk}WGW2q9- zsLL9PC7#rXjprE>MO`kJ%%zag>?#x|2m;0As9c^TB9b_dlQ+AQoLs`Nf(~$2*3R&D z+6jjg%@%qMuSUd7UzFfrMr57bP@BYtp>8vS;xa5$(lF3q_d&PFq^RtwKrVs}!si+gJjZZME~ zC&!zeR-o6Z5m7*9w^JmRnX1dmQe~=AQ&l*gsmxHw6`G7x4VI!*C{q;5VXlt0u5kb- zKg^|GaUEj|ce~}8Af%m1m&~pTi>RAatckn7>!;ew z)f>v!9_q8jY$c0-3#*&-THwuD-)im;EUY3jzvmiq;RRy@hg$;D_f6rO@7m)feLDr= z)B&O5*rveaWmE3>{5cA_s9RIr_j`6qbxqrt}f$t6My#PU0_zKivM0zan;{i*jw<>$`oXAJ{=fk=uTz4LYr1f`e2v2(Uv!@NS`-LME zo7ggCQSZ(3V>|g$RYxp#x-k9ErI+sY-^r*fYF_Uv-tp9>L%xyjgud#yI6g{RxTO_p z3N~NDQm*-FXR4VuTFylVh?uuK(lF1gzRHibpYY%( zm)`8I^Y>ioT0e8@HdHthcn*D7F?q`j=)sNYJbuC#1glqGpkw-bJA~!E2@oS$E~x()_-8w@Gv-;xLrHGy%IpJb91}U#70CR$d6v%Ujg>s-(7^0K5r;k5x_zpc0Q zYQfdRafPpQw|!%x2!ybNC3u6;S5WxJceUYD_w-MX`yuN1v*hR+NqItaxBTO4#FzP0 z)#CPynyVSe49&xcvpyUCMP#6eIdCzebN14cn@gbYrbVBW^h)99QH@QNs);doe%%r# ZnE;`IcFB&d%J9&CSD%@yJCsqp;U9Y9KCJ)% literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay.png b/platform/icons/src/javaee/embeddedAttributeOverlay.png old mode 100644 new mode 100755 index e2d0da45a470491a910fc1505a2fe9faf220b4b0..17f672749ef3649d20b643a692bb48e9039da942 GIT binary patch literal 998 zcmaJ=&ui0A9M33@v8}_)6utP&E)|v^uW4-)n$@*wUBQgn71kk&Y4Wy)EqO6{wb?)z zqT&$2qj(a;gCK$@4<0-?WWqo%Ui=q4c)0bcU1~WC^d5j^QI_-oi};Dvq&+YRIrQZ+%8NhKZfG z>kZP-uP7#Vcq78_q2p0D!{qXzXPE1VfF@eAU6uX${sRkaOJ$eSx~O|a)Up@0e6+N+ zSU0!UP1$1eb08NgRKP*R0HL$t21=;1U0sE)qho;uT?koM*&|a8y$XuhMzU>hkyC70Dnz&6=mO4F3!SM#NZqO?eEtn7* zo&b3DcSFzf{ z1P3kbfnpIPmTlLOIjI`S? zW3N^wLuTUP-v0jXlc#fclo;GT@u`)oPn~}K?uP|ViLg4>*n2zuk!c=0ii^Jw5A%<= qpRL@Re4dz0OzmEcJ-9!@jEpinH>MLWzD-20n5mQ&wKs*EcmDu$jyDnj delta 146 zcmaFHzKC&xL_G^L0|Ud`yN`l^lth3}h--Iu_kS?(USVuFUDRm0nDGqp>=O*SvX)&y zHS8rpe!&b3GoO9_^0nY`Tpduz$kW9!gd;jxKtzm%nT_$Y0*CXCJwAeG4D|K=nT%Z$ sl$>6A3Ya!!bp^BugzR3R5Gui7E6cOB*5$%425z8!Pgg&ebxsLQ019_8$^ZZW diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay@2x.png b/platform/icons/src/javaee/embeddedAttributeOverlay@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..a025cdce4ea970d8e13318c86f72ea1536b22aba GIT binary patch literal 1023 zcmaJ=&ui0A9MA07WNbSrOkwhtU8b!0(I2)6&9A6PrXkVGag|e@46K^-O&2aT7fO1w zrV9o=I|EX_NCYg1HQ-z8wkP@$-O?4wIyh!&(1PHaM4u#8Ru@4Axe&yecv$E77)S^V zALnC9ei}qLKFV@YmXC({h{y>d9|!G^Ced7DRV*sGb}X`!=qkpJ$g+(_gK0z=^x8*6^p_9ibg+qR5GZODRL2rcGCe85a=Nm%*KQMO80%{e z%QIY1QU|E2|A$&u7wzF9Jk9r?!d_{^fou_asP5|I;#MbvP>z^!p@xxLLTJ6y#l|A;Tor0xhFSpg5{9N3Utj|(8#&S0Msn3hRZA4`}>96SYc=8{^QZH)C3i}d*|beD^Fg1d$<)ENcHE&_vB}6dGqJ-@v(XCU?)2=xP345V05g$_b8Mb=MFb-3~q}npZh{X)R|%G`Skhu_1c?v O!IR8q7nG;+%I!ak9zsU| literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay@2x_dark.png b/platform/icons/src/javaee/embeddedAttributeOverlay@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..dbbbc88627655f3442ee6ed46526a82802d98157 GIT binary patch literal 1025 zcmaJ=PiWIn9FA1#7)%&=sKVqeJE&muugkiI#%*mM^x@Nst z1i^uN6FiC@HYTVyMGy8kZ-ROe1Gf>^Cy{3VzrEy&?;`|9;D_>RDmFG>s45Uy19An4NOy1WZWv1 zaamiC3}iEUh+zWTC2WdH&jhY+tU(MauxdFn{r%Nz8d#=GFN+$dxmj4V=9?Z|YA%+H z=9-Z*>6r^49Y{pLhFAxIz3%u@Ak!UPiLAq8mIfUNUX$rVQ)R6HvdDu#WW>0^@sl8# zVtA3CoaWC1f#VY_mtgrsoEIc6CGjHYel&^ZnX6J!$#r9qolMs-b|sc=G#X4J!62{7 z@~Kpc&?LOMaMfk_>KZX6$rVH63^ikb2$i=NrgrQt1>p>kOuY}NguZo2l z!pN^77i6>G?6T#UsNtXMz%@wO`94}<% zrZ|PmCPXDE_P7c%>Na$6k8Ae1DmRcDc7pAa$O`nV4QS>(WP?t|k~P?iGElF}H3xc8 z)PY=w9Vd2ip)@W_7mg2s)E+4xst-L?-=y literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay_dark.png b/platform/icons/src/javaee/embeddedAttributeOverlay_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..383baa3ff1d2e106b7ddcee056bca310f66131c8 GIT binary patch literal 1000 zcmaJ=O>5LZ7!H1vQe3ED%eDwk)5{8OlF24)61uJJrXLHYuG=l$gF>^(>~3h2Nt3CY z_Mo*$$aoU&-=XZymP;}yqFjo zA7U6LQCQMTbRLe!-~jz!_|-D$G)CqtWChnq(+m(ZYvU>c1=p;j5;E4Z-m9sNpQ_254n> zxoqujSgOs=OoORNqXI4>CWzckFVvzO+t$_SIzHxE(1wtW9D8J{ViZ9h2MEZVoVElg zfvn0w8A=Mg1VjO5cp<~XOd5)splVPCosXr_0=uS_^o33=y34T*LVS(qo6RQI%y2lU z^H5b)UJ!XvOjATU-0_GRrM+;ntDvLM3LKv}*aNYmS;gBV$5N+9DY$-5)(bmjq6On4 z)8`>4#3^-whVg%>>-NwgDWPM({}c|(J3it|D8$==MK7*48He(HNyT~J5u6@jv`*Pz>aD5tCM}cz_*$V-7K|5p3>F-7CtJmS${k>%R za(QZokMH%bd+r|5=82cRuBDq^-y@GUdqBJT>X+Xs`XX)=^x1OsxqAJj_wDw;d5}t_ z4qL6(^W;xvboj%;!M%xVtE+D>pIP67FT!)*_tzeOt%Fek76&Wuo{hX=s)r8}!ilZ% s>C<TWs4@7K`}q;X0kEmf6;HAt1fu}>P)*vGY9 z;&u;9N-5dP)K|pBhIpAaY0zyCOh}`!bz)qexT+Gn@QhR{q^S}^<+y7)9tf7~bJ6#G z|Lv1c4-dW4+3{QlK@gqkK{1P0%6;3s_aiP0mW z44W~Mu%r%7oACJbP)?p6m!k^ZcNFwG0v6DqEdfU>>z3fe=nY)~@7-&L1{)B2JVrlG zDxVn!Nn}D0@`rpf%LPF=>gPgSFv7hAc$Nz=Y=GecK8_dIsKAB5=0oFXrcxBL;=pDs ze2UQ}+cpG-sZ=WdO2CiIF@}pqqYTS4JnzE@pEaf1lH=2@Lk$HHTC%Acwu*G%DoO=3 zX~$@s>EjYKV@p=IHrs?7#yFC}aDLV;sR7Jn{vWDoTWHJ9!YBFur?8cqG9Z(M7Me6= zJhLj^Z1ZOu+-7gBu} zg~)?5V%DANz=$k8Iza zMC3wy@WK4=9+vR#@BZ#w*UwLN*IK{)gt+M?JWmq_8vUc=rwb?D|3^ACBwp@+W9A?2 CtBB_S delta 673 zcmV;S0$%;B39bc@8Gi!+001a04^sdD0eVnOR7EdCVE_OBVqQ;OTTf|VNn%}0TUbh5 zSV~t_N>)@!R#Zw>R7zD-NmWxwjEQ|=TS+fNU@t>pR82Z93j>fN^c4$*9bzU@?fk$OfD1&A)S41R$}NP>!)kAGT~WgME4rlVU5qvHRk zX|+JB`n+O9X+wN`wLmVt+qfsL4DX<@s89=w-CzU%)Pi@@BZG2HL>;k;d9 zU{YIIOkG`4VPaXacoeed|F!4;wtyeHauT|J7rN>HYI1UTi<7^J6T|HP#Dg8ih8@O@ zB*&UM$&e<=na6tt`ti8?C zeEj_?6o0uP0#aU{9%hLp1$nu0tY87L$|#%a{6gQrs&E;wfUrSPscnX~Zfv}chM*u& zfJHVnCnnTNJzA|SI~gRvz@cDNo?xgK91@hN2Nq!9RLY7|cXKX|NHT>8F!1VYsai&= z0s&NjflpJ-)jr+A#26$127;=V(l8Ye0YO0lK^hQ%2_OIf)IuUA!*1QY00000NkvXX Hu0mjf5(7hX diff --git a/platform/icons/src/javaee/entityBean@2x.png b/platform/icons/src/javaee/entityBean@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..f63b23966de04fa2c84ad52a4416fea8deb9bcf1 GIT binary patch literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}3Ivx}jzg{6hLxrL#jtBHk~p}DK0p|QD> zv5A?1n;A^6OMY@`Zfaf$Om7N8uOm*qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZXGc z9#n4%Zns$A)TVL91WY_2COp*wIq-C!ng>kmMZi>j)x&f<0|Vo8PZ!6K zid#v4{{Oc>?7*bf#>lpqFTqiKMsP}-w=TbcI`c+xf!B;1H3aGzA6Yxp2y}!qf8-3( z@qcOE`jSCLL8wFBN!OL_k3$a6QCEi=i4N|DA2Ozk9auWllQ+spZ(w~i*&)WwmwgXo zQn*5$yVI63rjH>CX-keUDtWy5?C{2^N!dYxyCYqoh((Xxh2bNwg4v=Af|(ayD4%4! zbAd&j=g97r4?1!b^c0UWE?A?+mdYJ?Qc%`mjrSVnJr{pmDPS?aBIsgyK%iT~REAOO z08d9@g8(1%iiaHuNirXV`WdHK9coR8Wnk%Vi0I;Q-?1(9jWc9@|K?{LRc*)(_YXcm>{V2|1{DeP?{x5J*P4R&U;wz4l+Ak%U8kchTI1)u2+))78&qol`;+ E0F86ei2wiq literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/entityBean@2x_dark.png b/platform/icons/src/javaee/entityBean@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..952d584e7af090771dc5b283bd1c335999397168 GIT binary patch literal 1395 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}3SshhExv$2J_xrL#jtBIqTp_{9Llar&l z1&}myh3R$4PcF?(%`1WFO+n~2!KoLN5^@WGHoK%2WtOF;xE1B+Du8`#m5JLehB(cG z>P^Az79*T`^?{Dj2gNH=Ji~;5i3h}lr&=Hfp6*lgfQh{bn5w7lzmd(r!1%(`#WAGf zR??sU|LqSuFsZdMvMuIIa1@^roYLm4%P*kLyir`>HRDDNfqKSA)($lS9pTI$IfHck zUs|`mWROu1>QHymb!GeGki&D-)uBeBgS+8}jOk(rmJapgjWW_3SRYMxh;j2}-@}*` zu2ARhw55#cV~9f9k|T^t9&bK7ym4w$c2MB%NEaw#(PMXE_{ghZw&;Rj=7kr^CmHWt zU{U8evU}x&jvNI&#iNW1)~Kz0%=$0^*VbnUn z(^1$Uz{kAeVMjue%m<-<#wk{ZS`%U!So#|xx;Wf-tP9O)7v1^1`F(g3&;4d~7DorZ z73}9Ctt<7z*xxWEaWmOO;4#IY}c)o5waU97Fu-*Scl=Z{{=_sae%pb$6Tp8UY8FdBxE#KRz^*LnX|=U-p}$-v<0>gTe~DWM4f D4b0CH literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/entityBeanBig.png b/platform/icons/src/javaee/entityBeanBig.png old mode 100644 new mode 100755 index fa59d640d44814f8761fd85f788a09c06a38bfe9..48105987483fed017dc019db131559cce9958936 GIT binary patch literal 1312 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*pQzsV_XG;rna|=U5R}&{EQ!`g5Gcyp^ z%-qNrrq?AuximL5uLPzy1)$SnZc?2=lPS(cjOR+OKs0QRv}CT_Qw<1`Pd zHwCv_EO6@82RcR{6t76}3=;w-9uO0rYJnVhx=+mmCiWs=sy5kpzmb7~ajK__V@SoV zq(A@v+cWDj3N!aIa`zZ6Kfx30C(^;)V8PHK+W5m<;6C%CwF*xi{xHlxs9C!_K-Yo! zm%|?Mj@F4sEE;bxba^-K;P1$8{K0SOSR&ie|KQ?rwj-hrdw4s3dTewMU-eU5pq=rf z8HNvSnr zD;A!dn8m5#s`g;>1936m8#*^zjtlA6h}}87kTdUO)X}mDstYT00$EliG9;cqS#4+} zrQs|6@WKx1DJsqH!`}t)zxi8QTw5q$a!%ypmA@;E5)Q|OFdSsccy@5s?#6Yun9^bx zs+e9l&3SNW{Y!&qWzlSIDTm)VZLXKp+iP%rE2FMsxuzAv%7fD;uWqQ|_w@?a_`!YT z;DsL>+`{+#{V2aCCrF2((f`7eZER834m2*;aryak`~C+xF$_!C;tP2OCD5adAjXdv;^~(siaOQHB*g|lT#C7%O!4N zurBN_E;rL;MG(`m8eD}CjY!B*Kn;Y@aZC{rQN-4bo8p)<2rAYj#7!i*D2a9h_t*K> zDHT~noBnvd?>pb^ch2)Z=d}PV{!f_>b}sY(y`ffmY2`ky2Y=_xaVhuoaJ=N^CTsEX za;|!Bj!UVZ!gIsDA4}ieE3<%q6sUChV%35-t{0_F=d!_p)>1dFl)OvBQAcVIJF!*g z(7V82R$vY?AYfsDYvRVmwmkWt zAZ7t_Z`XtR%`<2$c$?<30QBpoQog~KO9gH;9rvfPY#ucSoTmsrO=N%6 zc)r$-Bw1}qr1vDFQtpyBAV7*@lU^nYtEKhyLYm8i#VW$-y0D0xkDh0Tb~M>5#*wF+ zK<+AQ_J4`<&gJ7s39usGdl-T4Q+xVG_&$J?^Qx@ZsVnrPp;*PwMSj%eI@40F6c8;b z%Hbr;ewtLZ6qelM>rRvS5gC@$#afsEf8B=Pd*GJPjXwlTWT;I5FLw_B=nK*K z&ODM9=WPOfTL*EX^F#}+E{2uIU|At(4?<85DE5FyCd~Q@wpR`S=nLAKy0KUuynp<* zlo*pmnL|ysNGXz1qZhX12wO75Prp1RCQ$N_BKIfh<&!OvMMJ1vYeBcL<<~zkCF`oF zO^dLlsSD~vEq>~JOhD=xSbh{Dg)O0ZcjD-?8{E@DmIiNbf!8*}%SruMG#G$1t4GnJ o0yKTvKyIILf6@#Z@L%*dj=B7^(+{HEPyhe`07*qoM6N<$f_V%>iU0rr diff --git a/platform/icons/src/javaee/entityBeanBig@2x.png b/platform/icons/src/javaee/entityBeanBig@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..60bddc9eb2c299db421e1c371194683904720eeb GIT binary patch literal 1582 zcmaJ>drT8|9KW_IO2O7gA_&8y;)-Y=*HTJvbR4$D7TeO)Mk+DJ_Il6?*K6+%TB>f> zJrtaoI3II~A>iU>=G>?gO`JNk)y&O>JsdGE(OEWi;xNJz#W>s*1^36;C3n9^KA+F` z^L^ynY}S>T=?l{V0LU~M^>%iZr{0+}*l!JYbQ`;5(*`HKny8~gE)oMOJcJtqO}MKb zvtuq#OYjm_1^~Q#pTkKzEoK-caH%VWk%sXA%Lah5@^HX~HefX9#_D~3t?2%jUx`4U zM=PpPS>%?04)gkq5fWP+u{zL51FG?e%3lS`!Z0gUCTt^ zID~G{ik_KrT5O<>ATdxSRY_1eR1B&$Qb+|AmqN=yg&b1Kt`V3{lw3Q0psDM8lDAdN;NlPhEjg@i>&s1`r%3QPRd;t2&k zMxmrHK>G+km{N4Pi6&YrVx2xq0S`>d`l;t-Vhbh>}0kl~DABy9XXo|LD zFZ}+eFy&|oU@|*K5ltk@Hm+`QDpUa0k(i4nNC!bQPE^t6C1`^35&=-B0}E?>eh(3% zmX5Qc436oL%JD>Uk2O-YHSQdO!}7DK8D zuAV@faLi9na6K=$rBiZKlYj@<$a;+QHDjJilEA_7jA7r@Uf9S}d3nb5Ozov)O0JAG zBTM!5UwxjqVuvTSot#?sFgf>_pB;9Ro$3Q4H~RsA`=Lo+;Rs)IKY9AJJZ_s|&d}xV zh-~QO@K5y~5Gn0{eankUgoB(|hHwOUAOOd>i4gOMD_k@^x${b(vFgUs^LZe*n-k0s z)^lUC=G=Xq_h3D^9!NAqAN3(G=WhbfrYER2x@=}QHa7$v}Dwoxhk)- zM|@&eEqrqrDeBl^URBL(92wmcLEc3^I@lvd42^|L^12rvGafo5hFkGl8%BUwcH6!V z8#f7(TF~JBy>eM~LHi)*wYidmd&TRR{X267PYU9S+A!C#VC}AfsK8Tes^Td(u$iN2y>yEEegWyV zbL7c}%SYdC?!A;9%eorOFMPyL{EVF5zV6K<8MeQFY`(c*P0-G{oa;Wd=SVcnkArD% zJx-XAC!WGhzp9RJ84GqtnEfRWF>idMU}@%=KX*QDFR%^06d_zyQh4a!+A9I2R9k4`p;Huc;g@G-!-WK literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/entityBeanBig@2x_dark.png b/platform/icons/src/javaee/entityBeanBig@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..9c4b465aa522a597a2b92583ef480a62e88f80d4 GIT binary patch literal 1592 zcmaJ>drT8|9KW_ml@^Py$!qnfx+1KPqm;I{b{w>2Jo-u{qhrQV+M`ssUb#DHVRLKu zKyXGtH)l3d!9?da-6)xw`5MkjG-_~*5;HRw%Z54^MbU|ynY$w3{usOD?)S*&^ZC9$ zxps@`rNo5P1ONaMONwiBx$*S3g86U*y`)fj8?_p*p?r1%1qz&aH42tsb{A?z z?atOCav*9azcVR|3CmI%N} z2vw&MJW0xCw18TiKtZ`!E^7wYV45YQfA3x5tV5 z$W@bYqY*Cgkd)oyKudHQ0WBbQyPa^6qNq?+pe;};6iNuv=PLDbr7Bk{E6B@Hh3OsyD@T&Yp{ER<49j zMiQIrzveuBMVlwKopCLFnDIU8q0LUvuI|r_UkU)seI>era{rIjj~+kHKVgYCaJA{1 zTB>>&oI?ZM0-5#R8CF=7bdwS0CXEAkc;Mg6h%Yd~Oj&{wmEfA>-P7EQ>WxNg^ONfx|lzMI-Gt5r<3W#1t(p46IW?XbVvbQj} zJ^?wxZ9B*eCm+=em`@sR&xu?M*fxatwLr8eYw%cZ(z5t!S!GL4dfQF+^?3~NioRWF zo9n#vGFa1kH?2#3JTMBC0{Isf-9p~jQV9WBs+tVdvEU%YxEnEn!@IVzqd{9@8NX-0 z@IY53eDyAp720GdGY8goZsK`7 zMnOUY>Z^Y($~Ld)yvcZTp=jra!Zm^I9qGJBD^BE8`kCcRU+EeN@|=~$9CLE#NbrTl zwqnejxpgGSS=^c`*JL0j$F1bA(@vH43X_Mk4xC5}9Dk5~+70xx&IQO}(-n>jA8H)D z5ga-{+^a~L{~*}(`|%JPuH;=0lv#!X>hOFRKn(eRa-fF`DzJlX2A-Go>>=hyD~MVv zLmI6+yYIcGfzv7BAIMdZlFHScsZx_Zaqt0rCb8p zWA2WNm|OeVYqgiJEn|PdZgZ2bwdU>pqw|OJtDD{zlynb|6uNps6UxO7;HO1BrKZl# z=;6cLddE)Q$NDyIO{f~}Ol6%4^`#k7KIy)CKO3o!dsZ{X&uRuHaq{QhDViwiKhK>GOS_QC9AQ|w<}qBrTjEUbF_ E9~neCYXATM literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/entityBeanBig_dark.png b/platform/icons/src/javaee/entityBeanBig_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..349feacca909013c45d12ca95f556814a48859df GIT binary patch literal 1311 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|}?M>8i=LjwzQa|=U5R})7wOH)f{6H^Ow z16Na5XG@q~m;B_?+|;}hnBEkGUPGLEK`9}(0BEyIYEfocYKmJ?ey#%8$5xp*-D2R1 z(>$o&6r64`aKourALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesd~;9w^s}dj8i;a z978H@CH?vT-=0~QQJA@xk-Num`3as_KamdZ1`CD`(Z(O<0{598tyOsH@P}dkLCxCb z0lE&%zZ~|6ceGACV$pbmq075*2Y*L);}3pI#}e6&{s$M2vmFt2*u&fL(_^E9_^O}c z0_}_+-IyHTa2>h*F|sMAQNko5Y;s1YsK9#Wq%<8lY;4wuIw4Az78=y zx$*}l%b573F>KV?TFbzG;K@%858Fkp{00n`b_pt1RxzYj2E6++W6N`UOUd4e*UpMH aFfcRZNi^{FF6aye6TWs4@7Ohkapbf?Y7a>*EVB!H(j=QGgfndo# z7k%IN-#+=+=*XeYj@=yuL3Cz@r5s*K_YL^*_kkPhGG2O|bip}{N={X_ATg+-A_N&- zF2fv@)#=G)*iR6?2eo{`DP$iP6r_h_7Za-KCT0^v|3J-@m2v2RA}ni0f?A#blmeQX zpvIzECTohYq7Bbj@bJt?UYQwJc$FGB2>NRR7SN$1gPJ~J*g`EqZRiSk?_Sds*nl|W z3F=l-h3qI0kp)3C6b&j28v!vs#75ajoP7jv3>&7IFwKU8EGIC$z(&F5L*ZzaS`u>7 z&}J-rN>CNYF$J2gR;!_EIE1V+&GI}?GaSuvL5v96(}pA0f`+}fr656Du{6`skO5pp zxrnBm1cfubRf2AA$r|=%n{dPEnrzZ+h;d750khfvhwAzk+IDjAcE0~9Z0DyyuC&(;WeTDNWd~V#geF>D9IYS+*%f30Q3QQsnxUeqy?+Cq%?cUAc4R|=87V0qN`L2I9j*j8_otG3TYYRjc@GPFC_f6cjdh0Wt`w_J-4TfT<|HoJvg z{flxXK@gsYGSXna_D%7x_4NVYzWT97YQd{~zMp%6P1n!g-Tb>zAe+dub|-kfWAW+c zWMd!su=h-yJnK2rMOKNm9`NK+x!y-U?^`Q@ZPSp9pn~fJCB_H`uJya!zb_c1ezd4 z-8}JBcz)$~@7(H(>JQiMn-0BuIq>ll-Tcw|f$wge{QJ@q%1l`ro%lNY=@_YeVwc&%sj$i-I|esX^z Nne>SCLF$>=e*g*&j)MRI literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/home.png b/platform/icons/src/javaee/home.png old mode 100644 new mode 100755 index 5ab0f925cf2d972ab149a723ed6954ef43b3937b..e808b515f56800a61e4e326b4d6686119325b1ee GIT binary patch literal 1480 zcmaJ>drT8|96u;3)7C&h@fps8PTXv-S7=KsEiEmNE-PSdLd~Z0xcfmHyoc9=7TkDs zV<;|@naLhHvOxk{M7B7MnYuD{8zg|vxdgXmK8R5#nKA}LFzv1gxIe}&x%)lx`Fy^w zPi|jfey(Kcnxzl~NvwGmyRgQD-{{4{H*qY43(IOg+sSWZN_a2M0mwu$#Q?Tacqy<0 zoUGi_2QnZ?w88Cg@=n`}I)b6(co-x1QLMm*po~l(ixXvlhl@d}o7N)_&IAzHP3n;% zl}%w|&A{c(tKz`6s(c4gRYqt@B+~$A_;i8*1$Z3xQM+l6&ZkFabalc$e2pUT41_P! zBTtfY+6rMa!vR<&SIGzkmIiCIa!iG#rDL06r2jU}A)h>Pc09g2FrUb#0_&TyqDrqyaug%VXNWdcIxsib+_C!;+{a|#yVAvib7 zyBQh|E8@jWIj={AOrMlMvGcODXSPj3!%!d2qL^F}E@=*Ev;9AmqUO;a-VUDT`=7!d zMV#-rbt@5$l^HCnY%JB;uZo=L=>w! zha~WCQ5O%@PD&ag^5FNHoA(@VuZ;?q{V(WZwx_Hv%_?#w_I-k>o3)EG&9)Ul!MyWYOR zzK0J&na5ToFR@>UaxA-=)G$*2G8VDbu)Lz8Az+M-%uQGiPFLJm<3D&H#{bC|h`%`y z>s;5K6W=*;d%9?mkzUcisJi}aq`0Q;RL|$x$E5z+FJb@TCbj?T)` z1)3$NM{j?h@LK-ze1|A#76->d1t0vnzbts{@9U@QFG^cpnL-Dqt~Axvd7tU8wIv#A zu9Om`{xZXvzr+{b?0B$xu-nj5QgyQ{^ZuPgx;1DZ7x#_oNfyL3bb=@;*!4oZC})^j z?cQWitJP#~`=+k1R`gVdj^6JGyuCd=ExD)qQRT2S6+Mxb^!&2DOE$0ES!W+Qk$?tk zLgS*lcWc=G;Ei)X-l-|ro_iofQpdeRm4$+j)=oUW*K~=w zewLUV6}c`40^)*efj{t~IMEyOVLIvB(2fS>epp?2;O6*n?jd|<&*Ar9t(#QDBzm`m u$kOP~GAx`xnp#yrq-c!J zsexoUU%-22!hw;|ri9I<{|5m7a7s*Pb^pLq|Icz*c0XEnJbzx1a$}KvW|4lFiB6jF zq@U=lq>N*v^R1`yuc-2|sPnR^NC6|;r!$0`|IiZ z?dtpN_>=&W=AM&bPyeYRl-;ENx<@HTQ2)VK|Hx!F|1(EkYyZ%6x>*E|0000UbW%=J z001;+fRC56z{|_b*Vo+K-QMBh>gwz5@9_5b`TlyMATR&`0O3hQK~xx5V_-xB42%p6 z3`{H>;(y{CEKEQqSb$k5B*!Ajv_yazBET$DURP<68fDxh#S9W)60T^da&l0x($y^F zV*(1Wgw_6=oU8s%cET@$yXQ!6xywj#Vf1J+yJn#FvJfF|!d;9$H=CHy7 z%}xJmia;RDnL+e$ctsgrlU49nrcy1y%SJhaE#Cvh%N1NHi16n_aUhB*;tIfUkjqcq z*9-a}5J*R11Y6Dy4I%R&5teJfV3i^X%tj!5e3cR|FA0>R;y{5=OhG?y>qMi3dBRJUN^m@F5m_qM#GxatRrSQz#Tz1py051vr32BH{2JI1djDjKIiJ#d59^BbGTW zE6_n1Pb!qig^(C!P~^rzDRK%L&h(EGM3RrPV%di_!41PHxe^?J#T!am28M?If2c_G z5iOI4gMa4xKZRuxsS*$u4$7buDGwf8ypti6giMoyTsb6-fS}~%F0v9JIV4MfBq$mU zwRNvh%!d@R&)>sCL&;3BOwJYaKqj4nh6S)fAs_A}i9x5rZT9ja0RY331Q6%}bSmA` zpXNy?(zY*i=@2hP1d8R$T>hV2;wQNVCx|3)WI8An?g#k+Qb>e)Uolzu>0CTMsrP}) z|8y>dPjYc^GC0Fr|7*_6SFm{u+mEh=4nuiBN%)3EjRYL=_Th4Xx1qy+pM;0&eO6#;Oe>eBc_qFV;?0eG7 z3;lRz!Ot8Eo3Y9A-ZAy{xoC#}<6)zlLf1H4oOcCssA|bub0*+R>QZ*gc2E4NsRt!3 z-g}FEIy+yEM;h6f6&738km>OE;R15eSGMyP)A#6eiV!F zzLj}DHgnZ+i{TJ+D-IJ_Ne$MRY+iL?(0C}}RJKE4`w2RSZbe90=QnwBV!`}Iz>%*+ z*o5RO*1bS`liP8#$`QnuPR8X*+cB9qd)~)#bD-5AQSksbtTq{X%D59*2~uh{(`-1e@3Udam@kmb1>}Oy3*P# zd4AaN_*eM|)7pLH9K6iJV&>PDvlp(9b(dTG#2_=9<0`*3=9D9Ayr#>$M;hZNOLAex zrZsMsk!q8o?KP~ds2W0B>+qSSCvG9?14O8Ps>FXfLv|HFvE66nXrqeV z(B1l|*0}IT_WT?1bW>J+zji!G-xMW0X_-1~zQ%Br(^#*S|pLT0K zS3NV}V2sXb-k}_7zuFZ6gBGw1QJl+`8 zdCH0>~}tIJhtBImHBsBQ@pZm zNl(3z1@xYi6+_cK5Y$<1?t0xyZM~$uFV{+%_5ijsuT(EIcMhd6T#7=veTQ}_0k+Fo zhDk{3lfJ+y!s1)qqP}2KcH>Rux}*P4Cc7N$8IOG$oLT3+^6h~uo|9+AjA>7I+stY< z(URrg4&KgT>WqdTl?a!HYR(`=wO5GA~y9z?Q4FFr}ZJ1ckX8vompP8f(Jd! zUox1S%6D}uY}V$4D7rm>5Q^hSR=RSrHL3yG*3Ze+>ti77wI*#_nqQH%-OWsfNuW>c zY-CoVy=!Lhxr~V2dAhPQ%UTP!qDR!P|?*#+w%eu4=-AW;hfNp(AtXpqD!rsoC3$6 zU)w2rT}zD3y4({=>vGc%C*7Vw6!=H8Z%}N}rzaGvbt}cUM!4!WW4H^-)=vvBc_-B nbadjt#wqbk%-zxXP9rl!GskskcbZd(;YWhW2%}%7#vc3+l`WZR literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay.png b/platform/icons/src/javaee/inheritedAttributeOverlay.png old mode 100644 new mode 100755 index dd829d5d4a0ba17020379b701ebb5537d58282b8..32a5d15cd5b83f8b9387089d9ebb940373ab98ef GIT binary patch literal 1123 zcmaJ=TWAzl7#>J>jiG_1V$DX-;|QXyJD1&Tl9^_^Yi4$Jp_7Kqipi6iojFN{Waf-B zC+;Na1+)!Rg7Hxhf`TvRp)XRfRWXGaE48ioBtB?M6dxogUTQ3w>6w^~KDZ8?ITya~ z`@jD`|M{V_V|RUBV;x0N_4z$=fy|L$)P~7_^AlesQxs>raTn^tWz~VyE*+I1$eU_E zEI?HsIdB!WQB=(qqu7nRl`ljMnT#4>7|*l`o1)s%o~>$w5Q7rzH>?!>@cbnj7tWy|F1TOC5LhnG#^W)9h`A#cR=t?zZmlTD(A6Bn#s;!Lps1G6 zFiz3L>FX3sdsWtQSIR^R#(JvF@(dTGQ~@f=`=O?}igs}UzVZ7`VYfJ9L$&~2H0)^P z;`+7*p=?odpo)=GL};i|#m)hQkvo8FAW2~RKEu*c+1;@WR}?XCxmdL{n3q#D5nv2M z7vl*&-Ym6eTU%NLp3gQ3yxf!(BstNX%_VbEbA>A-ZPGImrws1In6rug%rXl6ezNN?Q z8|81u{97MwXD(+x=>6~c^T~y&@pC)>y|j7#_lrU_^K|N$@fVdlnZA*ksELjzdU}pGeB-~k z@;5jCl~`PgM$oShLSQOXdb#*)@}Gz4+WOGhT4Ov)g~18`)#2->sbd>5xbfqkdrmiG lntMwpBNL5W!-rHYM@^%zL-#-VZ8CWF`D};$V|(wR{{ilnd=dZv delta 124 zcmaFN(aShNqLhW1fq~)e-A6${ia)?7#PvTItmS4nt*h`Lkiq7nK|fH6sU*lRm|^CB zhi5l{JZ(=G#}JO_l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|pxp}DiExs!#txuv0@tBIwdiJ6VL91WY_2COp*wIq-C!ng>kmMZi>Tydyw~fr0Uur;B4q z#jT`2|Nq-FOI=_}n*BGH^_xOp^39fJ2d(FJp~1vXzk#hByp z=I4tmb~A&Eqc-idoN=Rt)k4BS;s{$OS#;o~Y z!CG-sa)(9aL5VYLU5!udZ0nb>g=D+rvPb;?_06@;+cm`M_J8@L1a8X+$r%!o2SKJa zJ~5l_p7Q6{ubVt8+^1#n{rLZX{RPPZW+EKX~Bu(Q^k*G4Y55oO3y}U_wG#64UXk z%df9bk&Cl9y6~acC&m+dSwmgT5?H1&XTE51FYZZK`n-1e9N*&$|Eq23S+GK8MyuMi zZ_m%yv!$hZB>n#_{_bGp7LAS>8#wF!e-)p{=8zM`B$m@u|L;%okN^A!m+fZ$r@VB{ ze;yv@2MzxPc#Uby8bg=d#Wzp$Pz03+=7| literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay@2x_dark.png b/platform/icons/src/javaee/inheritedAttributeOverlay@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..1be1b612bcdb8afc6bc93c123cedbaa192da1ff9 GIT binary patch literal 1345 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|p*p}B>lv$=)2xuv0@tBHlVv$3O-i?NxR zqq(KCnITNCOMY@`Zfaf$Om7N8uLVxMpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZXAa z9#n4%Znv1>)TVL91WY_2COp*wIq-C!ng>kmMZi?uxJGv=0|VnWPZ!6K zid#u32UwyUawe}(PT_xaX8)&m3KN(f&W^ZZ^ymNo`HeycnvP9pN?OejT372GIgew) zf#37%?Q?eg{ir|Tr&z~*g8)eb#f?83Zk+X-7JW0^SHZQRy_d7aF=xRHu7Go*9XB(d zGMFiRyCV2-Lgy8+bI+b9CJT!_NMJ}5kXB)v63n)$kSWP6%bFo&!DTzd!=c_S6|h!tt8BvAgNIb&6O^XuojR_^wrx)H)W*(p4@tpXNCK;EIx)?3u9BX#MG5fEM(l&A)KM8EUbLkKH(8tqQGq7R~!?h z7AQYzbUNp-cTY&6!?wnZhAxBUI~n+`na$aynYo395C5;{(U4GKo5Z}5aphSf0p4~s zuQV@NhOYl6B?pynx*1RWX%>8b>EjFa!V!EjOSZ_&XjPl`?fLn7wzM>lr2oIg<1U;@ zTELiaNbSep>+uy*3>z~!BQ|jU`}vt)=DUH}UD*%vU6KF)}J()+fCNsRYM?qk5$4I#>IRRr3X5S7#tcH8Sb@ZzIek{5(+BRJYD@< J);T3K0RTv9&?x`_ literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay_dark.png b/platform/icons/src/javaee/inheritedAttributeOverlay_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..c343155d55dba4c5d89e725574a5e242761e5a81 GIT binary patch literal 1107 zcmaJ=Pe>F|9G=`1GbCjp%02iR3ya#FnO&E42Df#cS#zls*_K=(!r7VU?y%0hY3Av! z79@>ukb1z*$>)^0uj(5mO)V;G;E<5rdMcz+mf?7wXIMYu_j?J#YmXRME_w~SsiYu5Td_0~YsdhOqMSiPI82jFS4+^% zby>q+YZGZ0Qw)A(MnQ8nP5}aRW_GC{qwE zC}U)$5E?9Xu_uQxvUA7;q6l{PYKDpm_MR1ZA|b>L8_R|Q<5HL=0zOSs1-}@KiV_!X z4TX4)i?y_hqCX}DVmucj&6n5`S3=5=4h>x5s(-j0Wx0+MbdyAuprs8%wbMd6SgBah z%IDHrR&R}~md}MR%VkJ1jB~Gl-E--Pn8#VJyOwO$eGd&{c8j=r^xn~Dw7`NlhB#Tz|!(^BQsEO<5gXMcKGJZ)UzY*ck@-xPkx-6Za==K zil*G|rg44tt~z~s+r=w&k!IJ#tvl0)s7a3-wolDUQ&)H1t`9YPTpmxrH8FqTEmt*} zt$$O~3A$a}*K3|R70Q{#pYIyS-^^`(-}61&e#&_Gp#og0%q%T_IrnNIQe9gKK6y9Z zrX5?VHIx&Qm)or4#atvCD&0``8BRQTkwW^v5RAdFJt0w{)wc G|MYKp6ll!= literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/interceptorClass.png b/platform/icons/src/javaee/interceptorClass.png old mode 100644 new mode 100755 index cee608187841ef61da87ee2e8829e915005d916f..3abc90a3d3deda8b828afbb6c62cf9e654cc5618 GIT binary patch literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f1LQOEXJXCsPY^b4x=*R}%|hSi4vlm^c|) zI2l=(7{T| zLG`BKc8dv4z4}1M=!4=FDV||Mz{CS$!c#4f15fvdWGKMMJ2$;`0+%{ZRd*`~e$WY`Qi+P<`OaA9uBx zedX5+!5-C`aeG8ovpecMT4*LDqU~~f!Zm@(XY0=WN;|nM`^?$Kc(wO$tN)vSPHVI1 zWBzZ<^e4S)mH(#!iEbY6%%leflZ_FZjZ zO%Z0^2>x7Ipx-AsE<=^aG&u*10f5mp_`)ARW#?Ri_KNVlGWtW?t6yGklUndG9s&})@ zoVS5Z-YMxsKPP^o$sVrb*oRQkRY}JC&E8g=OoH$m#yRUrwuw&teZFVyvPx@b!kQ6_x zs4%6ex!S-~*6QrFRo9PLaXr0WpJy$5_duU@-7BlBB5DB!GkM!mcNuT@G$@$xOG`Im zT5aLpZC|T5Ut|h3K6t24xywPhv{`aNbd`KwbYHA&4fp3Alfw5$&CPrg^M1u8&uN;u zuikUJ+*tYi1`ki{UjOzz0sn4wd5AqcUZg9%zbZQT_H^IHyVD|PolMX3*YNkQXOUot XTcvwo+N-7;phDNv)z4*}Q$iB}4F5Ls delta 776 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 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/interceptorMethod.png b/platform/icons/src/javaee/interceptorMethod.png old mode 100644 new mode 100755 index 689653e68f49bc5b261d8f144370c366850706a3..86d44cb5c3712e25daf024e2fe4efea397330e31 GIT binary patch literal 1468 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~+tb7LoS7gq~&b4x=*R}%{(S2s%w6IVxb zH#ZY!R~MLGm;B_?+|;}hnBEkGUN@Y2K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtYX zJgD9j+-`BfsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(`t$5W51_mZWPZ!6K zid##94Shrc1^)hjfA8Hrt#TE1_K6oXIC^(p&}8lGRJ|pz)HEtK(d1ay3<+n)#KffZ zMP)}c1cWnu&K+v=66RTPuwbc1HM`}`;{MxzfB!E}d;jf@^P<+td+yG>In(^}^YcMV zMSjX({P@srPVet3hV6`#8!qeKS4)umz_H;syQ9xCj-~!z@BP~{?WDl8EzZkrRy;p) zFHTS6{T&srSmx`O0$GAh5_Ke;m8aY+W7po?-+IBwR&)Q4RL8>qMJ|V;4EF~7oLQJP z!{~I=q)#3X%zF+-oH%)mGw;QLb3VdMN8=j}CAclOKXTu(Wa%zW!AX1K{`KB`cuk#ALi)|L!V|`U?2F&N@@nfl9=`nK*Urs}MKS%m7$jdxEE1aFqxpoH z@eSK8!&>PtOfOt7cpLEB{7;yZ5Pa>f%;rgF8y6}h2H$6^{ik~KMb!KiPmb@mf4O<; zvmW(J=hJ^=%ua~BvdS_|;;iz6vQuJ>L9OgluRdNK`*crgx$v@V7nY<20qgHY7T({t zc*m&?osk*!r{CC5T;y>{v;6#f{b#PXq&y1g4qSlf^@DWgxn_7Q8GbOyUu z&PM0AdQR%*p=yRk2Pes9``^Y_bi{-#Bl3xC&G o?CiBF>A}a}*}ui({s<*7%u04-TNrcD2~?hXy85}Sb4q9e0GjzQfdBvi delta 785 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 LKIwzx3$OeGY_q7F delta 688 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 ZDbtku^Gn7S}le*ke5zs>*v literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/local.png b/platform/icons/src/javaee/local.png old mode 100644 new mode 100755 index ed4ace42f02bebfb0edcd23005bbcf82aacfd69c..5c7de535de17669c1319786a626e0afa49bd6520 GIT binary patch literal 1418 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0K~R|`jDCqoN!b4No%R})7kV^cRvHw#l2 zH*+UTQ#Y7im;B_?+|;}hnBEkGUL%}(K`9}(0BEyIYEfocYKmJ?ey#%8$5xp*-Qwtm z(>$o&6x?nxz^PXs=oo!ayduRjObD2GKumb51#;l&J~a=R*o%Ov`s(EHbOr{-|DG<6 zAr-fl1l#6c4iMSfr)8bzVz)|#Nl-C0bG6Y9d7cf%PF7PEadj@OzN*EeAZ8{pQA_Pg z*@}>rK`(;-IZXH9_^3E7AR#xigQs-Ps=}tX$9MM0-psTvoY$v%zxrO~_q*TcskAKk ze^8))-kxf)zSM(873?x!lYc+Z+rjlJoyTd$WR=XnUcZX8=AXH=!RQUEzxDE{!&kN{ zFW%SFB`$c&@_d4y+$3$`Rzpoef0r2HtfsC6yQ#j{`1XbFDl4}$==?cLChVSsevj9x zMU%Ae6rZ%bc4WcPIW;?)meyEJ@6qP6l<0YtHZ`l-R7$fapm3ST<;|Dl=9pS$)XSQO zefVv%V!@Q1Q`Fd3v+Vi#L2T*zw2VjJN-ud$o+y+3SM9sDM0m;?y*Z8ZxYmC;Xp!Bx z(L;D=38%7^EZY-3mfKthmNon>^L;1%W`2bFEUECtY>U$W{Q21bc5}E#pUmTR7mZ9K zC;oofA1!~v!e-g|ss1jnc&olVy5%$>`-PRH?_+JPA3`P{Loesddh2)lwtn%agCcjU zZT*){-@I4%SK&2>-{K43Kdip+K>FL}IPtgZS{L2rsJ1QYEWVJC{m3?K`ysX-+2dvJ zFDX|=d#Wzp$PzO2@g>K delta 759 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 delta 752 zcmV_*v}sPWZCAH=aKMalz>OP~GC-tgfn+&QziMB= zdy&zmYg-=w2LMcGb^qL%|G-oK&2ay*GFo;#VbW}viB6+aRDaU=*VXpg*7@1i`P=`` za#wRac=CXF@`QQtae4BAdGdmK@`QZvb$;@JfAWNX@``|=qk!a%gYk`p@r#HyJc-b$ zirSot@{^15m5=e6lIEV2Qb3eaLPTb5aA;w0^KsYs+t>NpPL3Tyu$ zW@kcXYOn6Nu=ujD__eV3wzTxRwfMKT=fb(@#k};xy!gVw^~l2Y$j0`~#`(&~_Rq-p z&CB-D&G*vI`P0wz)zJ9YbZQ}V=5KWKbanE1b@G07@_&KY_}$s}-r4%x+WFqw_2Aw1 z;@$b;;Q8d?`Q_pI zS!YdYuS7lV${>EAwH(s2eR6V|(vAte!Qvo?afrz)Ybh&~I7ImHL!2%quNdR5AY}#j i92*y(2rnlq%=-YkFDpVcsl&Yh0000 zC@9FFRftTM`04-%)~8gUuOOl#SWqy4P==~ZN_jU{?ECR}cddKRIeUHIxA#8#TkEE= zcWhg3WNw5&AeOV33_o~9>R!Vo@K>f(zJ`}IkY^y|FOGoZTq%g~;ETgSBumJR1pPoR zKOy!W=#D_>+Xy&;P$1w#;faN4t`37%2qiEZfpDiOBwSuJ2qDA4NP&oo8mp;CAq9LY zDu4iB0SO(95-^og&|kTO!&64{$b1xSGtyl_fdzyh#6>EEF(Mg7K}EgSrNDb#7=uE- zhd|L()L%sf0&FB*ECrDSG{KpN#knF$WHgR|b9KXQMB=eH7Yx<~gL84l;VD=$1xG-B zcu;UQDL;bZ$ME`)3qDa%Q4l1dU@&sI94&W2i=~km9GOhUVDT6{-Wf(X%MwHoSK%y@ z*)AwBKp9UekU#>l2&q%#hKu7MDhjUjuNH)okFp}!hiif_45Q#mFgP?;*U|zI0RBHz zDEx?)L4M%h_5M#`87DykV*EgvI8Mrg2Nz+hOC_Pur63m)OF3e3%)%|Qqr{L{7A2M- z>2#z+fI!3-%Vm!5;Q&BkiDVF0!~v%m158UzDqJf=~iyW`I&bJjnNwiiODc9a990*Fs)Y z?*o^=cr6}_axri*7~Nd|Yt9QH*gU%JN7urKkG=;*u-T=st3xbvK0zQ1i)GZt;cNGfrrGv+1BTlW^X)StAY9CEfv$f`y5imsjE2O zGT1Fg&SekM*~MFljt2}cvasvp4n%0K$Dk8W*G+HIX!=G*TSj9T%7Z<7diLhX_9osO z%O6`??5A#>Gh6#KGWLPfSkK$s6*cEC>X$^67??#S+b3^Ju_^NX{WrvyDR~X@28=%L z-h+RtXA-?h4UFQKC}i|Lg6c=d^ttgAai^s}nh8RxF1Wjx=|YcM~l zsIyB$&D2u+6LcqEB48m`2}Z>md$s6vFwn8lNYnp z&^y%Lq_-uL#;_R-+f{CAcl1X)?5nN}%R2+fzRM2VS(-S{M{Bn2U-9q`e(51Xz^EzTr%GPO7Bfco!bHI=_Vc4-_MY;Oc? zoea(%`7GaQ&}jU0^$T-%>`$?yLw~TZmX*DjwaQ@iAKU(fQ7H>5BkyXxccUX1AAZH) z*sHRh?=qW^kBsK9irpi%#H``&hw)a>u#lil@qhORO54mCbtnw7{B?$L@`RUx6~{c2 zO`+OU939|a@NPMrEWM2EpC=h-vc=8)8?jw)o!z&b?Qsk#Y+-Yyf^!alW^_34+nTUM5wX@54-st+osn(pU#CFQK(2$Qb7P=8h%t1L=usA?FB zA#RH=Jg=dKRWI$FF7-~%nWwAv$2$F45ZX0VL2L`YsG9le#+%=KpD>c@+NNhmEA^;r zT=e#YV6>WqrskPbW)H`{kCN>L@=B{T880*Jk8dz)VMg85ZnF6IJ~?~N?yS!Vvy(o% ztdj5-w_vVTt|#>6KzHBzE@7G&cy|XEo8B^GK^HD``>9x%%8{P_w{p}ZU{ z!dk6f>Q_H_{$`5kLID%KA!!v(Tm3SPqPK4%Z0Vimh8+=cM<(Orovp8zkDuGU$NcWT z$lLwH?S55$#s#XPs)GF$xO}~dTVzfs!YJ?F@|dQKb=FaL=R=CeuNx*LJ_WWn3ZKb# zf<7w7?UUt3jzon%tq}AbDHpask)BDHvW7`|8}i@1!lXAOHxJy0Hq&rLMeDm8d5Vp{ z;%c*<0@Q)M2bGqEj^V!Lb3b?w%iFVie%Yz!?EW@2?SkE$$>A(bP15ImIMbAC_{KJ; z5?j31WX-YCN2O)bA0>R3Z?K%%17kKD&DVxjMO)Jf@fP*$@iup@n>j6KnQ_g_FVb!M zUB|PPa<_AvI;26w{U>9niJ~T~s;{%HO&tV$4Op-4do(q#DqGoWd}pp{`pwlz>Xh|A amLNLJC$6Wj>I8IuWtQg-M&;J9)c*ivU0YxP literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/localHome@2x_dark.png b/platform/icons/src/javaee/localHome@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..8d5a8d8ae387428d9d8c689aa238323b3fd0b910 GIT binary patch literal 2015 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 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/local_dark.png b/platform/icons/src/javaee/local_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..e04f7023c59a420b1d4ebfc1a63bae21ba8570bb GIT binary patch literal 1415 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~AFGXn!R6Gsbkb4No%R}%{}XCo&IS4%fn zLlY+hXJ?pRm;B_?+|;}hnBEkGUMHM-K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}{$ zJgD9j+-|YNsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)RntP%d0|Vn9PZ!6K zid##9&--6akf`(a*nKI7=Z;v%?l(*v?MiV^4jrtR;>aYG^yujBgKtvy{IHi;Uu9ru zI5TEPmeO?9mLH#uE=qHHM6N2)J{WYn&Mtqu-dhRv`OhM+eXqUuy!!Xv`|6yEFX|0W z*!ORneBb+c9la_aCrH~RYbedzV#e0McwSzkHr{WG-uJXS3V zQfS)uL?)YUfvd0Ly@Sn8X7fEYxqeniY@KepD*tNc77MSX*{ZXmXK_DXbJDrGtUQ*m+&U(PmOGCf_`@>-eM&f5p4C?%IZ{QhPoNA&yN&0;fr za+J2~J@lM*xS?t5i_JgTe~DWM4f{wEUd literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/messageBean.png b/platform/icons/src/javaee/messageBean.png old mode 100644 new mode 100755 index 37f84fc29e049cb40637ca8da2fec203a7dbecb8..8b2a265728478acb73c439db629ac32b36f884b9 GIT binary patch literal 1235 zcmaJ>TWs4@7`B@%v}uE^GPDJ%a^f;r#bU>~G>K_wQ#&P*NL6Lg7G78!`y?@~FST9b zb^;}hKv^FU(q1McSfxGifW)W<64HcLc9EDs2p$j!m8}}$fhVZCNfjCtyK6cg2$t+~ z(f57-_y6ZVJ~KV_qR0J&8$l3HCe7xo5wqWJm-T&WYlpK2uaPPk$Ca{C<1~mQ1*HT* zM&c?k2RUJ3?j{^X5Qk697mPyoC7M?xg0nG%DXA74K}N?+mE&ii0ZOnU$_f1U%U5t9 z3JLsVBpb-846KUjMGYQboXYcyGkjdY$6f%VCT$5w(BOb6&B{7$Ch%Qd+M3(jBo1~V z#!Lc#V5*Rv28^OX5FsLdK0t**G)_%1##j;ijylNOKO_H@*ji`kPMXQihJRTq$toCWawjo$D zFvBKrOMnnXflj7kY?PUd#G=s&ib{o(@sT7$g#+=Ci6k3}2isg$;pZhN8*Q%ekUP?m zYj=XAT9H|(iLXInQd18b9(%gqwbo+4 z@1blpyJmH@{_EM(2!f_FY%*{DRJy;jGv+u_Khv04>*Bv24mPP&{jDnNOF=jL z!Tav(r&@E3BiOTDt1;{ny80+qLpHtO#EnY*D0bShSq5)+-ML+T_4~#)f_=CVTO6`wi(HUq1Woh2>_m z>GSze=9i@dy@%hpzuo9}oof8p+dA)i&MCTvCx7S*9ZdLsMoW)W&9x-UI@dAGbBEvR z>RWe}9;;sE%s)2JYj5@*Iy^8iu=Z~9?lPRfTYtZN4jmjE>~p)_ r#Y(ekUBr)L#G#e?lTo=&5eQa9wqAkq_MiP9*uR-fYKr}6qPX-A;$D)x delta 642 zcmV-|0)73{36KSl8Gi!+001a04^sdD0cB83R7EdCVE_OBVqQ;OTTf|VNn%}0Tv$k3 zSV~-2N>^1%R#Zt=R7zGx)yRZ~b|TS-(+Ixj4t3ZEtFBZ)$IGZF6^ac6@txet>?Eq>EY>i=MNOe_D~Jxs_!c zmZPsCCd!&J%!eM%lPJ!fHPDnN(xf`om?YMyJlLNs+N3Z| zVt(4LH{7H#;k;er#%AWWJm%`}>h19D(sb^|MegzQ@Ww*$&uH-S^zqSd^4Dea+I{rg zcl6$Y^x~cP;)3|&g!tu%`{{}M>WkW?F+H!cZvX%QB!6^LPE!B?6dFWQXKHYDd3%3? zhMLFB%+A%<-s9u&^Yr@r`~3X<{{9v;cV7Si0Jcd)K~#8NUC2|H!$24S&`I5OQmp;e zwr$&5+xq>@Og5+I^gdohEkP6#Ztm>us-=iULa>#6`Tco2TIWM{R+>IP-aVYJ{)h7N zJ6Rn4je7?tYh3JqeZD7Boo1tcC?>HzoL#+!qq%b0t0JKYwtKf9nM${nkB|@@6lxbP zx7A{|85o8QBtMSzogu({G!C?KT6KV)jR|mpHvA^I(Shcg49PU9MZ+AmiqW}N^07*qoM6N<$fdrT8|9B;(|WB3A69|dwAveCr$dVTjsVYU^iwydcrb>iS?k5cG8xE{8Eae{-b zM29Rw#WjY@iVe_>s0`8BoOYVM;d_JG=>yz`D zvzAPYnis|4aHbhD^%iyoLT_X^`*l}TJY<)-%wj9EoGfHKD2;Iz*~tP7FyN>IvtX#b zy!0HF%Hf2~cV=4|tI3GiNL+-5Fd{Ebv1|?}HQh_0wi1j13NVM0(13SOoCX1>T?6LG zO=1(J!-|}l6*RWIA}iZgQDRfu!SpmB)r+tKIL4rW7k3eE#H#^EbrE(Sx`set6vC8f zz!ynbO=dtx(ik8Y$%QsCECZBk5iEygDtI9v5yMhQEQMgH5SAcfH3G|lu?J+M(e^^b zqR$wM#hx@^5yMaj1bI9jkw+>bX$J(W)oMsAfg}pfkhNQDe(ly>ia}mjq?jn)`bUGj<$4S^pk6SPbH<=Iv z;bu_6h8gr4kQER)opwa4Q%dAIy-KB2YGHV>OsjxltyV76sdPHMUYs$`)swa|93z-< zuKgufJt;Tj1e{_c>oMB77PDv2Bo2&Lj5sIHMKP(~7}q{|F3L%{5St7Xn(M#jJbuNR zC$yb#Eqj>oJw~u*r&(9`t!n*%!ARIRwzS3gp-b@)9#a=ndC9%fL+y?J?Qw%? zM+AZEJ1%5E=Zsb`{?YGLYz{1rDSO&@p!k%@>-%(0z?l0=UPnUD;QpPyYgFd(w)$VJ zseU6;_gJ%SFgX9-JSL%=xTEO(qim=vAFVyi-&|YX-R-!=3s>yid*ObctNmp2&&Beg z?{3^z4bbX3J$Uo0cMmTap#627*S!m5rq%7-l5hC46PLC07OSHI4K78=N44mjpIiz- zb5lb?@z~{Ur3?HZ0E4w`udM{{ajfOt=65 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceAttribute.png b/platform/icons/src/javaee/persistenceAttribute.png old mode 100644 new mode 100755 index d77b78007e6bed8e62ead197873cae95f96eeb4c..1c26676f0e19cfd00c284c6268e9b7136daef039 GIT binary patch literal 1382 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|}4Qwwt^U@)5lNkdl?CsRuo3sXaL0|Nsm zXH!Ebm|mCs?vBK}>ZI^$XI(9kAXkJzQ%mY2`7q>n? zxnRc)^^?}78`YMvG|7e9pZnV=(QMkATCui*)Wgb16<+-utUBHSp4n=Q%IX0g??0w>~=2bWE#4Wqe z_6mmou2`&gUW_#=^(MPb{*EQbUMcACY`y*X<<(&So*fyw_tY-E>)Cnv?c?YjyZjr^ zA6J-cYkdKV8|PDu3SGH&&b|`P zno##zCgqGm&?{a3onNd4Si>&Ozu6fO5F~nX9se=wS9`+GXdX1sby(MS*mYw|x=!|w zr@CiLosSEhm3Q2j{zPEacm=?N#lA<)ipY?lR;>nq~Odbtx`?zkRjOw(h^S yUa4m_U8Wa@TzSjA{F&-U!-*UJ+da=`WMdFs{^QHaMc-sWC7-9OpUXO@geCw0JNIq? delta 729 zcmV;~0w(?D3g!in8Gi!+001a04^sdD0hLfpR7HAFFmFu6{7Ff;Nv-0K1b@yOUJ3eI~q*K);kn(Y1xllReLpKGmj6*P>0}!h_<+ zjO*L9?A*8DvQpu-Q|`=u-+ia`}yh0Y|Lv>)?SHesyr%EOVeidh@Wo>A%wqAw zV*m2M|MSNG_00eF(f{_;|M%7Z_u39b8BG8H05fz_PE!B?DpF>exw*NzyuH4}#MRc< z;p*z@>hACK^!E1l_xJbr_xJev`~3X;{Qdp?{r>*`{+-WJ=l}o!%}GQ-R2WxdU_=89 zj0_A6On)q_JUpx{Oh6`BfSFfP(@ZXD4i~ser-CGDFiK2Dh&gB%)l(A;tKK zs3H{)mdQi)YIwaqB3hzPldz3}8_}Kajx$eTg(GNC&8N0Hl*a8k@>ugMP%f4+)E= zmL{{K_`z>uVJ8krhN3Dq0BE&Zik416)F}YSVzB@!4WQA;7=oc?v7CXH2J*>pcuEt!Qwjmh6;mnhT{Ge!E?{G{4;i6@vpuvu*Y2AAY5jIO=De#LIv$lclI zCi#}%dD;n%GTa3giBaF?RrHEekmO{I^C+qv%dT2Uz4J)4_11x@o8>IJrZV`OtS8>? zi79&yemsjjDw|(8IBk|%a=%esgY+gPw;?Dx5}=7X+o^;`VDcBh{+Q4Bc#*nXenApX`Qb8 z*e!ImdH*`De|1%&R()s^7;$$w5vEJ}GCk*uz~}Z*`R{>u`__)5=S{o4Li$yG0$p#( zcF$tRA5i6xs1#pUdFPj76>Y;7?FG1H2S9O?bCLGexz&{+86{x*a;V{FFtBCS7Qg!T z-n9`G1t~KdlyPMr$K0)Rqy9`S`Y<7Z^PF(ckb1IM#u&YjU%~T<=q#mnyS2Se zEF9gHRsAFEnFQH);QO=V&uptYS%d%75K^8k|JPZooVL3sTTf3fpt3$Qx!OGS-u_>Y zP}W>B)23_M8}&2V0dgJLa$|>ALr*w&{E}?EVuWzmz0qzDFEs5%t^eWD>khH|)1I(W z|0wnx|D^M@qk4M6%&j_J^eo=xrwM)6WV!6$jU6B;aTD44lxDn_(T2A=9?`-+C*B=R zSc`X>b+NN%@=C5wt=_w0Y3ljgK~4{?Hw9c`hlWElkBaqN$7@Z0v^~wsS4t*cveWy< zdma>bYOLxO8?L*xSM9Yq^*EXDxzfSqMxk(8EAPCVYEZ8@G!(4=#$u-U;y&38T9HF_ z=1x@##bK)F*`W_~z~I=Cak!M}vP<|_)jqm>WU;|8thfWY56*fwbnz{9-XXcy4!-L5 z_=-^b$RnrlqqDw+hwNic%fVA8L;sxadof^Yg)6->`6KfpiW+~yLO}$-mb*Fozw{V6 A2LJ#7 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEmbeddable.png b/platform/icons/src/javaee/persistenceEmbeddable.png old mode 100644 new mode 100755 index e8ada102599b988d49cfb2b673c129076a10348a..f5989616ca549868c811a12eec189c0e9ab6aa7f GIT binary patch literal 1198 zcmaJ>Z)g)|9KNozbf&r$Ke!ITw-?>qXzp_P)8vlEG|44x#FUZ-%m-y&?%t$Fd-vY% z-Zs~uTP95H2ca+#$3(^u`fYBXgsHPIKeVG2R+$~!U}KDytxPAnA-I~oSDU&I%MR|| zKRnO#`}c5@g9Clrw!X5JqNr`@elbhdmz=k?g?x8Es7Yk$z{xxwLPcDbOi0BPRDd9@ zNhO$tk}~nu9PFW}=1w)2$N9`bK}H%QIT*&)48o?Uo~Ug|@(9GB086SKq3>P2K?7BZ z(1(HK*^MIkGu zHe!)egdWD&5LmWcE;D66gUk}k@jTCZeXP&tAqbB(p<~JR=$5;#AVNzvRRgO?2acjt zKw~&UlT4qMpc$L8y0y_J(lFMR43=ZOPDyoOCiDMLP1{6UI18WU`=7#AZo+_U7FuY` zl*!Bupq_WabbWt#@&77-3`$BLgH7VBaBCS5Vn{eI1_32x;BIk}kuv7@>&( zqpFIKjCb>1F~)~Op*Y7S1AL0~DG&(rzIZAbh>3Nsh~zO1>bTBTo^fLhxsDSwgG3gg zsg6S>Wg-o%S1hQFa|t!n+u$mVa|t)(vLqSSnd`siT)!gbakiVTC5KJlL!Fr2B(BE$ z+7yava;L>u&i=0OcdZs}-do)wcB$J}cP_8YE3zb&l$)2Elpilg-+B9swMWN4Kii5r z-LqS+PQSWVDi-$4E#Ig;@l$_#PaLUU3QhK}JvdsKX}R{~k2A4@Qy;$Dcc6T+`f*48 z=P%cW+TOf)T3|?Jeh5XK%T`aTSF{ zP}%=&H8i+V-7|H)`eOCrg~#C3lIzi7>-k^an_nDnF#>l#IQMY(%kGbQ#XDG8__}oE z^nw2HHLAPI@82=K{Oj%M9XnlTPJPAQ{Oxz4otbHO^_{-uLeXQ7_r5W^aB{&Vb{H%7 zzYmOepPT!k)?t4((X@Pcl-lLG%^Z)lAN%yu3%l%@Ui$n}({pXq+2o|v8oCpA{vhe( LfcQ!L=!t&-S*)G< delta 673 zcmV;S0$%;D39bc@8Gi!+001a04^sdD0fSIXR7EdCVE_OBFGFA`IaDY)Q)p5*FGFBj zTUJ_RbT30-WnWKaU{GjkYi?y#iD)*7eP)S5@3=pfBp&#p|?F>)y%igbVJ>fk8mA|J8v1*oXhzl>g$U z|Kg|r<+T6kxBuw4|Lw*9?Z*G|)&KS5|MuYj_u~Ke<^T8R$$v4=o?g?*w$!C()`}0> zz>sTbS8H{CY=3rwZEVhMcZ5hs!&g%DT3}{iX?0;*PGMeI@T)=dz-jf?k@eP<_Q6K> z#$EQ#clPAB_qbR2^WFN)fBWC4`}O4g#A*Hb>i^V^Vp~vVWX@)1XlHD5X=u)AZ+B{O zd9#m2wQVA{YaO|GE5B{rUg? z{Qv*|RDKe20000PbW%=J001*QaD}d~ud~3w%g*ob@ALEd`uh6%{thS%!2kdN!AV3x zR2WxdU_=89K*Yqt&dmh`EKCpq4hef(D@zM=Y3Y0(uz)~AeVwC&owcirvk+K7L{qn> zwz|^INq$dAFQL@KFjq=aQZgVDEFfNyl$_=-C8?~WAPZ5E>h5KnCnc#UA8ZB| zVAW5zsS1?J36jy40}C)R^YVL!A{hz>oSd9&oEjhi6MzE%yLu!AeeO?T00000NkvXX Hu0mjf=rdYj diff --git a/platform/icons/src/javaee/persistenceEmbeddable@2x.png b/platform/icons/src/javaee/persistenceEmbeddable@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..da95888a0bca035aad0dccb79c88fcb40c0e1f70 GIT binary patch literal 2307 zcmaJ@YdDna8lJ{6ErsorRAUf|IYo2G2s7i@*fOfAh%xgG6EokK`Gzr0Nr~1@4kf2r zvXYKUmqslLp%R-yDHGZ`6on+TO3NCpwDyl}f7kVX@8P=d`?;UzeSW-YzCP~SS|(aB z7);yKgX*W85%WV+UHKQwWFM8&N{GgU7$6slW{Cip3kM7V5T1NiDBuUMI5Ck;fFlg1 zV#f1lLQMKr5*y^BSo0W^lrL1WVKB!nQXz{S4nT+yAe1K{Bgd<1kO&@!jNIu!$Iyio zAdKfB69EjFk3U-$&L(n@TbvM%Qj$`D4?rx0lpi4wlcZ$iH(io)J%5ZwBECVOa5C~Q zQ%t%qf&z*FgagXKj*Y?EBk)8N)&Xlzz}g~k80iaA+LPPKmG+#|R*n)J`BaUr?X| zVz!7Ugm|C;F|Wu90VNO_sdV~R3Vh)YS%LU_nUn=XOIboR7KNElX#q&5|9>c-{{tT1*ybCYPA7Q^#1Kos20W=`q*4II<8eqB+$I;iauD!%3KmPVcctO+G%B7*adp{9 z#A5IZTq?+x@Bsm|z~%hSbzPJ@-wAx7GBOnq@uC2Zn+W71zGY0}E$)S|sNQ!jXK^pY zMY(9D8T9d>2l|p4Z45lXaq`LS^yBl`yiO}C} z>?E#vSE6W^%TxAR+gTUCFgMZFQl$lXq<-!+jvx8CTF1U2H4Njm)j7M{DjwscqxW9T z)k0k*&46y^VRKyW3`PvgdqxG(q0wUrrK5tXD4Mrn;XrdsYir@$=DxX8bF=j~%e?<+ zOSYVwtP4f8R^BeSWvd4v3_nU<$h;qKCOOWS Kg`vK@I0xd~rC{Fzjr2!&bBX#2_3egX%(AxCeB=~dWhVZ1fP zsxD;3HX!L(17jKvUyUDM-BW#TI{euB3ozDTu}!l){=ii|>bv3RZzdi`z!=T>c^Kc+ zJOdB><-Ax<3T%6Zibdo)|L$w*i8W5u;Ba>1E!BJM?uKJVg1G80gQb1RACDIM4P+bV zSl5j_H@!veA9BoEw>x2YG$7CR>|N129$Yiw_f9l^w~MX3NJmX&AH)81`@MD9zfg+7 zpPI*-RyIl2^h#5n5Oq7!VOJ(N`R793e#pPRvIJN1sik}HW7enD#fC-W6R)ORBCrAI()2Ya3&al*|5O_U}@!EaXJ^M3-CU>-E764-54_ zE~j;$4%`u`c~W7kSX#cO{Jwq9-ez3AjO3uHR&>_kB)tB^fO*lXsCx(3d}>?P;b0a_ z+2tI#{OTi;a~X8liCI;=zDuR&D|^(jId0lN@OLNUQZK_p>)k>st?NGLX=J$bXIo8| zSb=fKpW}MJbe{J=afv*$Vp`iB6{^W0!-h{xx7NL7XQ$P7+8#nV+w?@NaL?8#d!g0S zsA^xDcP-zC`&Bn0(6YPdE1zRyv31^gJs%N&`EJv&vq=X%f?@4gJL zi)=Zc7I^>3)TdNxz@DP2y!)~YjW9I}c=I(RclDXc-J)kRX+h&$WE_H*n6|~*k{xb?uims& zceS^F@J&*5cZ-%nJxddB@t$O{A8Z$A?i38oehBP{)F2RbA|o~@-6UZvhGz}WvmaVw z^wX!@6P_#|zw1>yW}r_f^BH(fDyhJIxn}4Cpc3m3G_QQ~sBvbFQJY*)^Ptbb8(#Uj zm+5G4LQha#Yg!o?{jNN!@oL1rPuHpvP2c`f*q9<}&FgGs?J1kVm`^!s>2@Qx;aghz zXO{T{6HIGrxG{s_Ozvi=V}xUQr>o+Wf>EBf+}^^oGcvw6HeSt2cq4QG$!+O!)ICqZ z?y|bnPLc)Lfw`}fdRqoJ4+ySb3v$bi(Y)ek6sPm0lr-l--rvs%o+)WPbD{fUZN5QB zBd*(7i)#{p%ELG(@OYIG{pHcoHs8ai2osZ2jLO5mwoM%ic(xxEbE!`ZoIoyfxvaOA zWU-{6(>D9J1J)V*CR|@i4?1D0*64HMC(an7IK!rB?U9bxi7~9iB=Y-{Fcld0u2`lm SsW6^@mUz;9sAaCf2mS;~QO%S9 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEmbeddable@2x_dark.png b/platform/icons/src/javaee/persistenceEmbeddable@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..c7fba9acd0ddb6dc1788359809cf5f312b187677 GIT binary patch literal 2315 zcmaJ@dpy&7A74XBlS?JU>1X8VU^g~xEVsFhv6$!-wYDD?+i$jElN?r0<+yZFxg6uPC&mWKH`+EI;-^=U$et$0C_aEORy0@FUn!Xwg z22=NNr}!#nVBu3;uJ{XMW2Y69p2#IoOtvKQDQE|S zDH(AXfucZ~7l{RNQOpGlO3dXe*f5x#y_nBrg@YnsFBr<RY-utCL;szGz^XJ z42E&sV+EjJtT%%d8_puKk@i~wJ26Qizy(E2K+KKc2}xoy@{2A>v0gYvBY`gvQ8*d- zcT#~gI^YZmKmd=zTe2`%Yruwx!s4;kTd)=Y4uiEqW313vD@!bngdvi!c;M?mDxwM4 zAtYal>(^L{9T^!W67flBbWBVPD#i*02}03WB9Vy3;Ltdnr2=6ol<-7Mu_aGvyr@6{ zg)9MwFXBKvU_p_&7m5;*k%~Pf#Jk!!yEqb^ zu>>b49KmIgOMzHXT#zSPu@4CAnxtGU$bS{jYmoJW`lvVfoFqip@9QgFJ=V1qxRq1DqOQFqH%kiX%h(sxBZr z!VlD)Z~l~%TRw{F89tSYE&oMTa4d|WtGSkjIB~T~=VFyt%15Ke7LPp<$wsE)#fufC;V*LEy*|)PtvKyp>wW?)X_Lu>4`ya_XJ&t! zumrmalAMF4$0WrslW)8I))IUMUXd`A;O}7Bw<0b%XTN?X>~I3WU-n+*XvoH}`M!E0 zT-U$av5)IuRx6K-X@!l!-YwJTuYLdi@pJZF$piS)Q=R6Xl`~rA%}SO>%U0wCyZx23 zB4ll9hx(rK86W?R{Ck>~g4%=5cXhehDLACN?V=p;I>HbF?0op3682?qFkWJB^+_ zUmdBRe7;!s%zIBzu1zFp`(&+B6$Mot7``0U_#izU16;8vTr9y8znC>FrN<=Sg4^hAGsn zRjl^-dt{4F<%Dj>wn4$fxt2LMYr1`-aX;b|n2#x2)dc5z1k+|AfIY)1BxZ z)t*}TdYub~XGgkiix7Fw)kinhTimzD zzE2ct<6QG|kzPw{qbIp-^lIUTYvz@?^Ct?dqCcITRonH4#>OAek&?=iVlA=TG_|?& z#i5eyOpgAx?h=3eR#VOHfgG6^;my#pD{$?!{IKt?r)?QMs8=yLYc)bsy(R6o=}CtV zxRc`vT@PaBuHENl6w8Re=G?3oNPBC>I;m|h1!GBevyXjdxEMjGR|wl&+IAm5_{emGjg4Fv5^3I-^sx+8_znN2WYZuy&^_PX3 z)+=OihoH81GqszPS3NBL*nBU)I=m~y*1u;sU!~l~=4N767h}EtNt2Pgq>20S4SsBR z#{T+d)}x4V?cIhyKV9CsDT4o|;)e~tOU|SB&j#P^`kYeyR`bWpK%C}W5$Ur#IbmvD z@sQKZlV>ISdheZ%>rlIrI52Jffs{+PzHb(T&aU2Rn;U5mJ=O&U_#jeT^9&7a@2m`Z zODKxtl$i+P$Fwy_CaaIMTdbKG!Mkh&UYrC!Z+KTZIeuWbD&k`-l!acMxWZ5|TsBP> b!IWSYDY3+JGLuUS&l3+9Z%U!l9_fDofiKv6 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEmbeddable_dark.png b/platform/icons/src/javaee/persistenceEmbeddable_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..d6afab5d6198c7ba11c5a185098a1c8176338ab6 GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~9q7efn2CvyvPb0UI2$*<4On9mVa^UGcH4m8Bi-4*6abQv@0|TR)r;B4q z#jT`2|Nq-Ft2VH@=w$M}7Jv5qOiFTMVtUGv^^7U^*W1_E?fd(qcGnb+d`0CGth<-1 z{Y_6xQaSl-|Nno+3||eJVjGs2cY6H&oKSUuZO^|Cy^cN;W;eQfmCtKfBpLDO@ZVsb z_<6ByuPZ)&+@SRAR;HKnoX|MWwLADvMPn=V}%AIC)NukQ_ zMuU04^9Gd(dmH#0zHG>Dd;FEj?z#+P<-%Q79gH%))yq`>vLEBn5SVBxTlvfXpI9I# zXS?`;wyj&YKD-hW8tNLOlkr?5sUvo7k^Dm@nT-W4FZO)+c6fXIqNY1JH}*J8VJw&1 z@0*;SJoC)o`HkYU#S_jQWjnCZ;O!-G5yz9ecS|-kHA!4s8|`keo|#30A*QG!axvRc QCr}~c>FVdQ&MBb@04!dj00000 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEntity.png b/platform/icons/src/javaee/persistenceEntity.png old mode 100644 new mode 100755 index cf9264f273869a00e9b703f4a19e0ff1eba28b6b..d8a4cf0af460e16dd2868658ea7f1504bdf229d7 GIT binary patch literal 1208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f1KJBR6vkOH&JTb7w zJgD9j+-@UI2$*<4On9mVa^UGcH4m8Bi-4)R=&^nh0|TS3r;B4q z#jT`2|Nq-Ft2VH@=w$M}7Jv5qOiFTMVtUGv^^7U^*W1_E?fd(qcGnb+d`0CGth<-1 z{Y_6xQaSl-|Nno+3||eJVjGs2cY6H&oKSUuZO^|Cy^cN;W;eQfmCtKfBpLDO@ZVsb z_<6ByuPZ)&+@SRAR;HKnoX|MWwLADvMPn=V}%AIC)NukQ_ zMuU04^9Gd(dmH#0zUVyhJ^GrpW}PL|C#O&q={S9vm;Z!Ixz9azpY)UY$SfY7cKts| z2cENTNDO7m;mLJqRgjY1a**eMIQMP&|Beecs-?!nF$m7vq{H+4{y(P6FBnw##A<&( zysaPTm}iy~r*Mk3TyDQ_a(eR2Gk@ndir?jKiD5YBb6Ky}apH}d4=OqzIG&X@FfcPb X)tlqv-TQ7Es4Vex^>bP0l+XkKmztr8 delta 716 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 CRlk}5 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEntity@2x_dark.png b/platform/icons/src/javaee/persistenceEntity@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..e53d5d7e5b6d31ee6476e37198bab4f84a237e12 GIT binary patch literal 2344 zcmaJ@dpwi-AAj63A-CpfE(HKU zpYBHuQLW&@3tOW4O62kx)nXx~F{PoxSgDL9h5#~07z2THJ}V9ifmocB#BRs~05oj4 zVN5AA;71}`$VagjFsNj{NW}&K53ghqi=6;T!5AoxDi@-vcP0MPaq*Cli*);iK_j=H5v|nfk+cb@V}E{ z1~5R1Pz-^16yBMQ!McL$2q-Kb>*|Je0&y6u3mW5s#=1CTaYPJ(h{c0nAGj)-m=jA3 zq56J}r8<$|@lvUXh(^m~GL*~(B^1Y@u>=AEjlrRDIA;~YS&|}NFq!UvsHtOMJ$985h-GbB^8RpghJk87a8$FsZbIx6oC{9xH^I> z;0R@sHDBNX0Yth$B4r8K5S>bbs{~M7E{8~<;mLS{&pNkt>nK<(&6PmI`S@UI6kk^i zg-jsh7P(X*JBbeoq>Eh6KU}x(au=My7pWpsAu)G5#PJmi`QVp|iQMn!g8#1GS1#xK zxvc#z7p+PLy)f7Rn)Bk7$~+6(Z?07xzWE*!sLU=_xw>oA!W;m!O6XK_Sn~b$h$x z)qKTEGVEBep6$ID|I7lPXIgUh24U0iH;XLh>w8{oAHT~y-$ie}SybdQHsAX$ zeavf~Q3xGdKNvrgW0fGgWt}=S^-;|o=miRaYCugP+$RZA?*L{M%e-|TIe{?-mFZ)j ze$lvnLoFLP3+z&Nx+OEapx`U60QxUo9%Wk1jv(GBE&OaRpd$agVo;R$!)>5pdt3ho zX79FW|2s@;D+AJKv7n6UV-gpC)#qMOYyQBpeHFv%o$%o3<-OP(D4rT>T+ZDVn5AbF zyURN3T&}dudyNUgt^%PvkHL`eZECq=4n3c7B|FJF;o81o9CQ0?Su{_dlic#lFPMK~ zC`O%JrlwXNEBGoJair_qW9HqXkG-G28Okn=!p>U_+Fb&2O!H3Gv69__3|C_B)&#Q= zks6H$OYZkdHc8Rk?Hf||TCm6I1ctEp#DRmQ@;16r79(2e=MHqBOFoZmLb#ch(kS?;VHvj2FQ37S3=1!2-3YvXYQL-A`jKtgZ4BqK zzO4jCz-p($2hCb~ZH*Z*TO;i257{F>PFo`GcN@lX!FJfqetpXj4;1-;=61W^Hucp1 zNPuC-VdQtw?+28+Jzkkp8+k`pNFTe?o2MG5>Aj5i2PeHZYItAid*CTb;^B5Eaw=}?tgf2){dj)+ zT!YoIsJg2~x$#5A#T}!L8ptHx9HqTH&%em_bwV(FN_Tz>OB_oeC?eONIJ z*`J%A`+hFj-(8>XJkt_Roz9%=PdZ#-_1Mo-oA=o|XaWhl7CMQFF5AV5w5aKxxvX<$ zc&_$CkF5UCne_R}ksS@b9mJL6mk1yG8!M*wd7rl2{UAnT#6+tg6w-#!U`7vD%Ku=}n)Gq?z`6%onq-rT#Tv zuc6-Q)Iu`V-Ai4us>yDL(O7-M`LIUwk_&Iv&K5X29N~)|^xo@YW^15N*UVPd3s=7N zB5G*+A0kw_ww~LJ2yMeV*}_-nC5I~~AIp~hu=CiRffAFvo#<<8hiWG-m6#3)hB2w9 z%8kx24%mYGYn08;FRyxPuySY5mNv8K>%4w;^EN;G8tRd{-5#>T{eepFi^FM-TV9!g znu8vIqXD_9PmP%K5Z&w5=K)Mgu1*!cZLRuX(rl9V;q}ia6i;T1`;t7$$3LehYU#H2 z4E+jU>b~Ri#TsO4HoWI!R`1yihm^bsL6k%8W?*}+wu9}mWmS8SbNX637#jGzQUCSIe<(YY>mKudy_;;bx0;#n=(L4VG1pUGM literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEntityListener.png b/platform/icons/src/javaee/persistenceEntityListener.png old mode 100644 new mode 100755 index cee608187841ef61da87ee2e8829e915005d916f..245d3c174e589cb1496dc50646658590a9311678 GIT binary patch literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*pBU2}17fTCsb5}z{R})7gQwwK9b0afT zXBRVPLra)mm;B_?+|;}hnBEkGUPqjIK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~Z@ zJgD9j+-|YJsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6$+f-|1_q`uPZ!6K zid#!2`(_9`iX6XxChhaaPEW7vOMO{fuV@H0SA2frsvoL}Uuh?oWuH0Q7_avJZS{Zi&uMKI zea!!jnf|0#ZG83pL{kJSdrbZbe(3e|IzJ1G;#>EBCj?LZI@YY&KuA6DkN!NVt_N56766+>^uKmiK;_v(A zt)r6T_Pl57)uJLAzx)EZ6<*(Qdeg7=F()igs`={b7w(N4#lj7Uu_UlApMD=c# znUk0Aee&~qeA?ov$39It7~-lju`1}qG~<)n4nKU4beH)1xxHWZq(%EeuIaQfclVW#A9gJKu+45p+`H-?;hy0u6t#5RYWboU?y){>MrB$o(2UIerf4O zOsg&2yX|ZB=8H_B#s?4eDR((2mo`f-h^~^)i|&h+t>ON>V^aA3sJWR>V&1Q~OncRI161gGy85}Sb4q9e05)_uVgLXD delta 776 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 a9DPJpCo--*9ZAicpmCg%^-VA(_f literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceEntity_dark.png b/platform/icons/src/javaee/persistenceEntity_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..60ae7a4f0ccbd7ebbe1bdca328cbf1670b6430e7 GIT binary patch literal 1214 zcmaJ>ZD<>19KW=rj=pTVFVbz`(@WFdD2)q@h=+HAL5oEKGBkN$$rFmfS|NN@mqmN~n!v#-#2gRd zcazE_M?pl@A@Fwcc zSm+eO3#O^D1W_y&Jw@81>Un}<7=|FdgxBjv2)8k%n7rjy3|CWugNC3>nklIYuod~N zI%$S*l8k{->~!p3)$Zf`&S& z3utgTmmNxDBRb?wRZpwxM6-*d1=UoIf~tW?1U$M|Qbe_AJhlo?CfS5yn7ksu1Q)`Q zfJc%mgGQih7z!N-cAtqAm5-xMIs(s8~xbfs!HYx&CX;%`0Rcd%NyhbXfO2RFK(q zWQ8_U&aSHy~}SJb3N;qA2iuUc7MHAznTme&NU$_1n*X z{`v;B&$Zy3d+*_TK9}vkcgLYX?i`I_B^E`s&c|?3+jTJW)JR zey2C{%UAWW?q^Qyf2m^q_Gi~y?!LwL@7s4=sUG_@0X8m(voU1K8HX9}zE~pD%PCkKG3jO@H|Ijmw;PUd?~e(Q*D zn>hE=rprfWI`xnFTHBMJ&uX{jEst;gMyxiv=WiSUSKG9K;kjGRXts9#Sod7la_`fB f6*n(dFh>V=fq%pK!Sd{q{YObeN4QhF4^ICBevzkJ literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceId.png b/platform/icons/src/javaee/persistenceId.png old mode 100644 new mode 100755 index b1e9983904d61672fb0414fc9fb9219bc4a4fee4..84e66cc3a50d2a21a606b9a8eaad93271e7a939c GIT binary patch literal 1429 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~AJLsw%1BV!A5b5}z{R}%|UOGjr*M;B8I zLvuG56APGLm;B_?+|;}hnBEkGUK5;pK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~H- zJgD9j+-@<#saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R+U`Cui!pI|x;TbZ z+*&gEyuYxc$npCd_Wx?u%k*O0XlSBnTJZ9qb$L(GgazVzOYv-@ymnEWpzY!Hr09gzCy}3(#~iu>kKL$Ik$RtDp1eTv;NvB~Z~IMOjatdIR~#qX*UPDUJa`j`s>5b;=fbM!kme-V}_ye{@t5jUA<#?e~E9#qaV*&-?>c6 zY~!0#t-CONiK6bhmy>wkxmzt-wl0(5>n(dl-ps{dq)cUr<_-w zx!-lkc5gQQP4S88>p8j(X)Vln<##zr;B)1EHp}H%%oTaft?t2`(vbAo4*!hd= zj?R5FXMgk8qMdWDT`f4gZ@o5y@#*)D!4fY%HtsQ)DQeR9P})X2^v%bD0MpV?OFx?( zHTT3@H^tvsy8Zr^Xp47l(*#x>mn*t%e~5og>azzMj>uj=IPZE&Tl*xl*)p5vnO{|C z+>9%bDB_5af&G+IuUxo0(I>EvT{T^a7 y#ddiwnvu@q@F%yQ^Vg+WNq!<1-!uIYOkfcIc>5Duw`dQjp!9V0b6Mw<&;$T8_!-~; delta 734 zcmV<40wMjC3+n}t8Gi!+001a04^sdD0gq5jR7HMP%{`S}Y_ul`{GXLgrs)#C-Y!IA+OP!K#Sz=(SlUKN)VBNf0 z<;I5e%VYQ8p7_vb_}Os!)^_^mp!?i``}g9Pc`^Upg8$`|gI)>$?y&#wwg2z9zr3cv zv5Q$`Wmj8AjDKq%SY>RKm2{PG8J3xbSzl0>d_!4ZQTzAf`}pho`Rx1o^Zee7{oaQC z>#+UpwEgtY{r1}Z_t^dT;r`^5{^p(j?!5l<%l`Ds{`JoO_SgRS-TwOJ{`%VY$|Mt}X_tpRR+W+_5tK>kY0000nbW%=J001gdW^gw+A^z`=k_xJbs`uqI+{QUj>{{H^{{#l+RT>t<8+DSw~R2WxdU_=89j0_A6Oe}1? zylgB?Kz}A!fSFH5Ltj@#iklfCz$~too88<{=cOdV3=&}CSC5KtPRyt-E0*JA0t&Fm z=0zq2_?lOGxVcKQ00r1IbHX#zt31M5JWF)MfC9V*Sqa|e`60nRrlBqtAOXFm_@c&? zR5Mc}BcmVzpcd8onu4_GSW_cIe=9>1prO*WaaR?7g@Hf;E3g0)k8)|Ulf9#*i; diff --git a/platform/icons/src/javaee/persistenceId@2x.png b/platform/icons/src/javaee/persistenceId@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..b1a9abc2cf9d0a072aae4464f96a998b499f4d61 GIT binary patch literal 2252 zcmaJ@X;>3k7L5dHWRXDy*_1NK&?qESLOLWSIFSSbLl8q`2MtLieqReeXNx+xr11e2ayEgfiDkA zmrcrxC$VV0UvlYo6ck@Bmyj?Rg+hT=;Lxx%0Rs|=M2rU(gT=b*5biRSSk6(pi)Bu; z3N%Q@l?o(s0W1deikvt&NlroOD*dwsk>snaSoYN&;b6kPJ?ea&?1?chaYlkbI;NM-EHbFf5$C#b7=xhh=R=b1U!xk z5`A#=HTYRB4dy0^AhCRw%lnH<{U%rM1d&9SnFdJ($q>(13X6cx9g_s#u7&VTy)Rte zw`=kGCKsbC2BV+rf6aOJNM{~>_|>(#%~#(;Vx8HgI#;W28H^whbE*C`DqGooH-CGe zebORLUrdT3FE*t#ShK&D*OJq+tH3P5b0Gn{FTQ@*v2z#gL9|+TyTBcFlkVaKLF*w($awQFkCLd&9x9gScJQXe8q|XN5NP zNyeI3^->k`#vRU53#ola=B@o%PNOKl+oCCcUHYLeo7SjJsr$x~$y?H%`VEoqr9XBw z>~%62d9h>j=6bJ~)*Yvs0LjeM-1KWmhc!Zz1|0W$xFmHKhWx^yP6dJ{a&t%w=Q^q zuSmZc5E-$)8xPIl3S&YHXISP;myYQ6-KHsF4S6`kAsFmCX7OOBW<#H_`f8>3TieSQ z=WUYAFEE`ZlT={2w67L{dv26{aD$1>o1e+=wx798?;Y04${IiVp$U0P z4daU0$n9bG(H$QxDi$4s&G$;2DwiLKJz`&*Q1-mkkTquQN!Zg|(0bm;CL*1)vDNvK zC2{$@hVW`qijdt)Jo+G#Hen_ztrsS zC9aH(W{pG<`^@2@v!$==&R!q1G2{h@LZweUd#J@3@+kA7oNmOqHPuq~wlS8OQFUQj z8{=;$hJ_iVnpC_7zim9M>v*TFj|!cCl60vcE0m%suMc|e#SOO_t9*!9QEYA(`op7F z4%!Vf4wfOo=;vJ-Mqr&mur%dw`j`xne(Rvb%{qWtDh$h+-Iq64XKiG&1Ae~TWnOS zXy4K<)@bb?%kJzpm1*WiUc^Qx`BlT$$FDtAYz`P**)`XuKOWoET=X!t^J<-J&!bZ- zu-Bs}FWhc^#<8(Ev9s6_PAmDXi~jCyS5?Ke$3_owH~hO;Tz|oOxif9WA%k^`_6_A| zmn*Ac?-+-i$xP`yMX6{nH;B?9i&lO@s$2LxJY% zmk3vkYeQEa3zz`T@_ctd-2sq6xv{0nM8*7Wh?cDUITF)jS!|gXP*`l9&3FYI&tA#D zBfOM<)Vpx4OVeZq-*94bZH^1e)@m>}B6xkp3+HzBhq#?{y7-~BKR%wpu5qdcSN-%m zu?71HJ-E@k)W&KpuA?Fr5py!d)GK~|gWWpO%X!hC&^%>pCAr3-tLmU7W}QoV?UP@M z*z993=084ZJ%zK{YF}b$H?}P4pN--H%76>6-tES@=|b$U9~zg+vW{o$%}>?dJevml zL}>}u)4bfpTROLqZ$Y-|Jx}2qHIoa@hmGYHbihl0_Z?sSj4-fzjuFD-ldZO>LFlXh OzwoCA(JrppnD!rn2ct6p literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceId@2x_dark.png b/platform/icons/src/javaee/persistenceId@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..c92242a20df5bf53f8a67f2a3f63413405f68f6c GIT binary patch literal 2254 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 V%w}p_-F;92=jrO_vd$@?2>>jm;LiX6 delta 576 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 HB{Ts5kVOCA literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceId_dark.png b/platform/icons/src/javaee/persistenceId_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..98cefa6b6a0af569261a839c1a13325e0da77991 GIT binary patch literal 1431 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|N~Gb0NZQzr{^b2mdnR}&{^XA?JPHzy}2 z6AL#31521*m;B_?+|;}hnBEkGUT2(oK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~K; zJgD9j+-`BisaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4&*FxjP^fq{v~)5S5Q z;?|PMXZ?j8C63*HS+;xa1=S^&lr%eMv3c?fCI67_=`5O{ApXGN0CVTX2M3R^_~_r+ zQ(+Y@E6+Hu}*~^Pg|e?D>3V^XHQm z&%f9|6rJC@)3E%V(hQbzhv{cj4{}v-@=5W;Ts$u^n|Ir`ttPJ(gSI-TX8zOsD)W4k z?a%wa`wbokE}3@T_(k}hS4q_-$7=o^h+ijlYnHv2qwSLA<=ez^Ps!$yXzL0g_ zJ9kcHd63lo`CENO>eJWUniK!qHF~9uCYSa-sTnJH*R^Jxx2m3C;^*bEE%Irxk#}%& z?3XWbJu%I~4JU(+s2)#P8lVv}?LmR%o8>Qe=9_H(5c_5M(sz~*Hm!LwbH}M2or!1a zjD@&f*{u(%kB(n5#o~NL(%}{E2doWPf*v#)H{1T`c_%MdeAuMm*|gcWWv_*o9j^Gl z>YN3aT}4c1>h3e|(>ERc6Zo!$huM2$uA|IXb*1NBr8}pzZQs!HW_iuYSuEuj_p$MO zU|!RxxpKFr`R0QSPqM4kR`$2tadFVdQ&MBb@0JJ9> A&j0`b literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceMappedSuperclass.png b/platform/icons/src/javaee/persistenceMappedSuperclass.png old mode 100644 new mode 100755 index f51d41d3c4f2aa5a6ecc894b16ad8d080f20c828..57b2b86e7dab8c12be9df0d1f2eeff25f9520379 GIT binary patch literal 1355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}ZFS2JTrV-pK=3j;$#R}&{=7h@L_11C3E zGgC8XS3{Uym;B_?+|;}hnBEkGUQ?WUK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~5( zJgD9j+-@<(saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)x<(TRU1_s6ho-U3d z6}OW9{QqyytlGfpqLaz@TKw7bGbzc5iRmdv)-$HuUvFPux9{(d+FesP@)ea&uF!1=(i2K5_2wgkp z84aZc(r3K%h~D%2ORn9G2J?XD4KWRGSQT#Y@H~l)-}m1uAvtvuKm#_OX3ywDI)6ZeDR z%YK6sH*YY6#IVg5Kgamdc)|Rq4(Ht19SQ}$PT_Rf_xHnFah+Diy$r_|tVl{svnu|5 zFL{j~1Di@m6pz`1bC0)Y&foX%56>wL1$~FTi3blKt$XnFb@}#l@jH)x05aGD_Ay>m zurm-l$8@!%$@uaX?|6e8f!p&=J$RaPl%Yp!Lb`T?g;a;5B3IF+Acc1fr|Q``3>btf W@5JpE-rxW#-aK9XT-G@yGywpaG4!PX delta 691 zcmV;k0!;nO3cv-B8Gi!+001a04^sdD0gq5jR7G-fa{vGTgoJo{dT@4jZhd`)FGFB2 zLtu!9h?kd?hlh!YiHn$+mwJ4Gh>47|v$Kkfk%fnhw6wHfVr64xXk}+=Yin$9aB&*5 z`htp?X?Kt4=l}Kf|N8m=YjlEacZF?yd~SDyaC?kYW_yE*rhkNpo`#E`h>W3(j{r|kb)4uEfz`^3c!`8#>|HQ+| z$HeBx$=%4x(#p&0%49?hhT1mb9#x@)b!TY_S)I`b9|27 z^8Ml9^5NkBcz=PFc#D&x;{T`P|Ec5us;tMVx4NsV%~)o8S!sh?YJ*&BZqd=@($wPA z((}~UHq%z|NsC0P_?ER0000ObW%=J002x_maDF_(9qo6@K3Ob`K1D?RB%uUKtO%}gG!0DnufNtwQM zes-3O5Pw)ethmP5#8|dYMngdyEWnp4ry8Q}UgQ#`A_x``E(x=)^o_Q$Fbyq*sK`}R z(~3-pH&BiUXJ-crh{!j37&;{B`WWe0Hh={9YQ2+VoHHaP3-babK?0&mc7F9zx)o{m zX4S!973Tgaajp_hjuJos5@5~oERdBlDo<~!3M>i)2{1DA3fQ_KsQ?3Zc6K&)5P%85 Z0RTX;COY0HuS@^{002ovPDHLkV1oCQgYf_W diff --git a/platform/icons/src/javaee/persistenceMappedSuperclass@2x.png b/platform/icons/src/javaee/persistenceMappedSuperclass@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..4dec24e7b7cbd76704efa30dbc813964fdd2d910 GIT binary patch literal 2629 zcmaJ@dpwkB8=h7|uE>^prKZZfTpCMAN zJLK=8s1#o?Q78t$C@9K_2}ihqH)Eg(6v73K*aUWlBakpS5{5uJA)K*r3>JX`e|aF< zY+}|vtRKniOD=8X4q;2BA}kChlgXemBvdF4haoT+3=HlJb9Q#pBAg^K0x4bYB#_vC zRUiQprkEp=a)bi#yds?;jFP%Tw3YsS1-|H;tU&UmP1=URs%ERaa)0wzEvxkI!9P!5NMMG`QcF0LdJdNUf1KzO=fh#sz9 zn_aaL0RtzXJ-%{DLS_^n5J0$-%fOajE5Xn^G<7V^QLZ;a)9zZSxG z^}cXf->-%ET`o*p3~YX`|25~YM_TjDZ@;-#8+`LUAkdm!tabG{K@$!HTBIVAJOboB zb-`SoS)f@hZmjQZv}}ir8&gqnePEqKg04%Nnf{jK19j{NO7M}w7=U1c#d z*T{PC2}P({qWHL#_uv@8@rq5E&P%mN|J265yE-U;Ta(m=-c!+QXN|VeKoN8<^3qe6 z*A{vW1L)F-PpjKvXkBDT4-X%R5haDRiEterdG?pdb&QpZnu;0c z?rtKk4!>fs%Jr^kK{wfYS)1LQNU9O^6FYbWq>04=J9y1ETeY)a)pB(rT*ofwlyneE6v;9`^du3c1Pl6uOC(a z(!D9cun@L(NY_KQtM9a?P!NQ!}u(E_uU|kV9VERN*MEs$)y@EcHycT@Ava?W(Pd*ej~U zbAe7Go{chZtCQ~An%@#Oj<&`b-+1HFrw{ijqy)A`Q~dREs1YO zJB48XF<19dmpY7dsqv~ltq_YpxkpEs4Lgm?*SQ!<497H7O30astCYy#Wgn|tGh;eO zHIT>|)4Ygrp1y!;n9a^G` zj_N+({rB42K>@qZLx1d_k=hmC z;$!kIC98(k^i)(9vEwTJFBIQiCtP5-m)7E_Kdf?%usU0mGV95B9na8&wHb{3+w)aR z{>R~W@>|7ML~H$;o|D!{ANBR=hI zN-c|3LeS4g@MeQotcN3i0jf1gQ$BjfQO`WL`??(6tUPXXgP_0d3J|w*%YSd~r3nv%( zZf-414B0k&xs~&}RAHXf7?fMv)q_g^WZ&p((3pXkLHCGLJ02SsjbqRj2HR=ZV-K^l z=q>rX-aHe?Sg#aC4#T}$nv-gOdzX=OXrdrRvdS!wyN`4!v@7HAc)Pbw1p0@|IgVWE zU{A{;Wmo(L=Mz|y#UY_n=>zJS%D+0EAcEybO7#s(2x4XGPyO$5eKh#$l0PGqHEBjU zzUbR85_@y-x*SnEHYA~S=ivT@qJW46#stUw+g)YthWpG;j3{ocHye%C%ir;WoKQCB zHq|kb(0~5Z;PW-Gis>7NQ-0lJHiQez&^W;F7RKOn1Xl|DO-m+vo<7Zd(swc1XQ;i( zWr^BCB|N{Pcx!7dCNlHvz|YwXbDt*e!&S$7*F8VDA+oS_;@)gPsqxMHxw7v1ZjaT) ziLSP)=uH;38j*wPht3DXneoe2nsb~!xO>p8_e=7-^6uEDUeoUz?8Ho6w!1{Ni>xQ? z_2VB*3JeJIgCKj)&=U>Du0QzWz=`x1#<$?T%ng~V6yaqJ{+Z;2B_I5T7uA+vc5!23 b=bY4_^kn0}BRo6W{Er>k(}#445SIKO5;k5k literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceRelationship.png b/platform/icons/src/javaee/persistenceRelationship.png old mode 100644 new mode 100755 index 39537283d2e37b6c671561caf827ebf64827e238..b9a2223dafaa0bf1e762b0571a02d4878bb60228 GIT binary patch literal 1304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|-aBS#}kCkqR63j;$#R}&{Ub0Zf+6E|lg zV^>R4OJkT`m;B_?+|;}hnBEkGUQ3*MK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~B* zJgD9j+-@<)saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4&*$><9(M=|z#x;TbZ z+)DcM|Gz!6Y6GiFNl8h9$B&cu9G|r@7Rm~&X8M?`kjL~WH0olp0-FGXqRyHeZC4dh zi5r%c5_NU|7yW(qvw3QL-G8Q&Ym*KwJXwA@d1|f0pP!%ew@p3t=n{{N%p0Db|Mkt8 zf`yW7E4n2%NM2w%ve&_ewPR^zWc}a7^t6N@|9?x%Y<9e}mW!WR_R0{`lH|weP>quUD`Os8QX;nAj)OzoT*6ezr~P9TxMk zIdpApXw=&Be&-$Y8EH=p7~H3>lCfBIsYK!M@N zT8BIRZ|r9OVTV0p9p=d@sWE}9J}wGBpF7lWb$DMiRo=~z9l|Ia zC}I#$+3?BlhDkGnvW9tF^em>NcIHA`fo3P3DH>9V3wckO>|jt{dQ(#20E73rUGa}R R`fEXDm8Ywp%Q~loCII&&#`FLH delta 477 zcmbQi^@e$ZWIZzj1A~Sxe=v|b9N-h;`v3obedmNke>NcL5m^jmBowseRQCh9Hh!59 z@#zaUq(#c6N6O|WX&JaA8oMSLyCu6v7F8tiR3`HRRRRTpD$TvqokH@1lB*`oU9)q# z!q&;sJElqRn69*AhSJU%$}jinzuc=?|8k$&%e@*P4v3+-apTJEGjzAl)ZH;tXU8nv zXM6OY?=|SD_jtZX=fz%~-bT-fE#ChxnErd(`0r)^zgH9gy_)pz^^|{Kcl|%F|L;lt z|NEK$AC(DQQf~zM$E+mCFPK5r*fKgMC9|NUs=mIzfBNDjOIEE}vwr>NoqG;kdG@US z*{fHtzXQRKA3uNn27^C;{`~!GKX3P9pb?8aT^vIy;&RWY^B+q$m6}kaOL)cgTe~DWM4f{nP4p diff --git a/platform/icons/src/javaee/persistenceRelationship@2x.png b/platform/icons/src/javaee/persistenceRelationship@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..a2b1a9149beb6f778024554132d3c1e6829115fe GIT binary patch literal 1719 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}FkiKDBrqoakng@K`=tBIwBp`nwZfsu=; znW2%JsX0uqOMY@`Zfaf$Om7N8uMVL91WY_2COp*wIq-C!ng>kmMZi@3DDSQ(Ftg}*x;TbZ z+(rbnlbP7eC063QP`Ev8!);3DW) zec4-jO4Eyj{R=7r1$D#%9e+E`_BA`1w>dKX(#=_UW%KjQTIFPZlwPh?v)(+p^4Wgv znaen>Gj%r{zV_^U_x$<2R&(Duty5AyVQ2T9b*Ae(W$$T^FWgi=tNI{8ed2PD`KmuI~;;Tg4B(70j4;M(c~^%vbDD%JSddew^(fVA*Ul|F5Aze@6V&BmRHl`&^PQ z%zVMLIjF4Vno^(^(}nq`>t=mmDUz04VLLNNKcv6NhA|*gIL@K(_`(HR2Yjs_nl^?# zQ7bxoi-BY7hwPL%zKlqlHm2OQ2~v+(PPFIND~oPudcEhUoZ{4y_jl6Pzq;F9ANcbA zh0A-@3RbE8FnqGMng8wQ#I+#}1sWQAB0O(*{66a~eCg`DPtUdW4mP&)JSqD5Rf}WA zuQj)|^*Jxp`6|wzaGYsBdq&-UvGh$}VUzE2`=;z4gHeKD$&_4BGw&eP(8>S-h)2a?>onVX=TsiCPw2A{h z1)|nJ&hf*^8fh3%_ko@CXy|2lU3`1TsP4{NjZ%BJ+c-(w?a zx-?5q`Ht3WZ+*^~EVrvNZ~KKLx| ze`=D_=DG1ujt z6*ehIxbUhbth{BSHGRq2sfyR`u{q{h?9Fjl7tppS@5;(qms>vnPJ0r4b=&8=7Xq(N o;6K4@9{M@^QvLt3Kj96G457z5&Po)q2!N^*Pgg&ebxsLQ0B3NXp8x;= literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/persistenceUnit.png b/platform/icons/src/javaee/persistenceUnit.png old mode 100644 new mode 100755 index 4198f3f2e53d2f653a6a02e1770470b36963bf45..f81cd03550f1dcd2dbc843cb4f3b2a1fdd37665b GIT binary patch literal 1210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}|`OCvW!LstuP3j-i!;^ge?YUyZbVPfcL z=3;7L3e)S7pIn-onpXnTn}X2mhEp#nCFB+WZFWg5$}CGwaVyHtRRH_gDigO`oN<~5 z)tiFbEiO3q>H{644~kc$c!mi96Ay?9Pqjb}Jl&_}0TX)>FjWh%*flUPFzS1{IEGZ* zO8WEvzdf^RLuaGY0VbtyzW&Fa_OL1BEjhxf!2C+{E7OSy|1Aur9%A4$5L&4(IGs`B z!Q12c;w(QczRr-4H01fm-t+(a{C&?Kn=-73oZl(9d$B`X)6qEVSBhOmX*V~;9eKg(YSHXXg zFz$K#f7*!WGz343xnkf^$aI-MzGlv$)ARqo;&R5e{`mTTl|TL*4ryRu ZX5e33wCmDizw4mV#M9N!Wt~$(69BaPscZlM delta 778 zcmV+l1NHp636=(s8Gi!+001a04^sdD0r*f%R7L;)|1U#ehx%_|){*VfNZt`|FT&QzoQc7VF1z z{{8v>`SJer;_RX*m_!Ays&dS#Oz6Q?{r1uK*-`r0Nd4-4ntMaml`yq$9{>92`0?ZT z?4$YXpZe^W`+w|^^Wb;)?68xOf~uT)t(tAEmt&NNV9Kyx>%&*^=djteQU3Ye@Y`?l z+i3afosf=&_xAMv|NQ^_-T(8&|K^_By@|VvN2O8?qDBSTe-EyuX#V~6=D0`w`|k7E zhkI2dvtt+SzF+p|z3t3}@1->Fm>s4`2mbx^{`>ICsDDevwv?22N8Y1G&VnuK&7anz zV7g!#wp9(^jvoH|?f(1h#&RL}(182y&-mM-`L<8_t2DP&3;z4+{`%9lpoZX?BE6zH8S{rTbj_}k&CRsZ3c|M%Vh>$?BPX8*lJikhh<~VsPO+g^_w29t?5))`)JXsU04j7+PE!B?)!y0F)zwj4-Pzf2)z#kn{&?2s z*7Vls*YlL<_VefJ+~rNN@bkJ@E)ALQ0001^Nkl=MqZ?2r`#($t!~Ykj&3YJSr~PDL;D2EJ%);>VmF~amKHT>k895j^ihwHE zEi}3qsu@@PW&{C{mK{48m^v64mB0eRKtnYd;ozC&DHaB%n~X?+2`Io1Wy^qwTR;J= zeGCjP$SS4-ofCj0@C4+(Ho0`T00b~`5)|lTtYKtqW@G~Zz*{63v}kQQ00000NkvXX It^-0~g5tuo(*OVf diff --git a/platform/icons/src/javaee/persistenceUnit@2x.png b/platform/icons/src/javaee/persistenceUnit@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..5babd8419dd59bdbcb4d7c09fa33e2e2045a7fbb GIT binary patch literal 1838 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 delta 737 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 literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/remote@2x_dark.png b/platform/icons/src/javaee/remote@2x_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..35446a0622d2a2900c9046da7ffdd63bd7f3b126 GIT binary patch literal 2062 zcmaJ?dpJ~iA0Lb`Xscyil1@V^m$@2dh8Z<8tl2SQB0@5k6BBbWbC}_!E!uWeDzt0K zC3cmvtEF6Wsor(l=wi23b`>I0)0P*j?IqqbZQA#b*L$AloZsd7d_LdX=Xp+6P~gYr zC|eW)fiP$Lvv}|d=w9O$@K>3dIs-2@kZ(A&L$()E@f9Fqn@A=A0k(u63-Um|C?)X* z=#4-aY!HWpL*d*2s!%4u@O2oBS|W$p2!ywfTFw{7gAgD9W5rS$`epMqG$0ny&|xGl zjw@$^abo{e1-K(MFhrOdFQkajK6JoaO@##{AjAjMk_4%es-~ge>Qdpo?iz~*-a?>w z8v3uK!nr{JQ>Fj`5{Bd^#NpimPYMQ4!n>34t^fgtCt`6#ES~6wCs1(|DxL(qd(dz+ zg=jC8$MSm@3qH}%aS$Y@VzDZf3Zo)oWQtfUowOWlL>4N z6H7%hm2%5lIG0OhOO+5`Dg@aq8X6YBh{Yl*!GpqJG6fhSKcE=6u zw4m3zE&2vNVC77Wb~^r1C{yh;*Tl)*izc%$&)M)G33HQI0?0QBieB6Ir#DOZp(yoSuy(*c0 zJyE1QVI3O!DAB{pdwd+fV*Od4pa0F@^9%H7=DB<3L;Lolnui)|!O;b^WsT-fn}3l; zx&|BL#J>d)zWZa-tlbb0(-(x_^_0}^)x^8x^b8PmY0R8ctmc&dtQt_ybgZpEJwtuu z#hZf&O$H(gK+;cGJvg>Dq(xML`eL8qREM32V6)i*#hNi2;W|#CavS-l5hmXxgR|Y2 z`qK{&vlF3s3u<~9SKqoNJpW_nN%I4}TejAp%B(oe0W6QQ(rnpwtTp)(%7)cj$L8ef zoKw>b?6Iy+;PL3?*knwEm;G9!niGSlNzKcX?es`w_3h|&eT!FA@_1zV536v_1{T$U z*UxNlNJFAGXNqzH9BW!P>O~EAz7Qfe&6ohmCiRPTeH+i1<@yrX_0?@Z>tD=mdu_1a zdf3Q5;!0wUYi^b#-#++s@u~uRYUMv;9C-r?_r|Xl9n|i*>3%c2wZ)+R+T}JvIeN1) z@gUEzC7WDzB{I)&mRB^Fxqo7EMda0?l1AhC%J2byVPSmTCJh{=gfm;%nqf6@?(|DN z!y9!BPv;`?Y?{O&TU`A+{nYM@Rg@0`dbcBl(Rv-h^oHh=sjR^gyu;)nkAo&1Pff%s z+D4bwj$6iYMy7}79WEho*-fsu^<9Q!d_8&ej&GZf{}Ab8X=~h@wzzg$GL&2<5G zPxzIK_c__fmHUu!^t#LX(mIyYoP9cQH{if+Z3nN$!X@;R>$TAw{a52e+bk+03!+ld zrX!lZl9`7S{(&grsT#wqf^V9(J6yNM2aqE{@-8M4#W z>`t&vXij%?ZPl*f`a=mEt+v$z^eFB2PT}=@|Eyw*W!kQ+f_ z@_KXl^@j~Rol1#LV@IMQPbypS%+*_&0PWCD&w|(I)IG6ktvZeQ@hkEutrWlpbFZcrLN8ZNZ zM%DW64uxB@pmFyDXifi?o}|*Rn5F6n?AK?VJErRE#%kB)|LCy5n&07LbF{c&fk1HL ze)npRiSKGcR{zEOD+dbcw-(CxnJ1cVV>2oYx}N9VoXyWM$?2gkG<14*-%(Pf*&}&S h`uG1(`unVkK^(`0A3kR#9nt-v*}j3SYDP@Pe*kRPLm&VE literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/remote_dark.png b/platform/icons/src/javaee/remote_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..1fa0df0d53dfc4d2ad54118edd37d316eb8f934d GIT binary patch literal 1421 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~9)11DDta|<9cGBk8Gv9NS?b1`r>F>-P= zaWS+ofa!I~PcF?(%`1WFO+o0j#HkmQ5^@WGHoK%2WtOF;xE1B+Du8`#m5JLeW;o4* z>P^Az7IU0>^?{Dj2gNH=Ji~;5i3h}lr&=Hfp6*lgfQh{bn5u<}!$TMtn3z0W978H@ zCH?vT-=0~ufz>5s&I)%iVa7*F3f~x$Ojq3CRk+7;WOBm~-Zn-Lg&7kk7Oq>;z_MRr zJ_ob7wRpsb+voFtt+(5IvHssfSGx;GJslQqy}`qgmYf*9R(0{Y6K4Q;7 zbbsvr5L;bT{B^zkey7AX1IMc!Ou6%xD=t2E;^euLAKw4BUn8Ny9(0%`g!_te+nc5s zL&iWmzOu5m{SF*V?&7kkJIWqNHBaafXkN5Ysd?gl!3dcpZXzqbJ^dZd>X0XThPAF~ z4--#)$8pWG~bwc)=&^Z!5p4;TDP zJHQok{pUiL$IJNV+rQkrar42Y=k;t4e|Y$^y6yAo^R6|uzgr#8^FQkH-rf}M!Ev_d z$A^!HOBZnK88%HaGEnVeT>Noc&lVARX=&-Itlk|});X+wQ_gU7w}vke`S#{$_y7C# ze;KTP$#Y!`h!tc!`rDtE-IX?bZ1&u-iQ!q3vqs^g z=>Gb@eH9-p7~gR%xGewp6nA!mp5=$1m!AXUu+{CVzCs=UmQa3=`%GE?7&pt#X5_hW lCye!|!tD=f=?x6b3|I3WPAECxECMPZJzf1=);T3K0RW0N3Aq3O literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/sessionBean.png b/platform/icons/src/javaee/sessionBean.png old mode 100644 new mode 100755 index 2b3cc8d1236694cfb4be1aa04cf1d98c4eb72f63..4fc9f73944e9131c473fe221ee58feb06cc2dc26 GIT binary patch literal 1208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0vBS0hs=Qws}o3u8k=R}&{AV*_UcM<-K5 z7Z+nkGXt1jm;B_?+|;}hnBEkGUQ3*MK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~B* zJgD9j+-@<)saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(Ge`BgB0|TS3r;B4q z#jPcm480FKNF4iUJ=v{0Ku3c$eJRHym8RK~oB6DEteAXm*AGFKg}Wof-8XhOD_Hzy zl!@7T?k`K1*-qtu{6Ze@^uk^obyB(VGL zc`O$GOQ}j$~MpY z;?^?byv0{m6YgGF(M|7t8o#!QYP+N;uD_upv!a%9uam>S+jD<@{(8yBo`b2HA$D!4 z<^!SQ*H&abds4MnanY|S#_xapUVf!nKPNGv-)e2)xs)dcUoYJH)7bk)Z_DRL2A!G7 zFZML9Y@av##&Ipbf($7!ZKjY1bxohxJKmftH*#8;7_N5drpsQV1$zRIJ7v9G`=85z YL1S;=6>eb_Jy2QV>FVdQ&MBb@013*amH+?% delta 690 zcmV;j0!{t63BLu98Gi!+001a04^sdD0gO;gR7EdCVE_OBVqQ;OTTf|VNn%}0Tv$k3 zSV~-2N>^1%R#Zt=R7zGx)yRZ~b|TS-(+I&E4raAZStTrDeiK|qR8hI2)EXFi2< zMVNp@Ttph5ghYsSL}*hiPd*@ZUNo73M`chbgJv>UL?nq|A%Bi?J0#=)Ak+XL&;TUu z044AMCh`C#^#C>h5IFx7O8+QI|0_|5NKuJMQi(`Zi%VFOS7G`^WBNsJIR$g{TZ>v2 zk4goTP6(A{9G7<}oLv%}gG--Y3Zq*Jt8N*sY7(z<8nJj3vvU};eh;>J8n%2BwtyeF zbsD&a9lCN7x_^EbyMZ3Nfgikt55kWi#Dg8ih8@O>BgTy+$&e<>nlj6iD9nc*&XXu2 z;Q%Q305SgvA52R5i>wJg%K!iXCUjCxQvd)I8bnfOYH)RVdw+t4n#a!7*V@|N(zet50`006v6L_t&-S7TsA0}PA|%={A4l49%(KmZnC67a5WZmLz_ zg$Zz|1b^gLRhCz%azh1#iW^=1bMkVtlz1QlG7a^0&TcUg;i2-ZU;**$!jc+$N1s4X zD`BvJplx(!QK?r@Mx?I;Sb#;=FC;9g%rM>9C`D8hzS(>g^GDLuZPtL-_&_GWoRvjw9z$Rsvsw*3(mZSj^fC5o%wM2~sWC0N{KnTD9 Y09c(P(W@7arT_o{07*qoM6N<$f&^_Xy#N3J diff --git a/platform/icons/src/javaee/sessionBean@2x.png b/platform/icons/src/javaee/sessionBean@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..b87bd49fee883ecf83fe6eb01e601e1ea34fb68e GIT binary patch literal 1434 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|3xi<615g|UUXg|VTbtBHlBfuXahiLsHJ zk)xZ5kp)bzOMY@`Zfaf$Om7N8uL(}Qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZX7Z z9#n4%ZnqfW)TVL91WY_2COp*wIq-C!ng>kmMZi=YRP)b-fq{wN)5S5Q z;?|q#r?p)IWsbk!b4Ir1ShBm$6y8b~E^fu6hYq!wddjJC);FG5tTyH7ANFfzIVaej zZVVJNdoyLtp6Bz5Yx~b#DY1T)$Y(b4^oKXrtrlbbS@3AScfSC!fs|7fNEz4iW6I zQu*MN6yf?n)3+%{wJMZFE_PCia^TY{2}M4~-HTk}PwmrJ$#Uf9h@R(vqIva^Struh zb`(gNol4RAIB7~p=xfQTVP(n%%zQc1l6Os9!ToaAGyV&wxXTqPu z9XIv6lQ+g^Fr5iKFy*;bu{3A1q3(eUrbWG{RD^|$A26=5@HxYBydcQkVavibvr8{< z_2urXHr}x?)oH?x{0`ei(P0M{1-)aLy2$ET5}!e{1yhgCgdT5CFQa630oI-#)||;t z!wx)Yn0Wigo?q2*((etNe{an^LB{Ts5!zc#U literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/updateRunningApplication.png b/platform/icons/src/javaee/updateRunningApplication.png old mode 100644 new mode 100755 index b7f806f47818be49cab088a972623cf198ce2ebd..722553268f9d2c697ccb6e9313c229a2756ba12b GIT binary patch literal 1463 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f08$XE!%D7gGy!3u8k=R})7IV^e2K15*Q6 za|=gDM+=x zJgD9j+-@UI2$*<4On9mVa^UGcH4m8Bi-4*6*f;xC3=B*mPrb zi(ksLYvr62^ubj`JV`Q5vV8KKr7DeY#Wz1^KWR|*zI3K)#L-QXd`lX|-5&f}WY3s< zjkjx_ly7-?)vNiB>j zoWbyJ)rt)#R(@x>#eT2&&A$97w|{T`er2y$UOnrOhE7pf((k*|D^gd+9Z1dFGAs8| zj!a0cenh9sm%W##&fBcB_{3b7dFr{6Y>%ET-}yS)oh8Iar*_7%@B5$a-uHN$Ek~2V zK64(~8M%!o&$x-4ygmQ9+V)*@l$o^j>{j-^+7))_yv;SghcB5G?F*lOH4r(!@9gvM ie2@PN{J8!@_W%Q{j@ZJzxBcrtMX9H&pUXO@geCxjawX*e delta 617 zcmV-v0+#)^3xNfYBYy%&Nkl6h(l=Ws`|ktvS{Tr4Knvg)VL;oa@7_QKAq$WF z51f0LkCf;H6Sl1ze}D`Ko`3Ye?~MJtBpYDWy#9*EY4P zR>hdrt@bjjU9Al_z@lMohfDv?|GqO10u9)A&Awv`KYzMrem!lHLZ)W zY+R=RHvnj=jD5%E&mL3v{`Z=`@4s{3j%!v;>)nAGc#JBR^8&F0(17XYb!%o>w`^#& zY2BC#G=vo;Az3!8jd1SW{?8L=h{u#Y|DAibe*s4CTZ{U&&w#dq3_J`B>~%nkrU7Xs zlrVr{>td$$kuJSEK7+!;W73{quKhc|0u6fS)V=MQQ_uEmK)l7VbE^?XAR=R{hINvT zo!i=7`*vP-pRoIz`^4REf%E|&zsRX;n;_O$pacT|HnN&%IE?>{00000NkvXXu0mjf DM|3-M diff --git a/platform/icons/src/javaee/updateRunningApplication@2x.png b/platform/icons/src/javaee/updateRunningApplication@2x.png old mode 100644 new mode 100755 index 6c5e3f732f045503ccee159c7b8020e6e31698b0..acd4a9a665eefb870028ce4316722b9241fbf454 GIT binary patch literal 2430 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 diff --git a/platform/icons/src/javaee/webModule.png b/platform/icons/src/javaee/webModule.png old mode 100644 new mode 100755 index 7e93bfff0f5e46742c2d8b03ee55298bfe51240b..10be8d585968bef634f67aa8a32006a69172a600 GIT binary patch literal 1235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*_XBRgMa~BJ93ll>_R}%|UBNJy!XG051 zOA{AEBS)BCm;B_?+|;}hnBEkGURRuYK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtAP zJgD9j+-`BksaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)RTxSPA0|TRnr;B4q z#jT`2|Nq-Ft2T5tIvrq2uJF6(y((B@`*W+{cTI^24BQi6@iBZ9RjA{7>ODE>fR~us zwB>ATwih3{X}@9a&sC=n{QP@$ySh%-X$eWmeqo~r2kP0jxmV5U_ik}@kzDI?-!SFW zo5X~F->1Dk@N@O?e_!TrP!M4YmzcS8^1V;e25hJ2Cp~!dAnnJO=IIZA>zlDv_g?4m zy1y=0`AO4qA0Hp5S@PvZC%E>qv;CBBdv9N7yyyRq{)e}mIotYs{xq>1W|$KG?q68i zj-vN+&3%8o*~*sH^K3q6ZG0!;LR!W7vmORgOaK4-`~8(*x6~%c<_ir%1vrqX* zLF>_$ho|Ki-1X@(pBQ_fL;0lsuaA$vcUG@i zoT=#vA%;7A?XtO2^q7)LSA6iD@GN%cvE__RJPeJx1s``Z1U~{5GoG$~F6*2UngFGH By8i$G delta 734 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%0Dfd2aE%-zmxIrhNbY{{M2e zNr5RdJ|F0R_+PxN?RI&K#JUYL3~GKdZ<*csQEd~q#KzeNfBZS#e_#FG#x5gWt2GA- z-mPXjTt4qUPyN3?zuBksB&$rB+ZcHCf!WVBniF<%bX;9{$lP&O`BSO+Y#as*0glBw TD-PfA1ryB+hj=}4W!t0mB>7>TBtf)Y&+4Zh|FR|M7v)c3l zJG8vp*#SPe$$#VY$>a3~Ubx%ep4{p5>FKlUsRixLCG^=-`TV*3!vg)e1OCti|JEM= z-!lK?EdS;}|L$o2@p1q6egFH7|Ng7BpECddpbgQ_+W-InI&@M_QvgFlU}0-+JLM^MCa9_4W4m`1<<#{r&y@$Ap%( z0001-Nkl-qiGRJ}nb9@^9qegFUf07*qoM6N<$f__aaSO5S3 diff --git a/platform/icons/src/javaee/webModuleGroup@2x.png b/platform/icons/src/javaee/webModuleGroup@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..7bd5f99fd77f7e2be91afe0639045f6271912a2e GIT binary patch literal 1721 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|wGnX#FrmXg^8h|tBI45g{zy9rLnP# zvx%jVg%M1zOMY@`Zfaf$Om7N8uNzLipp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZgIwG z9#n4%ZnwDL)TVL91WY_2COp*wIq-C!ng>kmMZi>@*)O30%q)7IE{-7; zx88(Ddxr#y{QEYuxM*E(vEkM^0ec#jIJVk~xLji8-dbf?%~AbAcS{u)Q@z7^C6O$+t6xvg9K&1NK+mK~TLxgqWRy$$Doo!frx*EJqv z9_H#yrf)YcF&ufzK0T@`Sd(kp&SfRbcYlnrV$EcLKx^-hVwJu}XG~=X+B9$3=lyT> zxABBowbX&at> z`cQ|q(!D;m3tNjA!)t19mM(4P)wdHf-w}PUeC@%~$qj2}@!$B@t#LK;gye&R+%gXr z<|JM^%GU)gD0R4MX!zFgbHUjgdjxFGIYxxG_CW*2r-TGQcqJUNYsy+Y>3ZOVy?yPf>$_ES|D6$HD|xm$p@+9(FW(QN zxjUxb>{}4*-gdV+AmHGW?;3M1aXp(BGUfT%!yVoRLPGPth%XLaYm>>!T<$W_aY~NG z5w!<*x3lfH?pyehXA3`@;N;RDcZ`bmPGM?R-Mg=ZtIBDgdKAL~F98V^+qP$$%og4B z+jAqZI_1oo=O-rhecjQtbVbA08N%`DwicpMhfnlycet%y!yxeF?1J@r%)7j9TjXx- zoijPLGNfkSw#6ptl5cB&RxFKgWq`rAmoII$w~-6? zRa=%~uT~+YQDKqfp8lvOQl0Cm=d{WB_Y=>x{{LI-rIg}jSo>C4-<-WiQy((d!s5t9j~(9$tR`tJ1;rbRUc2>63q~O+%VjI-K!^!XCGJE j?W{a!9z1Q!d?p@-zOHE51#+^=pvuJ4)z4*}Q$iB}fx3&O literal 0 HcmV?d00001 diff --git a/platform/icons/src/javaee/web_xml.png b/platform/icons/src/javaee/web_xml.png old mode 100644 new mode 100755 index fc32397ca6fc2cea145460f48599b893aab27dfa..01d02b550678a527681ccad9a2f059ae382ee6a9 GIT binary patch literal 1398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}|~3nL>VQzHv=3u8k=R}%|kV>4$HXE$d9 z3o}<^0}Gg5m;B_?+|;}hnBEkGUSphkK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}^# zJgD9j+-@<%saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6v*g|D3=E8~JzX3_ zDsCnH`TyUZnd8h{Yw<$|c%>S42p;qF^JBa0!*irrLt&k}c*?;=69l^@PL%dJ>=8fJ zzPm;6F1O;J*#CdvdgO3_g6L<>^0}mRQ&fZiR5c{F9_kTUx zB}V0Q4l#AV#GSAHdY@4Cwe5X^o!NmV@6Y#M@0Wabq_FwtTE;on!D6+$Ia2I8O;VXT zPcm$@3uD%^|9g7FpDX%1^8b@vY8#DHo3zv^`jqN9_MG{Ydg>LO=`VlSp4p7y{zF1PP~;uU)!7` zK0o$ji(L5qK*{g+hrj#p^SrnJm%QU!K+{8I<^2lWK}npAYLm8Vcz*c*zq7nv+c;)t zdB3CkKUHSy%l2)N&*w_!8Dtpmd7kFNdBilJdBWFn!~efOKN6h1=*b-RI-b9WvL*8D zpQr3Nlyv9=^9v!iW%cHqscN;c)6$C@y8hq)t$Aw0iw#VNw{$<_xxfE^+K<1#@7o7F zN^v^v^5Vu~Tjd3O5`oX`>;LZF_-6g@|I#wA{{R2;vz%EYeWUjEA0`eBj0|P|7aScp R4?hQ$gr2T`F6*2UngF~^5d;7L delta 405 zcmV;G0c!sC3a$f?BYy#PNklG4AaLzf&n*?4Z&vs z0~QPtmjdGJFhg(}@L{zd13E@`4NM%}fM5`|b8uq7g<)#28UPgdPa?)`!1OYY|5;J4 zV0L!2E0|BT0U*U8zRoC$LwsE@49VVn8`FTp6TJTe{fchW6MrC{-;v{9eQmZ+Dv(_b z;$t-c?1EAcu#HHXJ3|`goGI+>`4`){_it?;x8z>zD11o4NP@ zn(fp7e}B;U|No=x|JRNr|MzX%v6z@xsCMi*_NRH#lK*e6*ZhBeqx=8w2l@YhUQhfV zRx%;bcWB)CpP0N*ZP$79chJ1c z|95Su{{Qc0;{WzJv;GInz4YIv6c51at#XFw6@e3{niT(Wc`V*k%wP77GB*43pI#C=LfY00000NkvXXu0mjfE^gC| diff --git a/platform/icons/src/javaee/web_xml@2x.png b/platform/icons/src/javaee/web_xml@2x.png old mode 100644 new mode 100755 index 1b9d1582e236dfffc6e755cf1c995e02ea674009..2c6a0067d0bbf1e24598fbd0213fd3e526ec8148 GIT binary patch literal 2033 zcmaJ?c~BGg9#0`0LG%g8>Cq)nsz|a~!jXhSL&Bvbg#c`UZ+#xpxwL?r z|IGJqh0%yKB@7B+6iHEu@WCZG=t3!392G3Y5LE<%$QHU7nuuTsnusU?4hLAfRjLpp zYINOOIFH8)R-l+rA%cUsK4e^gDwT>^o_?P09Ej%1@MO>-$ls00;QBGxkU!Tgz?DPi za2B{+M3f?j71#n-{3n;bC|BnMxe|}eg;mm2SR9~2dZuEJeiTirHKAP^IRx$Fo{=Z&q=Au*9FVrOn% zHKm)zBp3!H+PBl}a%-l-GNbm&Eh-GEs-?jqx6F;N&U+Nzxbf|55YKI_*(OP9@tCvW zWwzGX_hnv3g!z7}&X&ou0%D=wxLtxx!bsOnYQZvn2fD%2;4LG+9?qEFE_uFl+PCrW zzjJ4Q>*%|(k`%WFoJX2K_>(MNlZzeSum1q8FM*IZ}k`c2X4t>2`Kx-+hMm_ju zm|vqe$+0arUyzkg*WL>ci$A5x>O0Gr;&&qkf;DHK)C-(^Yy-#)uj)_cOjWU&=5Hpu4H4~NjrRt(LcN(M70flO~Sld=I zVU=A`W!R^vskmf&H`B(fzCPO(ohLb>*R0GN(wWCT3?nD+4w^L2{eWzC^y9+K9e)3_ za5ny`hR@Es=|!rGJ@UK#j&D9ZXZl~eF8OCJ=q5E={do5hnML;e&5`L%lA@ApT_qXc z$t6FVxF{d(AGo)hkmy2oLYO_ zc5u#X-S}FaBLqOD(gO{`!<=TDRDUacl-e+e9B7Jjm5`XER zzkuXMJGGYN<`hgt)vjJ*x96t_qJ#Izi+t04Vv%IbG<`(;L17D;^xS~mv?8|BVrAcQ z(n+&;t+9Q`x9rSRW6lAO*`4&k%a0p}dfP5TYx`~&4qVUZzU69grohv2a!hnKW*7hB zf$tdIHpLjw!y{^ZM$+Se9$|k`y;F@U@C52~({!}#^w%}!*9tcdb~rnS*nBY*-a6n_ zS7%6K-zj>%r~k*nRis8k@K9;7dVJ8ZffH`IuhXREVnP+~BjS@?y=^hRFTV^Jh`zT} zEBnDFd3KBgezYef5Oiud=GAQliOKH33bQ(``$^Vaqb;%k zX^)FVl%v_Y(?(uQBjX1zhLRi7tWc+nS2J%+XavjAX~bXuw+p(TaIin0`yao!&;Ji} CGdgGh delta 895 zcmV-_1AzST50wXyBYy*2Nkl{wfl|M3D)(>?S5jqHGM48WSXoe=f|*kW!6gna<^nA-x8(7VK;vKhe622&DA39OKu z6Gq^}$gz-){ePXaAHYV4HEJ^0oRWOAxO>toy=})sSj)Hwx*7MpA;X583 zfuQEOX;n=fiIPG_tBQq2nSyS45pp_vFx;O6%~%Nd#gCcPilz>S0jxksQ!AU=d8Gxo z+n_`0%SlL;D(F5I17FjC^#ouw0{YnqM;x7=PdZ2;~5|wJsS0jDOVxGWzGB z{Zx$Ko6mqBVlbQ8Fs=*mYk>*G&={-r0+N1O{!aA2B>3fZ> z#Z1WG)<88X!HV_~^b104Oz;Rm1elo^jLGBSS@hwJvjBwd`6Gtw)jIHM`oOHl02>eR zb2*ck=YK*sngzoW58o!aSXA(^tBb{KuK=$6F2j*O$EId-$sS<>>SmBwQV)Cy2iBrV z-Fa;7cUR)Ds*Z<#Dhf%}U8rjmK~UO^bD2ZTkyk|K0KPR-2rui$&U_@8mC!v9R-yQ= ziH5ko9JgB*a7(5^kZ1_>9A_=dg%|S_hAU+xaew0+g6n6{+VK?3V&tCYqp&>8M?}>y zf*NMwFPny^NQDde@3)-=AoUfEsND<4*yO Date: Mon, 22 Dec 2014 19:27:50 +0300 Subject: [PATCH 51/63] dist for UpSource: include version to sources file name --- build/scripts/utils.gant | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/build/scripts/utils.gant b/build/scripts/utils.gant index ba22ca404a99..fca3be9c9fbb 100644 --- a/build/scripts/utils.gant +++ b/build/scripts/utils.gant @@ -628,13 +628,12 @@ binding.setVariable("zipSources", { String home, String targetDir -> notifyArtifactBuilt(sources) }) -binding.setVariable("zipSourcesOfModules", { String home, String targetDir, Collection modules -> - String sources = "$targetDir/sources.zip" - projectBuilder.stage("zip sources of ${modules.size()} modules to $sources") +binding.setVariable("zipSourcesOfModules", { String home, String targetFilePath, Collection modules -> + projectBuilder.stage("zip sources of ${modules.size()} modules to $targetFilePath") - ant.mkdir(dir: targetDir) - ant.delete(file: sources) - ant.zip(destfile: sources) { + ant.mkdir(dir: new File(targetFilePath).getParent()) + ant.delete(file: targetFilePath) + ant.zip(destfile: targetFilePath) { modules.each { JpsModule module = findModule(it) module.getSourceRoots(JavaSourceRootType.SOURCE).flatten().collect {it.file}.each { File srcRoot -> @@ -643,7 +642,7 @@ binding.setVariable("zipSourcesOfModules", { String home, String targetDir, Coll } } - notifyArtifactBuilt(sources) + notifyArtifactBuilt(targetFilePath) }) /** From 5d80fde19b64286c752151b0351ae276213187e3 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 17:21:49 +0100 Subject: [PATCH 52/63] JavaPsiFacadeImpl: remove unused method --- .../src/com/intellij/psi/impl/JavaPsiFacadeImpl.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java index 13232679dcf5..b48ca53f6c75 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java @@ -279,18 +279,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { return result.values().toArray(new PsiPackage[result.size()]); } - public PsiClass[] findClassByShortName(String name, PsiPackage psiPackage, GlobalSearchScope scope) { - List result = null; - for (PsiElementFinder finder : filteredFinders()) { - PsiClass[] classes = finder.getClasses(name, psiPackage, scope); - if (classes.length == 0) continue; - if (result == null) result = new ArrayList(); - ContainerUtil.addAll(result, classes); - } - - return result == null ? PsiClass.EMPTY_ARRAY : result.toArray(new PsiClass[result.size()]); - } - private class PsiElementFinderImpl extends PsiElementFinder implements DumbAware { @Override public PsiClass findClass(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { From 19b11f5b3d7772532388e18e4c2869d319045730 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 22 Dec 2014 19:31:01 +0300 Subject: [PATCH 53/63] update javaee icons --- platform/icons/src/javaee/JavaeeAppModule.png | Bin 1011 -> 130 bytes .../icons/src/javaee/JavaeeAppModule@2x.png | Bin 1200 -> 253 bytes .../src/javaee/JavaeeAppModule@2x_dark.png | Bin 1196 -> 245 bytes .../icons/src/javaee/JavaeeAppModule_dark.png | Bin 1014 -> 133 bytes platform/icons/src/javaee/WebService.png | Bin 1321 -> 384 bytes platform/icons/src/javaee/WebService2.png | Bin 1441 -> 516 bytes platform/icons/src/javaee/WebService2@2x.png | Bin 2079 -> 1035 bytes .../icons/src/javaee/WebService2@2x_dark.png | Bin 2046 -> 1022 bytes platform/icons/src/javaee/WebService@2x.png | Bin 1938 -> 843 bytes .../icons/src/javaee/WebServiceClient.png | Bin 1402 -> 474 bytes .../icons/src/javaee/WebServiceClient2.png | Bin 1506 -> 598 bytes .../icons/src/javaee/WebServiceClient2@2x.png | Bin 2242 -> 1204 bytes .../src/javaee/WebServiceClient2@2x_dark.png | Bin 2198 -> 1201 bytes .../src/javaee/WebServiceClient2_dark.png | Bin 1494 -> 593 bytes .../icons/src/javaee/WebServiceClient@2x.png | Bin 2128 -> 1072 bytes platform/icons/src/javaee/WebService_dark.png | Bin 1430 -> 506 bytes platform/icons/src/javaee/application_xml.png | Bin 1189 -> 252 bytes .../icons/src/javaee/application_xml@2x.png | Bin 1458 -> 419 bytes .../src/javaee/application_xml@2x_dark.png | Bin 1453 -> 406 bytes .../icons/src/javaee/application_xml_dark.png | Bin 1189 -> 255 bytes .../icons/src/javaee/dataSourceImport.png | Bin 1451 -> 531 bytes .../icons/src/javaee/dataSourceImport@2x.png | Bin 3042 -> 1973 bytes .../icons/src/javaee/dbSchemaImportBig.png | Bin 3042 -> 1973 bytes .../icons/src/javaee/dbSchemaImportBig@2x.png | Bin 6391 -> 5517 bytes platform/icons/src/javaee/ejb-jar_xml.png | Bin 1335 -> 378 bytes platform/icons/src/javaee/ejb-jar_xml@2x.png | Bin 1751 -> 655 bytes platform/icons/src/javaee/ejbClass.png | Bin 1528 -> 558 bytes platform/icons/src/javaee/ejbClass@2x.png | Bin 2375 -> 1200 bytes platform/icons/src/javaee/ejbModule.png | Bin 1154 -> 244 bytes platform/icons/src/javaee/ejbModule@2x.png | Bin 1508 -> 523 bytes .../src/javaee/embeddedAttributeOverlay.png | Bin 998 -> 116 bytes .../javaee/embeddedAttributeOverlay@2x.png | Bin 1023 -> 138 bytes .../embeddedAttributeOverlay@2x_dark.png | Bin 1025 -> 141 bytes .../javaee/embeddedAttributeOverlay_dark.png | Bin 1000 -> 120 bytes platform/icons/src/javaee/entityBean.png | Bin 1196 -> 266 bytes platform/icons/src/javaee/entityBean@2x.png | Bin 1394 -> 393 bytes .../icons/src/javaee/entityBean@2x_dark.png | Bin 1395 -> 394 bytes platform/icons/src/javaee/entityBeanBig.png | Bin 1312 -> 343 bytes .../icons/src/javaee/entityBeanBig@2x.png | Bin 1582 -> 528 bytes .../src/javaee/entityBeanBig@2x_dark.png | Bin 1592 -> 529 bytes .../icons/src/javaee/entityBeanBig_dark.png | Bin 1311 -> 336 bytes platform/icons/src/javaee/entityBean_dark.png | Bin 1201 -> 263 bytes platform/icons/src/javaee/home.png | Bin 1480 -> 513 bytes platform/icons/src/javaee/home@2x.png | Bin 2229 -> 1091 bytes .../src/javaee/inheritedAttributeOverlay.png | Bin 1123 -> 234 bytes .../javaee/inheritedAttributeOverlay@2x.png | Bin 1361 -> 453 bytes .../inheritedAttributeOverlay@2x_dark.png | Bin 1345 -> 456 bytes .../javaee/inheritedAttributeOverlay_dark.png | Bin 1107 -> 232 bytes .../icons/src/javaee/interceptorClass.png | Bin 1505 -> 554 bytes .../icons/src/javaee/interceptorClass@2x.png | Bin 2314 -> 1226 bytes .../icons/src/javaee/interceptorMethod.png | Bin 1468 -> 537 bytes .../icons/src/javaee/interceptorMethod@2x.png | Bin 2323 -> 1287 bytes platform/icons/src/javaee/jpaFacet.png | Bin 1198 -> 305 bytes platform/icons/src/javaee/jpaFacet@2x.png | Bin 1806 -> 881 bytes platform/icons/src/javaee/local.png | Bin 1418 -> 461 bytes platform/icons/src/javaee/local@2x.png | Bin 1919 -> 837 bytes platform/icons/src/javaee/local@2x_dark.png | Bin 1918 -> 839 bytes platform/icons/src/javaee/localHome.png | Bin 1467 -> 504 bytes platform/icons/src/javaee/localHome@2x.png | Bin 2050 -> 911 bytes .../icons/src/javaee/localHome@2x_dark.png | Bin 2015 -> 884 bytes platform/icons/src/javaee/localHome_dark.png | Bin 1465 -> 502 bytes platform/icons/src/javaee/local_dark.png | Bin 1415 -> 459 bytes platform/icons/src/javaee/messageBean.png | Bin 1235 -> 295 bytes platform/icons/src/javaee/messageBean@2x.png | Bin 1572 -> 517 bytes .../icons/src/javaee/persistenceAttribute.png | Bin 1382 -> 425 bytes .../src/javaee/persistenceAttribute@2x.png | Bin 2033 -> 955 bytes .../src/javaee/persistenceEmbeddable.png | Bin 1198 -> 281 bytes .../src/javaee/persistenceEmbeddable@2x.png | Bin 2307 -> 1242 bytes .../javaee/persistenceEmbeddable@2x_dark.png | Bin 2315 -> 1243 bytes .../src/javaee/persistenceEmbeddable_dark.png | Bin 1201 -> 280 bytes .../icons/src/javaee/persistenceEntity.png | Bin 1208 -> 286 bytes .../icons/src/javaee/persistenceEntity@2x.png | Bin 2339 -> 1249 bytes .../src/javaee/persistenceEntity@2x_dark.png | Bin 2344 -> 1253 bytes .../src/javaee/persistenceEntityListener.png | Bin 1505 -> 554 bytes .../javaee/persistenceEntityListener@2x.png | Bin 2314 -> 1226 bytes .../src/javaee/persistenceEntity_dark.png | Bin 1214 -> 287 bytes platform/icons/src/javaee/persistenceId.png | Bin 1429 -> 447 bytes .../icons/src/javaee/persistenceId@2x.png | Bin 2252 -> 1119 bytes .../src/javaee/persistenceId@2x_dark.png | Bin 2254 -> 1128 bytes .../src/javaee/persistenceIdRelationship.png | Bin 1357 -> 399 bytes .../javaee/persistenceIdRelationship@2x.png | Bin 1959 -> 834 bytes .../persistenceIdRelationship@2x_dark.png | Bin 2003 -> 860 bytes .../javaee/persistenceIdRelationship_dark.png | Bin 1388 -> 400 bytes .../icons/src/javaee/persistenceId_dark.png | Bin 1431 -> 447 bytes .../javaee/persistenceMappedSuperclass.png | Bin 1355 -> 398 bytes .../javaee/persistenceMappedSuperclass@2x.png | Bin 2629 -> 1462 bytes .../src/javaee/persistenceRelationship.png | Bin 1304 -> 342 bytes .../src/javaee/persistenceRelationship@2x.png | Bin 1719 -> 668 bytes platform/icons/src/javaee/persistenceUnit.png | Bin 1210 -> 315 bytes .../icons/src/javaee/persistenceUnit@2x.png | Bin 1838 -> 870 bytes platform/icons/src/javaee/remote.png | Bin 1411 -> 453 bytes platform/icons/src/javaee/remote@2x.png | Bin 2067 -> 905 bytes platform/icons/src/javaee/remote@2x_dark.png | Bin 2062 -> 905 bytes platform/icons/src/javaee/remote_dark.png | Bin 1421 -> 453 bytes platform/icons/src/javaee/sessionBean.png | Bin 1208 -> 306 bytes platform/icons/src/javaee/sessionBean@2x.png | Bin 1434 -> 503 bytes .../src/javaee/updateRunningApplication.png | Bin 1463 -> 575 bytes .../javaee/updateRunningApplication@2x.png | Bin 2430 -> 1629 bytes platform/icons/src/javaee/webModule.png | Bin 1235 -> 364 bytes platform/icons/src/javaee/webModule@2x.png | Bin 1755 -> 834 bytes platform/icons/src/javaee/webModuleGroup.png | Bin 1251 -> 373 bytes .../icons/src/javaee/webModuleGroup@2x.png | Bin 1721 -> 800 bytes platform/icons/src/javaee/web_xml.png | Bin 1398 -> 463 bytes platform/icons/src/javaee/web_xml@2x.png | Bin 2033 -> 994 bytes .../util/src/com/intellij/icons/AllIcons.java | 2 ++ .../icons/OpenTerminal_13x13@2x_dark.png | Bin 1134 -> 223 bytes .../icons/OpenTerminal_13x13_dark.png | Bin 1083 -> 115 bytes 107 files changed, 2 insertions(+) diff --git a/platform/icons/src/javaee/JavaeeAppModule.png b/platform/icons/src/javaee/JavaeeAppModule.png index 33406cae8c2b520d697c295ddd78719901db24f7..ba55aac029e7d933cf14aa1b29cfad59ecd777e2 100755 GIT binary patch delta 101 zcmV-r0Gj{v2Z8~RBwk5LL_t(|+GF_t|33pIn1N~rcud;!pF})r06h&z#D-@VnlgYe zQ3e1N{>O!hHUI|D*(4bNvlW>=xLkl0LqnUe3vgkW0k|*#&%mY3BsWW400000NkvXX Hu0mjf1=c1} literal 1011 zcmaJ=J#5oJ7 z48x2T@=A%$$HOr+NdITP9cpwMC)p|~;|1btE@Ea3TtlE>X^W_YG-GvTAEg;);H+7x zlB#+`(y_&9A%+Vqhq4(aJsmijzJv&;Q? zuPy1K!A@TV=|G|a79tu5tYzDif(+ZzmFPM==2_5!kfjWJWU8vp0U5gpB)CLG7hoKu zL=GlkdY_bTLVx`JQ`oDlI*2bJ4>w$$UfjY&7|M}k7ik2$6^xfVRh+A1 zg1tI+fGmT_dDAwq?_FxaRaGk39?@(a6_gB11vt|*q**1IjKyJYDwPr;%*Lm(VoprR zN-~xd<1m%za22dKEM$`o*XVMiLQihk36?`6E66qPAtUEv3$!wp%-&vU-#TOqRkU7yIo5+-M&XQZFZM-^}(G_K7A4Of-+MHKGc349!?LOU*CK% z+w9ka;>YXH%VRG;OXV*cHwU(AeaG^97sl@IZfnI8D}(DN-@RtjkIwNs-=FmBBw5ge zr*B6ds@r|St;g>xjlPNG$Vl_&kK4`sh8e{*!};p98*re2s#)P0t2nba9$G;LNt^|MxGc1LI{4 zUSJ1&dixYE2EsITz=r+=lwbxq;KR!Y^oxQ4cfgw`H~+tUa9SCRm(;m~9q{GDE4bM0 zGuvtFfD3yU{y)053yc?3*hAC6Gq~8kMb)Ee0Ivf`#?WGwYT1xt2T)WHk%N&PKygt_ bZwCMX|Jj|Lvah>500000NkvXXu0mjf)~IN) literal 1200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|AGv5AS3i<5=9xuv0@tBHk?k%fzyrJ0kF zi5oD;j9_|Q@{>z*Q}aq-dQ%X3opI^~rG(r9pv^9+MVV!(DQ-pixe8z(TV>*QizQC; zpn6kqyTuWwUVWfr^g;286wfdrVB!HW;i(qLfv5Y_JYZrk0;cLi2W2Z57#LMOT^vIy zZYBNs|KI+w1Cv@CBimxW1V`}?bM{QX*4b28z3y{{NRL&*6~@JU5~T-LFc*Zor8IFQ ziL%{apE4uZrIx*cC(d!nCDFr1Tn`jhB}#Msf3S(oAXolsgVMe=2fNMq7#d%@UpJ_! z`z~|l--l0j%?&%04&S%mFL5q!zUOZNhDLRBf1^EhC8FopEg#&Uf1juPT%P>Cn*yvi zTEd!|WmwA2Yd1z5Id}BIbbJ0Y|GqrqJlwdnbW2Z@Fi*Vw9+u7j|NLTH_W$o+=KiMn z@%ER@Sma`E^-p3uz{k*bVyp7%b~mX6mBk`1nh#U1oR$3H`t-n?=jG=dYEB(GwIJyY z=XK_8zF97f%St)i9FLqibS&Z7?CysQZdqUYo{P+E)Y!x$^}&QeAb~;YOzPh8e{*!};p92ha)KPFvtRWbqi__ErNj|#&3&QllxIfbv z>;Myeb+{M^)6@Y?iAE^F403?Ep*sDdV89(TWs4@7Y={@&0gC9*&^DFhuIYFnShCMW z-}n8uPhOfBf6VVY?87k3pBWQ!XvN*P(~G`Vy}pH(L$+A3Ct=yHNhZKj3M>IUqe;^s z2P9?g_-9}Q!#o3OzF-%!k8?8ANXf;Jj%FY>hK(d0Ly~8JjhDc*swarwKfFlbs*)h4 zqFFj?@SviO)lD#2AJ5D68JSgxa49-^5rMTaRS9ArWq&2mf>-+c%a%~Z-PZg4UdFOHNR?23raOuw+v;Y!&Lbt0o<-#-6Nh?Y0RujB+G{Vo2I8sRhht{~xMpduYqffxG$sr?8cuGXRwX7Oa{w z8eDnM4P|h=2_zeuc?f4)U7V;u8(I};;5?59rc_;lHS6dOJe%b*x@Akc3^GE3Kmw$y zDx4VR#Z)LQ#$z#-VZ;aouC;gvH(o= zX`rM{sNp*mb87os__lhxT%~<3LR&6{lA+wW{%g*yD`XybyXRVT*z-Nmk=ae;>Lk2Q zU|7dMMo8tIX6e@Uc5?lZeGfg~;a%%4rusHlKYH!krN;4R&i+~HS>}r0bgXsvS3iE+ zV@#!$MrWzld-YvqWl}hKVE*8fsWV^ou7`Zrip}4S1x`Soq%T~*73=w9Xlk?>$MzrW zz1)A}1AO7(&(}ZQ{A(lWEtkFCBh~Ka3s`61#rHyEK6?G{;sNaYwcr=SC(aM}F3O!hHb7NX6^zl@BpCp+6`4J_T!0lrLz}P*aABAMxG(@Qp?vIw8k$M~0000< KMNUMnLSTZ8j3=A` literal 1014 zcmaJ=&ui0A98awb85>hjm|lElDjVATYP%+}b*xRd7ERgO!U}pYP2SefCNE1~ZB{(Y zc^V$n{RQ3x54xKN4;vE%LGY{xJ?cphUK|MXrE5D6*1*gA!RPb&e!k!LeVYq~`O)EX z!xTl0=5tDs%qN3!Vu<|D|2)vhbQWhTxP+E*OLHMLYoICwc}rV?MW`8TtM6cvqQV!< zas^k^o3f59Mhh^EZ#jfbQOOzK(eygRpbA$^J4OF^y+Z@jNYP7il~bJzteLsC3rp=n zS#Q^M$)IPhgQPDL0SjUc_*TRAWIsiBbY-#*j#(OXAh@2Q4^36n1&~251aT%F(K$W_ z5)#A5`IyLG1p>!MSuV=*(FiZdoFwyc(EVr<%{7+gqB7TwMRqB=hOr~FY^&8`T2ThM zD=aTb63Yp!AVdfv;;q?O^CPx5(Nj>Mr@N+uO=N>WQLCaRPSM2aVG5Shm$kianMlD{ zUvpTV;ewQUKvn%e)Ux_$4;SH)-+u~wj)kMs69QMz4ws zHH48@Lk`Gfz~qu?8>rONh=WP#bwhr@3iY5Y#X&Q1yl*Cyv5fu{&iRZJi^mJ61 z%ZeFA6k;65r+Zul=}imTxW_e)xUqrUpc5>IL{^|{-i5}Ti!9K|ST+ZH;Rotyke{-^5igM*pyrS;AG z>D^2KNNx^*}js{{eD2|4T!Q`{C8ITK=yjMACiG1;l z<*#Qf>HS|bbJoAy{)JCKVjwxFnp|`Plz{j&R5HqI;)$!RYkxQYzkRmt|DQ)y|Nq~Q z`=8%4{}D(Iss^N13E2Q-|B3m{zVz?)rS$)wZrA?*{jmK1`Tg1d8+s@Ihk6ID7N-H; zGcNp_w0P?OzxU$)KRcW9KVsgQ|K5{N{l#a1F;cWexlKNM1n7$Y=Qfr7pE9feKhVJc zK(RwWxk#jFHD5*##5`CaR!mwd2h!lyfAX)}q|<*vY_vek!xjtKNY1+ljXF^%jz-dq zGa4I6NJtI1l5ztyLFEJSMI;Rup<-Du&A1F8FEdes0cN&%r3COtQ2+n{07*qoM6N<$ Eg8Y@Q{{R30 literal 1321 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|N0M^ht9M>h*|3sXZwR}&{w6C)Q#V;2)6 z0~bqkBNv!nm;B_?+|;}hnBEk)UMB;bdO;~6w*Y9fOKMSOS!#+~QGTuh*vD3xxZUD{ z(>$o&6r65xbj7JxALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesoMYUMPmjA#(ADD zjv*DdlK%YvZ_ljS!0O^N%Y<|G96f>frcGZPei-d)+Ox-|gVAGwTt~b!Z=btRJi`(0 z#vkSa-He6GUEC8)%pVl26ckZr-k|8?!L)wj4gLlTwvM9@Q2Uw=^J z&5!QhpFLXVjVG$dSN^a6bL?MF`^=kBkN)5O>rm;M(w)eos?gWGDO>Mf_)RsHQ_7Fl z{G7b-;Ah6iOB(iGx?lI#j%QNys?O$Djk_P{P4fP>p`cLLGx+YI1Lri4efa-BzKxr| zLXt&t|B0q23$lC`R7uR-(0b$k{{Irw;;$q>NUJ;X;n&&dwsXHbd6wTi^FJ~8bW6%3 zOO4x4zrWvq{M(-msXHoMn-cFv=C+;RAJOpfc#Vk0bDq#*zE$k+S~p*)U~>)azW867 z?|EH@&dMFqIcE>>Y-#@ZKJfAX>&cBpzZbp|clx^E$f0!uu8yIJ)KT}kF%9g`sut4=` ot;bAFw&*k_MmMj`#tsdP41eURHz?{Bse%eGPgg&ebxsLQ06b0LuK)l5 diff --git a/platform/icons/src/javaee/WebService2.png b/platform/icons/src/javaee/WebService2.png index fba89103bed0450261fd174709e9e02c5392bd28..590f3a50d1dbf890395e2641eaa0290b8e877e71 100755 GIT binary patch delta 491 zcmVQuM}+t&~*f)O7WDo<{3bHk*sj*>At^%X7|ezf%MNMgJlF zsFCmdg%YG4aUv0U4%PYE96LGNc? zfx;3?_3OQvuuSg(4ZdR;?Xr!CPv!7@%Ng!+Ml33D{>6G|J#_TMPn zbMy!*H2sFs&cg6@M3`I9Md2omIjFqnV9`++(xxmiTV$^>T%21#x636yeXUk7ab^yu z%-{2&J<ZHuUUoqe(IS<2fP>9z7S*&hZl1NV96{@GbF@u%@h-@|_SprZ?-Cy( hM#}#3gJlZ-!xyTlu^IWQO|Ad{002ovPDHLkV1obS?)U%z literal 1441 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 diff --git a/platform/icons/src/javaee/WebService2@2x_dark.png b/platform/icons/src/javaee/WebService2@2x_dark.png index 36ba06cc491aa96220a74be7e44f8ac270ce0920..46daeb43859577146345659a0952e03bfda02ae9 100755 GIT binary patch delta 1001 zcmV*`BYy+MNklAZeZ0stldl9K->z~L@>BiM~}BCn9o$bV}@N#-^>z;@&@l0rZN z^_l`)9g3BzEL?MyJw}qd3UsM1U6|1}HN~GGK&cFj2 zO?`h%S1`B}P;T^!%qwgx=v;|ql_hpVpt+ZyAC?VJK}9dzS3y6R)yUeJ%n zGc{x_(I8qUdzfo{T~ziltg^D>cW`U(dy=^I(<0RNh{&AW2E#ZfswEmkOJNQNvF;nP zr(gi(V5qFo6-#waK8IdhoXb^9NYcE;%}Lf1h!)X2)x%s`@yQ!NO@*6U#yIH4MaHRY z6qK~N0e|arYlRRkqDi!61Jv3gY}*6}U6Y9{@|oWni-~HbAeyKhkqw}Au=97ZxZ`O& zL%wZqeiY5BD+JLb+Oh$3BkU3>Zh!I{wN2W*X_U>>6a&#j?e9ed2rsp{qi`3g9hNrN zxgzQL)j%{+TRwnxI5gin#)5VvoIX@?%^Pt14u8(Cmb4~n%LdR`gKVQS3@3WBkJn>p zUhfFO?MIO{VHk}7YRmr!)n>o`+yh2*ylU)06bY}HCT9pL&3^gEu)I6n!DP&jpn0X$ z56#Zty3pDKDTRqHlMAquKQ4cpBPz-VjU$0|p>qVFnqnq|$9=v4jPUBO3^H)j;a@j( zHhuICstZKm1j0SA=5ItW_ z(Ld7QcQS@^dZlSqFRDgy8eS84f^*3K$qylW>Lww+G$2){V4s670+yD1+`mgu} X1!C!D52^1(00000NkvXXu0mjft9jl$ literal 2046 zcmaJ?YfuyC8eT-ChKn}@1UZDD#TLjt5F$YXArNRN#MFQTXh;@VCE1uPB&33X+G0nr zpoqoW;a-Xw4hIy7ax2Qkf~CqRsE7=VfL17=f)qF#EB5?2oSoVIF7rIk`@HY>&bP;d zgZ#`eHW&Z^%((t+K00Fc?1qiSta1@B;N<}ds9~4Ov z54MAz0AT0<2||%j-WLopEX9lT7`$34N7(@2xkD`%i4TAXHVTY^WK7(+t^tRIBut!; z#v}6NK42{5uTg-zG(iHf=788kg4^MR^;9!Z0V#-xuxe?XOvz9)aqo2*=v==|z+vA* zkONHIU#3EN!B`(y0b*%*nyZ*dqGH`W@FW_EN+-Es$wU%`K%@{z6ju_NLG)mdXxI-A z4vnUeL^Jqo&WBj&iiwLw5IKWDP^naS6$K9~VhAJ;4-W#7Odyk8QG}~9QHF@rt}>Jq&CK8D>x;vdlBKcBT6c)#q!*ZjN zs4QmgVX@K`KWhvq1%v07^ItSc-k0F#}rO3uRfo4_wLe zUZ~4*38)!@{#^g-oR_xH=Fv|-b}hR2*!Q3eZFU9P)gn$D2LM(oxonm|-8UrU#o78= zBvW*ei@!6tkBYWJ_c~np0hod+`M~a@_tSz6972Ble64XyhWG5~x`U}WgN=jD`KJSq z+2FB7-x>N_IHVnIG4PLd7`pqNO?Fkh_vWvq<6RROH@OcQY@GzmiQSiOT)dF<^jxp| z(;FgwKwZx5QOk4nho%O$?|p2#s7sAWInwC1Z?HhIx&x zDF%n`D}e3mqqVntLn6e+^uq1dg+WxSEY2?P4zBQ5)hUy}{DQUGf+zb2$6lXV@z6ZV zC#JN(VL`H`r8>Q9TM;QL9k8_YegoQds}kLmYlnKYrKxLDSp(2O*l^{i#x`MZHy?q(yesVTXmDsS?xNB#nYjTlm z$%R+xkc&+ec5C+7WczJ)U&-E5t9I>{^o%zNP9tu2f>~w$PXjwEwLS{-j@-1w|n9jzVEqj&Of}~Q{Y+>@=n{I6ViTkAf|bfY&hbN zAKl+Il^C!Q%_CDK<+5`WOO_M5kVx}$e4xllOWXGL?b)hzmpWc=Ett$dB+cA(veZ&) z%X1pTba#w&PMF`A5Nr`FboDqcCbI@lKv3K;k&ApD_o_GSmj#<`atWMC*rZzG#StvX@=J1Hd{uXYeAsexBwLRJ6y%r_bZ&nDacDJ=vj@LEJ_khj^S-#T)XG_fz%^+zd~BBr&5R)53bLIQ}(w$>A5QI zEAxJ~r@FxLSOl^vZAFdU5Meeqh@78Qyk2H^t6W1Huenqlm-h)~AfovEox^p!pw;4} zq2g{G`BbOQ2?950?Hg}4KC`{Ga=xNz-&-HaLrq(jmYl1)^kuKhM!}gK&vgxH?*_BN zo059h@u{bJqZ@VWy&`QR3Z_y)kC(wcrDqqNeeAc0U(wyNmD`#wTl!sWx4LB_4tq1Y zf6b>07sgtLZRs-#s^ga~mMuo6{->{>xt%+<3%NC0eB+)yJCbR5*pS(O^QXweQ|6Yi z<;t(=ImL0O?>N;J-v4&e6!duE7ZjgJb~hOmogTKb6PkX}*JoW+UVUoa%PRNR9g))& zaaJipMcO=R&(-Fjo~Pphd9~LHe^5#I3E@|EYLNxZ%*vV3=nH1Oiwnq~TEGw}Jsx73 T9x(8|{*TP{4PsyQ-k0_tM&M6U diff --git a/platform/icons/src/javaee/WebService@2x.png b/platform/icons/src/javaee/WebService@2x.png index c4dba849cf4891db069812e3f0ca8d691376dd8b..516a1b7d2927749fa64ad5d9690a539df428d3fb 100755 GIT binary patch delta 821 zcmV-51Iql856cFSBYy)DNklN?XSPI)C@)+Oe+F%W6gGdrC+F%T% z5euu3e1U5RRf2uQm>;2UL@p6SY#=rhdx@)jO)h4PYlhT>*JOlhGmGoCCzZX?XBn&J z@{OgQ1bwq7zJIW7>Ohg@Hd~`TW|=rms7<(ya7mLZOFr(*e)xR0qa_E;P1n)Tq(?pR zz4ts^_Ec!@o95UawpSAC;+jDl5F`SVS;e(GP82q{)Rk?}v<{-?bq$=3JAg9}7)b|) zQn1vYipz$oS^g%R5)EM`1BpJgOM-LvmvrkAOm?X2hks#h*THHj!s2)dMtW|*X}g4l z!87m-s4(?51Il~tdWyLs(XjaDkTVddgJZ~m^VpMqyl5=I@8L{LIyC5fcNgRKJj@IT zSp1rT#ojc`cL_+;)XeZE^{W}GfsJv-ZZ|XV^Ydw7SWT~807f(Lqb~#VUsQPCn2jt` z1FB885Pw(L>EAt1>4Jy zXVeVrW+jL(w;{3G0o7A0W^HNSntL3nC^r=#sd@m1EA3F0TA2Z7I3@6HLW?9IhczLU z0jv>ODPEaHxUCo9?oP+q(nfFcgAZ&hIYSpt6MqIghU{pO@I;)^ibEAW(3CyHlI0@m zDs*J3hmwCupdj|g7f5(3SkKgHPi{&q400000NkvXXu0mjfkmiGM literal 1938 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|>(qotd(p{0eng{h&TtBHlVp|ORrk(-%? zi-n_sp#e;VL91WY_2COp*wIq-C!ng>kmMZi?;->WLiz`(-p>Eakt zaqG$S*bI?yk>mf3t#@Bmnf*r1aHUFSc38_YMK;mgKMYH21#Tz&PB^mdMtfMTr_`1p z5y##ei~JX5)&?j~af%9%=MuZ*x`E@Wi?hj%1ri?2rmM5J%)Z;ZD}J-_Jn46*3g#A? ztGz(yY`^f0^<(xvu3NWn$M?z> z6eXB%d?@)P|AEyU`^Mgnd`iANg0(K1A0;>5OZsEpGXF>K424-8hg;gezn|I1Z29;B zm!DAVk+i%cUb8Ih1=>5-`yR7?Gbcc%=lPOji_ZG}F}t1jvL%$~j#7}m!o8rF?a2ai z%F~1urCq;w$ht7!PtrG>f8*ruH7Z9+X z%`erH(>E12JJv3o{`F&p;8Tt3Gs^|02}ZjbsW|POWoX^fB9~c)x0$lG4w24Axn8mw*3Q5pp$b7AL>Ysr;(y zCF=z~?&3nirx1 z9(@x%t8sAoEB%I$9S7onh zRq#ktux1v=uDg0`g8UXN{8jHFm$kztsA+pGr$}YcgrzzrzOCU`17)Odw-o7!%0!$w z+4*D&=UF2i&lxA>>}J*Ws%ftHlC?r-o`VY8j;Aboywe|FdCR|n;lIMW`gT9JAICoL z>9bvvb0V#jr9Dki>iWx6p$m^Rw7Zm~iXT4@F#Z>u_3?PKnna$tPvnQ476INZ#xr$x z31@HonkD`2c!-3jcux!a^7ZH3_AKDCvXls3W>h-k{LE?0*}h-69^0w)8M9x~t^84&G}*P9du<-;L6LPS$0sK!+P7ysYxQnDYO_o` zqf|cP?E$w(GJ&~|WsEoUODA8w#GEwY$Gu|~JJuD)Y+uZrv*8!hE5@r?ft!4vDoyiC z-lIFKeW8ZDwc3{V8&|D*({$mD%Pe-$Y;J+vJr1Hv`@ggPxFKeD{o0Ppu@@4fYR^4j zSzl5dx<0Z_q|WEYoUr9pmtGpZsyO!k-q%zArM=ewz5h{}k&VG=a?G_f-UHh~wWO!3 KpUXO@geCxY@CK0p diff --git a/platform/icons/src/javaee/WebServiceClient.png b/platform/icons/src/javaee/WebServiceClient.png index 9e1c7579ce45e59afb1b7c516f3fc9b6d4d5ea9e..a5a951aec840d890ec7bff9b6d17707235e45312 100755 GIT binary patch delta 449 zcmV;y0Y3iv3fcpZBYy#*Nkl3Zepvqh{Qm6!4ZV~9L%jo6duz5k zb_2X;T=+L>@zno+@5TLpb~fdI#Jn^Ay(gdA2bAN4Iv*;*QGdi?*6)Sdcyx*(>mk-J9O^;48*R)W+ow^;c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}lJa|;V2VUI2$*<4On9mVa^UGcH4m8Bi-4(Gxi0Gg0|VoGPZ!6K zid#v4{{OdUR&8K)@tI}9IeU(tKz!4tuMIzp{Fo;=*b3}#>pHI7sn77J)!~nH$I*rz zg0mSF&hlEsWU(AQ!H~ltJn2BT$~R_(KE|X%jlRaNg9oH@^b*=GeUCTbvi_HpY`6H- zXP+l0!|(l<-@noRabnuGX+Qp#*$2c4-b|8k=InU9;LWV=|DoGBJ3n<;WdBRa_)v4e zLNj6gm+kTU`J10C$a=J(>H*sw)+Aw#YJP6<>1nfGiLn*#d(ZR#|Nqn-9~!1RPWafZ zetPBA{d(Y*Z()v*}vlWgxuOm51&e#wVnGd$us}vzqjST%l{Y$Sn)@j zH2KV7<;|RafB%2E+n*0#yY=jpb6c{$ilp8DWX5Cn@2`9&qptLGrkxq{)jz*K&Q}(` z$(_FNBM+0V+y8u*zdt_yE;xGkLH+Ey8-JLkDsKGv|25X(tnC?|`k##v6J~$R7O&Fz z(|W0E(*OH1AO6)Z5zDACVAfdrKfQo?Qe6+v|A|+N7cFNFR58<7HI3n;w#GTOq;=K% zMXwzasrhp}w)Y)VgceI?0_!7{3^|6zNcFmtn{s|E6b(DLeG20Xp|)-QhP4Zhw90Xx z@T`;%O1t&tkNo?*3EH>pT@OF0Y}hfE)8CKvsok-!_FE(xKmO&LWqq+x&Y^*kq3Fqy UE!rPbDnO;7r>mdKI;Vst0I-t@oB#j- diff --git a/platform/icons/src/javaee/WebServiceClient2.png b/platform/icons/src/javaee/WebServiceClient2.png index f9cbd8f9cd9c404d94de829659ac8460cc56dd47..114cddaa64d4ccbb12171cd4c30f6e60b4b02808 100755 GIT binary patch delta 574 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 G68-`T?5Mo} diff --git a/platform/icons/src/javaee/WebServiceClient2@2x_dark.png b/platform/icons/src/javaee/WebServiceClient2@2x_dark.png index c99727025e5dc6f246660201a244266c3121cdf1..c4734599e65a96352c16f4e7f920d9606f4e1578 100755 GIT binary patch delta 1182 zcmV;P1Y!G@5wQu7BYy;VNklbUjv6nZ)IV!13tL(~W3j3J9oeA3JW zG6l2p^Y<^Oc-nJ%GZKCHq$lV6&iDH{|C64aQw9KK|0QMr8-IbfdZ~lp1*8Z068Q!B z2C3!F9F)K_$QY7DKmf@<5~wppj*2Z&WxYMdG>*i6k~(7B$QEwjt+z+R7p+m%DIML3 zvzs}J)7&dbpcacIwy3AY8Goc2Pe9l0Md+Shf}WY>6gQ@pK4evtuHGWlPXcErWqxfuXrOU}VuuFG6KM%`3;%Si|3^IeAaA$9^nI zKx~dQU3SHjn#m>5Q&{T%yEKj36Nhr0k5?|TF`#h8cg2=S3n%j>_V`Fa0g-v3TH%iG zcH`B3;#-D6{|b**cN9)!6~C>eplvLcI)|J~GDsGi>wjbCUe7B~JIoxFJEL1SrV^m6^DPOMBCsz@=a0A+d*f<>WS~ zC!)Mrl0mX+hC>0I`vZ9~uRyIa_-vailI)rO4EpipZ0amQ!SW7IRB)a^vPkATee_4! zx0)v)F@J~JJI14+#glY1nbeqt%hfoaJgYmjcPe?49rJ<$q;qgm1w}aHDgaf!5Jb>Y3_JpgKVs30m=5L)a3%}vvQ>aM-w zA%7M@7QZ3Ka|)DeQ*SW)NSD#G_$z`jdis z_Cwp~e9<)9{7`40L}bZHS=Chogoe(hAlt0KRxSaWd-dmxG+cJfm4wtv!^Z<&5ib9B zo)vf?B=Ab+%LKK8SF_t{_d_W(n0;_wKYuH_W2yckkHDmmfQcjUGjjN%k!q4z>14Bw zhGMBV`QV&>M%$^^w|{Fpy(LioEAku>ctab>5V*$?*nf)=4SLTsny5{g#RtVuKTP2Y z%&dRVJ5}c}$lnwYcs~6%%ocdW5qORJxUA55FVqZr=NrvbQfi?fAD4!`_s{F6-+!&_ zp`OA5S+)S#ha3_T*x(2lkSCCrkpR2zVWrOdo_NTs#1f{#L~S&fsXtTTHrXd0npI%= zVGKTke1(930IGA@6jXcg3c#M^}&)$w75Hs>>F&`}) w0cjECX{7(!rx{0JwFH6HgAmv$K^I{AFRfXN+mNfh-v9sr07*qoM6N<$f`uwiod5s; literal 2198 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 OX+2&2T-G@yGywqk@iO!P diff --git a/platform/icons/src/javaee/WebServiceClient@2x.png b/platform/icons/src/javaee/WebServiceClient@2x.png index 38cc043356e2483de18879d280401b044969c8c6..30a584a1ea72d34ad2e3d9e769bd59cb1574a986 100755 GIT binary patch delta 1052 zcmV+%1mpYA5U>c4BYy+;NklF7{|$yxn$Es_hI`!oL|%|`!te$*s^4! zP8=#jqsg3uc0(Ejokrf)*7_2W0hX4rma=RxHb9Ic1dJl6+bH%$e$hY_+^^x+6-h?!>)KErE=wFU1GBS8w?BeIA!#EZl$#M?wJzb7?kgx6Hmgx^RM zI+_U70sRCHNzIriVBQn6rX&3TVcb5y8Hrk zt%ImJUjvUj5Ab9I!>Pcn9hmP+#@D8bNxl*uQ4MVxUq; z86h}|Fgt3-u=5Z+-Fq=J_yrdFlQ8~!8dL>s`84N%sD?w7@sxmE2d^Ok&!<22;Z);s z%nhYu%&kMmAKzlsm5qn}TFlsR7*f-+ zYk}Ko_4zTtR%gHiSCVhfaqDy9 zGmKvO3Tj&mHvia*t)^D6vHbB2T63^0R*}G3wgqw4ZX{N^k@T~G$!?8r&llXuu-cDf zOJzScmb;)T5tsmLz*WRyB1Htdc2i0qut6LmfqzWagtQG{jmWm*Y^?!aVHdoesra&_ z(HFk{`)(G_*vDQ@zgTh(bXgOw4V0~$zFwx9a@*E7ohwawkM2cF3CKQ%?9rmacVaC9 zHrSldl~!Tiu^V+ZBS|?ayvrYchsG|gwq&PK@FWF6#5nOrD1o3aA{M}cn272~3sk1d z{(oR!IDZj+C|DCZB*Ojt8cHCFzdpsiP|H`sNQ|&%@yd*A4)*(%V?bS1hJYwYA+LS5jp%G8>68;pOsmGM{)v@_&U}&ZJS&&0%zm|43Ri^ zoG#gGq*a)c2!Bk(FoE~;nuBhELE=be2!HcPCJ^rynTofT78|O>0(Q%OEd{?2N+3`| zd??k*97>akm#FZYALN~L(O+D#Cj1lLWs3*9MhL{pPy&95u#e@eAhDbn=0VtBWcCF+ zZJ$7QqQEZzK4w`&f0%HAtbmYE?0XghmlOzGTCBiR@NmYM0)e{``;{9YFsDFZ?iC4M WS-*fi{)2b`0000cx literal 2128 zcmaJ?c~ld39uF0wc+ldJZ4n_Rh$%wukVC?i06_>sL`bOxLo$#c$;8P(LZDiy2Qe&1 z@!%B2;sZqll*7UUMHCPeam95JIaCm#NLN^J5$FahcK=v*-kbRy@ALV5ug`m<^Y`;w zv(jQE0)bfL&EpCTD|+Ewfi!$oTJ5A^`3m+B!n?o-SS^A8gqs8m2hiSfQ6wM$M3T7u zt$-5(v23#}PzVe8zAP~)$BPy)c#T|XU?UJtE*hmsybplU;XtHJ!N!c&Hek>)2^$kk z;}iKx4j`5Bv=FdM>lY~2?h`X57#C->lZIswkOQy?t&vA7R4fe}^Ffzo*e_fYFz62u zcpn?{M^Zw*KbiwV0GfuUIf#iQDw@v3lV~I=gJh2;6G;>TkwPF*97tpqk;x*_&>tU+ zAsQr!UX6!l`H~5tybgJ6g&t;5=cxYlRzXB$Ycit!a)_MfJGVyg$lc< zzy(xdNT!5kpaQ+1C<+H-U^d2(=^rJ?m7io4s*i0lG>o7TDG4MzaiOF|AfNyLp>p{r zvIUF=D zSf-GGYSq^t;Cw#ITcLtQ3Nhf#Wn&Bic$rMX@}N3$sB}jLgU+ClNFG!sl}PmTU{D>o z6gLW$=Dx_~g5nrCpnw;-l0Ui3CAkYukSh(5xd0@K1tgvjC`W&&m?c{}7sn;_K5`{X z=R#kSOE4ruSeWa7&3W<4V4j8TC)XMdpL`D}3}%N6t}Yuc>_Z@oZ+mmy0yW)Dr{kj6 z$EMiOXScG4k4=}N@ z+Dr9}GG3cRdxR`Gx&meAUM7$VMmoEyMy4v_?+xbM19Ms#wNE{GVQ;+;Olg$ir67qgG{`EJk5&ijUJ80%%oX3-%S$W)dIoC?A37qeD&UR&2 z<|I{{cEH%Pp|sOOaW(mEB|hfJo&3xp#?ujf0>IVp-_3x0abY3;8P@ z39ljNN0o1~5_&HWP5m7%)(R);c8=fZ#ci!QDXkW^7rmS=uo(q4b(jOgK8?Ha)|QVE zzPZK$*KW!((ix8adTQXXB`)&t5&cQi%7<USH z8Gye%N?LLDT%fI`yOVhf7HQ&kx97#T`i_p7a(U-=!jaquFt| zg3Oz^Dh#nAwp<)dHX8`x*Sb}Qsn=PjE&I0J$ovIrW6E^IK#B?HCF0nwL*d3uqeL|4 z6lcTZoWs~>PEG+*W|){Br)S_Qe$Gra<1w#H8?SPqLasTkWY~Kt$I7#^wzLBct!jo>s4Q&SwC7@;IutD^+`hS7@c_a1||JlRqWs zYAHwqYHYQ&f+%o{R}Unpu+PzC4bEI1$z&btzHVwej*011HI%qFxX=!FM^uo5?CNzz zwBaxgSe+=1*r7H3R|~=BqHv&~en8Yc@xVcvt(HcWUy!E`-9Uyf7wP+Rqt5Eg17?rU z)#Xi`;(j@A+l`WVket73t;4{kBU=wPSvQbYfdj)VXq1W!b-N`)ZFL?z$%UZ1=gNAvcZ2 z9R{xZB$*X3g6tG^hvyFFwwSuWCac`POk%w%-}cW)IM`A(K0xT?>E~V28m$$mrgN_> q-avC_E(IUgebF2oG#mVb5#oVaae0^hg|UTyytjuRx72-a;(q}8fpEwG diff --git a/platform/icons/src/javaee/WebService_dark.png b/platform/icons/src/javaee/WebService_dark.png index 9fea41ede95bd8d3be784250db8a9f2ec00009ce..118fb9b0cd2838b62139680cb99b5c3a21bc6371 100755 GIT binary patch delta 481 zcmV<70UrLA3;F|)BYy$GNklAn@=T-uL-0%<@hR0Mt}N z;nKDg{ttDC0l7oo5KYAbC7V*HTxmwbWiE7^nH-^XiZ`9s$bU2HfIJ`~l9v@IS+PaK zrLWAsEKKj7!ovO;Fzys!n1ax~8h`0?2(7qoLY^cA{f?wUi{VLs7OaP7uo5{3om(sf z+Yv1<0%_>E#{DeLrz8a`r=T0(PGk54Y~fQ-b3!p}^ri|k(#X?gk9kpRloT*r@?s{C zK~oln){l!}!+(|t%Qz!QBM*5gBPlTQ$kQ`!TC3KA`aau%qV(987MQ+E9uW)D@Sh*7SWpdL Xi$-}ltAd9Q00000NkvXXu0mjf7}?-T literal 1430 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}YmBLj02Co>Ck3sXZwR}&{^QzJ`rCpQCU zCs#8I6K9xSm;B_?+|;}hnBEkGUUQs!K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}~% zJgD9j+-@<&saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(GOusdsfq{wJ)5S5Q z;?|Pj^VwG%MCy!Zo>bYb_-A=K5pO#vmGH;;-U0VQ=j2Z=ClY)d5}!W| z^5|L`bx!)u!5>FvD7@`zh+6g4{%F|?;g$ElKmKxY!~esIjA^mDzYiRcNh``y9b yVIJ}9ai7X|YazDZCY#u!e&`lmc>Tw{fsw(t^1)92zP0tBlG4-F&t;ucLK6Ug8W<)3 diff --git a/platform/icons/src/javaee/application_xml.png b/platform/icons/src/javaee/application_xml.png index 80b5d50e8cc8635b0cc002df4afa020f84190b61..c7772fed3f1de80cd8d500e5581cf42a10c47939 100755 GIT binary patch delta 224 zcmV<603ZLQ3H$+&B!9z6L_t(|+GF_t|33o=&zUplKLK11#0)SD)5k!90XLBi!Dj#i z77P-X0^;j1LvR}KVYMFvI!1R5vK+Dj!60ns;KYCnBdftM0Lb}I2F7i`^fHhCSy8TF zc6PKYm`}6;AjKiR&M1mQd|j{^f@#3v3EuyKeneK32*W_}L|LFboIktJ6o(5+J-{}? z3;-(pj|<}t1E3)wzrzfG0dzJou>dy!W-BrqBORb8B9K3casi$^K(q@88bHVeSTW2C axG(?c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~kVQzruhHvr(0azaO%|uIz}H9uSoF>69Oh45EGtifgE_cPt5}+_99@a&bC>zjDdks%G1R$ zq~cc6pa1{unK{nPwH7~gfLE$vhu|?!KR>q1K0HU7H5Asli>Dl1G(oUi;zVhm!yfTd z?Ymn9?{X{tnQg!m@%bYE(drXf6JiCJl>RKMJNT#}HG#L#Fz}#(>FiCF0kIznd;iz7 zU1C%|=MYo(OWgVDulEUMU)$a%*qI$@@&0`8^?u1)OqK`#Tx0N4_|G5aY>@Qu)8+j< zr~Usn{TAey8sNc zN$KXzY}_~A8%(%V&ee1Arp^u@HpwQwXCgBbH_V(MnYhAp)-|&hY#wc@vsXwy?=zKzqi5xUmwq+#^MDqtpNrY9IO`}GXrGPNjXzcIl$$2Jb$GG;Qi?V zrjvV~Uee%z@9b679>*gi0KFrU0e4p?aC^DWbG*GgUjr|qc73{o0@$R~DX2fd>oqI` o;PoLwY{Qj{(EC&D5+A@XG3J=m#l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}dGqk*f5k&}g)v#Ft>tBI4jiKDBdvAKzv zn}xZnu{lhyOMY@`Zfaf$Om7N8uQN`)pp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZn4B^ z9#n4%Znrq%)TVL91WY_2COp*wIq-C!ng>kmMZi?;ID5ri1_mZ|PZ!6K zid#v4{{OdUHkx5wuD6Qe>2{-~V)%Rm%kuzHWTZ z!*l#hM=^t;9g~y=f9#pK#>R)Q(J zpuYT~Czofd^RQ35_OPc($Ampq_}g)xEgBXFKYTsxZSed2dijK3_wU<((D?E5tFmWi zLqc8h6+i!9^`Z|u*r$J6yo7NBbAw{h+Y_%8Z>XuTpI9;5_(S)p#+&Eg&uRQIrFE*~ z(Hp|+*u-Q_3LBP{a=1AjIdkY(!n4`k4;kEa_9kDlW}5IreRa;U0tU+jzloAJ`4~71 Z7-W6F%)D-EyB1W6db;|#taD0e0s!B`70Lhr diff --git a/platform/icons/src/javaee/application_xml@2x_dark.png b/platform/icons/src/javaee/application_xml@2x_dark.png index 3f5ef3d2e214d922d0c31b2808a6a86f72c83b62..f2c6e615946590bd916c20014482c65deffe676a 100755 GIT binary patch delta 380 zcmV-?0fYXn3zh?rBYy#1NklAoWyL1)f>Z5LM(}ETjW~ z77+^YtwV$YT822msTX94Z!))5N=Ll zp6B_P1JXDWHFXv*fN2I8;Hlhh{LKuomqhJsLFWLM*YWQyB>p_J03|9`J_oLV) aK7b#cjwaG^^_Q&x0000l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|3lvx$?li?M~7v#Ft>tBI3|xuK)6tDBpJ ziHVDokr7OVL91WY_2COp*wIq-C!ng>kmMZi?ON7m;#0|S$ir;B4q z#jT`2|Nq-F8_lpT*IUK#a)DgO>gvfIhK2$1CQOC08@nKsd1!}NFd3T{WHZNF!~q27TnG2zGY2P;3% z|HXG8)l#)DVd1o=Ppq0+XHA>@m}8L)!|9bhJ1&O{xydE};n$n}?|-_>s^tO+UpGGI z;W>V$qnN?aj!DXbKlV&qW8=fu=@VqalAlkU!gj*Kx( zbf&=W2BX9G4DZdnjo%nH$jxsH>rWRpVwtma!AdEXvbbNz4jke+xw%p8PQtJ2@@#FY z?)w{VG97sFv2hu1PT+*rXA5!;{hQHwC|D#l@xjv;7CmhfHHW|js%N>Zfn!?8M z%-rqmmnHwh1^WUfr#O2u8?Z}gZs0#?rfB)#;OqN5@Av&<-TbswG3*cPvwN%k>knQ% zP{iUZQ}FMgeoxa2{R_72>;E1oU{IcR&+w%zqsO1gp=QYz4KfDHPxR!lGq6Z7yp}t= U>Ykj%XHWs^>FVdQ&MBb@01U_w-v9sr diff --git a/platform/icons/src/javaee/application_xml_dark.png b/platform/icons/src/javaee/application_xml_dark.png index d6fb5223c7f16a555d23270b839d325d46823f4c..0d20c5b29a1b3c367898c2b26568b144a986d8d9 100755 GIT binary patch delta 227 zcmV<90383N3I73*B!9+9L_t(|+GF_t|33o=&zUplKLK11#0)SD)5k!90XLBi!Dj#i z77P-X0^;j1LvR}KVYMFvI!1R5vK+Dj!60ns;KYCnBdftM0Lb}I2F7i`^fHhCSy8TF zc6PKYm`}6;AjKiR&M1mQd|j{^f@#3v3EuyKeneK32*W_}L|mXeoIktJ6o(5+J-{}? z3;-(pj|<}t1E3)wzrzerRaFIJbT%=u0554+9iS&7kUxoX0iHZSvc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}Y~Ggn7fR}%{}XH!E%R})7AOBYKEBMT=J zXJa=fBQuy@m;B_?+|;}hnBEkGUQ?WUK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~5( zJgD9j+-@<(saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R!mxQa0|TR!r;B4q z#jT`2|Nq-FbDWuLEq>?#uT;Yh!DF6&er%V0c#bq{D6DfAPdT_~f?&7AiPAoYJ>sX@ zcee=Mydu6{1-oD!M< D^J|m$ diff --git a/platform/icons/src/javaee/dataSourceImport.png b/platform/icons/src/javaee/dataSourceImport.png index da01da4a5a28f5119f34909c6da6740f4e2b3cae..b882c72b90242348db05ee14d74fe3b92078cd36 100755 GIT binary patch delta 506 zcmVocd(M*?pCUe}s7|(WlW;orsUvIL# z5J(Om{{R0!1B1>~M+4LOUf*q2h5mO~ANAjUUBrK@O0GRG13HQ+7{F zO7frLv31YXq{M9#<9;k|3hf6Qpf|&%By~a9qU04ZYkfDx-G6o3p77scbL@Z1RU!Y4 z=Xn0ep5ixo$F#&`uc;pU^=7&L2O5?L#Q%3qN&F8s0OXWCQxlf~>1rTW4POzNWwR;z zll7*k|7I(L{_D+k|7S46<+9;I@Bc=NeLx1Nf(!uaK^U;SH5?@I|Kx`L12-=o%~*VR zex=>oi07v3!hil7uMGTexZMB0$?D+$221_^FKrG3y8xsIZa_<>3rH{#XaLBNJ3w5x zVogK7(MrGXhHC=;8vrqg)?VxZGa#`w(=8Ehz;2*(pe_IzVs&JFkDA_8`;A(QUH|K@ z^nzoJ`A#4Mz+Tvm!wdg`UYO}UD`czERP+BDiyZ!IEpu~*W7Rn}M0sH*)Fp|~5C>zB zMi?gKg+w9@!0QDt2C+e6FbvcP#~}X7Hr!r-V>|{Vwo%m!D_X;UlIn#OZQ(x=UdV8X wU*8@5>BM@%URcr;_8+7cqz7yOh@b=m05k7esh-%4W&i*H07*qoM6N<$g1+ANaR2}S literal 1451 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}}hGjms0V`B?*b2CFjR})8LH)CgW6IU|} zBS!;6GdGxCm;B_?+|;}hnBEkGUK5;pK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~H- zJgD9j+-@<#saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xW8&3L1_mYtPZ!6K zid#!2*=C41iX6ZH=1kq4x;Z;p7E6e@^l+tnEL@(Tps>+1F+EZ7kdmN17c2M14Hpuc zxWYNay3*A>oT|7tUU1mZ(Hfy~l66moOL6tiCw6=8ygOsD`Q*Io6)vCJ&8>}p-<$nE zU*gNRmE7i)-y{^DENm+5D&BXD>DMf_gMUrz0$R+hYM-(`xcRWJ?y$-7!)Ug-+!>vyvw3=h5Sw7_8E3h z6DA!sWH!0Y)DaykT=nyui1wGC2ke(t{yWs<)-K3&A#~CES6lKu#8u9Ivwar&kL&6M z9g&CMHlMqnUN_^^j-(8}XFm1)tFABmdq-U4@?;l9hSVPl+@f0=7oJGm8Dgz(xA@z< z#pmD4?mVZb-ga!m`Dr`69Jczlltp;vNF5Miown!HfwZ&t**j;@6}hY zudDxju=x7Aw9T?Wl+jhB=32+Q^Jn$e?NDrz@l*Mpwn$!S->*4ha(`;RYjk9@UAyvZ z?PY}=1;KqwC)pPLGb#zVu|;{x%Nz4|S!}bJyw2gT&SSfPUH60%n;Wl52`QGSui4P( z(6IaNazopr0Dws$LI3~& diff --git a/platform/icons/src/javaee/dataSourceImport@2x.png b/platform/icons/src/javaee/dataSourceImport@2x.png index e9df9cb86bea0474deaac052ccbe7673719bb11e..1e9697c8aaa56a284214c476ae9dda64ff54e9be 100755 GIT binary patch delta 1960 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 diff --git a/platform/icons/src/javaee/dbSchemaImportBig@2x.png b/platform/icons/src/javaee/dbSchemaImportBig@2x.png index 08c93018108024797323b2396bc42ba4e41ab595..af5281303f1b284590bfe9175e0f9629ae0080c1 100755 GIT binary patch literal 5517 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

0mCceJV1JOUifQ}tLKU5~Wezhgc;(VYJ^Ek2t zeH-*FeTxP3L0+VX!AYERVX7wL+GKUa(uEMp#Y?jRApc*?w+RuMY0$a?{vs%fx$!C{F-@U`yjTa#^Bm-=hdK4>aQK3-Fjd9WyN^JMPU zgwd?j*x}4A>qZtLJ0o^HCnIJe!JpN?(T^nsgA3x%8cYe{j!=?AEJl+S8Q_s+{nwZ>=%1a$`f-x7 z(qdoEN{u}nZ{#-`mb-ngX$R}TO9u`dP^0`}2FwRH zd=Qv|Q2MtypbE5r{$EJwfP7xpfE3^X)af5a%?iJ31OD~T)BiHypOgOu5~(zx1H|UK P00000NkvXXu0mjfk(Yc! literal 6391 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 OBGgs1mES1YVE+fyZhQd% diff --git a/platform/icons/src/javaee/ejb-jar_xml.png b/platform/icons/src/javaee/ejb-jar_xml.png index 979a8d4beff9c793020cb6f41a5173ad47079e69..a2761bf29bf876cfd2d4970d8ec94b8927cd27a4 100755 GIT binary patch delta 352 zcmV-m0iXW23i<+&BYy!wNklG4AaLzf&n*?4Z&vs z0~QPtmjdGJFhg(}@L{zd13E@`4YC}v0l^?_=itPE3nQz+FaXH;PX@+q!1OYY|5;J4 zV0L!2E0~Y2W_F<|b^}0)Lwuc)74Hb~b?F3(=K|Rv+zArHYJb4t3EuyKeni$h|Hf?h z(k0~aDlp zGyrA@(C?j#%gygh$umDYz0@sZd8H+aAwV2WC>C<(6q)`6DPB=!c^2dnG()apqyt#| zf}97%SK%6ptyy=>nNY6x{g)7JfJWxYU5i(#05GT&A@!N*x y_jOQ1RFMrp!AM?!;aDKP0>s~e_%IMFg2VyKvtV7akAjW>0000c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0L_H)mH%H%kk1b8|yOR}&`_M@v@=Ge>6w zCo^+P6IYmCm;B_?+|;}hnBEkGUPqjIK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~Z@ zJgD9j+-|YJsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R*lOV`1_s78o-U3d z6}OW9{Qqyy%yDL}wfLa}yiyH21dn<8`LSL0;W^T*p|H+fJmuh`34+}cCrbMq_K2Tq z-`yg3ms|1AYy+N%&lmZRR-ee45G%l>^k-S!!AA|L3A}}dfd>stXK$(ui2YF5`@f#; z5~K1thnTuw;?7rpy-z6n+V(!d&MKnzjpa257VUf0f6WiivB)#nZ`x3teri#^c;gxM ziOX^n6eSg|9hc&sKL1~8MBOX#JN*tD9vp3-f1PQ|z9qH4zlJB?na&nX3S~iFk*S}UERL^|K!y4 zf9WbGepz0Pi_S3PXFqMJk{Wt~Q&VD=$F)OF5?t$;Hj1e{-266WN~z|r{{_+96T~@= z?3dt7S+?%~c|K0VJ^SY|i6@F%9RKjS*>=KK4iV`VqsexQr`$DU%RBkDVB&oFo&~cW zJ0u=x(iZ-^-%5CZPb+yR-^)9Jg2ngX1sUi&J0Y# z;-AUP+?@04ok#CThG9r_2qA{YXb_1Nb1#f^2>>p_FTfcO;eQvPg@QVXO)W74|W4$QUCK@1;4IGkCvZUBc8Pv zv50s}op9gt3fPCJx^{or@{t1sY|9vk=tX>(qzY5qEAQAm_irc!Zgt4@i~2H35M6K3 zA1QW-Jqp2o6N)aw=_01YiZ2-+V#*RA8VdmC7GwnS0UtHUF=Q8lH{&&W>|Y|Q0OVz? RFhc+U002ovPDHLkV1g{l6g~g| literal 1751 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|w8ft$0lrKN?rxw)aCtBIqFg{6g|xrMob zk+Y+PnKMkUOMY@`Zfaf$Om7N8uOm*qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZUI`3 z%PkPSDY)HYfm5$O&@uX;ctwh5m=G}WfSB-93*^AleQF*su@?bT^{mB@4+1lbkEe@c zNX4xq(|vt}9Yv0(M{x;7J8H2ruj!b`9B(Ms!Okhj7#Jx0*fl9>ibm%Ol_fEz5_*RY zb}#5%aI9IpBarEY<37C^2_|0ALW|YvT$#4q%6+_+n;EyTD|)El$QZt)(Vz5=RS^L5YQFa$gpD>tCF8< zd&J>0E4MZ=Eie;g(md+2#>U~T-HT09{ztUfR>-wftS{VbyWrNf-bQ23yIH@ZM73kz zcq+YZe;ai-{L)PEO$@n#v*xU-+h8KRDR%h@wMzM5{y*O(Iye@bZ@YMPdDV{fHutR8 zaZlU34yg-F&dLQ?{+Qd~Ad|m;gDcbX-2rnnmsCfdU|(Mvyz(~BG#Kkpm&CxI(5aqCJ>yt9!Gl$+2fQT_R5?4wVgmLBE{cRt_V zu(4jL(Nyy6_Ng`-ISx)gwAOBsi%Mg``HCIQTkag^?m7N=OURR=W2b5h=PjBe!u3(x zC){_zmkuMv)*aEJ98Cp#HWaVCvp`&;u{i36<$lAX84Co?CMpOyUN_$&?vRl9(#*%! z@KHhJoy~isI)o#h?OqVNssFlG+9ucE9H-)TpO&zD*z?IM#iv~P{r0y{s_VOF^f>iS zKFu7i!rmQKS@HUl*92C9AA6rXZxBrn+oo`N-Tr{0j%8e&EpcbH6^ah+Gz|$m6XFnb zucEY=7pcf>{slZ{c{zk!iT`;^za2Gw$YJFg_~g*b&G5$4gYv%Sk~lS0sUd zu4r1{m&Ll)ZigHXd=2Gb`RZbQcF{!(!Ha9A^>6mGckEoLoOnyLfz72u@`CD8g^Jll3zxw)fG(khNQ{i?^*#b0{@QZ!GJcys25P`Ca3WrEULNBpCXY V5-00PUDE?qHJ+}1F6*2UngFs9qT&Dm diff --git a/platform/icons/src/javaee/ejbClass.png b/platform/icons/src/javaee/ejbClass.png index caf3496dbe5b0aeb2f196cc8897929e3938a189e..c296e7b447daf062798d2be7b1d1f387a557c86f 100755 GIT binary patch delta 534 zcmV+x0_pwu3$6r^BYy$)Nklsh%W*04=BC>#7$5+ z6!qu^1Q&0*{h{yZ^Z(1Pe*C}b?l&+7u|Z-$xsM<)Dwejz=dh&-u+*A?F$%3WETIgnzJ6nZdMGf%q^GD}uxU Yz)z&Lmk)-0OaK4?07*qoM6N<$f|6tl%K!iX literal 1528 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*Fb5}UI2$*<4On9mVa^UGcH4m8Bi-4)xpi1=t0|Qg8r;B4q z#jT`2|Nq-Ft2VH@h~)0-)lp*-VoH)%2y5=T%kaq8!G^Qreu6{;OVdmV$>(0&pFenW z6c~Oe*wDnf|Id%L{~sMT|GPYY|C9f}|J!qFY!REyc<{}dGpoOfx=18SB{oc-EZXr? zQiXNr4?Vkz&A*<%-@nkndB%b)mqxSmm#2y+K1oVX{lU&7mLs9U9>g5PeMPzLO;Ze~ zW1gMgf~Nfrt@iutQ*UgqkUD%enEl~8jTxI+eVVT{T(PVEzLep_+9t^d>SxZgUgKf1 ze(s+zA?RXSfwyj}^apXxO%7R&Y(Fw&JKCfd96WmL(1-W(E>{ogHqNh>Qu}_oQY<&2C{h9yu zHBGxNUe=%)0FK&vRVOuR`_~~?9 z!_FCxPd67Ri1HdIoVwkA->&xWPidKmoIOlD=OVxI6b73yF7ET3HUIJafAe!)19{|P zC;uz%p6}qL6l%a6$N1Uh(&6Xt|JDEf$(?bc-XbmGX&rai$B!E??$`aflK-oh^grW` zd5y1v6P=85-_EzMKP+cg`}^n9+5SBD>;AB{GM=}uoPE}SwI@D4^3?n_XA=K>w-!1P z%YQ`t;^#wB3%vRE{Qt6*qoejlMl50`OV9<$JIfG{m3Mph$0P* w?V*iAoRcIp)ZZ~ZDpCkzQ?1q5$19M)pmm?q&9RxU3{)0-y85}Sb4q9e02VMsY5)KL diff --git a/platform/icons/src/javaee/ejbClass@2x.png b/platform/icons/src/javaee/ejbClass@2x.png index 1658386b9c44e14aa13bc468ca92158873ae5762..a7e22c53bf3454b9ae36cf83a17856c4e89aeebe 100755 GIT binary patch delta 1181 zcmV;O1Y-Ng60ix7BYy;UNklrYc>9LIrW`w#Zk7fY7x?OtpyOQvS-l5M_G z(2b3oP^V^{v{a=~U^Q_R7&-={7us6xa}b%NE@lc*0b_`xLJ{Onq97{{jJBnbk^J_3 z&Q9Io^f|q3Cfkco+Meh4{C=Nvp38ZfL_|sdB}xAqf%*~uCVzgO4{btsVJ;bL16808 zEP*E?zkvZzDaItr^GQLwKwJU{OaXad22h+#f&HxSzY;*uOW^CZ74d`j5)we; zhvL}McY_avJAZV~B?jwr>V_{Y!E$YnO8^b8h}LBFtR`Goj>WSQmRM#(8dU%np98=0%=mfE@LH7@p^VNzx7 zr%V()W;jWP@)|OpZXo@MDpF=j;UY-#u|t4xXbMw-1c~2xkZ6%JOLkT{9z(U zKTbw+=zriB!lQ4w<>R);LpySd0!w!7Ye@{Lz`7uSKpt6p_fcMEj$%6q0XHxLjf@h| z+&&px5(Pqv0&TG5AqZdsDzyV^+wGNnm$|spVR-+ZymlG2u{I8P_4cB7?<-1xTH|N^I`>Q}Pv9Hj<#ThD8j)O1 z{k16!!(Ph8JYe6&>+Z(k<$Om)&VUQW@muYRL&9AAQ8zx5|>WLXSB0nf}-kKra_~x)s;odPL6K0WNh{r!gFL zbU<~OveMEt<|A7d!%1yNw=FtR9C2#rUlNN^1lUB}B7YgFn1JEZU2>pU9BAwXuWxKh zjG_({N1NIaTcVoxIv!#Y71x)kVKfjOuYX?~As|XL^m+A&QL|5*{v9QW38e!`fJsyj z{!X@0e>609{Z1b@IV5a-BYNae7oWYVw;q3cffM&c=}5LKd?YjBNm#soB}y8q4)iKL zVs_`OIPx4mX)(WwYhGE*Mzlle2jQa`n-jI3M?8UM>%}WZ?0A1DNw7N?i?enAqJK=n zt0-XpdpL%|$LtcEYN`iUs1BQMS)(xr3H zep&Zb`t<}Qtl$OdJ`f8gvR&LU`^CRz>*8Fg!uFbGF5Y!M0f~sMI3c7-WN5)!6p03| vK%ztuU~B=W*g9uR4XgtX$Oq3$V;27e2lEA-#u_gI00000NkvXXu0mjfP0%s| literal 2375 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 PfJy~VS3j3^P6C90izBWb-<_t zMz{lJ7n(94V`@8K2N1UbaRC}`0OA!u{G65!nCm@pdtOyt*0M>ZF85{@S^S(;Wd37H ziNmATs))_eU32q*YT{_>fR4(LLqJ3SW5Ynld~c{poJ9)<%zuU9@SY`=Kp#KDrfWI0eS zIjVbJ!n9)Bhktk+(MhobfZ6Q_y1^iygDeNiN5*u`iI`q&b03ETE>i3OVBBMkYmm=D zmIKxJ#dXdMm|kRk4~x3blscfHtukyIt{?{a9Ar6Aol8Q;6!#fLR(GiFfJL#LGYe)F zqNW2BM*w{evK*+^BDKBO7ASTFN&YCM4tNeKUZEu%&TA|O@;S(Ipjtg3Ulhp^sn{Gq z6h<#np@j>+e18RMIRliQ2E@!{_h_&<093s8k>CjIB_Rb4fZ+^K;=<#I>9lqL2ulKS o3lN_N;xABq3>4=;%z~^I0EBb}f=(?w!TdrT8|96yRh!52;#L!Od?q%};YPW@{PXVGCGgcdC(|dOrf&DK)Yr z*?<`sEwI^hye!D~<`!7JWmbYh(iXt;-J~es0K6G?J61b6(yc}YbxCm_x<(Or5W<(K zkrzps40*7YW&xZmOHQ(4xDrk!WOy>JRN?brIfg4xOo8HxBwS8n1c@iZLk}WGW2q9- zsLL9PC7#rXjprE>MO`kJ%%zag>?#x|2m;0As9c^TB9b_dlQ+AQoLs`Nf(~$2*3R&D z+6jjg%@%qMuSUd7UzFfrMr57bP@BYtp>8vS;xa5$(lF3q_d&PFq^RtwKrVs}!si+gJjZZME~ zC&!zeR-o6Z5m7*9w^JmRnX1dmQe~=AQ&l*gsmxHw6`G7x4VI!*C{q;5VXlt0u5kb- zKg^|GaUEj|ce~}8Af%m1m&~pTi>RAatckn7>!;ew z)f>v!9_q8jY$c0-3#*&-THwuD-)im;EUY3jzvmiq;RRy@hg$;D_f6rO@7m)feLDr= z)B&O5*rveaWmE3>{5cA_s9RIr_j`6qbxqrt}f$t6My#PU0_zKivM0zan;{i*jw<>$`oXAJ{=fk=uTz4LYr1f`e2v2(Uv!@NS`-LME zo7ggCQSZ(3V>|g$RYxp#x-k9ErI+sY-^r*fYF_Uv-tp9>L%xyjgud#yI6g{RxTO_p z3N~NDQm*-FXR4VuTFylVh?uuK(lF1gzRHibpYY%( zm)`8I^Y>ioT0e8@HdHthcn*D7F?q`j=)sNYJbuC#1glqGpkw-bJA~!E2@oS$E~x()_-8w@Gv-;xLrHGy%IpJb91}U#70CR$d6v%Ujg>s-(7^0K5r;k5x_zpc0Q zYQfdRafPpQw|!%x2!ybNC3u6;S5WxJceUYD_w-MX`yuN1v*hR+NqItaxBTO4#FzP0 z)#CPynyVSe49&xcvpyUCMP#6eIdCzebN14cn@gbYrbVBW^h)99QH@QNs);doe%%r# ZnE;`IcFB&d%J9&CSD%@yJCsqp;U9Y9KCJ)% diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay.png b/platform/icons/src/javaee/embeddedAttributeOverlay.png index 17f672749ef3649d20b643a692bb48e9039da942..475c2ed43d4681aa30de9ae6e37cd0b1f953ed13 100755 GIT binary patch delta 86 zcmaFHUNS)?z}nNrF{I*FvWBki-+pdpM=1g02ZwnSTED-$d-#Bgw7`A^kv{fg3|)I1 q0u`J@A0B4mUBJ;VWst?d!OT!n_;V_&tJo9)0bcU1~WC^d5j^QI_-oi};Dvq&+YRIrQZ+%8NhKZfG z>kZP-uP7#Vcq78_q2p0D!{qXzXPE1VfF@eAU6uX${sRkaOJ$eSx~O|a)Up@0e6+N+ zSU0!UP1$1eb08NgRKP*R0HL$t21=;1U0sE)qho;uT?koM*&|a8y$XuhMzU>hkyC70Dnz&6=mO4F3!SM#NZqO?eEtn7* zo&b3DcSFzf{ z1P3kbfnpIPmTlLOIjI`S? zW3N^wLuTUP-v0jXlc#fclo;GT@u`)oPn~}K?uP|ViLg4>*n2zuk!c=0ii^Jw5A%<= qpRL@Re4dz0OzmEcJ-9!@jEpinH>MLWzD-20n5mQ&wKs*EcmDu$jyDnj diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay@2x.png b/platform/icons/src/javaee/embeddedAttributeOverlay@2x.png index a025cdce4ea970d8e13318c86f72ea1536b22aba..e7fb7f3da11c7e0260783dd5cb2a6017a727feff 100755 GIT binary patch delta 109 zcmey*-o-dUB`wg?#WAGfREmwNr zMB#xGXIYiEtF%bD=q>AFW)tbRO1Q$fm`|egzzSwJS%X&%f$Tk23=BsMZhdHvA6PrXkVGag|e@46K^-O&2aT7fO1w zrV9o=I|EX_NCYg1HQ-z8wkP@$-O?4wIyh!&(1PHaM4u#8Ru@4Axe&yecv$E77)S^V zALnC9ei}qLKFV@YmXC({h{y>d9|!G^Ced7DRV*sGb}X`!=qkpJ$g+(_gK0z=^x8*6^p_9ibg+qR5GZODRL2rcGCe85a=Nm%*KQMO80%{e z%QIY1QU|E2|A$&u7wzF9Jk9r?!d_{^fou_asP5|I;#MbvP>z^!p@xxLLTJ6y#l|A;Tor0xhFSpg5{9N3Utj|(8#&S0Msn3hRZA4`}>96SYc=8{^QZH)C3i}d*|beD^Fg1d$<)ENcHE&_vB}6dGqJ-@v(XCU?)2=xP345V05g$_b8Mb=MFb-3~q}npZh{X)R|%G`Skhu_1c?v O!IR8q7nG;+%I!ak9zsU| diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay@2x_dark.png b/platform/icons/src/javaee/embeddedAttributeOverlay@2x_dark.png index dbbbc88627655f3442ee6ed46526a82802d98157..942f4cbddb5a4c20fb0194912a42147622b40868 100755 GIT binary patch delta 112 zcmZqV=w+Osk{ROZ;uunK>+O|=f(INpTrTQ%g)Mp<6t1M^x@Nst z1i^uN6FiC@HYTVyMGy8kZ-ROe1Gf>^Cy{3VzrEy&?;`|9;D_>RDmFG>s45Uy19An4NOy1WZWv1 zaamiC3}iEUh+zWTC2WdH&jhY+tU(MauxdFn{r%Nz8d#=GFN+$dxmj4V=9?Z|YA%+H z=9-Z*>6r^49Y{pLhFAxIz3%u@Ak!UPiLAq8mIfUNUX$rVQ)R6HvdDu#WW>0^@sl8# zVtA3CoaWC1f#VY_mtgrsoEIc6CGjHYel&^ZnX6J!$#r9qolMs-b|sc=G#X4J!62{7 z@~Kpc&?LOMaMfk_>KZX6$rVH63^ikb2$i=NrgrQt1>p>kOuY}NguZo2l z!pN^77i6>G?6T#UsNtXMz%@wO`94}<% zrZ|PmCPXDE_P7c%>Na$6k8Ae1DmRcDc7pAa$O`nV4QS>(WP?t|k~P?iGElF}H3xc8 z)PY=w9Vd2ip)@W_7mg2s)E+4xst-L?-=y diff --git a/platform/icons/src/javaee/embeddedAttributeOverlay_dark.png b/platform/icons/src/javaee/embeddedAttributeOverlay_dark.png index 383baa3ff1d2e106b7ddcee056bca310f66131c8..e59fa89a420bc557cb2e70725dceced084c4d9a9 100755 GIT binary patch delta 90 zcmaFCUNJ!>#NN}zF{I*Fa>Vw$yY(?M8XFbg{{R1<=Z68a$HLA|PByih4L?{H7T6fD u1w3KxViH`!A+MIfpvbzItw+j%hm9fP$f4fv?Dx4DfWXt$&t;ucLK6U|pCQ`- literal 1000 zcmaJ=O>5LZ7!H1vQe3ED%eDwk)5{8OlF24)61uJJrXLHYuG=l$gF>^(>~3h2Nt3CY z_Mo*$$aoU&-=XZymP;}yqFjo zA7U6LQCQMTbRLe!-~jz!_|-D$G)CqtWChnq(+m(ZYvU>c1=p;j5;E4Z-m9sNpQ_254n> zxoqujSgOs=OoORNqXI4>CWzckFVvzO+t$_SIzHxE(1wtW9D8J{ViZ9h2MEZVoVElg zfvn0w8A=Mg1VjO5cp<~XOd5)splVPCosXr_0=uS_^o33=y34T*LVS(qo6RQI%y2lU z^H5b)UJ!XvOjATU-0_GRrM+;ntDvLM3LKv}*aNYmS;gBV$5N+9DY$-5)(bmjq6On4 z)8`>4#3^-whVg%>>-NwgDWPM({}c|(J3it|D8$==MK7*48He(HNyT~J5u6@jv`*Pz>aD5tCM}cz_*$V-7K|5p3>F-7CtJmS${k>%R za(QZokMH%bd+r|5=82cRuBDq^-y@GUdqBJT>X+Xs`XX)=^x1OsxqAJj_wDw;d5}t_ z4qL6(^W;xvboj%;!M%xVtE+D>pIP67FT!)*_tzeOt%Fek76&Wuo{hX=s)r8}!ilZ% s>C<e$Jh+;1>#>o{2vY90Af{q28aT&H&h}7hapdaSOu2>(}DOmR5Lz9ZUHejHUpkR z6%b=c1vUeIASnPF;xTCtE<-MY*?~%2$Jh*DfF_n3TWs4@7K`}q;X0kEmf6;HAt1fu}>P)*vGY9 z;&u;9N-5dP)K|pBhIpAaY0zyCOh}`!bz)qexT+Gn@QhR{q^S}^<+y7)9tf7~bJ6#G z|Lv1c4-dW4+3{QlK@gqkK{1P0%6;3s_aiP0mW z44W~Mu%r%7oACJbP)?p6m!k^ZcNFwG0v6DqEdfU>>z3fe=nY)~@7-&L1{)B2JVrlG zDxVn!Nn}D0@`rpf%LPF=>gPgSFv7hAc$Nz=Y=GecK8_dIsKAB5=0oFXrcxBL;=pDs ze2UQ}+cpG-sZ=WdO2CiIF@}pqqYTS4JnzE@pEaf1lH=2@Lk$HHTC%Acwu*G%DoO=3 zX~$@s>EjYKV@p=IHrs?7#yFC}aDLV;sR7Jn{vWDoTWHJ9!YBFur?8cqG9Z(M7Me6= zJhLj^Z1ZOu+-7gBu} zg~)?5V%DANz=$k8Iza zMC3wy@WK4=9+vR#@BZ#w*UwLN*IK{)gt+M?JWmq_8vUc=rwb?D|3^ACBwp@+W9A?2 CtBB_S diff --git a/platform/icons/src/javaee/entityBean@2x.png b/platform/icons/src/javaee/entityBean@2x.png index f63b23966de04fa2c84ad52a4416fea8deb9bcf1..3b527da79f3049801c2db1acca84dd62821516c3 100755 GIT binary patch delta 367 zcmV-#0g(Rk3W)=dBYy!CCmM{~lDn}5F1J@*crphXIV>KPqm z0puAFuP%fOaH+Sw#DM6g1stNO9$qjZT4?~+)-VS`eX<2AU>LIi2Vy`4Bz^B3h$02B zax9P)(V+k)o<*`C#uUJqu+RoketH)sB4V;TqlyEx34n7{K{*SNLsitUy3jLM6hM&x zs9{)glynlld1wHQp9UQ3Tg?lIqG+4_?8*mF-G&ATeUUf;5B-mA_OmN0KwYITA$Pza zx*-9kyPZE~?YCZmojM~%>QD)>1Dni=7Zjii@(T6mLu3E| N002ovPDHLkV1n0ypXLAn literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}3Ivx}jzg{6hLxrL#jtBHk~p}DK0p|QD> zv5A?1n;A^6OMY@`Zfaf$Om7N8uOm*qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZXGc z9#n4%Zns$A)TVL91WY_2COp*wIq-C!ng>kmMZi>j)x&f<0|Vo8PZ!6K zid#v4{{Oc>?7*bf#>lpqFTqiKMsP}-w=TbcI`c+xf!B;1H3aGzA6Yxp2y}!qf8-3( z@qcOE`jSCLL8wFBN!OL_k3$a6QCEi=i4N|DA2Ozk9auWllQ+spZ(w~i*&)WwmwgXo zQn*5$yVI63rjH>CX-keUDtWy5?C{2^N!dYxyCYqoh((Xxh2bNwg4v=Af|(ayD4%4! zbAd&j=g97r4?1!b^c0UWE?A?+mdYJ?Qc%`mjrSVnJr{pmDPS?aBIsgyK%iT~REAOO z08d9@g8(1%iiaHuNirXV`WdHK9coR8Wnk%Vi0I;Q-?1(9jWc9@|K?{LRc*)(_YXcm>{V2|1{DeP?{x5J*P4R&U;wz4l+Ak%U8kchTI1)u2+))78&qol`;+ E0F86ei2wiq diff --git a/platform/icons/src/javaee/entityBean@2x_dark.png b/platform/icons/src/javaee/entityBean@2x_dark.png index 952d584e7af090771dc5b283bd1c335999397168..0a946c280b2b962499ff26131ce22dadb1251784 100755 GIT binary patch delta 368 zcmV-$0gwLk3W@`eBYy!=Nkl89TRN1kUAsu3EeL*uf>Q@;rMI~& zVs%!WT}nm7uc1Rh5V~~f*Eot|!QDc9Qj${AyW~CY)i^l(ha2AXN3NF$DWwRR_y_zs zz~k9&S_O29Mrei>=o3xRE!uO;CYA+ogx-<#G)7HsKpA}yet+Ebg)X^wpn>KY5UM-0 zl?PB}Ks>k*EZ+dvngy?4hoLIvg2=&R}OX#fa*LnKl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}3SshhExv$2J_xrL#jtBIqTp_{9Llar&l z1&}myh3R$4PcF?(%`1WFO+n~2!KoLN5^@WGHoK%2WtOF;xE1B+Du8`#m5JLehB(cG z>P^Az79*T`^?{Dj2gNH=Ji~;5i3h}lr&=Hfp6*lgfQh{bn5w7lzmd(r!1%(`#WAGf zR??sU|LqSuFsZdMvMuIIa1@^roYLm4%P*kLyir`>HRDDNfqKSA)($lS9pTI$IfHck zUs|`mWROu1>QHymb!GeGki&D-)uBeBgS+8}jOk(rmJapgjWW_3SRYMxh;j2}-@}*` zu2ARhw55#cV~9f9k|T^t9&bK7ym4w$c2MB%NEaw#(PMXE_{ghZw&;Rj=7kr^CmHWt zU{U8evU}x&jvNI&#iNW1)~Kz0%=$0^*VbnUn z(^1$Uz{kAeVMjue%m<-<#wk{ZS`%U!So#|xx;Wf-tP9O)7v1^1`F(g3&;4d~7DorZ z73}9Ctt<7z*xxWEaWmOO;4#IY}c)o5waU97Fu-*Scl=Z{{=_sae%pb$6Tp8UY8FdBxE#KRz^*LnX|=U-p}$-v<0>gTe~DWM4f D4b0CH diff --git a/platform/icons/src/javaee/entityBeanBig.png b/platform/icons/src/javaee/entityBeanBig.png index 48105987483fed017dc019db131559cce9958936..4d81661e077834133813e62fcca9e0331be54c22 100755 GIT binary patch delta 317 zcmV-D0mA;E3fBUVBYy!NNkl8~ietAriqN@qa`FoZ`63Q3j?S?S zSzSAKH){CV6>$YF;0vk_ks1b} zKw&KC5-CH0wY4BNa)2=v*g6))Msh0f>se$+Dk9KQftFY(Be&0WDDoq&(dc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*pQzsV_XG;rna|=U5R}&{EQ!`g5Gcyp^ z%-qNrrq?AuximL5uLPzy1)$SnZc?2=lPS(cjOR+OKs0QRv}CT_Qw<1`Pd zHwCv_EO6@82RcR{6t76}3=;w-9uO0rYJnVhx=+mmCiWs=sy5kpzmb7~ajK__V@SoV zq(A@v+cWDj3N!aIa`zZ6Kfx30C(^;)V8PHK+W5m<;6C%CwF*xi{xHlxs9C!_K-Yo! zm%|?Mj@F4sEE;bxba^-K;P1$8{K0SOSR&ie|KQ?rwj-hrdw4s3dTewMU-eU5pq=rf z8HNvSnr zD;A!dn8m5#s`g;>1936m8#*^zjtlA6h}}87kTdUO)X}mDstYT00$EliG9;cqS#4+} zrQs|6@WKx1DJsqH!`}t)zxi8QTw5q$a!%ypmA@;E5)Q|OFdSsccy@5s?#6Yun9^bx zs+e9l&3SNW{Y!&qWzlSIDTm)VZLXKp+iP%rE2FMsxuzAv%7fD;uWqQ|_w@?a_`!YT z;DsL>+`{+#{V2aCCrF2((f`7eZER834m2*;aryak`~C+xF$_!C;tP2OCD5adAj=_9!W$S<{1FHw3rMmpkSf9( zm>OWfg2Xn#5D?6j4Gcll5ncf!1OXbR38eg*TuE2f?(XSbyBiZE`|3P(JM?BpdO87F7aj=s+=|&5IBPcn|Cs8!u5<@Xu|tNo0C0mH^V&KCyyiI(zkt2-yN;q> z7mW(wMf5emN4)E}go5Q`9&9ZD{-;wz$0ZbQgB`%N1^C;J68nG7mM%-^Pi(iD(;C3i tZV3%0AhRVzZQuZz9ccb7VE9`JVn5{Um_>drT8|9KW_IO2O7gA_&8y;)-Y=*HTJvbR4$D7TeO)Mk+DJ_Il6?*K6+%TB>f> zJrtaoI3II~A>iU>=G>?gO`JNk)y&O>JsdGE(OEWi;xNJz#W>s*1^36;C3n9^KA+F` z^L^ynY}S>T=?l{V0LU~M^>%iZr{0+}*l!JYbQ`;5(*`HKny8~gE)oMOJcJtqO}MKb zvtuq#OYjm_1^~Q#pTkKzEoK-caH%VWk%sXA%Lah5@^HX~HefX9#_D~3t?2%jUx`4U zM=PpPS>%?04)gkq5fWP+u{zL51FG?e%3lS`!Z0gUCTt^ zID~G{ik_KrT5O<>ATdxSRY_1eR1B&$Qb+|AmqN=yg&b1Kt`V3{lw3Q0psDM8lDAdN;NlPhEjg@i>&s1`r%3QPRd;t2&k zMxmrHK>G+km{N4Pi6&YrVx2xq0S`>d`l;t-Vhbh>}0kl~DABy9XXo|LD zFZ}+eFy&|oU@|*K5ltk@Hm+`QDpUa0k(i4nNC!bQPE^t6C1`^35&=-B0}E?>eh(3% zmX5Qc436oL%JD>Uk2O-YHSQdO!}7DK8D zuAV@faLi9na6K=$rBiZKlYj@<$a;+QHDjJilEA_7jA7r@Uf9S}d3nb5Ozov)O0JAG zBTM!5UwxjqVuvTSot#?sFgf>_pB;9Ro$3Q4H~RsA`=Lo+;Rs)IKY9AJJZ_s|&d}xV zh-~QO@K5y~5Gn0{eankUgoB(|hHwOUAOOd>i4gOMD_k@^x${b(vFgUs^LZe*n-k0s z)^lUC=G=Xq_h3D^9!NAqAN3(G=WhbfrYER2x@=}QHa7$v}Dwoxhk)- zM|@&eEqrqrDeBl^URBL(92wmcLEc3^I@lvd42^|L^12rvGafo5hFkGl8%BUwcH6!V z8#f7(TF~JBy>eM~LHi)*wYidmd&TRR{X267PYU9S+A!C#VC}AfsK8Tes^Td(u$iN2y>yEEegWyV zbL7c}%SYdC?!A;9%eorOFMPyL{EVF5zV6K<8MeQFY`(c*P0-G{oa;Wd=SVcnkArD% zJx-XAC!WGhzp9RJ84GqtnEfRWF>idMU}@%=KX*QDFR%^06d_zyQh4a!+A9I2R9k4`p;Huc;g@G-!-WK diff --git a/platform/icons/src/javaee/entityBeanBig@2x_dark.png b/platform/icons/src/javaee/entityBeanBig@2x_dark.png index 9c4b465aa522a597a2b92583ef480a62e88f80d4..67628940b6af6c773da3e15950fbd102a51684d5 100755 GIT binary patch delta 504 zcmVpbKQ9OLT?~(FU3jyk=;!0Apwu-G3v8qfc~$swkH>U=2NS z-gvKG&~{pY8v2fL^ZwdsDrrDN(#?Clp+eG2NH*dFEvp37(UD?AhZi9Va39z&HY5qe zicG*LdI$_j0x>TOupcr+HR3hu(@6wy7coRNq8%47!!blPq8tZcat=|6c<#0B-~}8D z3{r`xPyy$HgMU;ZuBiZM@7PL|7ESx`el0 z7NSW3jI#$QHllQTYj_b6w*MOb`fVjz#GBq^XJ3<53?PcWzeQDL*IK0lD%39@T--^b zet;45NC23F0x;NyiVVn4&vg~{x@aN*w=3NNlkAY8EpfnL$Gnct0JlX>#4liBuhCW5 z>!MKsyoiAYc!+l$myo|g#DlE`!25J+>9~Y~ZLtHmwg7M2QD*drT8|9KW_ml@^Py$!qnfx+1KPqm;I{b{w>2Jo-u{qhrQV+M`ssUb#DHVRLKu zKyXGtH)l3d!9?da-6)xw`5MkjG-_~*5;HRw%Z54^MbU|ynY$w3{usOD?)S*&^ZC9$ zxps@`rNo5P1ONaMONwiBx$*S3g86U*y`)fj8?_p*p?r1%1qz&aH42tsb{A?z z?atOCav*9azcVR|3CmI%N} z2vw&MJW0xCw18TiKtZ`!E^7wYV45YQfA3x5tV5 z$W@bYqY*Cgkd)oyKudHQ0WBbQyPa^6qNq?+pe;};6iNuv=PLDbr7Bk{E6B@Hh3OsyD@T&Yp{ER<49j zMiQIrzveuBMVlwKopCLFnDIU8q0LUvuI|r_UkU)seI>era{rIjj~+kHKVgYCaJA{1 zTB>>&oI?ZM0-5#R8CF=7bdwS0CXEAkc;Mg6h%Yd~Oj&{wmEfA>-P7EQ>WxNg^ONfx|lzMI-Gt5r<3W#1t(p46IW?XbVvbQj} zJ^?wxZ9B*eCm+=em`@sR&xu?M*fxatwLr8eYw%cZ(z5t!S!GL4dfQF+^?3~NioRWF zo9n#vGFa1kH?2#3JTMBC0{Isf-9p~jQV9WBs+tVdvEU%YxEnEn!@IVzqd{9@8NX-0 z@IY53eDyAp720GdGY8goZsK`7 zMnOUY>Z^Y($~Ld)yvcZTp=jra!Zm^I9qGJBD^BE8`kCcRU+EeN@|=~$9CLE#NbrTl zwqnejxpgGSS=^c`*JL0j$F1bA(@vH43X_Mk4xC5}9Dk5~+70xx&IQO}(-n>jA8H)D z5ga-{+^a~L{~*}(`|%JPuH;=0lv#!X>hOFRKn(eRa-fF`DzJlX2A-Go>>=hyD~MVv zLmI6+yYIcGfzv7BAIMdZlFHScsZx_Zaqt0rCb8p zWA2WNm|OeVYqgiJEn|PdZgZ2bwdU>pqw|OJtDD{zlynb|6uNps6UxO7;HO1BrKZl# z=;6cLddE)Q$NDyIO{f~}Ol6%4^`#k7KIy)CKO3o!dsZ{X&uRuHaq{QhDViwiKhK>GOS_QC9AQ|w<}qBrTjEUbF_ E9~neCYXATM diff --git a/platform/icons/src/javaee/entityBeanBig_dark.png b/platform/icons/src/javaee/entityBeanBig_dark.png index 349feacca909013c45d12ca95f556814a48859df..5edeaaa54c37c65d45cf8a40c5aa721864d5b5db 100755 GIT binary patch delta 310 zcmV-60m=TK3eWD72;^?NEA_#6G4o+S`@E9%*F5W=! zAFi%mLRammqd0j95ye449O5q}g&2~rq#6qk6lwbQ!={XL&U|8j3oQB#T@J=@ga_Q< z03#?FuKy4hsKFVy#S^BGP8!I-k_bfBkaY=E<;`6pJ5$6I$bZ8LRtX{jq~ZcoWkHh2 zEG}@+7Pv-UP^JQR!y?znkP2Kai}c8f2<)lAo>&-0TJs<-auL@=^uUk^^q?)?6ox~- zF>U#~s>_r^50vE}WenhnxGU2}n^A#mp%PNhZEOKC`o?E~$!)(i1?rtaNIkcq0#Rh` zYl4XQ6i?)*`7h@asEW|^F+oV#IDRHj17A&GBW^B^uQ!@6Z)o+!#y|8Dn*aa+07*qo IM6N<$g0T9CcK`qY literal 1311 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|}?M>8i=LjwzQa|=U5R})7wOH)f{6H^Ow z16Na5XG@q~m;B_?+|;}hnBEkGUPGLEK`9}(0BEyIYEfocYKmJ?ey#%8$5xp*-D2R1 z(>$o&6r64`aKourALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesd~;9w^s}dj8i;a z978H@CH?vT-=0~QQJA@xk-Num`3as_KamdZ1`CD`(Z(O<0{598tyOsH@P}dkLCxCb z0lE&%zZ~|6ceGACV$pbmq075*2Y*L);}3pI#}e6&{s$M2vmFt2*u&fL(_^E9_^O}c z0_}_+-IyHTa2>h*F|sMAQNko5Y;s1YsK9#Wq%<8lY;4wuIw4Az78=y zx$*}l%b573F>KV?TFbzG;K@%858Fkp{00n`b_pt1RxzYj2E6++W6N`UOUd4e*UpMH aFfcRZNi^{FF6aye6e$Jh+;1>#>o{2vY90Af{q28aT&H&h}7hapdaSOu2>(}DOmR5Lz9ZUHejHUpkR z6%b=c1vUeIASnPF;xTCtE<-MYS l7+_IEwhO@V3k1Z(0svFW9WFw~1~>o!002ovPDHLkV1i&VSFQj6 literal 1201 zcmaJ>TWs4@7Ohkapbf?Y7a>*EVB!H(j=QGgfndo# z7k%IN-#+=+=*XeYj@=yuL3Cz@r5s*K_YL^*_kkPhGG2O|bip}{N={X_ATg+-A_N&- zF2fv@)#=G)*iR6?2eo{`DP$iP6r_h_7Za-KCT0^v|3J-@m2v2RA}ni0f?A#blmeQX zpvIzECTohYq7Bbj@bJt?UYQwJc$FGB2>NRR7SN$1gPJ~J*g`EqZRiSk?_Sds*nl|W z3F=l-h3qI0kp)3C6b&j28v!vs#75ajoP7jv3>&7IFwKU8EGIC$z(&F5L*ZzaS`u>7 z&}J-rN>CNYF$J2gR;!_EIE1V+&GI}?GaSuvL5v96(}pA0f`+}fr656Du{6`skO5pp zxrnBm1cfubRf2AA$r|=%n{dPEnrzZ+h;d750khfvhwAzk+IDjAcE0~9Z0DyyuC&(;WeTDNWd~V#geF>D9IYS+*%f30Q3QQsnxUeqy?+Cq%?cUAc4R|=87V0qN`L2I9j*j8_otG3TYYRjc@GPFC_f6cjdh0Wt`w_J-4TfT<|HoJvg z{flxXK@gsYGSXna_D%7x_4NVYzWT97YQd{~zMp%6P1n!g-Tb>zAe+dub|-kfWAW+c zWMd!su=h-yJnK2rMOKNm9`NK+x!y-U?^`Q@ZPSp9pn~fJCB_H`uJya!zb_c1ezd4 z-8}JBcz)$~@7(H(>JQiMn-0BuIq>ll-Tcw|f$wge{QJ@q%1l`ro%lNY=@_YeVwc&%sj$i-I|esX^z Nne>SCLF$>=e*g*&j)MRI diff --git a/platform/icons/src/javaee/home.png b/platform/icons/src/javaee/home.png index e808b515f56800a61e4e326b4d6686119325b1ee..5d6e70ee7e0ae39efcea16f97d973b795913cc6b 100755 GIT binary patch delta 488 zcmVbL8G0Zd&~0&OPV+yShvQ0>|-xp@=3ow7x1={@`LYggHfl`059628fttADG9VbLZ(a|f=$Fj~0vHIf+(9S{=|voN1pX4JIRgIVNp%^ge+>_iML zX|(GwhW6b}KnL*liwT&!UC3#h?1Ylaa!{(PxS&Ok!yh4isf2JHv9&S*Mffv16CRkk z@zS`xX=CVXxLn#7n$jq&uOK1KaNOHrXI>;zbVPC_1YrdrT8|96u;3)7C&h@fps8PTXv-S7=KsEiEmNE-PSdLd~Z0xcfmHyoc9=7TkDs zV<;|@naLhHvOxk{M7B7MnYuD{8zg|vxdgXmK8R5#nKA}LFzv1gxIe}&x%)lx`Fy^w zPi|jfey(Kcnxzl~NvwGmyRgQD-{{4{H*qY43(IOg+sSWZN_a2M0mwu$#Q?Tacqy<0 zoUGi_2QnZ?w88Cg@=n`}I)b6(co-x1QLMm*po~l(ixXvlhl@d}o7N)_&IAzHP3n;% zl}%w|&A{c(tKz`6s(c4gRYqt@B+~$A_;i8*1$Z3xQM+l6&ZkFabalc$e2pUT41_P! zBTtfY+6rMa!vR<&SIGzkmIiCIa!iG#rDL06r2jU}A)h>Pc09g2FrUb#0_&TyqDrqyaug%VXNWdcIxsib+_C!;+{a|#yVAvib7 zyBQh|E8@jWIj={AOrMlMvGcODXSPj3!%!d2qL^F}E@=*Ev;9AmqUO;a-VUDT`=7!d zMV#-rbt@5$l^HCnY%JB;uZo=L=>w! zha~WCQ5O%@PD&ag^5FNHoA(@VuZ;?q{V(WZwx_Hv%_?#w_I-k>o3)EG&9)Ul!MyWYOR zzK0J&na5ToFR@>UaxA-=)G$*2G8VDbu)Lz8Az+M-%uQGiPFLJm<3D&H#{bC|h`%`y z>s;5K6W=*;d%9?mkzUcisJi}aq`0Q;RL|$x$E5z+FJb@TCbj?T)` z1)3$NM{j?h@LK-ze1|A#76->d1t0vnzbts{@9U@QFG^cpnL-Dqt~Axvd7tU8wIv#A zu9Om`{xZXvzr+{b?0B$xu-nj5QgyQ{^ZuPgx;1DZ7x#_oNfyL3bb=@;*!4oZC})^j z?cQWitJP#~`=+k1R`gVdj^6JGyuCd=ExD)qQRT2S6+Mxb^!&2DOE$0ES!W+Qk$?tk zLgS*lcWc=G;Ei)X-l-|ro_iofQpdeRm4$+j)=oUW*K~=w zewLUV6}c`40^)*efj{t~IMEyOVLIvB(2fS>epp?2;O6*n?jd|<&*Ar9t(#QDBzm`m u$krYcj6u=AqB_^Bb$NdY`#QNZaiJIt&)<@eQ zWLE@r6-3ksqO@pNfnpyN3TY7u(ju@Jq^MY*koZZ1??=|958Gzf#KbQg&lzW$QtrJS zz(ha%!fDV!S2~S%FxPFngX0tPg_8K^RC4!?o1k(3cos zG3u+IJeMg#bC)hi00*o>;-auW(!&bMKx1hRm!KRg<|Tlg>-pM3oPT=OV5msqJJKz}TBR}!H89Q^SfxcsqK3Lzjno^o@6$ivDq9g!)(HXh%{ z9`H*d1XTK+S+Ka+m^1{gNFxLk`fR>R z)1A|P^M7qyRTv8ZL2Zg*ZX?zpwkZj)AEA5N3*NY23L(J%Pawy9@4Ur#EESKbaQI*e zgb$Q335vD9YAp`6n1E0cu(FrWYX`K&d{PJjY$uSzzGtm}gzFAZv4Ukq5cq8!gW4=s z`{%Q!gz2a_FS&RzY{Cy7u3fI7m znl%t=+CD>2n_|?*B&tj4?=Q0i_{)f16j1x99$e9O8H#$x&Y!$rec(SzJX&mkzz#j! zsDE1rq2`@4V!f$NG3p!LYXJV^q`lx*rPndNGU43RMQ}vha$$T>RsNY0j+hG}xC;x^ z7eL6q8`8xE7#p<|urV~2OZ=~NAXzRBB(_&ga4G81!bpj(@7V(VCjHE4!v-v5oLf9C zVFVh3V__KQJgnRgYDcmHu`yYn{sk>jw|^SOp`Dwdd;ga4kZt3ff(=s_*mFNe1jqJn z)VI=HtwU*nxDz$_n`r#U0rrSH8)Mgz!Xf*=E|by~^G(N~)Q19j$k|-Sa$1f_am=or zsAtR4_`w0q5f|a)7*%h(3Rql6%;&@8rN)QIyafTvP1v?002ovPDHLkV1fr?1=Iil literal 2229 zcmaJ@dpMN&9-lQ8M<}9nL}QTFn#*fUnqk6RFhY~iICkeTW?o}3^G-9P8DnUq3#*Gu zlG5ZF+Lcy12+P*cK~^>oU8s%cET@$yXQ!6xywj#Vf1J+yJn#FvJfF|!d;9$H=CHy7 z%}xJmia;RDnL+e$ctsgrlU49nrcy1y%SJhaE#Cvh%N1NHi16n_aUhB*;tIfUkjqcq z*9-a}5J*R11Y6Dy4I%R&5teJfV3i^X%tj!5e3cR|FA0>R;y{5=OhG?y>qMi3dBRJUN^m@F5m_qM#GxatRrSQz#Tz1py051vr32BH{2JI1djDjKIiJ#d59^BbGTW zE6_n1Pb!qig^(C!P~^rzDRK%L&h(EGM3RrPV%di_!41PHxe^?J#T!am28M?If2c_G z5iOI4gMa4xKZRuxsS*$u4$7buDGwf8ypti6giMoyTsb6-fS}~%F0v9JIV4MfBq$mU zwRNvh%!d@R&)>sCL&;3BOwJYaKqj4nh6S)fAs_A}i9x5rZT9ja0RY331Q6%}bSmA` zpXNy?(zY*i=@2hP1d8R$T>hV2;wQNVCx|3)WI8An?g#k+Qb>e)Uolzu>0CTMsrP}) z|8y>dPjYc^GC0Fr|7*_6SFm{u+mEh=4nuiBN%)3EjRYL=_Th4Xx1qy+pM;0&eO6#;Oe>eBc_qFV;?0eG7 z3;lRz!Ot8Eo3Y9A-ZAy{xoC#}<6)zlLf1H4oOcCssA|bub0*+R>QZ*gc2E4NsRt!3 z-g}FEIy+yEM;h6f6&738km>OE;R15eSGMyP)A#6eiV!F zzLj}DHgnZ+i{TJ+D-IJ_Ne$MRY+iL?(0C}}RJKE4`w2RSZbe90=QnwBV!`}Iz>%*+ z*o5RO*1bS`liP8#$`QnuPR8X*+cB9qd)~)#bD-5AQSksbtTq{X%D59*2~uh{(`-1e@3Udam@kmb1>}Oy3*P# zd4AaN_*eM|)7pLH9K6iJV&>PDvlp(9b(dTG#2_=9<0`*3=9D9Ayr#>$M;hZNOLAex zrZsMsk!q8o?KP~ds2W0B>+qSSCvG9?14O8Ps>FXfLv|HFvE66nXrqeV z(B1l|*0}IT_WT?1bW>J+zji!G-xMW0X_-1~zQ%Br(^#*S|pLT0K zS3NV}V2sXb-k}_7zuFZ6gBGw1QJl+`8 zdCH0>~}tIJhtBImHBsBQ@pZm zNl(3z1@xYi6+_cK5Y$<1?t0xyZM~$uFV{+%_5ijsuT(EIcMhd6T#7=veTQ}_0k+Fo zhDk{3lfJ+y!s1)qqP}2KcH>Rux}*P4Cc7N$8IOG$oLT3+^6h~uo|9+AjA>7I+stY< z(URrg4&KgT>WqdTl?a!HYR(`=wO5GA~y9z?Q4FFr}ZJ1ckX8vompP8f(Jd! zUox1S%6D}uY}V$4D7rm>5Q^hSR=RSrHL3yG*3Ze+>ti77wI*#_nqQH%-OWsfNuW>c zY-CoVy=!Lhxr~V2dAhPQ%UTP!qDR!P|?*#+w%eu4=-AW;hfNp(AtXpqD!rsoC3$6 zU)w2rT}zD3y4({=>vGc%C*7Vw6!=H8Z%}N}rzaGvbt}cUM!4!WW4H^-)=vvBc_-B nbadjt#wqbk%-zxXP9rl!GskskcbZd(;YWhW2%}%7#vc3+l`WZR diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay.png b/platform/icons/src/javaee/inheritedAttributeOverlay.png index 32a5d15cd5b83f8b9387089d9ebb940373ab98ef..8e04255cd9d93c7f31d6101f7aa8eb1b6afc7b8c 100755 GIT binary patch delta 187 zcmV;s07U=e2od zAaP<`0V2{scz?RV|0CH(|3NfN42XS*F#v4H_C&q^2Q!WSgJ`H`q5~0Zz@}IopzS9{ p|3Nfa24KM?89+83HDFj60004v@&Hh|pwIvS002ovPDHLkV1kKTS8)IU literal 1123 zcmaJ=TWAzl7#>J>jiG_1V$DX-;|QXyJD1&Tl9^_^Yi4$Jp_7Kqipi6iojFN{Waf-B zC+;Na1+)!Rg7Hxhf`TvRp)XRfRWXGaE48ioBtB?M6dxogUTQ3w>6w^~KDZ8?ITya~ z`@jD`|M{V_V|RUBV;x0N_4z$=fy|L$)P~7_^AlesQxs>raTn^tWz~VyE*+I1$eU_E zEI?HsIdB!WQB=(qqu7nRl`ljMnT#4>7|*l`o1)s%o~>$w5Q7rzH>?!>@cbnj7tWy|F1TOC5LhnG#^W)9h`A#cR=t?zZmlTD(A6Bn#s;!Lps1G6 zFiz3L>FX3sdsWtQSIR^R#(JvF@(dTGQ~@f=`=O?}igs}UzVZ7`VYfJ9L$&~2H0)^P z;`+7*p=?odpo)=GL};i|#m)hQkvo8FAW2~RKEu*c+1;@WR}?XCxmdL{n3q#D5nv2M z7vl*&-Ym6eTU%NLp3gQ3yxf!(BstNX%_VbEbA>A-ZPGImrws1In6rug%rXl6ezNN?Q z8|81u{97MwXD(+x=>6~c^T~y&@pC)>y|j7#_lrU_^K|N$@fVdlnZA*ksELjzdU}pGeB-~k z@;5jCl~`PgM$oShLSQOXdb#*)@}Gz4+WOGhT4Ov)g~18`)#2->sbd>5xbfqkdrmiG lntMwpBNL5W!-rHYM@^%zL-#-VZ8CWF`D};$V|(wR{{ilnd=dZv diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay@2x.png b/platform/icons/src/javaee/inheritedAttributeOverlay@2x.png index a2ad0e432aa7d4cbb10502750f611984a531afb1..2cb2c2774d085be533d63ee312bbe43c8bc0fb34 100755 GIT binary patch delta 428 zcmV;d0aO0b3dIAEBYy#mNklv-i1Qg`7Qhbb{RSjC4F>rmF=Tr2|5Oj2U+5?zi&G#SbvU4jpt0`A;_=u2Dr`e|apvG1NrSi4ICBR(`Q4 z3wG$Bi!*%K!Bnd87kEp#oEP++a-AZ*YJUf$P)f1UgXF7OMQ2_P1Ze0000l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|pxp}DiExs!#txuv0@tBIwdiJ6VL91WY_2COp*wIq-C!ng>kmMZi>Tydyw~fr0Uur;B4q z#jT`2|Nq-FOI=_}n*BGH^_xOp^39fJ2d(FJp~1vXzk#hByp z=I4tmb~A&Eqc-idoN=Rt)k4BS;s{$OS#;o~Y z!CG-sa)(9aL5VYLU5!udZ0nb>g=D+rvPb;?_06@;+cm`M_J8@L1a8X+$r%!o2SKJa zJ~5l_p7Q6{ubVt8+^1#n{rLZX{RPPZW+EKX~Bu(Q^k*G4Y55oO3y}U_wG#64UXk z%df9bk&Cl9y6~acC&m+dSwmgT5?H1&XTE51FYZZK`n-1e9N*&$|Eq23S+GK8MyuMi zZ_m%yv!$hZB>n#_{_bGp7LAS>8#wF!e-)p{=8zM`B$m@u|L;%okN^A!m+fZ$r@VB{ ze;yv@2MzxPc#Uby8bg=d#Wzp$Pz03+=7| diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay@2x_dark.png b/platform/icons/src/javaee/inheritedAttributeOverlay@2x_dark.png index 1be1b612bcdb8afc6bc93c123cedbaa192da1ff9..f61fe9571bd49a320227002f9f8c358155230e2a 100755 GIT binary patch delta 431 zcmV;g0Z{(I3djSHBYy#pNkl%=zybdM|4$J{2U0+s z5}?XIb(W{xUl0bdfnv!(EJAAs@Bwjxoh*0zTyOcGt3p-&gD{8<5(COb0x>(S9KZ&| z;W{E5HPb!hKCKB?{l7O=2aG{%kQhh~sKyhB8L906kb&N!Tz@PD6I^6ot_1pePm0d} z<9UW)3}S=CKyo6SEcrmS#?*Fz4F?NTR;!)V^`$|||92*7|38*v`2S?S5g3EmATf{} zNDU_oQzlT4EY%#q$jFdhWhrrDp}*4qt?^p_4`mqueQtz;L1G{|kQ$I$CPsz?pxwMw zaX^lt==OO&ihut%Mr-~*kZu6l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|p*p}B>lv$=)2xuv0@tBHlVv$3O-i?NxR zqq(KCnITNCOMY@`Zfaf$Om7N8uLVxMpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZXAa z9#n4%Znv1>)TVL91WY_2COp*wIq-C!ng>kmMZi?uxJGv=0|VnWPZ!6K zid#u32UwyUawe}(PT_xaX8)&m3KN(f&W^ZZ^ymNo`HeycnvP9pN?OejT372GIgew) zf#37%?Q?eg{ir|Tr&z~*g8)eb#f?83Zk+X-7JW0^SHZQRy_d7aF=xRHu7Go*9XB(d zGMFiRyCV2-Lgy8+bI+b9CJT!_NMJ}5kXB)v63n)$kSWP6%bFo&!DTzd!=c_S6|h!tt8BvAgNIb&6O^XuojR_^wrx)H)W*(p4@tpXNCK;EIx)?3u9BX#MG5fEM(l&A)KM8EUbLkKH(8tqQGq7R~!?h z7AQYzbUNp-cTY&6!?wnZhAxBUI~n+`na$aynYo395C5;{(U4GKo5Z}5aphSf0p4~s zuQV@NhOYl6B?pynx*1RWX%>8b>EjFa!V!EjOSZ_&XjPl`?fLn7wzM>lr2oIg<1U;@ zTELiaNbSep>+uy*3>z~!BQ|jU`}vt)=DUH}UD*%vU6KF)}J()+fCNsRYM?qk5$4I#>IRRr3X5S7#tcH8Sb@ZzIek{5(+BRJYD@< J);T3K0RTv9&?x`_ diff --git a/platform/icons/src/javaee/inheritedAttributeOverlay_dark.png b/platform/icons/src/javaee/inheritedAttributeOverlay_dark.png index c343155d55dba4c5d89e725574a5e242761e5a81..398e25c21499a57bfb055dfe0b2bf1585f3620cf 100755 GIT binary patch delta 185 zcmV;q07n1Q20S*Cn=H#iK^7qz8sQw4heC*6QKyfLe z3}9kpaBX*zIlDDp^Z)*Iz5gH@$Ug%V_a(}J5(|m#8=^J;AIQ-Ee>B$+OmB$R_zw~X zxq=ukq=E4Mbc6p#vW@F|9G=`1GbCjp%02iR3ya#FnO&E42Df#cS#zls*_K=(!r7VU?y%0hY3Av! z79@>ukb1z*$>)^0uj(5mO)V;G;E<5rdMcz+mf?7wXIMYu_j?J#YmXRME_w~SsiYu5Td_0~YsdhOqMSiPI82jFS4+^% zby>q+YZGZ0Qw)A(MnQ8nP5}aRW_GC{qwE zC}U)$5E?9Xu_uQxvUA7;q6l{PYKDpm_MR1ZA|b>L8_R|Q<5HL=0zOSs1-}@KiV_!X z4TX4)i?y_hqCX}DVmucj&6n5`S3=5=4h>x5s(-j0Wx0+MbdyAuprs8%wbMd6SgBah z%IDHrR&R}~md}MR%VkJ1jB~Gl-E--Pn8#VJyOwO$eGd&{c8j=r^xn~Dw7`NlhB#Tz|!(^BQsEO<5gXMcKGJZ)UzY*ck@-xPkx-6Za==K zil*G|rg44tt~z~s+r=w&k!IJ#tvl0)s7a3-wolDUQ&)H1t`9YPTpmxrH8FqTEmt*} zt$$O~3A$a}*K3|R70Q{#pYIyS-^^`(-}61&e#&_Gp#og0%q%T_IrnNIQe9gKK6y9Z zrX5?VHIx&Qm)or4#atvCD&0``8BRQTkwW^v5RAdFJt0w{)wc G|MYKp6ll!= diff --git a/platform/icons/src/javaee/interceptorClass.png b/platform/icons/src/javaee/interceptorClass.png index 3abc90a3d3deda8b828afbb6c62cf9e654cc5618..f543e27872388b9ff5c9f7be94d31d72a111856d 100755 GIT binary patch delta 530 zcmV+t0`2|b3#tT=BYy$$Nklsh%W*04=BC>#7$5+ z6!qu^1Q&0*{h{yZ^Z(1Pe*C}b?l&+7u|Z-$xsM<#f>ljSKj;z#!l{DVE@AS z=y*9$El|%-6a$uA|MGw7jjv#A3v}{gpkHBpAbt+SD}cBShzk~9`vP+Q0u(PyJNNGY z!fRi^I3lz7e}C1S^)UW(AfBAOdD1-V`N7Xj=X(CJniurUYhnFFlt64f`1Jq$t6#u) z+VLm!p0>j0Ae=Igc{rKmG3i)Qg`$xXol~_%ow*!T*idhrlt2ud~SO3ck#A z8Hj%Y@j{oyb^W@_z5eU1@_}OzUv0KSI5q>YV%52J;hIaFuW2oF`30gue2_Q*v>LVE UV?O?601E&B07*qoM6N<$f|O<#&Hw-a literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f1LQOEXJXCsPY^b4x=*R}%|hSi4vlm^c|) zI2l=(7{T| zLG`BKc8dv4z4}1M=!4=FDV||Mz{CS$!c#4f15fvdWGKMMJ2$;`0+%{ZRd*`~e$WY`Qi+P<`OaA9uBx zedX5+!5-C`aeG8ovpecMT4*LDqU~~f!Zm@(XY0=WN;|nM`^?$Kc(wO$tN)vSPHVI1 zWBzZ<^e4S)mH(#!iEbY6%%leflZ_FZjZ zO%Z0^2>x7Ipx-AsE<=^aG&u*10f5mp_`)ARW#?Ri_KNVlGWtW?t6yGklUndG9s&})@ zoVS5Z-YMxsKPP^o$sVrb*oRQkRY}JC&E8g=OoH$m#yRUrwuw&teZFVyvPx@b!kQ6_x zs4%6ex!S-~*6QrFRo9PLaXr0WpJy$5_duU@-7BlBB5DB!GkM!mcNuT@G$@$xOG`Im zT5aLpZC|T5Ut|h3K6t24xywPhv{`aNbd`KwbYHA&4fp3Alfw5$&CPrg^M1u8&uN;u zuikUJ+*tYi1`ki{UjOzz0sn4wd5AqcUZg9%zbZQT_H^IHyVD|PolMX3*YNkQXOUot XTcvwo+N-7;phDNv)z4*}Q$iB}4F5Ls diff --git a/platform/icons/src/javaee/interceptorClass@2x.png b/platform/icons/src/javaee/interceptorClass@2x.png index 996926fe982e09aba9cdfb24d0fbccf709e797b1..01837fbc874671ffade2366b63cea518db240445 100755 GIT binary patch delta 1207 zcmV;o1W5ae63PjXBYy;uNkly%HzNheV+43If#i|7|H=T0-aziU5?B5(4f^{ppmW>-=EqLx zomvLV@5^xIiIcfTVikQ)-Hi+&Z~h|#C=emfNg|Te^w7>M#)sB1ySouP62C437?iMk z3#SL3Gk4fKwSPXyoKwHdxJ-~-F}w_5Ac%DhXRPzzvEPEZI_@2Jqr*$Zupq zEqmu10mwd{q@L@%$Lci2>ye8yIl0b)ZWy ze%upwE(vyYWkJl22qx5 z*m+gv6QUv7kjB_yt^A3pORgi?9@mkq z3ZF#du-zYuP-Dt!q&X9|U)jeCq7`09w);AiCb^Dgq$cXD3%(2}x3y>4BD$pzVSi5N z2WkaI$&kNed626nm{$}}HR^#msK>ViR}{tYOn VPf|*T60ZON002ovPDHLkV1h6@Mb`iT literal 2314 zcmaJ@X;>3k7L7O}qHKz?NcSWG6p&C!2usog1VSJqVKV|QEFmdOgd}AuKwxM#5fO9* zL1kpou&5}aCJKls*orNKQ3MnbV>b#C)U;w;K-BKS7JGh-Q{Pwh-n-v9=idA7`B6JV zg8U8iE%i|-lmR1v7KW_onO9F2`NC;wuaU(<;uk4dD~gw-u*D$Cn=6U~(F_55GZ+T4 zxv5*bKo1mZE{4yFlteNEDIAf&i9LgHk_sS%jY4^NNg*~T0hFNQz|DLi75m~sI~L97 zQn3*(Ogt0v1$q2{G%>g~Er`WQOW=^XST9eshm?W{2tWxNEfpjRVTzQB{j5tt_A_As zi~bCeBv7$`78S`1LHmltAlk*r1;@b?NN6{*6TyW*awj;ViFkrDfOiH6&Nu>*f+tf5 zF6b{07Re^&##6#*^e?%P6BWyoNFWLTq@<)cr8ql@#G3&EnM?-oM1V-dAqX6tDwMFL zI3a93t3U%`j+hTg_#z>CMv)ySN|I2qNTq+aAb`Hg3gIu;gj^UPWkUeL2|v@)ERf0k z|4@P8D;k!Bfq&KeKZRjdDg**yAS_A}bCAKsThF9|D86ElEfI-XB2nV(Er#$!5)sT3 zL1Z^OHd?T`UryKX**wf4dg9 zZ|Z&Fa=%@R`!~4&QVcLN*Z-RHYzQ&W%=W8mk;7NtgF?jYV#L)9!#k5G)Vxdv&6_2? ze>GxbqUk#GPfuDE&B6m3p9^&^s(JdfU9teZeBQ`q(}2K!nzd1m`EF11-IfNxL7tQl z8oeuLV%aXt>hzv!o=zxM%4l)z~DVXFpgo45MN)}dp+@6C@~XCD$j;huD1LHE6}!x41O z)jdTKIW{kiQw^=g!_FqEk8Ho)mR)GE^zp&V{ZqSM>L||?2S{#}p$yWCTB*5|cC75& znPr$x)h0C7bG@AmQyXg|s(#k1XDzSD@T9|3x=qIM_ltY8lAju$?kunIK6{Q9^4O%q z_@ueE_0Lw3Hkr_qat>v7{_y73o`Em%bRKx}uYvV9)L*utl{5Mpg zEcE&{aSi3XvA`h8!;L-zbFIyp-@`Ys^x)96jh zK0tQmIrFX6sZ*8a&mVPduPCUp_Tr#Zbq2FN%UX4x=vOx!Zme6n>d=p>Hvx+!rbpA9 zp$Aj&jv-S(nuWg=+!*fLtP)Jfv{93fPiT7Xg!Tg)3aLK zXMJu=ahJ2cR{i*+V`NltmMXn}$498pih_GJZT9yLM_%OAhw%PRv-3_Y`=>V+O!t&H zbnHCRr`O;}c#{vU2^q^!8U5%{*r^G|^vaFhO0MPt}i>{8Xg-=H(RPF1XP7guWZ)<8UG zO})bYXbaubmb7qcn6yazL-wZMbTxLe5-1z5PB+86QuYIwvn?jE7759+$Xv(3V3Xm= zxRFnkT-Mm3d|XtNa5y8}sP;}~$^2UxAE2~`<|yYo?|XHxu6D2ttSEbynI0TcwF==k zM2wP_?2V~%g|)~1izpf9s`<$^N9^ZhlAbh84j|-5UW30(eBT)f0D48W3(f_e=;?R6 zJ1E&&3kzuHr!`G^5i5d{dMl%!sloAgMF%$7-ZoBFJ?!YRcGqfxEIX}RA$!^$vmAeK zZ)Kc^s=Wq~SzZ*sE0kA5@`&t_iPgp{TsPW)22uW)L;l`^6dq-{MV-5u*L;@1{(AsYhjdYVF@I9US#IzN6)0SJQCHXx6|pgTLANq;(WxRV#0v zf8gramn$2;e!_v24QbDE-y=aP#!uIr#vIdK ztf?APJ&Wp=$Bwv+&=uGB)DJZ_$1xt2h2x7Ylu8>-^mX;vi+vxXUzWZ(<|recRO`Q8 zu3$IiIG#M@ll7k!y-R|ZT8Z>phqava zr)|7V(_5}Nl;@Xl9%1U&FG^VW(BkZ;hpx6S_N{N{m6exlH2k#kX2*aCD&XGu^8;bGLyvuJPWL-@o$1JLZDUW(Ds4n~?8*hEMfA*7aGXwevAs!)gLWUW$p3 e_};gfb97OyHTYh`fxMxazY~UE5UtTCHs=ooV%kjr diff --git a/platform/icons/src/javaee/interceptorMethod.png b/platform/icons/src/javaee/interceptorMethod.png index 86d44cb5c3712e25daf024e2fe4efea397330e31..146cefb39413bff2cdfd98809d289456a45c2347 100755 GIT binary patch delta 512 zcmV+b0{{KI3z-CvBYy$lNklf9?J6KYP~fNdbVA z|3DwFGp2Y_31-3_Au4lAFv)8we`0|4b#~+_x?=|+d;rqbDSrhu&XKie>iHo+`?fgo zDTD(cU7sZd*U%Fm5(`Mfbm7Dg(q;Hp&?BEDJwCt`buNQ+!Tt&K%6(D-ZiS!+r1K*P zO;3QKqeJ1)GN#h#L9g6oB_Jwc(@p~rnle)}>Kof!QjK1+=R*}BvOW+)`@mX8!N4$7 zN0w${nj?CXXn!Noed4j#NcOC#UV-;+fq1kB?6~QB6VZ`{Y1ACimVu>STZy%fD_O4> zH1;NLXt8rj)x>wl0*FC3u;yVf=yX&^<|a{Zj&Ju{i?^Gh!l#3(fS!(6=h~`uv4C{? z89fdV{jNle6&tNwnV*5GP&a78J#@r6-_h`(zDV<9pLx7{4Mg8oJbi`E7NIn#hqB`? z1*{8PEgy+jxt*Nk<$Y}yc-Jb3yBmnH+}Xwz9%!K`(5`@Wjc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~+tb7LoS7gq~&b4x=*R}%{(S2s%w6IVxb zH#ZY!R~MLGm;B_?+|;}hnBEkGUN@Y2K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtYX zJgD9j+-`BfsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(`t$5W51_mZWPZ!6K zid##94Shrc1^)hjfA8Hrt#TE1_K6oXIC^(p&}8lGRJ|pz)HEtK(d1ay3<+n)#KffZ zMP)}c1cWnu&K+v=66RTPuwbc1HM`}`;{MxzfB!E}d;jf@^P<+td+yG>In(^}^YcMV zMSjX({P@srPVet3hV6`#8!qeKS4)umz_H;syQ9xCj-~!z@BP~{?WDl8EzZkrRy;p) zFHTS6{T&srSmx`O0$GAh5_Ke;m8aY+W7po?-+IBwR&)Q4RL8>qMJ|V;4EF~7oLQJP z!{~I=q)#3X%zF+-oH%)mGw;QLb3VdMN8=j}CAclOKXTu(Wa%zW!AX1K{`KB`cuk#ALi)|L!V|`U?2F&N@@nfl9=`nK*Urs}MKS%m7$jdxEE1aFqxpoH z@eSK8!&>PtOfOt7cpLEB{7;yZ5Pa>f%;rgF8y6}h2H$6^{ik~KMb!KiPmb@mf4O<; zvmW(J=hJ^=%ua~BvdS_|;;iz6vQuJ>L9OgluRdNK`*crgx$v@V7nY<20qgHY7T({t zc*m&?osk*!r{CC5T;y>{v;6#f{b#PXq&y1g4qSlf^@DWgxn_7Q8GbOyUu z&PM0AdQR%*p=yRk2Pes9``^Y_bi{-#Bl3xC&G o?CiBF>A}a}*}ui({s<*7%u04-TNrcD2~?hXy85}Sb4q9e0GjzQfdBvi diff --git a/platform/icons/src/javaee/interceptorMethod@2x.png b/platform/icons/src/javaee/interceptorMethod@2x.png index b5c5d3fc28b9523d541e1756acaf776a33806747..ca01ef3f5ba17f5a5a5618b6d735bde37800c315 100755 GIT binary patch delta 1268 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 literal 1198 zcmaJ>TWs4@81@>NSVs|}P_{jE#$giGh;K<~Z6ym$+|V%6h9uI;BqSXBwDmgsIQA)a z0#aL$m?riBOe&x~Y}!i^4`_e{Odz$RRIqW8*vk+P>q^8b^wBuDc~>(*5G|QrDUa9t{r8@&_`CatC*x%&>KQ-s9?^;eXdwHHs6d^TeGKjDCT0^vEa956G6E1;0z;Y+rzimB<-whN|5Mm5R!qR;felA3 z1rKg8=!Y`Jlm%o2ts;bn>s`zZLj>(%Xp*TE`Pc!?P@!XYti!WeF=NAOSe2P5!f?+bRs#^q_};T_rG7*@#&&ixYo2(nJDHid~{5nzX{xy z-qSzb{p|c?z`*9qQra8O>QeNkFJcr)_lFZRBQR_^|1#R zKeV=Sz3@@XOxniG@qc(;4@9^3SWui+kF?uKeOG$KD$JwR%^px4Omz zwr_8pJ<^}Jx)8l`{GA_Tt$!?LO1m!K3t{`r8*e{Qn_F)BVQA_&ZJqtDb-Mifn~~sb z5Usw{pSa?jb2P@7l4Kk5yL7^sA?;7mut>ojJI2>-)vCX5h)4 zfvrpVgXeC}KD>Ks<+sGi^Ik2yx8{v~qm3`rE}a}}-{-Lpku$`hwnKll-FM3H{~(#3 LKIwzx3$OeGY_q7F diff --git a/platform/icons/src/javaee/jpaFacet@2x.png b/platform/icons/src/javaee/jpaFacet@2x.png index 613c1bd610dd98430a2c20830a3ae1bfb9cfcb7c..d317d01a1edd3861ecf66526c4c994bee2bfaeaa 100755 GIT binary patch delta 859 zcmV-h1ElQ81`pv=t!U4ho{__BgB!v?synh?XD!?vafCQ9*V!*qo zr*t0YBsKvWVpS7`MESizF+XvGs!iDMYfSuXY)(ezmJ~d~@0j2_gE$FwH*gO+%46P( z@}s6;^kv`@n*hAV(s;j7oQ#~EIcP@9LmrBUU^M5#*Wv4@IocpEhrU0q=nz(y8s zy6OBKJ6+0C}J=0f!(Nt52R$1*a82L@0g2!){mR{Rn6@Q?zEbTd25ranLX=rvxf#xjj zXx{qGq&h2vUdTNp;G*&NOk|a&qQ?A4)Kn0qXZH$J0uw2J;4ml(-o9LLe^^99glVBB~RaETKQ6h$-#3sqWpe(4z+@FVO zsOAt7S%3X8c>EE70Q|1Hcnzxnbw$ye-NK}uk&Z(Dq*c3Sx6;cKR-O0hsK$;>&?O;y zCAmj(rrp|H`;GyeW^iCzedBwE-o5rBpW_jN zn^Xs!-gxji0W$%Zd}v&miJ*oE{>RQXz!gv_Bd#y%YU6hMMTuYVf#j^i2xe|MJdpG> lBph^9#C(Jby72G8<*$lGSq7q*=ga^A002ovPDHLkV1icOrvm^0 literal 1806 zcmaJ?Yfuws6b&&V3O+&5fOfN>0+MVtA&^8OgakDX;Sr)BK59r76Jd8lvXT(nD%ha| zwrUk0BlQL10}*^Hq9S4esnwzu5Jef#8Wj--s-S?~sAzwb?#%A@m~+lO_kQ=A&5DYc zJ9-p-6oo<=Et@A*kRxDw9qh@k(PHT)hsi`(91(*j5+;=ap@=nj0s_cT)e1y`s5EIQ z*N`9zWf()Jj3eUY;X*ZzvQ#z<%Z%ztHiZ%tY}TvPNeBTXAS-m32z*&q4gxxj2#n>) z*>b%E(dy<|3`mS6LaDYSsRbG^cs3AZ7Lo!eLZ|>Unv5BRW)b*7S4hrn+YktRfDlO{ z@S~|Xc@!YQ4G6$v@tA5h><3G(tMm}eV%t(01j^Xd|IOzWDu5 zVWTolk3b5h(WIA3zs(}*VYNBo{TI-47yZAGsl3Vz=w>5x}m*rhSdAS)eP;0J0uq(%|Nzu z{nt4UZjsGnn||(Ea`CzE5sYkh1KHI-g+wkUFUvZaRID^Nwa5Mz>8u*J=iAh$u1zl- zvqSEUtDEOU%X5=}aL@V4t?+m!KobV zO@F6)U&}(qx%u6fH8XZK<2zrT<#y%vx^m^t0|hOe8z0jsi{7_XwVkbA>eAS=ZsrUh zzMY=h65KJYnrS*))zWL-fvi~;Z=!`r-%fZ6-s0`|RrDTOgS}pze8!oQzkhmB^@+B1 z49_*QYOHnkJNJ4|s7`SjM)Z4Ssxs0K6z{iMLX}guow@qPI>3vk8>!0+pkCq;v17w< zLAO00L$mu=J`sxZ_k{4j$v*J#I@%dn{`hPMzcBqlabm4xa)uMJ+ukSj5#yLUBXjye z_4uz%JJjwT$APgGK2sbj`rUIIWWl#QsNGkhX@&IZ)3WMEy3)#nJ-Tk4tH^WnoV4WO ziF)In_OiPVv~vsaO&=FnPgk*<8w1Wx}xn?)khe9ak_&hz4=scSz*wf z(92u=ybJBK9?^mNAR`T!@G^W|{1i9+><3Nt&J0=8(ukW;JN@FGU)bB&H$1xeXy_(n z!A!=b8@sTv;c24qs_~T4B@U&Pzq?QDl$S4Vtmz0EE#aQtLcP|2c0tbXeE1DH_r}~z zD?XmyxAQK)%^_sk_Kq?1;VhTVC;7>Hlc}uSwK~7zMYCd$|8miRx37Mrck^ZC0v_0P zIMj3)WbvsX-?zq0OhYbL;#EzaOG7sKyTovT^<_TZuI)uW3*NL-k1br`*L91t^4A;M znv`W(2PDoJjGo(1p=DGj*T8grG;4jPSKIN(3-M(Y?4xz^0}j;17w_ErS$w)RC-dZL z|0RmjJ-Ws}R3&z3x&8g{@5&PW=z0Eqg3&*`%`D!0%CYt?&6?dAt2MVMOWE8}+uyZC zWwjO+`A6g}w7}&(ul#Bck7aUsYm$W80_AosnGBd8`O?J+T|6A zIWaV8Wo*PoO=VKpz--93^6CBjsa0XHSGw9N)IWdWU1J40b%%X(YFoX8n=XhQBQH6! ZDbtku^Gn7S}le*ke5zs>*v diff --git a/platform/icons/src/javaee/local.png b/platform/icons/src/javaee/local.png index 5c7de535de17669c1319786a626e0afa49bd6520..36754143ef8a142f010169396ceae47331756ef1 100755 GIT binary patch delta 436 zcmV;l0Zaah3(W(NBYy#uNkl+ z0iCfYV1};VN6+6ZAjZ-D;dc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0K~R|`jDCqoN!b4No%R})7kV^cRvHw#l2 zH*+UTQ#Y7im;B_?+|;}hnBEkGUL%}(K`9}(0BEyIYEfocYKmJ?ey#%8$5xp*-Qwtm z(>$o&6x?nxz^PXs=oo!ayduRjObD2GKumb51#;l&J~a=R*o%Ov`s(EHbOr{-|DG<6 zAr-fl1l#6c4iMSfr)8bzVz)|#Nl-C0bG6Y9d7cf%PF7PEadj@OzN*EeAZ8{pQA_Pg z*@}>rK`(;-IZXH9_^3E7AR#xigQs-Ps=}tX$9MM0-psTvoY$v%zxrO~_q*TcskAKk ze^8))-kxf)zSM(873?x!lYc+Z+rjlJoyTd$WR=XnUcZX8=AXH=!RQUEzxDE{!&kN{ zFW%SFB`$c&@_d4y+$3$`Rzpoef0r2HtfsC6yQ#j{`1XbFDl4}$==?cLChVSsevj9x zMU%Ae6rZ%bc4WcPIW;?)meyEJ@6qP6l<0YtHZ`l-R7$fapm3ST<;|Dl=9pS$)XSQO zefVv%V!@Q1Q`Fd3v+Vi#L2T*zw2VjJN-ud$o+y+3SM9sDM0m;?y*Z8ZxYmC;Xp!Bx z(L;D=38%7^EZY-3mfKthmNon>^L;1%W`2bFEUECtY>U$W{Q21bc5}E#pUmTR7mZ9K zC;oofA1!~v!e-g|ss1jnc&olVy5%$>`-PRH?_+JPA3`P{Loesddh2)lwtn%agCcjU zZT*){-@I4%SK&2>-{K43Kdip+K>FL}IPtgZS{L2rsJ1QYEWVJC{m3?K`ysX-+2dvJ zFDX|=d#Wzp$PzO2@g>K diff --git a/platform/icons/src/javaee/local@2x.png b/platform/icons/src/javaee/local@2x.png index 2f166dc3db1387293a24d566c75a5ca119f0e687..477284ed3ef4284949a3f4d4884b2adbf90fea38 100755 GIT binary patch delta 815 zcmV+~1JL~c4#ftLBYy)7NklqkcN-)rFTRRl(Qiqek2mMEo~2;JU!nV=Z#~T-A-E)J^Yf% ze7yJDeLJ(e0RRa6O9KCmz^FUr%afh%8l)K+Kz0!q`6+Q_Uw=r>sVNalU?qSPYmrXm z2mwouNyV6*TRHVSWGHMc4HXsmyKNEe~CjTH&t zglkBa6UW_zNN5Air8QE5VldvHeyU|R{`c+d-s%_V3s38XMgy3jFWdD^}PK&1*F6cKA1uuU%*5< zTnZ&XZD#P`B`3dyT+)*J3uqGJPITilG4kDkaX0LR5}-ED4R-&jd50l+X#uSq`}~>R zlj;{`898xa%$?Rz0=+4fm}_2dNNy)k^keeL=SM^dXj`pOd*Dh7@OPRIweq)X5P4tp tYbe&H2{e>QT(N*Bdcca0;%cZy;1|hEgy6O=9R>gZ002ovPDHLkV1jr*dyxPD literal 1919 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 literal 1918 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 diff --git a/platform/icons/src/javaee/localHome@2x.png b/platform/icons/src/javaee/localHome@2x.png index 974cc233475e3e2b98ffdd635b919203b0895805..fe5706fe056b55b6e46a3a4018710a79d21b1a51 100755 GIT binary patch delta 889 zcmV-<1BU#95RV6tBYy){Nkl^ub0WQELN|dnByMROmHN_Y- zN_<3O1jIl=3@wkA+R_pV((ouPsA~il6cgPL0zMN7eb9E{iq-L)ai+Pqz0(fXL>FH& znK^ULH+OnxdMyB8`IlJ!8v#emWm(R=k@9G@s|=||`j9mwhJPG#V!Y4BW6CI>3>;@D z31DD3(v0jPpvW$tQ(lq)22~&%BJtB`KX|_TVK%V#nK!uK{=|G1aLJB9IWMg3-;|X2xXSpN{>P)vjQVK zE+Ij=YKsairGHmw;5hP=Cc3_Q0sBf~9CL69%2`=Z06UL~Js;k2vVHy=P%bVJ>8gb+}T_rw z=nf{Cz^pPt;3#v1z+q>*g~;22i9`VW$r&Yt0Jb$1Ft>&^h#`OX=cKLj9f;Taxgb={CCM%AsWY{GVc?VHXv=2Oq$$~sv8-yG8 zu4Vn+XsX+uDKV7z89A5#qz-Q-Kc=t?F_I zR9QQvk3N@^*2h3|^yfe^%K2wkKeC?lX;v>=sSLA&=#RlfmXZZZp%j5%WO)8Aw$TGJ P00000NkvXXu0mjfPI8ay literal 2050 zcmaJ?X;f3!7S01|k*Z*!RgobCltIY^Nk}9{Ouz)W5+N zC@9FFRftTM`04-%)~8gUuOOl#SWqy4P==~ZN_jU{?ECR}cddKRIeUHIxA#8#TkEE= zcWhg3WNw5&AeOV33_o~9>R!Vo@K>f(zJ`}IkY^y|FOGoZTq%g~;ETgSBumJR1pPoR zKOy!W=#D_>+Xy&;P$1w#;faN4t`37%2qiEZfpDiOBwSuJ2qDA4NP&oo8mp;CAq9LY zDu4iB0SO(95-^og&|kTO!&64{$b1xSGtyl_fdzyh#6>EEF(Mg7K}EgSrNDb#7=uE- zhd|L()L%sf0&FB*ECrDSG{KpN#knF$WHgR|b9KXQMB=eH7Yx<~gL84l;VD=$1xG-B zcu;UQDL;bZ$ME`)3qDa%Q4l1dU@&sI94&W2i=~km9GOhUVDT6{-Wf(X%MwHoSK%y@ z*)AwBKp9UekU#>l2&q%#hKu7MDhjUjuNH)okFp}!hiif_45Q#mFgP?;*U|zI0RBHz zDEx?)L4M%h_5M#`87DykV*EgvI8Mrg2Nz+hOC_Pur63m)OF3e3%)%|Qqr{L{7A2M- z>2#z+fI!3-%Vm!5;Q&BkiDVF0!~v%m158UzDqJf=~iyW`I&bJjnNwiiODc9a990*Fs)Y z?*o^=cr6}_axri*7~Nd|Yt9QH*gU%JN7urKkG=;*u-T=st3xbvK0zQ1i)GZt;cNGfrrGv+1BTlW^X)StAY9CEfv$f`y5imsjE2O zGT1Fg&SekM*~MFljt2}cvasvp4n%0K$Dk8W*G+HIX!=G*TSj9T%7Z<7diLhX_9osO z%O6`??5A#>Gh6#KGWLPfSkK$s6*cEC>X$^67??#S+b3^Ju_^NX{WrvyDR~X@28=%L z-h+RtXA-?h4UFQKC}i|Lg6c=d^ttgAai^s}nh8RxF1Wjx=|YcM~l zsIyB$&D2u+6LcqEB48m`2}Z>md$s6vFwn8lNYnp z&^y%Lq_-uL#;_R-+f{CAcl1X)?5nN}%R2+fzRM2VS(-S{M{Bn2U-9q`e(51Xz^EzTr%GPO7Bfco!bHI=_Vc4-_MY;Oc? zoea(%`7GaQ&}jU0^$T-%>`$?yLw~TZmX*DjwaQ@iAKU(fQ7H>5BkyXxccUX1AAZH) z*sHRh?=qW^kBsK9irpi%#H``&hw)a>u#lil@qhORO54mCbtnw7{B?$L@`RUx6~{c2 zO`+OU939|a@NPMrEWM2EpC=h-vc=8)8?jw)o!z&b?Qsk#Y+-Yyf^!alW^_34+nTUM5wX@54-st+osn(pU#CFQK(2$Qb7P=8h%t1L=usA?FB zA#RH=Jg=dKRWI$FF7-~%nWwAv$2$F45ZX0VL2L`YsG9le#+%=KpD>c@+NNhmEA^;r zT=e#YV6>WqrskPbW)H`{kCN>L@=B{T880*Jk8dz)VMg85ZnF6IJ~?~N?yS!Vvy(o% ztdj5-w_vVTt|#>6KzHBzE@7G&cy|XEo8B^GK^HD``>9x%%8{P_w{p}ZU{ z!dk6f>Q_H_{$`5kLID%KA!!v(Tm3SPqPK4%Z0Vimh8+=cM<(Orovp8zkDuGU$NcWT z$lLwH?S55$#s#XPs)GF$xO}~dTVzfs!YJ?F@|dQKb=FaL=R=CeuNx*LJ_WWn3ZKb# zf<7w7?UUt3jzon%tq}AbDHpask)BDHvW7`|8}i@1!lXAOHxJy0Hq&rLMeDm8d5Vp{ z;%c*<0@Q)M2bGqEj^V!Lb3b?w%iFVie%Yz!?EW@2?SkE$$>A(bP15ImIMbAC_{KJ; z5?j31WX-YCN2O)bA0>R3Z?K%%17kKD&DVxjMO)Jf@fP*$@iup@n>j6KnQ_g_FVb!M zUB|PPa<_AvI;26w{U>9niJ~T~s;{%HO&tV$4Op-4do(q#DqGoWd}pp{`pwlz>Xh|A amLNLJC$6Wj>I8IuWtQg-M&;J9)c*ivU0YxP diff --git a/platform/icons/src/javaee/localHome@2x_dark.png b/platform/icons/src/javaee/localHome@2x_dark.png index 8d5a8d8ae387428d9d8c689aa238323b3fd0b910..44d95fe500c01ad6a5dca63fc6dcef5f5f1531fc 100755 GIT binary patch delta 862 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 T`E$vf00000NkvXXu0mjfm3!@9 literal 1465 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f09FXD4F=BMS?2b07)_ zb5|!5Gc%Z8m;B_?+|;}hnBEkGUQ3*MK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~B* zJgD9j+-@<)saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xndwIW0|S$ur;B4q z#jT`2|Nq-Ft2VH@gv?ptE+)+QNJ-%vW0L8L8@vklSdL6?_`%!8=%FxU;>5yrOBz`A zOU&nB7Pl6U_;CAt{;&0RdoR}id+2I+;i#v>!mT%WIMR|6qt~h~K6m2m!QLb-b9M7( zC4ugb-5+ABi;BOlx8LuS*k<5(wSy^l-g3po$4;C)ck;vg|MqJnRM>+KvxIP8QEq$F z6l2I3XvbGp*0$e)gUMZ7Hg!kY1F7Z-Jp#>(HYznw+%Fg*v&2ng#kZ%w!&x2jM9;9+ zHSJ;Isc+nNV1w%#)#ipR3eD5H&6@YkXY7*k&^4LxQ13!QI`gf6|MjD0{A0J4jg?s< z#&N~;)OJNC!6zkd3NBaqOd1}>vz&=GU@#Kl_@}V@!LjM`@n0-0EdqIe@EcZqmpdz( z@V~z9^n$(FQinsg`?SgLxy7Tu$?3ty4KEKr_fJ@U=)+1?bxAv$+Vcf?$^K1)^`}1HJsZfL@wm1`};58Y%WieQx4Ckg>4B^ zX&h%7!WW2qdvmn=|NZ*E3|7D7xym}(y>X)WHHO%t z2cMUpcXfEf-K7p=fS?83{1OPA38Y}<+ diff --git a/platform/icons/src/javaee/local_dark.png b/platform/icons/src/javaee/local_dark.png index e04f7023c59a420b1d4ebfc1a63bae21ba8570bb..f42e1ed579175ca4868c9aae4f0df699081cf1ed 100755 GIT binary patch delta 434 zcmV;j0Zsmg3(EtLBYy#sNklcsgeqr+a<0Y4Mx6ob$iGnK?6~0|4EB zP!3DC>nwf9Hj+i^Dj7sndtAO%U|PO&zWH(z$S-k7Rj(CjO@B4)y;G)}z~o4~8gd~H zm#;S+p&n&eNmI~I_DCTH$=cPQP-f-lPV}rm^yK_-QA=qo>@C8G(EygY8CVNBxgKTJ zIcb7S=s66rYJ$UTp9WWQr>#y|b;z2aep-%$Tsh}3+owQGxZCQK#XX;#;G`UdaOI3c zuv=jxu_fS|xhtc9{h98OFLm1V+6IvxW^-2o cM>E)sZw7dvnql}X7XSbN07*qoM6N<$f}lLW=l}o! literal 1415 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~AFGXn!R6Gsbkb4No%R}%{}XCo&IS4%fn zLlY+hXJ?pRm;B_?+|;}hnBEkGUMHM-K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}{$ zJgD9j+-|YNsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)RntP%d0|Vn9PZ!6K zid##9&--6akf`(a*nKI7=Z;v%?l(*v?MiV^4jrtR;>aYG^yujBgKtvy{IHi;Uu9ru zI5TEPmeO?9mLH#uE=qHHM6N2)J{WYn&Mtqu-dhRv`OhM+eXqUuy!!Xv`|6yEFX|0W z*!ORneBb+c9la_aCrH~RYbedzV#e0McwSzkHr{WG-uJXS3V zQfS)uL?)YUfvd0Ly@Sn8X7fEYxqeniY@KepD*tNc77MSX*{ZXmXK_DXbJDrGtUQ*m+&U(PmOGCf_`@>-eM&f5p4C?%IZ{QhPoNA&yN&0;fr za+J2~J@lM*xS?t5i_JgTe~DWM4f{wEUd diff --git a/platform/icons/src/javaee/messageBean.png b/platform/icons/src/javaee/messageBean.png index 8b2a265728478acb73c439db629ac32b36f884b9..a249445a785a9621d1f033217d54cd469ba4f800 100755 GIT binary patch delta 268 zcmV+n0rURT38w;(B!BKnL_t(|+O3j54uUWghr8pbH_#IpPhs4=goedQ&cMiGj2qm5 zn}7>(CmKd3{|xp0$SbL}1ri;;ytMtjue4N1Da9{{zX?veg%jcKQPIra*masS8xtY(}*S1V5HS z7gSZ%HlbqNB@p~<=LqC^F5@_EDw(qQ;|<_BV$&@Y S(3b!J002ovP6b4+LSTYvK6YvV literal 1235 zcmaJ>TWs4@7`B@%v}uE^GPDJ%a^f;r#bU>~G>K_wQ#&P*NL6Lg7G78!`y?@~FST9b zb^;}hKv^FU(q1McSfxGifW)W<64HcLc9EDs2p$j!m8}}$fhVZCNfjCtyK6cg2$t+~ z(f57-_y6ZVJ~KV_qR0J&8$l3HCe7xo5wqWJm-T&WYlpK2uaPPk$Ca{C<1~mQ1*HT* zM&c?k2RUJ3?j{^X5Qk697mPyoC7M?xg0nG%DXA74K}N?+mE&ii0ZOnU$_f1U%U5t9 z3JLsVBpb-846KUjMGYQboXYcyGkjdY$6f%VCT$5w(BOb6&B{7$Ch%Qd+M3(jBo1~V z#!Lc#V5*Rv28^OX5FsLdK0t**G)_%1##j;ijylNOKO_H@*ji`kPMXQihJRTq$toCWawjo$D zFvBKrOMnnXflj7kY?PUd#G=s&ib{o(@sT7$g#+=Ci6k3}2isg$;pZhN8*Q%ekUP?m zYj=XAT9H|(iLXInQd18b9(%gqwbo+4 z@1blpyJmH@{_EM(2!f_FY%*{DRJy;jGv+u_Khv04>*Bv24mPP&{jDnNOF=jL z!Tav(r&@E3BiOTDt1;{ny80+qLpHtO#EnY*D0bShSq5)+-ML+T_4~#)f_=CVTO6`wi(HUq1Woh2>_m z>GSze=9i@dy@%hpzuo9}oof8p+dA)i&MCTvCx7S*9ZdLsMoW)W&9x-UI@dAGbBEvR z>RWe}9;;sE%s)2JYj5@*Iy^8iu=Z~9?lPRfTYtZN4jmjE>~p)_ r#Y(ekUBr)L#G#e?lTo=&5eQa9wqAkq_MiP9*uR-fYKr}6qPX-A;$D)x diff --git a/platform/icons/src/javaee/messageBean@2x.png b/platform/icons/src/javaee/messageBean@2x.png index cb0e521d443107e37ced25820271b2bfeffba536..b5e73fec8ba8c80772555610cf8052d390d7d69d 100755 GIT binary patch delta 492 zcmVS5P;)ZPo-}mLM;fsgC`GG#Xf@~{@le| zz!XZ17!P@XUiHvZAZ_WzS7>j=Di)etEvz#kTb7t)XU&QpJbaMs?#z5llL<8#W5#b{ z{0sa!frrzrJl22{pbNYJ3t$dB12@2SL2M=}0*AmGz$64fU4OSg6?i8U=X?N{x;wB5 z%oHS$TVSP(KvjdpeUU_wz(LaXx&{ebRbUl(O@e2dB+gX?j#I%pB=D8ppbB&|66lb4 zq6*}_?>Z!E6oExSg0d3V6oH8(Ng0VDMPNus6ib+f=V6EOzK61XA=>;St!B_&Y- z_JC%J{UqjyB7aaL2s9v==^$?sK1u|dKP|AHeANmCEX!i;cANRW&!Q+IfoCxWV~Yfk zGfD>rg8^BB7snV`2ROD&025Or#Nv2Q6~IsFolHO`kuI(xz$I*%K%PWaaa94%h45fD zvILM`ueX%o#e*RDa_&0Qw@pw((A ik6$rH`M+FRpe&y|j-P;loT)7U0000drT8|9B;(|WB3A69|dwAveCr$dVTjsVYU^iwydcrb>iS?k5cG8xE{8Eae{-b zM29Rw#WjY@iVe_>s0`8BoOYVM;d_JG=>yz`D zvzAPYnis|4aHbhD^%iyoLT_X^`*l}TJY<)-%wj9EoGfHKD2;Iz*~tP7FyN>IvtX#b zy!0HF%Hf2~cV=4|tI3GiNL+-5Fd{Ebv1|?}HQh_0wi1j13NVM0(13SOoCX1>T?6LG zO=1(J!-|}l6*RWIA}iZgQDRfu!SpmB)r+tKIL4rW7k3eE#H#^EbrE(Sx`set6vC8f zz!ynbO=dtx(ik8Y$%QsCECZBk5iEygDtI9v5yMhQEQMgH5SAcfH3G|lu?J+M(e^^b zqR$wM#hx@^5yMaj1bI9jkw+>bX$J(W)oMsAfg}pfkhNQDe(ly>ia}mjq?jn)`bUGj<$4S^pk6SPbH<=Iv z;bu_6h8gr4kQER)opwa4Q%dAIy-KB2YGHV>OsjxltyV76sdPHMUYs$`)swa|93z-< zuKgufJt;Tj1e{_c>oMB77PDv2Bo2&Lj5sIHMKP(~7}q{|F3L%{5St7Xn(M#jJbuNR zC$yb#Eqj>oJw~u*r&(9`t!n*%!ARIRwzS3gp-b@)9#a=ndC9%fL+y?J?Qw%? zM+AZEJ1%5E=Zsb`{?YGLYz{1rDSO&@p!k%@>-%(0z?l0=UPnUD;QpPyYgFd(w)$VJ zseU6;_gJ%SFgX9-JSL%=xTEO(qim=vAFVyi-&|YX-R-!=3s>yid*ObctNmp2&&Beg z?{3^z4bbX3J$Uo0cMmTap#627*S!m5rq%7-l5hC46PLC07OSHI4K78=N44mjpIiz- zb5lb?@z~{Ur3?HZ0E4w`udM{{ajfOt=65 diff --git a/platform/icons/src/javaee/persistenceAttribute.png b/platform/icons/src/javaee/persistenceAttribute.png index 1c26676f0e19cfd00c284c6268e9b7136daef039..293f978d9422494a6bcca0b7ad413eb67bf1df41 100755 GIT binary patch delta 400 zcmV;B0dM~13aJB-BYy#KNkl%Fi+?1YGz`LC}<_5YwP61i{2d zT$r$O3&xGQ@j=v}QH(JdgBXcx*vg}{7<9onQ%lp^l*WX`*WTW9=A@m@wE=*wAC${` ziqkWIY#>FXtx`Z@s-}6(0vx5Zr%^c%Lp`?xaz3d*YuZCiB!5q@0LRCnztceT*K^Vo z(#X>d(FY7tdOf!Zt^A%P;a70(2UAvF4R&V)=vzDJy6sf@2W$IzaF{Auuz-Xyi3E z(Oyb(Vl}e}(sjs^8hXfU{EdHubl~Y!F9OiKS}=t)@|X=$7iTHOHOogn_&l2jF~cj+ un)XPu8fD{QdP9B?8F@k0dmg5K_yrcJ(_{OAjhp}g00{s|MNUMnLSTZ(g|~(P literal 1382 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|}4Qwwt^U@)5lNkdl?CsRuo3sXaL0|Nsm zXH!Ebm|mCs?vBK}>ZI^$XI(9kAXkJzQ%mY2`7q>n? zxnRc)^^?}78`YMvG|7e9pZnV=(QMkATCui*)Wgb16<+-utUBHSp4n=Q%IX0g??0w>~=2bWE#4Wqe z_6mmou2`&gUW_#=^(MPb{*EQbUMcACY`y*X<<(&So*fyw_tY-E>)Cnv?c?YjyZjr^ zA6J-cYkdKV8|PDu3SGH&&b|`P zno##zCgqGm&?{a3onNd4Si>&Ozu6fO5F~nX9se=wS9`+GXdX1sby(MS*mYw|x=!|w zr@CiLosSEhm3Q2j{zPEacm=?N#lA<)ipY?lR;>nq~Odbtx`?zkRjOw(h^S yUa4m_U8Wa@TzSjA{F&-U!-*UJ+da=`WMdFs{^QHaMc-sWC7-9OpUXO@geCw0JNIq? diff --git a/platform/icons/src/javaee/persistenceAttribute@2x.png b/platform/icons/src/javaee/persistenceAttribute@2x.png index 29ccc4def9b63c642697a47dcb02f9ddef11d95c..58ffb227039b56e1757dc71f021ad4861c6fcd4b 100755 GIT binary patch delta 934 zcmV;X16lm>54#7DBYy*eNkl;DMVo)|NJEOpfPlck3d%Lkl&U`0%CM znK@^^o!Qx$RRDnEZ=(2T1U|N9ZpAJn1gS=bkwwJKv&ffSM1KzQZJGHb1so>rCa`=r zl8U@Tz(=TU8pXP2t||n?d3_SVvS4IfNWAbU2W*4I;2f&~*F+<@r&~Gbn#ycL#atVa z$ON))TLSn$9C3I$&IX6I3fwc;;mnmSXyw|9M4Xfh>wFi$>qE#lO0fJ?5ALaE@7?+g z#;lqQf&}FX_kT$MfA=D*6u35U9+Nfi2pi@Qjl_PY0RO-rymU8m~ zD^dc_xQB4i;E|9)ofHFQxe1%fZB-s1%!8xdxWU2cM)aVl-IX;RT4PE*%FtudB+xt4urYdFQ?7ewH z=d-lw$!$hz?$VodfCc0H3>|o3z+b_6Deo>K1-=418=b)+;#t6%c)xWbn(!*AJ6f zK4y=4*a!CsOw_nFU0po&wA3nx88UO$Q07*qo IM6N<$f}2pV)c^nh literal 2033 zcmaJ?c~leU9u1o&6be+Rl{ExVL6XTN0g{xcWC0=s5m8oi9FlZXD4i~ser-CGDFiK2Dh&gB%)l(A;tKK zs3H{)mdQi)YIwaqB3hzPldz3}8_}Kajx$eTg(GNC&8N0Hl*a8k@>ugMP%f4+)E= zmL{{K_`z>uVJ8krhN3Dq0BE&Zik416)F}YSVzB@!4WQA;7=oc?v7CXH2J*>pcuEt!Qwjmh6;mnhT{Ge!E?{G{4;i6@vpuvu*Y2AAY5jIO=De#LIv$lclI zCi#}%dD;n%GTa3giBaF?RrHEekmO{I^C+qv%dT2Uz4J)4_11x@o8>IJrZV`OtS8>? zi79&yemsjjDw|(8IBk|%a=%esgY+gPw;?Dx5}=7X+o^;`VDcBh{+Q4Bc#*nXenApX`Qb8 z*e!ImdH*`De|1%&R()s^7;$$w5vEJ}GCk*uz~}Z*`R{>u`__)5=S{o4Li$yG0$p#( zcF$tRA5i6xs1#pUdFPj76>Y;7?FG1H2S9O?bCLGexz&{+86{x*a;V{FFtBCS7Qg!T z-n9`G1t~KdlyPMr$K0)Rqy9`S`Y<7Z^PF(ckb1IM#u&YjU%~T<=q#mnyS2Se zEF9gHRsAFEnFQH);QO=V&uptYS%d%75K^8k|JPZooVL3sTTf3fpt3$Qx!OGS-u_>Y zP}W>B)23_M8}&2V0dgJLa$|>ALr*w&{E}?EVuWzmz0qzDFEs5%t^eWD>khH|)1I(W z|0wnx|D^M@qk4M6%&j_J^eo=xrwM)6WV!6$jU6B;aTD44lxDn_(T2A=9?`-+C*B=R zSc`X>b+NN%@=C5wt=_w0Y3ljgK~4{?Hw9c`hlWElkBaqN$7@Z0v^~wsS4t*cveWy< zdma>bYOLxO8?L*xSM9Yq^*EXDxzfSqMxk(8EAPCVYEZ8@G!(4=#$u-U;y&38T9HF_ z=1x@##bK)F*`W_~z~I=Cak!M}vP<|_)jqm>WU;|8thfWY56*fwbnz{9-XXcy4!-L5 z_=-^b$RnrlqqDw+hwNic%fVA8L;sxadof^Yg)6->`6KfpiW+~yLO}$-mb*Fozw{V6 A2LJ#7 diff --git a/platform/icons/src/javaee/persistenceEmbeddable.png b/platform/icons/src/javaee/persistenceEmbeddable.png index f5989616ca549868c811a12eec189c0e9ab6aa7f..03f46d92bc53a2988c9a7d29f749f3c4af57ec5a 100755 GIT binary patch delta 253 zcmVZ)g)|9KNozbf&r$Ke!ITw-?>qXzp_P)8vlEG|44x#FUZ-%m-y&?%t$Fd-vY% z-Zs~uTP95H2ca+#$3(^u`fYBXgsHPIKeVG2R+$~!U}KDytxPAnA-I~oSDU&I%MR|| zKRnO#`}c5@g9Clrw!X5JqNr`@elbhdmz=k?g?x8Es7Yk$z{xxwLPcDbOi0BPRDd9@ zNhO$tk}~nu9PFW}=1w)2$N9`bK}H%QIT*&)48o?Uo~Ug|@(9GB086SKq3>P2K?7BZ z(1(HK*^MIkGu zHe!)egdWD&5LmWcE;D66gUk}k@jTCZeXP&tAqbB(p<~JR=$5;#AVNzvRRgO?2acjt zKw~&UlT4qMpc$L8y0y_J(lFMR43=ZOPDyoOCiDMLP1{6UI18WU`=7#AZo+_U7FuY` zl*!Bupq_WabbWt#@&77-3`$BLgH7VBaBCS5Vn{eI1_32x;BIk}kuv7@>&( zqpFIKjCb>1F~)~Op*Y7S1AL0~DG&(rzIZAbh>3Nsh~zO1>bTBTo^fLhxsDSwgG3gg zsg6S>Wg-o%S1hQFa|t!n+u$mVa|t)(vLqSSnd`siT)!gbakiVTC5KJlL!Fr2B(BE$ z+7yava;L>u&i=0OcdZs}-do)wcB$J}cP_8YE3zb&l$)2Elpilg-+B9swMWN4Kii5r z-LqS+PQSWVDi-$4E#Ig;@l$_#PaLUU3QhK}JvdsKX}R{~k2A4@Qy;$Dcc6T+`f*48 z=P%cW+TOf)T3|?Jeh5XK%T`aTSF{ zP}%=&H8i+V-7|H)`eOCrg~#C3lIzi7>-k^an_nDnF#>l#IQMY(%kGbQ#XDG8__}oE z^nw2HHLAPI@82=K{Oj%M9XnlTPJPAQ{Oxz4otbHO^_{-uLeXQ7_r5W^aB{&Vb{H%7 zzYmOepPT!k)?t4((X@Pcl-lLG%^Z)lAN%yu3%l%@Ui$n}({pXq+2o|v8oCpA{vhe( LfcQ!L=!t&-S*)G< diff --git a/platform/icons/src/javaee/persistenceEmbeddable@2x.png b/platform/icons/src/javaee/persistenceEmbeddable@2x.png index da95888a0bca035aad0dccb79c88fcb40c0e1f70..0d4858bbc10093679b221ca9cbe4fdd96085efa6 100755 GIT binary patch delta 1223 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 SsW6^@mUz;9sAaCf2mS;~QO%S9 diff --git a/platform/icons/src/javaee/persistenceEmbeddable@2x_dark.png b/platform/icons/src/javaee/persistenceEmbeddable@2x_dark.png index c7fba9acd0ddb6dc1788359809cf5f312b187677..85dd10a3a5d85b56bbe984d94ebdbe99a25799b3 100755 GIT binary patch delta 1224 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 b!IWSYDY3+JGLuUS&l3+9Z%U!l9_fDofiKv6 diff --git a/platform/icons/src/javaee/persistenceEmbeddable_dark.png b/platform/icons/src/javaee/persistenceEmbeddable_dark.png index d6afab5d6198c7ba11c5a185098a1c8176338ab6..94a876d7aeb86dd1ef57e1fad6ce14a1a14baa81 100755 GIT binary patch delta 252 zcmV`3|P?`{u7@U z2pZ6m;S#^TJNna!_1L{YFbt+%{EULZ@e2gR!~y_Ky@b^^(+M5`0000c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~9q7efn2CvyvPb0UI2$*<4On9mVa^UGcH4m8Bi-4*6abQv@0|TR)r;B4q z#jT`2|Nq-Ft2VH@=w$M}7Jv5qOiFTMVtUGv^^7U^*W1_E?fd(qcGnb+d`0CGth<-1 z{Y_6xQaSl-|Nno+3||eJVjGs2cY6H&oKSUuZO^|Cy^cN;W;eQfmCtKfBpLDO@ZVsb z_<6ByuPZ)&+@SRAR;HKnoX|MWwLADvMPn=V}%AIC)NukQ_ zMuU04^9Gd(dmH#0zHG>Dd;FEj?z#+P<-%Q79gH%))yq`>vLEBn5SVBxTlvfXpI9I# zXS?`;wyj&YKD-hW8tNLOlkr?5sUvo7k^Dm@nT-W4FZO)+c6fXIqNY1JH}*J8VJw&1 z@0*;SJoC)o`HkYU#S_jQWjnCZ;O!-G5yz9ecS|-kHA!4s8|`keo|#30A*QG!axvRc QCr}~c>FVdQ&MBb@04!dj00000 diff --git a/platform/icons/src/javaee/persistenceEntity.png b/platform/icons/src/javaee/persistenceEntity.png index d8a4cf0af460e16dd2868658ea7f1504bdf229d7..9f942f970782c919b1bac1fba3d1b7542cd1fe63 100755 GIT binary patch delta 258 zcmV+d0sa2C37!IwB!A^eL_t(|+GF_t|33pI7)&f~3hm!EG498nsY(C$PQ#BuYCvj1 zdVqY00lTIo64Z!}p?V+&?3oHTAdyJ?AF2mp!1C5`umLAG^#8wk@hBLB*vK|6Z4QHD z5Fe@sVn9o#3)p0kCS;7qfW+2Jw?w!ByP;kHYDz@L$j%08gnMI<+TGOfg2$vic)ftn z1*$+Vs2)0W2(K4Zfj0angz${^romh|Q1)^Lq_2Op~42oY+6cG~(0Ggc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f1KJBR6vkOH&JTb7w zJgD9j+-@UI2$*<4On9mVa^UGcH4m8Bi-4)R=&^nh0|TS3r;B4q z#jT`2|Nq-Ft2VH@=w$M}7Jv5qOiFTMVtUGv^^7U^*W1_E?fd(qcGnb+d`0CGth<-1 z{Y_6xQaSl-|Nno+3||eJVjGs2cY6H&oKSUuZO^|Cy^cN;W;eQfmCtKfBpLDO@ZVsb z_<6ByuPZ)&+@SRAR;HKnoX|MWwLADvMPn=V}%AIC)NukQ_ zMuU04^9Gd(dmH#0zUVyhJ^GrpW}PL|C#O&q={S9vm;Z!Ixz9azpY)UY$SfY7cKts| z2cENTNDO7m;mLJqRgjY1a**eMIQMP&|Beecs-?!nF$m7vq{H+4{y(P6FBnw##A<&( zysaPTm}iy~r*Mk3TyDQ_a(eR2Gk@ndir?jKiD5YBb6Ky}apH}d4=OqzIG&X@FfcPb X)tlqv-TQ7Es4Vex^>bP0l+XkKmztr8 diff --git a/platform/icons/src/javaee/persistenceEntity@2x.png b/platform/icons/src/javaee/persistenceEntity@2x.png index 9e53ce1d2e5569521dbd18a691922b1bd072d4d7..8da8fa56771610359a5e97753b01508396e1666e 100755 GIT binary patch delta 1230 zcmV;<1Tp)g65$DuBYy;_Nkl` z5uCuI3bAlRlbYfQY~vwdhbbh6c)(!r010NWF~<0Tsnw({K^<7Mf(24qp-4nkTB1~; zQFVK+@qGe62a(h?UHldv?m6E(=iKkS9E4ELizMfNBVe|>ihuA5AOt#r7_b670MIk? zAaypDiX}|NW^$zqH~_eT$Ip>$uWY7r9O#x8?GzAf6aTS~iFW|GHn0F(1xA3^z<)H| zRk82MBUdVrN6-6|9H!uj@?NK)^c0lH z8Xs(2-XS11@Z181O@gHx%|bJdjdQ50K4>OhzzCS^IDHRp0zGs|V8nk6bbmpOU$2)% zJ(sMs-+$ts9kTeRT`C3$oDn#i1p4lFX*iuQ3({^y5jCjiNk+^fJMaTs!+R_N9iM-q zAx{C*yB2e+<5NzRJ>1`93_2U-L5Es~1rcDVG?{>*O#;Jb?$dItASM7eV2QR;nB5KNA4UXa)N8D-5ICYv4&qug7f) z>7+}mi3}LbA%_xBU=ET1i9~`S{qt_H1nAG@Rm0l-lgt3_b!?y^K6j%vK>N*Z+Gn;$ zoJzvGSr>q3;DYF=dIqjiMk4~Y`2f=brFV`Y{qt_H1f1vR*5gHiJsV%cgipJ^7k>d+ zs{lCF2H4~zyctQ!GJ;+k=Z0JTiNKX;Vyr8U_d|-ptP6mxwX)^cRh!s~BfUz0&@MMl z*p;%;o_a}|5xti67D!4DJ7ImUZa1QIAK2Fxz=qNTAt?Xv_+|1%2zVLb*Km*cEVcPR z2W|2vw7UT skY>FCM1b|jhr2?SNY<@*uVh=mKk+DD09`r(S^xk507*qoM6N<$f?OIu7ytkO literal 2339 zcmaJ@X;f2Z8V-qU8Uzs;Hsx}`fk?;-Led0*B&-G*69&*?3CRT_WHAXOFrq*KLD>|M zWk3O2DZAiSM4>1~fht8RMG=Gw$~r7=bpa+=apuQ3_ndpbxKJWXz-#Itk&(}j| zt;t##45s7dN#Cs+ft6QFL-m!$#l2Jw#xh2rj3o+_$vF}T=E@U=LV%Zm6AtZ$IK0>c z9S{WuLs;{z;ISD7==KrV#8pR9SSjr8wtsPP$--)q=K`}tsubXQNaKQ zCXOklK@oh)(8kGf>ld}SL80v{o= zNGkZJsX(S5KodzIzyaf6$Hn380Y?%B?|`>=!lMBK4o}45h*&()4o@KCNMyVN@aX|n z(ImVu@@~5Or&y{L6^xL{#AGa1E|+8EM2tuhj>VHmBrJ}AB@paX2s>%4P{vW%38j{+ z3Uo-ymGH$fzDNkHC~`tY(K0Hia{6Zq0`X^Aq4ZOkR0YE-IASawgIh^y706`%f2ct4 z87-CVhW_LCe+o<4v0@0j8yLL>%g zG{7c+FXV~jQq)H{lS%dxN@W}&7xJQ0L6rc8&*zazcmjdsXz%Xi=t#rk8TKR`!HML` zAkZBd?j$^svC5^3xX}VgC|l+7K64##U*xWIfMUC5ea~g8I$>6_Co)n z-X|{ai(c#*U*uv{X0R*g`d{a~x}|EKmFefMRV_aEJtR~$yF}I1F=-j9E2duHMR#Q@ z9<>MTjWX~za+aQX_;B!Fmk0Z5%L4ZJ(VINjYxZa*wdCl%x~1&O#V)vISSWpv$$A_8 zSn0a&hI1{{%#-!fLx6@P)FxEQeZ%q0nP_?Qz~IA@LLzY~{K|!aG9PXSX#JKD9(J#I zdB>CGlI0Jypi?PZ!q4__g*Ahu!_(B}Da~mZMK@6G2emb@7REiQPQe-^{Hj_$tQB7V zI^o%y*6y!hwfbVCISm(^8^0gC5V0l-F|8hva0X^RWKwJ*I^E?$`2JO={%m}E#*2i% zpTA^Ux9>)rFM@bfIoYom#s4Nl+{&$T+J!J|yob!bEf=F_44n+q;l~tNu4tNNQMn$I zb&S9(z*$b?GML|)YIs*0q4=8%Po*SI6vnRiqyz+y$@`R%Sa(Nzo(=hrU`^n0!UbK4IS0`fzKHM%JxoTgwx= zADCrUoa~qwwJ06mt7CdSs}TKSB&A}cPP~(Zj5uc9Yh|!E|G~-d!baBo#M#=j4atx0 z;(p!gHz^?bdDx)y9=F7$at2-S^|rlDUaXO}BxPDmV{(v*7JjYtRbr|^wvV1wVlbk9 z`y863?S>?~{o-gwdOdx=v%72{Nry=9I#^$~H{NJ!<9@Qk8YC>&$sDfJm15@SaMQ31 z`A+)ncu`vjx2gLQ@}k=UY;syV{$f~c9t%N5(sc#k%1^De#OnV32a zOFK)5ww_H0`o&p4_VTb4WZ&p~Fx0T?y$2W&r71CiO@9Bnu52o|HyuGo-|}@q`HRk^ z{q>D}XzgH%`n_HBfj-BJm%cG2S8`vNgNDKEZC1yhB%GKxNgeY>bxOEIEM1G`N|TQS4|hH1M!J<%9kU6izUcoB63QTk!21ZzLDb^b_3^ah*eLcd>G+GD=1 zv<}bm;TLpo>0_dOaHmvu{fXsujfc?!|EAx1cbGZ9FPY2AO^jT8>e1=_^_F^c4dNOq zZfoN!hq8<0Fe9h^g{P{N9_l<}Gtyn&wHysk4Z0b#hf+g!>(dOKPMFHh5xIp_o2t*Q zQ)~C69%yM6?CLs773QBWDgK%_)ljSl+=;5S5>#-zEnfENs#9~!0XXIP;yL)Ho`s@? zD;5!8G22>sGkr1rVvNa&J>!R~)AoP66wQ1v_RnEYXWgg|d7cy2S|BkP6H=PN2{Nv( z{JBZHwrfeayv^D1VOw?4(?ezMO0wB_3vqr-ndg(`R%2!t`s4vH#cEwc-gLp+N87UrSfPyKPXxO+dRawq<3$Uu|TnYT;pBeUM8m>5rqhx0Ns&EFt* zwk>&t54(^eeQm=>0);u1JsO7k8%{E=RZYB}YbZYw!ULTz#|6##_lFJmZ%l3SW{3Ndm})zgI7DQ-*@79-BBgUWc)(&Y}mFX zFd4|#3>mYq$-C;R*`PW0)}u(XG+wPgzA{pA?sDgqIMO#wCk=9nPp4kZ@-PVg16vni zp@<(K(mA)Ymtz)3XO53c5oiC>N6WkRz*b&&l8%8jw<9*`YaU_uZCv(YXuH-~U0Bxn z$G#8y+jI{%iAl@0e@k|^d;R9%bI0dLCx2>%BVp|Y$F&E>w*R>D+v3IWrPsNIB>fvH CRlk}5 diff --git a/platform/icons/src/javaee/persistenceEntity@2x_dark.png b/platform/icons/src/javaee/persistenceEntity@2x_dark.png index e53d5d7e5b6d31ee6476e37198bab4f84a237e12..830e28ea190d15697792084fef0f5f76e11797ab 100755 GIT binary patch delta 1234 zcmV;@1TFih66FbyBYy;}NklFk(XuQ_CnV(3T#AR!*WVwvGBVwUWCt#`zy*n0hzVwK!??)I z^6q&{-!IUw5_Dzm;&;)*`#k^ed7k(Gd>II#j2B79|3<)+rGJd@Dj)>ffhe#9JOI!$ z@*r_GnusM##Ab3O3)llVfyd90Y^SUza_q6l^R@~Iw21%M#l%~HTx(bWt^y;#t>ZtM z=qTCsr3H@Mj(j5F9ILc^vaGzPzoLw_YnT&U{ZD)EOrmVh$_2ac9= z4oE@7BL3qouLj-rY0>vn?hR;H{5!(aN{?HYibV4H)A{?Ua>&IJprnp8@v`2ep!5`! z$QzW{?ZEW1Gw1s*b^Z|RlJkV7u!-5DfRH{_K(8ht`Gxn%CW)S0t8?Zo|sdWDV+PtBcPsV`{EHTl8Nec%KY!1y!MRuhDtL#Ei?ZJq!4*{DVM(_D zXz?wNo-ZrPc}F1SWgcS*7%~<8QYHSN9rqstWtK;J>-@I^o%7$0+n49UU8`TZRSeLk zl;As_U%ziCbqCWGn69nC52>^$hCjH05G-{Qr@E|@7A~YF1aGSx& z@qa9U3B{sjY7OVGD)J*a9drhU5l|^Sd>j(rA*IA+{>r0Szcb-j{U&5v{Cdo~Fyq!N z&baEA0WR!~l)!ZZL|mA5(U7UQ1Y%Mch#6;~QJ4)ac#S0h8<9Bo-BNJ2APsAi^qQFg z0MA6?dkPMtbifE`IiKqh9DPfI%LslTi+}VegR>sZ%6}#RmeCUQ=~oy=r(4I9l3tHk zYotMkS{3fo8OOR5Kn-R;3Gm9^HyDyXZwE_&_H0%;tldA!4B%cz`|4uTH=6yl*XX1@ zMqAjfAiSS;0eA+^iw@UL!c|IXM8GB=U|O*6w1y%1^LDTVoa1L!<3)iz8(+g&kAHe~ zCj!z|0dT4{u*o328A-`9f?n&V2b#UJ{wtB$;f@&I4+(P9E&#UH(uQA`tz#<=cPqRB zn_NF?Q^!?f_ung zs?7d5V3j|iopoq#q8oh|?ce=dKufk0h220?a=?+!nG#(r(2&CEWu40nUz%VhVru`2YX_07*qoM6N<$f|}+_F#rGn literal 2344 zcmaJ@dpwi-AAj63A-CpfE(HKU zpYBHuQLW&@3tOW4O62kx)nXx~F{PoxSgDL9h5#~07z2THJ}V9ifmocB#BRs~05oj4 zVN5AA;71}`$VagjFsNj{NW}&K53ghqi=6;T!5AoxDi@-vcP0MPaq*Cli*);iK_j=H5v|nfk+cb@V}E{ z1~5R1Pz-^16yBMQ!McL$2q-Kb>*|Je0&y6u3mW5s#=1CTaYPJ(h{c0nAGj)-m=jA3 zq56J}r8<$|@lvUXh(^m~GL*~(B^1Y@u>=AEjlrRDIA;~YS&|}NFq!UvsHtOMJ$985h-GbB^8RpghJk87a8$FsZbIx6oC{9xH^I> z;0R@sHDBNX0Yth$B4r8K5S>bbs{~M7E{8~<;mLS{&pNkt>nK<(&6PmI`S@UI6kk^i zg-jsh7P(X*JBbeoq>Eh6KU}x(au=My7pWpsAu)G5#PJmi`QVp|iQMn!g8#1GS1#xK zxvc#z7p+PLy)f7Rn)Bk7$~+6(Z?07xzWE*!sLU=_xw>oA!W;m!O6XK_Sn~b$h$x z)qKTEGVEBep6$ID|I7lPXIgUh24U0iH;XLh>w8{oAHT~y-$ie}SybdQHsAX$ zeavf~Q3xGdKNvrgW0fGgWt}=S^-;|o=miRaYCugP+$RZA?*L{M%e-|TIe{?-mFZ)j ze$lvnLoFLP3+z&Nx+OEapx`U60QxUo9%Wk1jv(GBE&OaRpd$agVo;R$!)>5pdt3ho zX79FW|2s@;D+AJKv7n6UV-gpC)#qMOYyQBpeHFv%o$%o3<-OP(D4rT>T+ZDVn5AbF zyURN3T&}dudyNUgt^%PvkHL`eZECq=4n3c7B|FJF;o81o9CQ0?Su{_dlic#lFPMK~ zC`O%JrlwXNEBGoJair_qW9HqXkG-G28Okn=!p>U_+Fb&2O!H3Gv69__3|C_B)&#Q= zks6H$OYZkdHc8Rk?Hf||TCm6I1ctEp#DRmQ@;16r79(2e=MHqBOFoZmLb#ch(kS?;VHvj2FQ37S3=1!2-3YvXYQL-A`jKtgZ4BqK zzO4jCz-p($2hCb~ZH*Z*TO;i257{F>PFo`GcN@lX!FJfqetpXj4;1-;=61W^Hucp1 zNPuC-VdQtw?+28+Jzkkp8+k`pNFTe?o2MG5>Aj5i2PeHZYItAid*CTb;^B5Eaw=}?tgf2){dj)+ zT!YoIsJg2~x$#5A#T}!L8ptHx9HqTH&%em_bwV(FN_Tz>OB_oeC?eONIJ z*`J%A`+hFj-(8>XJkt_Roz9%=PdZ#-_1Mo-oA=o|XaWhl7CMQFF5AV5w5aKxxvX<$ zc&_$CkF5UCne_R}ksS@b9mJL6mk1yG8!M*wd7rl2{UAnT#6+tg6w-#!U`7vD%Ku=}n)Gq?z`6%onq-rT#Tv zuc6-Q)Iu`V-Ai4us>yDL(O7-M`LIUwk_&Iv&K5X29N~)|^xo@YW^15N*UVPd3s=7N zB5G*+A0kw_ww~LJ2yMeV*}_-nC5I~~AIp~hu=CiRffAFvo#<<8hiWG-m6#3)hB2w9 z%8kx24%mYGYn08;FRyxPuySY5mNv8K>%4w;^EN;G8tRd{-5#>T{eepFi^FM-TV9!g znu8vIqXD_9PmP%K5Z&w5=K)Mgu1*!cZLRuX(rl9V;q}ia6i;T1`;t7$$3LehYU#H2 z4E+jU>b~Ri#TsO4HoWI!R`1yihm^bsL6k%8W?*}+wu9}mWmS8SbNX637#jGzQUCSIe<(YY>mKudy_;;bx0;#n=(L4VG1pUGM diff --git a/platform/icons/src/javaee/persistenceEntityListener.png b/platform/icons/src/javaee/persistenceEntityListener.png index 245d3c174e589cb1496dc50646658590a9311678..f543e27872388b9ff5c9f7be94d31d72a111856d 100755 GIT binary patch delta 530 zcmV+t0`2|b3#tT=BYy$$Nklsh%W*04=BC>#7$5+ z6!qu^1Q&0*{h{yZ^Z(1Pe*C}b?l&+7u|Z-$xsM<#f>ljSKj;z#!l{DVE@AS z=y*9$El|%-6a$uA|MGw7jjv#A3v}{gpkHBpAbt+SD}cBShzk~9`vP+Q0u(PyJNNGY z!fRi^I3lz7e}C1S^)UW(AfBAOdD1-V`N7Xj=X(CJniurUYhnFFlt64f`1Jq$t6#u) z+VLm!p0>j0Ae=Igc{rKmG3i)Qg`$xXol~_%ow*!T*idhrlt2ud~SO3ck#A z8Hj%Y@j{oyb^W@_z5eU1@_}OzUv0KSI5q>YV%52J;hIaFuW2oF`30gue2_Q*v>LVE UV?O?601E&B07*qoM6N<$f|O<#&Hw-a literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*pBU2}17fTCsb5}z{R})7gQwwK9b0afT zXBRVPLra)mm;B_?+|;}hnBEkGUPqjIK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~Z@ zJgD9j+-|YJsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6$+f-|1_q`uPZ!6K zid#!2`(_9`iX6XxChhaaPEW7vOMO{fuV@H0SA2frsvoL}Uuh?oWuH0Q7_avJZS{Zi&uMKI zea!!jnf|0#ZG83pL{kJSdrbZbe(3e|IzJ1G;#>EBCj?LZI@YY&KuA6DkN!NVt_N56766+>^uKmiK;_v(A zt)r6T_Pl57)uJLAzx)EZ6<*(Qdeg7=F()igs`={b7w(N4#lj7Uu_UlApMD=c# znUk0Aee&~qeA?ov$39It7~-lju`1}qG~<)n4nKU4beH)1xxHWZq(%EeuIaQfclVW#A9gJKu+45p+`H-?;hy0u6t#5RYWboU?y){>MrB$o(2UIerf4O zOsg&2yX|ZB=8H_B#s?4eDR((2mo`f-h^~^)i|&h+t>ON>V^aA3sJWR>V&1Q~OncRI161gGy85}Sb4q9e05)_uVgLXD diff --git a/platform/icons/src/javaee/persistenceEntityListener@2x.png b/platform/icons/src/javaee/persistenceEntityListener@2x.png index 36320066302482dfd3bfdda55b2e0da667935c2e..01837fbc874671ffade2366b63cea518db240445 100755 GIT binary patch delta 1207 zcmV;o1W5ae63PjXBYy;uNkly%HzNheV+43If#i|7|H=T0-aziU5?B5(4f^{ppmW>-=EqLx zomvLV@5^xIiIcfTVikQ)-Hi+&Z~h|#C=emfNg|Te^w7>M#)sB1ySouP62C437?iMk z3#SL3Gk4fKwSPXyoKwHdxJ-~-F}w_5Ac%DhXRPzzvEPEZI_@2Jqr*$Zupq zEqmu10mwd{q@L@%$Lci2>ye8yIl0b)ZWy ze%upwE(vyYWkJl22qx5 z*m+gv6QUv7kjB_yt^A3pORgi?9@mkq z3ZF#du-zYuP-Dt!q&X9|U)jeCq7`09w);AiCb^Dgq$cXD3%(2}x3y>4BD$pzVSi5N z2WkaI$&kNed626nm{$}}HR^#msK>ViR}{tYOn VPf|*T60ZON002ovPDHLkV1h6@Mb`iT literal 2314 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 a9DPJpCo--*9ZAicpmCg%^-VA(_f diff --git a/platform/icons/src/javaee/persistenceEntity_dark.png b/platform/icons/src/javaee/persistenceEntity_dark.png index 60ae7a4f0ccbd7ebbe1bdca328cbf1670b6430e7..10c8b599bd003447de6d9e7856943568cffc133d 100755 GIT binary patch delta 259 zcmV+e0sQ{H37-OxB!A{fL_t(|+GF_t|33pI7)&f~3hm!EG498nsY(C$PQ#BuYCvj1 zdVqY00lTIo64Z!}p?V+&?3oHTAdyJ?AF2mp!1C5`umLAG^#8wk@hBLB*vK|6Z4QHD z5Fe@sVn9o#3)p0kCS;7qfW+2Jw?w!ByP;kHYDz@L$j%08gnVO=+TGOfg2$vic)ftn z1*$+Vs4_D%Hg$d4VVwv}Cx%ukVijbYeZG7l?Af)Qg`{FerXOQAA8E0071Ua(BvI@9F>m002ov JPDHLkV1fpmbr}Ev literal 1214 zcmaJ>ZD<>19KW=rj=pTVFVbz`(@WFdD2)q@h=+HAL5oEKGBkN$$rFmfS|NN@mqmN~n!v#-#2gRd zcazE_M?pl@A@Fwcc zSm+eO3#O^D1W_y&Jw@81>Un}<7=|FdgxBjv2)8k%n7rjy3|CWugNC3>nklIYuod~N zI%$S*l8k{->~!p3)$Zf`&S& z3utgTmmNxDBRb?wRZpwxM6-*d1=UoIf~tW?1U$M|Qbe_AJhlo?CfS5yn7ksu1Q)`Q zfJc%mgGQih7z!N-cAtqAm5-xMIs(s8~xbfs!HYx&CX;%`0Rcd%NyhbXfO2RFK(q zWQ8_U&aSHy~}SJb3N;qA2iuUc7MHAznTme&NU$_1n*X z{`v;B&$Zy3d+*_TK9}vkcgLYX?i`I_B^E`s&c|?3+jTJW)JR zey2C{%UAWW?q^Qyf2m^q_Gi~y?!LwL@7s4=sUG_@0X8m(voU1K8HX9}zE~pD%PCkKG3jO@H|Ijmw;PUd?~e(Q*D zn>hE=rprfWI`xnFTHBMJ&uX{jEst;gMyxiv=WiSUSKG9K;kjGRXts9#Sod7la_`fB f6*n(dFh>V=fq%pK!Sd{q{YObeN4QhF4^ICBevzkJ diff --git a/platform/icons/src/javaee/persistenceId.png b/platform/icons/src/javaee/persistenceId.png index 84e66cc3a50d2a21a606b9a8eaad93271e7a939c..f4d960e10e90ddc8cd6f2641b68a46a291dc7367 100755 GIT binary patch delta 422 zcmV;X0a^Z)3%>)9BYy#gNklMBsZN2S9XbTl)G{n3mZhLW zgK~5Tywov`F4aX#DlE!~P(lo)vqpBvbUH&i`0Mw^ww}X8=#4B@s_4)u~Ibm&9&wS9x3LxcTGSVkwIDaRSn!f^!FGr4E6N|s{ zv4O}Osi8yEfN_%E$ZkO=w>uQ6QFdaW1Ndrk6*`YQBO$fqoC1M>7Et)S4ngN(TT?vo zgV%0>m3eb1>YEdAj8|bTInYHqpxe%dLAs9&B6!`-C>GZcP{{q{Z@_I3q`Q!2Kg zG{d^f!Vg%idVkX%p?<-EbmQ09W~b#=%xv(~f*{$p(#m7nAy!UZ(9Uq0h-U^oHY0Ej z)36=X)Br;{!HV_tGPJL}dO~tc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~AJLsw%1BV!A5b5}z{R}%|UOGjr*M;B8I zLvuG56APGLm;B_?+|;}hnBEkGUK5;pK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~H- zJgD9j+-@<#saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)R+U`Cui!pI|x;TbZ z+*&gEyuYxc$npCd_Wx?u%k*O0XlSBnTJZ9qb$L(GgazVzOYv-@ymnEWpzY!Hr09gzCy}3(#~iu>kKL$Ik$RtDp1eTv;NvB~Z~IMOjatdIR~#qX*UPDUJa`j`s>5b;=fbM!kme-V}_ye{@t5jUA<#?e~E9#qaV*&-?>c6 zY~!0#t-CONiK6bhmy>wkxmzt-wl0(5>n(dl-ps{dq)cUr<_-w zx!-lkc5gQQP4S88>p8j(X)Vln<##zr;B)1EHp}H%%oTaft?t2`(vbAo4*!hd= zj?R5FXMgk8qMdWDT`f4gZ@o5y@#*)D!4fY%HtsQ)DQeR9P})X2^v%bD0MpV?OFx?( zHTT3@H^tvsy8Zr^Xp47l(*#x>mn*t%e~5og>azzMj>uj=IPZE&Tl*xl*)p5vnO{|C z+>9%bDB_5af&G+IuUxo0(I>EvT{T^a7 y#ddiwnvu@q@F%yQ^Vg+WNq!<1-!uIYOkfcIc>5Duw`dQjp!9V0b6Mw<&;$T8_!-~; diff --git a/platform/icons/src/javaee/persistenceId@2x.png b/platform/icons/src/javaee/persistenceId@2x.png index b1a9abc2cf9d0a072aae4464f96a998b499f4d61..a19c74f3f9a9a6c4d89595f12825d0a6b0c85011 100755 GIT binary patch delta 1099 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 OzwoCA(JrppnD!rn2ct6p diff --git a/platform/icons/src/javaee/persistenceId@2x_dark.png b/platform/icons/src/javaee/persistenceId@2x_dark.png index c92242a20df5bf53f8a67f2a3f63413405f68f6c..21ada9090f86bf14d46d0cd682c11c8f5cc0d14d 100755 GIT binary patch delta 1108 zcmV-a1grbb5$FhzBYy-hNklDBl^`@XU#iBlIY78ebfxNsf0X!~1;wux^LVVN)$q-H$I+caq)L2eLrd)XmVEc7s znG!tu#RAD-cYpe7a|X|O;;v^B%b60I0{Ht9@`O%Y82JK|b^jxxn1idtE4l*8hNE>u z`@@h3p4<>9mm+Z$*`y~>&el9JaRL%oyEX>Qb+_NdB#c@Dbno7wLC?k36@d*TCNwjF zF#nw31-7NH{)*#Y;7k6_ctcH~lRBfG21s1C>mq(U{@0msWUD%Lt?x`mov61=xs5A|J#Fb{d^<*)blBn?A;BH#&X^BWHG%A zk|>G>f)|*lPFZS$#j*Ch>1nQ5F8knZ0o#2@Ct_QJ)MisEZC4Zcodgy~QDF3FzAT?R zQFFG=Y=1gE8Tfg6O!Phrh{B&Z0q{^v@_S;JJr}0&_*HcQsRe1(=OU=U_zW?*)97Ut&WQc#;>)W=DPynjF-wF$lTD-s$Q_w9k!1I3wfhv4_8 zuRaoqKsYqijqw7WNN}K&`Z$5)n%i(;@H3EwCQXXp+XcrPOIO9BBMlCp&%4AD)73_T z7dx=8falJH%T9fqK$I7thXdSmR)g%T*W_qjG2U{!!1Z+{-1xx^BYo9yxO%Un|NQsU zEPwIT)Ksbpto)2{I1H1Mlf1yG%ttXjCLuOl2eQ|q%KW9z!EPym(xTm|YM3kD1$R%S z^QN=utKlJcl;3DHA#0O>BuV__zapD6Uq;4s6-Ex`gN*bpc&%L_p?_Ku{Yz{wtQ8Pq zc-%*mXWoXyCgd7PJa(Bt_SEHrj5rYoVt?ZVs6E64sM6Rrs6B}I??C!^fTx%6Q_OQ< zJ!lHhP=ai-*GEVO36RW?3?|S>QBe_(LbVD4 zk0ZFCfT*A->q7ypB9E;Ps09@wB4AY%6>;fHtk`~dzBy;+znpvTZ@V96Utqv`w2`F| z3WY-ZaoNG@6{~p-^wnQkditz-S%LUQAR$mZBIip%6hjEbfmlB=e=8Ua@`Y(Bw?GdR zO2<|d8i7Rc{OJNnjN@xCIE5Hivr#AyZw1U3B!LJv4%{k|cmmHF{{>)0LQf#vjYr_Y zEHFXDO_zcp=>egF^dtdI2zYy8Jrs1cfEYyhScN!QBBLujfls=0^<}4n~Q)zBx5Nw9MO$PrV^d8Bm&VDPjJN(U0sMII)O$fx?w**fI6B~ z7*7vob3VsXpFDvC1cB*zyj(8F$z5@fbSs`nqtWmL5}rhIQ6pSrX%d95aFNJXEhw-- znLsLn5fLQ8Y83f#P%7dHs5AYu1Tp+YRwDb{CUwK`3ONJw`jF=23}{o9-uuGHqyY`?fxefZ*gP@*=wRPE|}kBZlzP_MfymGT? z$*bzYZB2Cohq{o7a(l7LhjA{ia1XG%Cvy zgCMQo-Pp|)-&6#bY6llx%3D3egSjT(>$*0=s$Ji=DTdxtataz2e0)r<%Y3>wAhG7 zuT3G+cV3<)kCEq#I>qw1L&$V|$5J0RqFamGlI56d&%s) zWvVQ=WX>Bd!}Ng>aaM0)D(AnA~zk`|>>LRL8+}4YAMXR&}2u50DJ9 z^Ws(8&AuJpRGLLiTX{9XJmMB*o|U6rwx)3J>H=m+j>`(cRsN>h`)KFr`pw)E zdN&-PYe$Mic^2r#H8wWQS0?wrw!T(h&_j6wH)!v!|B`e0H0+UG6hK<#PDngQi6zfz#L5XI#2rAl?#o z@S?cP#}e3BUPG$d82q11XRXyXuMFGwTShpLe!CWQE^&R9-I^m_zRQ^Y6WGH?rV`p5 zkJmWg>F!R-s_?Wubo|~&Y9#Q_&9U~EwTw7$GcM@J?G6*2mX0$!7Z1EAG0pBN$>!Mc+vNL{)DV`yhwSvT);Wkd0h$Qdv)6t z$+cj#u|HpL9oD_h$%4lbxrh3QP0-P87XoH0S@NP_O$1rlsDA0-Sp=n{!W##|Fr3B1Z+g?Nj!$5s=)g8AJ`)Iz z^p7>%CveOu%wRNx5fMhEBIl@Aje~Ry!L3NlDOABd_|UO`v-492RxAQJ{YYwG+WlM{ T{>0i!00000NkvXXu0mjf15C74 literal 1357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|-a7eh-I6Gsbkb2mdnR}%|oM+-Mg6H7-! zOE&`pM@yJqm;B_?+|;}hnBEkGUMHM-K`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}{$ zJgD9j+-|YNsaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xqSvW}fr0Umr;B4q z#jT`2|Nq-Ft2VH@l$4Ytc>Fkd&+%CsW1+0TYNn653VBSALJOEV8U)0`woO%<#KrSw zjt!6f{`!k`pZ^>@1!Ocn2{U|n;mPio8&BCO{QL9M{I*wOVI~_NUm4r6|N9Sa>Da-; ze8rXL22Td#qd0|mOh+#5S+oD&24iD`KmY&o_T5x?7j`tQf&auwha5JZ=Fvw3faxzCWFwTu(S+c6(55Gs-v%S^d9iuz?A9Gu48y`M@ zzh3fQ?Jq_l`vzSB--ZhQO$-;N)h5O4e{#Pr{q5i1^8*DuUs(#MD@zMJ)A-mS{o?uc z7lB`2Nk?l>5OUeNSNYQ=js!dFj_v{j!-7;sES%>_>e>yy#hRn*!k6HBe^!ybz z3##!MFJO!hah!Xa!DlP$frh($Dc78j#vkAbI4TyNZc^N#}>F`ddQrJGF_FK?b2(8F)y#4I4j&BMUR#=v8H V%w}p_-F;92=jrO_vd$@?2>>jm;LiX6 diff --git a/platform/icons/src/javaee/persistenceIdRelationship@2x.png b/platform/icons/src/javaee/persistenceIdRelationship@2x.png index a034dae12963379732edffb0bc6a3ebf5ebc5322..0b37bf06d49c0229244c3e92b9ca8412b27fdedb 100755 GIT binary patch delta 812 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 HB{Ts5kVOCA diff --git a/platform/icons/src/javaee/persistenceId_dark.png b/platform/icons/src/javaee/persistenceId_dark.png index 98cefa6b6a0af569261a839c1a13325e0da77991..1be9a7b226ba6044ed5b1dca919866416f50c8a6 100755 GIT binary patch delta 422 zcmV;X0a^Z+3%>)9BYy#gNklTxJ7l`LhIH`tX4#!aF%dd^c6Mjpd>P-m8~||t zpI#zNFuFJHK!mXbh8hgIaB%zxpUOltlLFcyy-ojMkO zWx{=tHB!Td=mDc7y_VX7Rys5gsnJeiU<1VR*&4K-c7{S~wLZ~+>}SFUt;cODcjAFn zy9HKe&H12vM#4E!hqa`k3&~`X2DFpD=mCa8l$WcqWoX{4_L7Q;ebR$>ZPS4^zM_flKhmMKQ@vb-#`O{_k0d1a1aRzI z(3uJmzEL{1!^inN$T6pi+~XV@kkLa1eM~Rt8!6}+jUNqjf`ORs>u-bm0hzqUTHy@K Q5dZ)H07*qoM6N<$g4PSe!~g&Q literal 1431 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|N~Gb0NZQzr{^b2mdnR}&{^XA?JPHzy}2 z6AL#31521*m;B_?+|;}hnBEkGUT2(oK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~K; zJgD9j+-`BisaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4&*FxjP^fq{v~)5S5Q z;?|PMXZ?j8C63*HS+;xa1=S^&lr%eMv3c?fCI67_=`5O{ApXGN0CVTX2M3R^_~_r+ zQ(+Y@E6+Hu}*~^Pg|e?D>3V^XHQm z&%f9|6rJC@)3E%V(hQbzhv{cj4{}v-@=5W;Ts$u^n|Ir`ttPJ(gSI-TX8zOsD)W4k z?a%wa`wbokE}3@T_(k}hS4q_-$7=o^h+ijlYnHv2qwSLA<=ez^Ps!$yXzL0g_ zJ9kcHd63lo`CENO>eJWUniK!qHF~9uCYSa-sTnJH*R^Jxx2m3C;^*bEE%Irxk#}%& z?3XWbJu%I~4JU(+s2)#P8lVv}?LmR%o8>Qe=9_H(5c_5M(sz~*Hm!LwbH}M2or!1a zjD@&f*{u(%kB(n5#o~NL(%}{E2doWPf*v#)H{1T`c_%MdeAuMm*|gcWWv_*o9j^Gl z>YN3aT}4c1>h3e|(>ERc6Zo!$huM2$uA|IXb*1NBr8}pzZQs!HW_iuYSuEuj_p$MO zU|!RxxpKFr`R0QSPqM4kR`$2tadFVdQ&MBb@0JJ9> A&j0`b diff --git a/platform/icons/src/javaee/persistenceMappedSuperclass.png b/platform/icons/src/javaee/persistenceMappedSuperclass.png index 57b2b86e7dab8c12be9df0d1f2eeff25f9520379..c65f565a1cf5a678e2ad8d91778670b95943500a 100755 GIT binary patch delta 372 zcmV-)0gL|23XTJiBYy!^Nkl1{nf0paGv3ve$G*z5v;X%>a-%(15%6 zybulYGsxN43~d031Lc3>^MWQ&!9xNrxCb_1MQiv^EMAznzB_8|5&U7$2=PLOOZ@uo z=uaosc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}ZFS2JTrV-pK=3j;$#R}&{=7h@L_11C3E zGgC8XS3{Uym;B_?+|;}hnBEkGUQ?WUK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~5( zJgD9j+-@<(saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)x<(TRU1_s6ho-U3d z6}OW9{QqyytlGfpqLaz@TKw7bGbzc5iRmdv)-$HuUvFPux9{(d+FesP@)ea&uF!1=(i2K5_2wgkp z84aZc(r3K%h~D%2ORn9G2J?XD4KWRGSQT#Y@H~l)-}m1uAvtvuKm#_OX3ywDI)6ZeDR z%YK6sH*YY6#IVg5Kgamdc)|Rq4(Ht19SQ}$PT_Rf_xHnFah+Diy$r_|tVl{svnu|5 zFL{j~1Di@m6pz`1bC0)Y&foX%56>wL1$~FTi3blKt$XnFb@}#l@jH)x05aGD_Ay>m zurm-l$8@!%$@uaX?|6e8f!p&=J$RaPl%Yp!Lb`T?g;a;5B3IF+Acc1fr|Q``3>btf W@5JpE-rxW#-aK9XT-G@yGywpaG4!PX diff --git a/platform/icons/src/javaee/persistenceMappedSuperclass@2x.png b/platform/icons/src/javaee/persistenceMappedSuperclass@2x.png index 4dec24e7b7cbd76704efa30dbc813964fdd2d910..84231ab9ac4f0cb084f6e0fb3f3e4eebefbec178 100755 GIT binary patch delta 1445 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 b=bY4_^kn0}BRo6W{Er>k(}#445SIKO5;k5k diff --git a/platform/icons/src/javaee/persistenceRelationship.png b/platform/icons/src/javaee/persistenceRelationship.png index b9a2223dafaa0bf1e762b0571a02d4878bb60228..6ce6b653e2e307b74fdbbe868fc533183fe27e3f 100755 GIT binary patch delta 316 zcmV-C0mJ^73f2OUBYy!MNkl9t4orRaTpL^0pg!f8pJ2s zfRLLjGylIm)cOC*>8W5E#0MFI&j4Q_-Uq~=Pt4E!`{qE)|F5Se!13Dytsn!g;4+{E zh;IRL5D@c$oc;N5%l|J&+u-=~5wHP2u^He4#5aIg0LcqiUVrZ_{r~wuH5`NZC@z30 zhB`Y4EdWDrE>HdcdTZ|gPrC}hG>8ur565P}C#bX0V<8-fuL1F|lM6EcLir5n284kE z3_YrlG0<=xP{6|Y$OhnyDyT*n4uX0UH6ej)#1&OY1_%K0b!Zf07=SaXfQoscHs63o zF#}c?V2dhHm^Ac-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|-aBS#}kCkqR63j;$#R}&{Ub0Zf+6E|lg zV^>R4OJkT`m;B_?+|;}hnBEkGUQ3*MK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~B* zJgD9j+-@<)saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4&*$><9(M=|z#x;TbZ z+)DcM|Gz!6Y6GiFNl8h9$B&cu9G|r@7Rm~&X8M?`kjL~WH0olp0-FGXqRyHeZC4dh zi5r%c5_NU|7yW(qvw3QL-G8Q&Ym*KwJXwA@d1|f0pP!%ew@p3t=n{{N%p0Db|Mkt8 zf`yW7E4n2%NM2w%ve&_ewPR^zWc}a7^t6N@|9?x%Y<9e}mW!WR_R0{`lH|weP>quUD`Os8QX;nAj)OzoT*6ezr~P9TxMk zIdpApXw=&Be&-$Y8EH=p7~H3>lCfBIsYK!M@N zT8BIRZ|r9OVTV0p9p=d@sWE}9J}wGBpF7lWb$DMiRo=~z9l|Ia zC}I#$+3?BlhDkGnvW9tF^em>NcIHA`fo3P3DH>9V3wckO>|jt{dQ(#20E73rUGa}R R`fEXDm8Ywp%Q~loCII&&#`FLH diff --git a/platform/icons/src/javaee/persistenceRelationship@2x.png b/platform/icons/src/javaee/persistenceRelationship@2x.png index a2b1a9149beb6f778024554132d3c1e6829115fe..71494e4ad1c4042e3bde2aa51efa295110421100 100755 GIT binary patch delta 644 zcmV-~0(Q^SsM~UYgk}QMW7TJa24G_ z;z%`8#+?p@?0-inE+>W18Wylr1f1d)(t?zDdf-N2@dFgIy+X{T9!J2G6^OZt*99~o z?Q=Mo>j3k6mk?UR0>5MgsNr^5z!2;L8ZwYezXfxlQwXh5X~NfB{5SVOkU*8Q4fit! znDcR8=$z^{oMM4?l|hu7YJ!8W1{}|}+R$-svMGEJd4ESM7WvBp)d6$gOAILpMsYzn zihTsmSRg7X;0~j0LN6Zyce4JlCW0C?4}W>nh2DyaCVXRoJc?^)woa) zH7r1nQ~W-ln`$8fZ7h(M5ztCCfdFmYZ5C*h5$MxNHGzP^#rG&PWCS*KQY}EBmd7^< zG&sM934Lg#nn!?wsu?-u;)8B6IRV8~!wZ*lx3{^TIWg=V;Zl!4CDmw7cwbQXr6uOq z7g9~Al4>~NF7d+W{Cbw=0E-4~%P;}0R128{N&;G`<{qne`ZCf@wTBS!O*P~v((e~W e&-3H-zPJXmMraVR)~ja#0000l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij}FkiKDBrqoakng@K`=tBIwBp`nwZfsu=; znW2%JsX0uqOMY@`Zfaf$Om7N8uMVL91WY_2COp*wIq-C!ng>kmMZi@3DDSQ(Ftg}*x;TbZ z+(rbnlbP7eC063QP`Ev8!);3DW) zec4-jO4Eyj{R=7r1$D#%9e+E`_BA`1w>dKX(#=_UW%KjQTIFPZlwPh?v)(+p^4Wgv znaen>Gj%r{zV_^U_x$<2R&(Duty5AyVQ2T9b*Ae(W$$T^FWgi=tNI{8ed2PD`KmuI~;;Tg4B(70j4;M(c~^%vbDD%JSddew^(fVA*Ul|F5Aze@6V&BmRHl`&^PQ z%zVMLIjF4Vno^(^(}nq`>t=mmDUz04VLLNNKcv6NhA|*gIL@K(_`(HR2Yjs_nl^?# zQ7bxoi-BY7hwPL%zKlqlHm2OQ2~v+(PPFIND~oPudcEhUoZ{4y_jl6Pzq;F9ANcbA zh0A-@3RbE8FnqGMng8wQ#I+#}1sWQAB0O(*{66a~eCg`DPtUdW4mP&)JSqD5Rf}WA zuQj)|^*Jxp`6|wzaGYsBdq&-UvGh$}VUzE2`=;z4gHeKD$&_4BGw&eP(8>S-h)2a?>onVX=TsiCPw2A{h z1)|nJ&hf*^8fh3%_ko@CXy|2lU3`1TsP4{NjZ%BJ+c-(w?a zx-?5q`Ht3WZ+*^~EVrvNZ~KKLx| ze`=D_=DG1ujt z6*ehIxbUhbth{BSHGRq2sfyR`u{q{h?9Fjl7tppS@5;(qms>vnPJ0r4b=&8=7Xq(N o;6K4@9{M@^QvLt3Kj96G457z5&Po)q2!N^*Pgg&ebxsLQ0B3NXp8x;= diff --git a/platform/icons/src/javaee/persistenceUnit.png b/platform/icons/src/javaee/persistenceUnit.png index f81cd03550f1dcd2dbc843cb4f3b2a1fdd37665b..6e7c376533e5899259ae52945c168121e2e1c697 100755 GIT binary patch delta 289 zcmV++0p9+)3A+N2BYyz`NklCow%Sb7`qE< zlO4hIt|^I$Km-2Yym<6K&;Ym#fCl^r8t{MDl!Qcl(U>@+(*OU#`Gs?jt!k;q=7JfO z0srwD01TwL_*}3X=t7tQC>Z92h4sPz@P)ymhLC?)a~RBkrgWD{>-!Ra?VFSPfB)=k nxC<6Hh5ldI7#i{$C_fnhxvO)q8qGj?00000NkvXXu0mjfn7xSy literal 1210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}|`OCvW!LstuP3j-i!;^ge?YUyZbVPfcL z=3;7L3e)S7pIn-onpXnTn}X2mhEp#nCFB+WZFWg5$}CGwaVyHtRRH_gDigO`oN<~5 z)tiFbEiO3q>H{644~kc$c!mi96Ay?9Pqjb}Jl&_}0TX)>FjWh%*flUPFzS1{IEGZ* zO8WEvzdf^RLuaGY0VbtyzW&Fa_OL1BEjhxf!2C+{E7OSy|1Aur9%A4$5L&4(IGs`B z!Q12c;w(QczRr-4H01fm-t+(a{C&?Kn=-73oZl(9d$B`X)6qEVSBhOmX*V~;9eKg(YSHXXg zFz$K#f7*!WGz343xnkf^$aI-MzGlv$)ARqo;&R5e{`mTTl|TL*4ryRu ZX5e33wCmDizw4mV#M9N!Wt~$(69BaPscZlM diff --git a/platform/icons/src/javaee/persistenceUnit@2x.png b/platform/icons/src/javaee/persistenceUnit@2x.png index 5babd8419dd59bdbcb4d7c09fa33e2e2045a7fbb..b8fea6480ac99a8b3e5496d8e8406fdc68b41e7d 100755 GIT binary patch delta 848 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 diff --git a/platform/icons/src/javaee/remote@2x.png b/platform/icons/src/javaee/remote@2x.png index 05cdc4989691523deb290cff4297d0216dd1ea88..134bce3bc8b3397008795be4888ba4a32c18fbac 100755 GIT binary patch delta 883 zcmV-(1C0EW5QztnBYy)>Nkl_yTgB>m*8J;+tjOY`}Kz(V9kf0oO(gL_5YHSp>g`ur6h~-!Gm0BT| zUj^UxI7?8jMt>;*Y&eDdpn>CGCLo?$JrWw`5E7KLwxR$AtGVVQ+p1pYjG>em27vWrr%fNX!tEd+Ya z1m5bmKQ#j{vkOwNfNcL@s!)bCGXdJqA)JZ8?EbtIEFjyTatnc^nSj3WOz%e^EC~yQ zEsQa2OyvaTq+tOoV_4vHtII}|lwdL)hEQf!3KlTLluBT31?M2HnF;6*p?@z3!Aw{R z7BIvVOn(YiFba6|kI!cnCeqVVuz(?^G!G7FMtCB+zT)lE8k|n;VyCMcV|R#>ji@Kl z3xV`hMV_zsLwjdiL4d9)hHXkQEI`+on@e!gtOSLvcy!kf{&c7;PXdnOtysC))8%N7 z`$}Med(lD1EzRjrMx7mJ+Fa*L1jNUPJ`~{GaDRiAnzVxD+Lsfk7N1P;ZViH(nvg}g zA0Kv@!4uNzZ}^-K#OlwP3J8f>K9KZ(8iuh{KnA58EP(m0BPV#`vI3(iKS^BXjmh(2 z05B$ta`lB*W12kf!dq~m!}W-td?O_SzNBAANa%N>8=r}x?+tr7>Gx;^6*jd_S_{b$zSr91BX;r{7mIVF=#R6u1egTzYl;kqa3;h59002ov JPDHLkV1gchodW;> literal 2067 zcmaJ?dsI?+9!K+)+A2QQ%qbBw9aG@)5Fyb~(2)=&f;87kgi8>@MZiEbpEHGyrIll; zV`fgNo9mu-(nM!^Xf*3KrsJ$R6XhezUOJ^^HcpcZO*Z?-y7!!We~*GIk%V< z|M4pOHTEzVY!yA0#x|`8^J`~g`YN^B7pBEi6`iEo3JFzeo&tnL3ZOI)L6`D&gKUr| z$jayi!(gx#K4MOiDv23K=0j2x&x}E7q;eA*1`CVO$a#DTs6wQHyTvjJ@@dy4Btk5p zAQK5p3{y@8MdDbk0^F*N=kT=>K1qO#2uFlz$R+_PsNx|s(sY@Utf3&^>XJ=+^EDcY zcneWUD9GQFN@B7QR7e3L2q;1@9|PbKL=p-h0QgWK2!X`_I5Y-_25`XumW&~h0RrOP zgEU1`2!v!dE#_S;(}{uEqURI`j*CtcL&>Ef`4WKaQl9qr>=KqIE zrSH*76&w5`-~TDB@Wdca8{O~QD$t2TdN)=DW2kA5l(ju-bp*R4D#)skwG%B7* zB4SA)(V_H67mj9+a8Pt}wYefir}J!K`$2S|mqv>uTZ? z$p>7w2=!n9H91KV_If7ud8^(vJfmEvs<(mTcLYWgk;_g+(8tLh6EhTuex*5+nEy{(`BV)O** z!EIa|m)mi;&zjhgReHrs3GLZ;AVSzF7pZi-3l1~Rcf)DKw4-k{aG>B7e8%r?x+LX1 zUK&VhoI^j=iVx;}y&sI(5MP^ZrO+>P&avMNH@ zTgtC&c$S?rCX}&ej(qMC>$eiCcaJ^IF7Fc-KQ!tdl>c)gHf=D(!XK>VAAdX+Nv~0PY>-Qid$XwSQ4=cXIZd(6H!# zW!1Ycbp3j=w_n^pm2$rQQkVDD5begxz8521vZe6V>(>7K{h}Vaely_eCpG!ajsYpP z`Sm^xIc}!{iUfz_)_-p-hoR*B`E`Y^x2&9r_U(&pLw+Y6k3?hX?X5k7mI;S@tP3qf z4~&anDJGEH*Si|`QcgXtb*=&^|4wD#lSk5TUW+fie82zWzfLZ!8?pJuwtagH#|?~6 zspnW6fIk)eyp3OQ$L&D@3)X#+)idu^{MqGs-Tj03Gy0h9sDPt_Cwjq!pEhdBbCX}$ z1;n<(lUd`3s7@8c!Q+!R?;QBY#>}C~g0(MPuO3hQD5Ii(y0tOq)P?LmyW1_y)Tj(? z)U6!}y_=y7oaL=6g+6(Af?zGl#|+z3@Bg|g2zEnKk}#6#V{_JS;BesP5=YczOI$!R z=&*iG@*e4qk?$-Mb@`=@)x#5+qJp+W`MqcNGW-cFzk)jFO-g-O2dNC_-6ZcmVeE#u z;a-d2+(`h zzpmYuy+1E$Dz4unvU2;&yVfz8busy#Kpes6gl+%WvnJx$3Sa{{%b|GK_DtC(M=Rl< z_kY_|dSuox{m6iq*Hou7jLOuB{GVRW`&aI&fAg|y$bw$@;xzo_SEpJGQg@4>n$4n5 z{hN`DT{|XIc6wM1&)7EH(Iz}pJ6I-<4xQc5j9r)uV-Q=hQ7Ibm%Y5XO)Dlb^eb(W8)949?empNYCv?ax1EKjn7tD z;x7=3j1xPDU0fS}DH1+!daY~r<&f*Q++Q=jM^U+_V;-&+9iR``j#pwdmOJJ8v#up< z_D44u#Z%pZZc2kVDHs4{)E0UwUyRx=Zki^&GPNyYSxhJkKg;Qo}@^WJ;TRVsv&2 lvD)DOs8jR8&`DUd!@$U3ny;|I#ozp!rboxqTBA}6{{x;RK%oEt diff --git a/platform/icons/src/javaee/remote@2x_dark.png b/platform/icons/src/javaee/remote@2x_dark.png index 35446a0622d2a2900c9046da7ffdd63bd7f3b126..e697b4f1acf829cea406ff57b25d2b52ecc20148 100755 GIT binary patch delta 883 zcmV-(1C0ER5QztnBYy)>Nklvt(Dpz)czV9K%xji*TV@rb zhhMUJGxO#*`*vq%EdXHomstKAf$sQ##$5K9A$Jy=tw;lYWpTcB%R*O-a zeYry~LSrjT31CtU>~I1}@x=akK$}no>PusU1m&ob7QhuzV~waSbglJ6C_AUE)C{5Q zJoLr}Sb}oZNPh`n!x3bM1`d24gz3!uAK}6rLV|KumK4BXIoG@=rfPLQ2q>43h>AIi z3e@e^+zFGJ8JNn<9tf0+atev_h63U}*IqT>)+hus(?x0Z-h*?swR@mgsWHQtQ}>Em zjRdN-)h|0?A{{D;`bveXjhAwh(>2BR8%Mc?M75Cs?SF8fe(^vcJtYMT$o8k)Lcn1p z5Y}#gVicaFgHo`7Y=3VeSB6C+0ou>Op9;X(_JkBHAlsjE3xT+ifVT0BYzM$E2@Cj5 zjL~gO#RSHsVF5E^SfD=g!$K64U?}MaUusMW7SP3%QebWc=OE4)31|*nlwS%K z(8Ux?3V&wM3pllp&nFcIlOs~FfG(!oeHU}-;fd(F>Gg{1M)-~EdSs&+V;6~nji@#1 z08etbBo8BYra0t3PHaAS5dJK+^fK8~PI-8I)qM0OmW39O8+K3iKu1Byoy2Cg;i{ zz?dw`?YFBgrZM_H_ZD1>e80(0zMcYs-nd&sNN9JW8J~%+Zz^DXKYo87V1b^vD~Bk@ zGHf5STcUQYEM1!_VEY~@hHc9IsGVOm;$;3qw{Hmy&hY$WvLW$9!V{ks{}fieK*>`v z2TM>Ue!JR{mj=IP6gx_r3?I3~Dsuw)In4@~#+1O{AYZ_!&o5QE5JAU9Q^5cL002ov JPDHLkV1myok=y_P literal 2062 zcmaJ?dpJ~iA0Lb`Xscyil1@V^m$@2dh8Z<8tl2SQB0@5k6BBbWbC}_!E!uWeDzt0K zC3cmvtEF6Wsor(l=wi23b`>I0)0P*j?IqqbZQA#b*L$AloZsd7d_LdX=Xp+6P~gYr zC|eW)fiP$Lvv}|d=w9O$@K>3dIs-2@kZ(A&L$()E@f9Fqn@A=A0k(u63-Um|C?)X* z=#4-aY!HWpL*d*2s!%4u@O2oBS|W$p2!ywfTFw{7gAgD9W5rS$`epMqG$0ny&|xGl zjw@$^abo{e1-K(MFhrOdFQkajK6JoaO@##{AjAjMk_4%es-~ge>Qdpo?iz~*-a?>w z8v3uK!nr{JQ>Fj`5{Bd^#NpimPYMQ4!n>34t^fgtCt`6#ES~6wCs1(|DxL(qd(dz+ zg=jC8$MSm@3qH}%aS$Y@VzDZf3Zo)oWQtfUowOWlL>4N z6H7%hm2%5lIG0OhOO+5`Dg@aq8X6YBh{Yl*!GpqJG6fhSKcE=6u zw4m3zE&2vNVC77Wb~^r1C{yh;*Tl)*izc%$&)M)G33HQI0?0QBieB6Ir#DOZp(yoSuy(*c0 zJyE1QVI3O!DAB{pdwd+fV*Od4pa0F@^9%H7=DB<3L;Lolnui)|!O;b^WsT-fn}3l; zx&|BL#J>d)zWZa-tlbb0(-(x_^_0}^)x^8x^b8PmY0R8ctmc&dtQt_ybgZpEJwtuu z#hZf&O$H(gK+;cGJvg>Dq(xML`eL8qREM32V6)i*#hNi2;W|#CavS-l5hmXxgR|Y2 z`qK{&vlF3s3u<~9SKqoNJpW_nN%I4}TejAp%B(oe0W6QQ(rnpwtTp)(%7)cj$L8ef zoKw>b?6Iy+;PL3?*knwEm;G9!niGSlNzKcX?es`w_3h|&eT!FA@_1zV536v_1{T$U z*UxNlNJFAGXNqzH9BW!P>O~EAz7Qfe&6ohmCiRPTeH+i1<@yrX_0?@Z>tD=mdu_1a zdf3Q5;!0wUYi^b#-#++s@u~uRYUMv;9C-r?_r|Xl9n|i*>3%c2wZ)+R+T}JvIeN1) z@gUEzC7WDzB{I)&mRB^Fxqo7EMda0?l1AhC%J2byVPSmTCJh{=gfm;%nqf6@?(|DN z!y9!BPv;`?Y?{O&TU`A+{nYM@Rg@0`dbcBl(Rv-h^oHh=sjR^gyu;)nkAo&1Pff%s z+D4bwj$6iYMy7}79WEho*-fsu^<9Q!d_8&ej&GZf{}Ab8X=~h@wzzg$GL&2<5G zPxzIK_c__fmHUu!^t#LX(mIyYoP9cQH{if+Z3nN$!X@;R>$TAw{a52e+bk+03!+ld zrX!lZl9`7S{(&grsT#wqf^V9(J6yNM2aqE{@-8M4#W z>`t&vXij%?ZPl*f`a=mEt+v$z^eFB2PT}=@|Eyw*W!kQ+f_ z@_KXl^@j~Rol1#LV@IMQPbypS%+*_&0PWCD&w|(I)IG6ktvZeQ@hkEutrWlpbFZcrLN8ZNZ zM%DW64uxB@pmFyDXifi?o}|*Rn5F6n?AK?VJErRE#%kB)|LCy5n&07LbF{c&fk1HL ze)npRiSKGcR{zEOD+dbcw-(CxnJ1cVV>2oYx}N9VoXyWM$?2gkG<14*-%(Pf*&}&S h`uG1(`unVkK^(`0A3kR#9nt-v*}j3SYDP@Pe*kRPLm&VE diff --git a/platform/icons/src/javaee/remote_dark.png b/platform/icons/src/javaee/remote_dark.png index 1fa0df0d53dfc4d2ad54118edd37d316eb8f934d..520a42de549914c71423a43fe4b010a6bcc02987 100755 GIT binary patch delta 428 zcmV;d0aN~s3&jJFBYy#mNkl$ z(#m^M46>1j7$mA9gV8z(?$kzGpS1Fl6@&VIISE4Lh{0%`0GH@#>ysAGd@u%kfsP?qSq^Fp{3Rj~MG zKsPcBdXs^(h3p*mBcUK!oAJSrGwc*e6z!$@6xF$H0 z%uw4;hg%JZF--F6zTE`h{Wb&&K?$t?+(DV7 WVyhtt&hVxH0000c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~9)11DDta|<9cGBk8Gv9NS?b1`r>F>-P= zaWS+ofa!I~PcF?(%`1WFO+o0j#HkmQ5^@WGHoK%2WtOF;xE1B+Du8`#m5JLeW;o4* z>P^Az7IU0>^?{Dj2gNH=Ji~;5i3h}lr&=Hfp6*lgfQh{bn5u<}!$TMtn3z0W978H@ zCH?vT-=0~ufz>5s&I)%iVa7*F3f~x$Ojq3CRk+7;WOBm~-Zn-Lg&7kk7Oq>;z_MRr zJ_ob7wRpsb+voFtt+(5IvHssfSGx;GJslQqy}`qgmYf*9R(0{Y6K4Q;7 zbbsvr5L;bT{B^zkey7AX1IMc!Ou6%xD=t2E;^euLAKw4BUn8Ny9(0%`g!_te+nc5s zL&iWmzOu5m{SF*V?&7kkJIWqNHBaafXkN5Ysd?gl!3dcpZXzqbJ^dZd>X0XThPAF~ z4--#)$8pWG~bwc)=&^Z!5p4;TDP zJHQok{pUiL$IJNV+rQkrar42Y=k;t4e|Y$^y6yAo^R6|uzgr#8^FQkH-rf}M!Ev_d z$A^!HOBZnK88%HaGEnVeT>Noc&lVARX=&-Itlk|});X+wQ_gU7w}vke`S#{$_y7C# ze;KTP$#Y!`h!tc!`rDtE-IX?bZ1&u-iQ!q3vqs^g z=>Gb@eH9-p7~gR%xGewp6nA!mp5=$1m!AXUu+{CVzCs=UmQa3=`%GE?7&pt#X5_hW lCye!|!tD=f=?x6b3|I3WPAECxECMPZJzf1=);T3K0RW0N3Aq3O diff --git a/platform/icons/src/javaee/sessionBean.png b/platform/icons/src/javaee/sessionBean.png index 4fc9f73944e9131c473fe221ee58feb06cc2dc26..61a450918959c11aa4e4f250dbd8304bdd09e9cb 100755 GIT binary patch delta 279 zcmV+y0qFj?39e$Jh+;1>#>o{2vY90Af{q28aT&H&h}7hapdaSOu2>(}DOmR5Lz9ZUHejHUpkR z6%b=c1vUeIASobZ$VF@hTtriZYzWBTSwNfv#hKU)sKDY>kbli8MzdW1o6hyXz#wsC z1Gu39glc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0vBS0hs=Qws}o3u8k=R}&{AV*_UcM<-K5 z7Z+nkGXt1jm;B_?+|;}hnBEkGUQ3*MK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~B* zJgD9j+-@<)saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(Ge`BgB0|TS3r;B4q z#jPcm480FKNF4iUJ=v{0Ku3c$eJRHym8RK~oB6DEteAXm*AGFKg}Wof-8XhOD_Hzy zl!@7T?k`K1*-qtu{6Ze@^uk^obyB(VGL zc`O$GOQ}j$~MpY z;?^?byv0{m6YgGF(M|7t8o#!QYP+N;uD_upv!a%9uam>S+jD<@{(8yBo`b2HA$D!4 z<^!SQ*H&abds4MnanY|S#_xapUVf!nKPNGv-)e2)xs)dcUoYJH)7bk)Z_DRL2A!G7 zFZML9Y@av##&Ipbf($7!ZKjY1bxohxJKmftH*#8;7_N5drpsQV1$zRIJ7v9G`=85z YL1S;=6>eb_Jy2QV>FVdQ&MBb@013*amH+?% diff --git a/platform/icons/src/javaee/sessionBean@2x.png b/platform/icons/src/javaee/sessionBean@2x.png index b87bd49fee883ecf83fe6eb01e601e1ea34fb68e..a5a1fd22750b0af04fa009fedebbf69b03f62d34 100755 GIT binary patch delta 478 zcmV<40U`dH3-<$%BYy$DNkl7Bnbu;87fK; z2rZH#8urn)7J(6BMMQ%%Aksj#3EJ4AuOU$+v`;vl1KPsw@E(1k7A=0u=lbVzCk+5# z_)UiYfIk>>eGjRUkAu`Uu&);UNk5ham;lE8tQjVOx*tO=e@rHBqRg%S-SD1_o7 z0d~ek^&Mf|@_#}z)SiUb%!p1$CIGJ85f<901z2itHPMLVU~Urpg*Xdsv|dI_jDVCk zAA`Vsl7%*Uuj906fafv-{<|3#+UNz)t8_;szo^$$cOl9`8%{v|8S$VHkgy$vz?BcP&{u{VQ0GD$=&AO2owFPU!G1B$ zLYrm-elQ;lL*Lmb3vHwY^z09TH5X)|jkJL7Jsl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|3xi<615g|UUXg|VTbtBHlBfuXahiLsHJ zk)xZ5kp)bzOMY@`Zfaf$Om7N8uL(}Qpp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZZX7Z z9#n4%ZnqfW)TVL91WY_2COp*wIq-C!ng>kmMZi=YRP)b-fq{wN)5S5Q z;?|q#r?p)IWsbk!b4Ir1ShBm$6y8b~E^fu6hYq!wddjJC);FG5tTyH7ANFfzIVaej zZVVJNdoyLtp6Bz5Yx~b#DY1T)$Y(b4^oKXrtrlbbS@3AScfSC!fs|7fNEz4iW6I zQu*MN6yf?n)3+%{wJMZFE_PCia^TY{2}M4~-HTk}PwmrJ$#Uf9h@R(vqIva^Struh zb`(gNol4RAIB7~p=xfQTVP(n%%zQc1l6Os9!ToaAGyV&wxXTqPu z9XIv6lQ+g^Fr5iKFy*;bu{3A1q3(eUrbWG{RD^|$A26=5@HxYBydcQkVavibvr8{< z_2urXHr}x?)oH?x{0`ei(P0M{1-)aLy2$ET5}!e{1yhgCgdT5CFQa630oI-#)||;t z!wx)Yn0Wigo?q2*((etNe{an^LB{Ts5!zc#U diff --git a/platform/icons/src/javaee/updateRunningApplication.png b/platform/icons/src/javaee/updateRunningApplication.png index 722553268f9d2c697ccb6e9313c229a2756ba12b..92651293a5d5f9f1790d3737e20b2b8d264401a1 100755 GIT binary patch delta 551 zcmV+?0@(ex3%>-ABYy%0Nklwpw$9*_?_3%6 zo)fbt{Q@=WO%u8n>UBndb*M1Bk%WP@BQ1dN{+HZ*G;4CF;G-u!@z|c(D4yr!8Nu_zS425;A z#iw8o8DwvLg%?Cp`*d@WzfIykycyqxTFZ7`SmPS@D8t?N6ph(9tyHu~s*UQB*u(#+ p{t-$2O(5Sz>^c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f08$XE!%D7gGy!3u8k=R})7IV^e2K15*Q6 za|=gDM+=x zJgD9j+-@UI2$*<4On9mVa^UGcH4m8Bi-4*6*f;xC3=B*mPrb zi(ksLYvr62^ubj`JV`Q5vV8KKr7DeY#Wz1^KWR|*zI3K)#L-QXd`lX|-5&f}WY3s< zjkjx_ly7-?)vNiB>j zoWbyJ)rt)#R(@x>#eT2&&A$97w|{T`er2y$UOnrOhE7pf((k*|D^gd+9Z1dFGAs8| zj!a0cenh9sm%W##&fBcB_{3b7dFr{6Y>%ET-}yS)oh8Iar*_7%@B5$a-uHN$Ek~2V zK64(~8M%!o&$x-4ygmQ9+V)*@l$o^j>{j-^+7))_yv;SghcB5G?F*lOH4r(!@9gvM ie2@PN{J8!@_W%Q{j@ZJzxBcrtMX9H&pUXO@geCxjawX*e diff --git a/platform/icons/src/javaee/updateRunningApplication@2x.png b/platform/icons/src/javaee/updateRunningApplication@2x.png index acd4a9a665eefb870028ce4316722b9241fbf454..5acea70c114f6ad73661d2a424b4e8e728834586 100755 GIT binary patch delta 1613 zcmV-T2D17765R}tBYy@YNkl_gdOY`pdWylzN^!jX2zM*bDjyEmMp~D zXP%Ya{sK_9WsULxa<}vRBggn&yAlZDOVJl2*gp1z~LGzFf84S&^=hP0`zQ@An~F4#_Rk1G&# zUw1T2Z2C3v=>+7;7ob$P4izRm!@)O06{gKYJ9YW0C6=dL#}J_XZ6fu>NO}cY``7edX=lo6nIa| z&Q}jmXcmNH+UXIJK^E6ECb`)?2gL)coZb~VG8X~P)eP*5cr>_`hS#eQmyOQ8Si5F) zw@JUP(l~)(B;Vn!c$F9qb_zEJ9+-)B(={R4f3`o`;(cwd{J&Jj+!rGt}=%+6yal z3Xs@3WzWLKx&6z4W)N9F`iZ9ir^}Vx@`p-HEdJR9OYO9ljJqf{C~?;bp2V-10CZD4K4{58CYcfOLnzuj-fZp zR4lQS4zr5@?K9gq`WE3PhDhnO01A(I3gB0&@QPDqN(yoy1>XhaO+BcWQ-Fll8QXQ) zB4o&^zyd)J4IVe)*Ch(?xTC}sG9)Lpn>lalfxQ--H(|?E)3x3ONSE2T0Kp=o$A8=K zWJ#Y_&?@kR#{NVMK;F~?do?-*h-w<=r*_Rl8WtpVSb$$UWXI)m`ye_|EcXiZ_#C}{ zCr|RG9#KtWeCG$z55xNsrL$Y9J+C3@xfL$pJHfwFZEzRhc(H6xzC!#f`wiqpp5&d_ zIlG0ud|bYaVt<^@Nx_84_@Icvr+?bH2YNVB(pTv+K#^=uNJ}2%MV{nMJpvyZn9Bec z8pie~bXqr(Ud%&0?t`$pQ8-D=1{sTFVxJjo#Vm8sxZk<8><(EH~H369-y2y2a`AuV~37kQF*pnu3nE5kf~ zlEt=}qvNGkdtApXTzonSfnpQ*m178j%zm_>M~x&S2a%5)9CXa7sfKDvLt646FY@Hq zjW9oafA|*mvOPaaW7{mzah=w;vF#LM3W6UELqLrdPL?VGmlx0kuptMHX^xIj4b_r{ zw44Weg*S|`fNCwn)nP~Sdw-Z$pXD)aX5UL4vzxJa4WoXXhKR;-;MESnS=?CuRT?-| zq2{15&CxNcp<2?AmOR26$Jm+sI=nOF*u0w^M!f!G64^526VpDMjr<(lW&!*S7n&y_ zylDc$8pb(jOmlRMYN(bpq~$+;#RBe8^FHp(59f7ry!T(T$X2sYbVmDZ2=WA3LbegR zgKftg9Sfn_h$oXQ=+Q7cT{Xat3FLUzJ?s!R-r$J&tQw$0I+K}pG~1gfIQfKFpSQ$f=|^q!C`co72MC1geI}=!Em~B zJO}iOck`ykM^G(j@ZHw1U3|P)fC2I-Fg_!a$;I=n;9qs|;{Dn+3J&`U;YC=%|4z!E zp1aX^?U(iA~OW3Vus1rlS5!J1=s!i>=v6BOD6g)u>3jPYm-JjN9E?SYG6$l`g z%AvD)bQTk~rbyY(iso6t#hLzH0)zcsmdX9rCUL`1d<&2i=?7>onf&e*}!&fI}u zYG;DBFh=9nxdaw9ngKF->s;DDT*42zYffOW#gPdhhaLmc962lo>}$n%`j2z5{h{7B zF73y;*!_@;5+{RNo9lngdHqUkp0(|F*NP9{eGf9lX6J}qJ=~eu3jop|hy+`2{=hxI zpiADM>aQ!-Hy8GHhKHQrG)%xj2=3X!kK2v2j&*eDToFL()ICF@ZsnDwV@p&J3N3gV ztU#aN+#!pA+v|1+<&3TDlw%S+xy+U2sm8g-Kj(AbaPAi`r?*b#u3oKboU0Hu)u^;# zR`aVOMRKbtK8q7ordMZEUB1ka)vAgj0;68l3|@Zq1fdUUJZnD&&D^g_YF3T30z|=$dj;J_F27jR?M)k_`xo z(5fR#61}@Jv_^t=_y3gEl>^*_n&}X?9(i@dI-Rp=x7z*?^80&OF?V##du4vH!Q)Nh7Q+<^jF zxTz+2i0lpe^SsLG=*Yc5|_}rR%e51z2pXq|M-PyY2R|xnLZ>(M#y6J#5qhzl18? zY;n=<#8M*!NGp38Rx*V3-q{9~>Kc=MyQT20T+z5@q*{d_puOmk@tCG$1ys_eXZQ>~ zNN|C&6FZc5!lWU*@H*4p1$%`(65eHJ_Ra%3o{~>os2_L3AMt3#9Z*NRDszav7)`hweT01zV;CAL`U7Rz5lt+oUq)4K0l`PrG?A9Rs0;efzc! zJd#L74t)uLgiOou?nW=x^k@JI=g;fAqx+A!Mv*8}bK|bFVVkwc%9E?fL49uJ64y9s zx%88kb-qbsB*JRKUDf9ogEBX5E^KaZcu{icee(Nl{m-2|Y1ftR9j&A2PF|J7F{2|m&u4MhT|Mmw=G3<9SZDY>ST1eJm)*313zL#L+>6dvL=&40&T+>SQ0mz zL6i|h&M*qJGN8aoX`K4~@da&I2y!TSL&-Dr(TW0}kz|BjE)97Q*Za_NxpAom29vKU+VJ=QLBiyGREOPft8@6?2sX zzs4k(FSef0_3RhI6KK8FY{z=Y0k*UC`+M4ydqC|U!6y>OYIKBG531iDW#;o%wQ*0 z+OYezutZe{RlXj;e<+oz-b6Bl&t4I=RH;B?v-7?HF)B8FwWd?vm%w?mVX}neJ0@3D*lXS8rO5X&!xc1-hAAr z{KO_FK$twa3u4^Udi!8f;XXa?#XD#78F$WV+x5H@BpSUq`-^tHvv$))>Vi3G4!pBYy!iNklBcmx2# zZxH@WASDjrk$-_lfzBX|a2?`Bu<2Kdi&L4^ccMiRNbX}`A%FMgj~_P)Za4znmpGc2 zv+FdL--B^7hYx!kxbK0!I|(Uv+Q<_SDQP?hx2|BH%dpA{UaK>xRfC{bFNS8Bn^;gbwWzt!Wb?F|6-`A7M=mKE-g_GA6WC1f$Unu(RA@$F1?d kjm2$rw=rlP>uZ?h6WZ^hq%-P>SpWb407*qoM6N<$f|$FW^#A|> literal 1235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0*_XBRgMa~BJ93ll>_R}%|UBNJy!XG051 zOA{AEBS)BCm;B_?+|;}hnBEkGURRuYK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-QtAP zJgD9j+-`BksaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)RTxSPA0|TRnr;B4q z#jT`2|Nq-Ft2T5tIvrq2uJF6(y((B@`*W+{cTI^24BQi6@iBZ9RjA{7>ODE>fR~us zwB>ATwih3{X}@9a&sC=n{QP@$ySh%-X$eWmeqo~r2kP0jxmV5U_ik}@kzDI?-!SFW zo5X~F->1Dk@N@O?e_!TrP!M4YmzcS8^1V;e25hJ2Cp~!dAnnJO=IIZA>zlDv_g?4m zy1y=0`AO4qA0Hp5S@PvZC%E>qv;CBBdv9N7yyyRq{)e}mIotYs{xq>1W|$KG?q68i zj-vN+&3%8o*~*sH^K3q6ZG0!;LR!W7vmORgOaK4-`~8(*x6~%c<_ir%1vrqX* zLF>_$ho|Ki-1X@(pBQ_fL;0lsuaA$vcUG@i zoT=#vA%;7A?XtO2^q7)LSA6iD@GN%cvE__RJPeJx1s``Z1U~{5GoG$~F6*2UngFGH By8i$G diff --git a/platform/icons/src/javaee/webModule@2x.png b/platform/icons/src/javaee/webModule@2x.png index dbb4ca3ca7cb4438268c16ad0cfd22bba3cb70fa..14a4980ebc26342690872503315b78510cc60cf8 100755 GIT binary patch delta 812 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%0Dfd2aE%-zmxIrhNbY{{M2e zNr5RdJ|F0R_+PxN?RI&K#JUYL3~GKdZ<*csQEd~q#KzeNfBZS#e_#FG#x5gWt2GA- z-mPXjTt4qUPyN3?zuBksB&$rB+ZcHCf!WVBniF<%bX;9{$lP&O`BSO+Y#as*0glBw TD-PfA1rVmeVo35GtHc4ESgIRB~Y@|9Mzn2 zBhzd-MKH)e2!W!sX&9!t;dGKeIDKy`Tj|u1X9pJiX$n$|k8#zuMGu{QSgNjOk*8*UTkM-Fq z6n9RAzeBJDV1K&ZD@WUZ%EKgoVo_v0k z6#$ag6J0KxH3T8HMB%WtBD~mw4ZjkIwIkwcLd++H*H#Ne2tXO)9x+tvHZV280)Q^> zz8l5EtGGEngTV6!?1maKHq`^;gdY9{8NNiSvE!|vcYmN1RG=JjcLmL{a%nAqt_9|SSdmhte|fRXLNp?GltNmSA+72KzT)oFNra%mC@!Q2C`7& zMXt)V51?bE4N0(^doCt8F{w37Bkq(W^zsr0dVgDRx<6q~(v>tnv<=ff3&+Xg3XCKaJ!x{=A>Oy%uPQXL}~xoBu6nV?|yJn6FkKX>SdkaHIFgIWLTw` zdk-DOM*&EIFr}CrCetquqoV?(9>>YTjFC1=YAbo~z;XNy$VpI`hz&&u00000NkvXX It^-0~f;Kl{I{*Lx literal 1721 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%!-*I5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0;1ij|wGnX#FrmXg^8h|tBI45g{zy9rLnP# zvx%jVg%M1zOMY@`Zfaf$Om7N8uNzLipp=kX0JPa9wJ5VJHN~wcKUV?lW2;QuZgIwG z9#n4%ZnwDL)TVL91WY_2COp*wIq-C!ng>kmMZi>@*)O30%q)7IE{-7; zx88(Ddxr#y{QEYuxM*E(vEkM^0ec#jIJVk~xLji8-dbf?%~AbAcS{u)Q@z7^C6O$+t6xvg9K&1NK+mK~TLxgqWRy$$Doo!frx*EJqv z9_H#yrf)YcF&ufzK0T@`Sd(kp&SfRbcYlnrV$EcLKx^-hVwJu}XG~=X+B9$3=lyT> zxABBowbX&at> z`cQ|q(!D;m3tNjA!)t19mM(4P)wdHf-w}PUeC@%~$qj2}@!$B@t#LK;gye&R+%gXr z<|JM^%GU)gD0R4MX!zFgbHUjgdjxFGIYxxG_CW*2r-TGQcqJUNYsy+Y>3ZOVy?yPf>$_ES|D6$HD|xm$p@+9(FW(QN zxjUxb>{}4*-gdV+AmHGW?;3M1aXp(BGUfT%!yVoRLPGPth%XLaYm>>!T<$W_aY~NG z5w!<*x3lfH?pyehXA3`@;N;RDcZ`bmPGM?R-Mg=ZtIBDgdKAL~F98V^+qP$$%og4B z+jAqZI_1oo=O-rhecjQtbVbA08N%`DwicpMhfnlycet%y!yxeF?1J@r%)7j9TjXx- zoijPLGNfkSw#6ptl5cB&RxFKgWq`rAmoII$w~-6? zRa=%~uT~+YQDKqfp8lvOQl0Cm=d{WB_Y=>x{{LI-rIg}jSo>C4-<-WiQy((d!s5t9j~(9$tR`tJ1;rbRUc2>63q~O+%VjI-K!^!XCGJE j?W{a!9z1Q!d?p@-zOHE51#+^=pvuJ4)z4*}Q$iB}fx3&O diff --git a/platform/icons/src/javaee/web_xml.png b/platform/icons/src/javaee/web_xml.png index 01d02b550678a527681ccad9a2f059ae382ee6a9..b750aaf45da98a80139aaf51e0a2c05ea856d2ea 100755 GIT binary patch delta 438 zcmV;n0ZIP$3eN+OBYy#wNkl=xhhNnJt&biO?Ip?|eTn+%o z5Cj1Quu`}TnL6$df-9xuCjplOwq8V$GLpQ4*I+G|P4;P&&wrGH21aRFIhPM*&Nl&_ z;2-1{c!#twHL2xsce7fa|60J34f+aYV#uIZ@pRox#|)mWeivz2RwsEW9 z|Lzhe(K;JK&s5-TB``Y9vB-IXL3RR_ymN5DX0yyK5y#dhBKtf(k^{h98+JB^p>-UV zc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}|~3nL>VQzHv=3u8k=R}%|kV>4$HXE$d9 z3o}<^0}Gg5m;B_?+|;}hnBEkGUSphkK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}^# zJgD9j+-@<%saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4*6v*g|D3=E8~JzX3_ zDsCnH`TyUZnd8h{Yw<$|c%>S42p;qF^JBa0!*irrLt&k}c*?;=69l^@PL%dJ>=8fJ zzPm;6F1O;J*#CdvdgO3_g6L<>^0}mRQ&fZiR5c{F9_kTUx zB}V0Q4l#AV#GSAHdY@4Cwe5X^o!NmV@6Y#M@0Wabq_FwtTE;on!D6+$Ia2I8O;VXT zPcm$@3uD%^|9g7FpDX%1^8b@vY8#DHo3zv^`jqN9_MG{Ydg>LO=`VlSp4p7y{zF1PP~;uU)!7` zK0o$ji(L5qK*{g+hrj#p^SrnJm%QU!K+{8I<^2lWK}npAYLm8Vcz*c*zq7nv+c;)t zdB3CkKUHSy%l2)N&*w_!8Dtpmd7kFNdBilJdBWFn!~efOKN6h1=*b-RI-b9WvL*8D zpQr3Nlyv9=^9v!iW%cHqscN;c)6$C@y8hq)t$Aw0iw#VNw{$<_xxfE^+K<1#@7o7F zN^v^v^5Vu~Tjd3O5`oX`>;LZF_-6g@|I#wA{{R2;vz%EYeWUjEA0`eBj0|P|7aScp R4?hQ$gr2T`F6*2UngF~^5d;7L diff --git a/platform/icons/src/javaee/web_xml@2x.png b/platform/icons/src/javaee/web_xml@2x.png index 2c6a0067d0bbf1e24598fbd0213fd3e526ec8148..2b2bf2d22daf83598f7ea865e27cac62e6c6c2d8 100755 GIT binary patch delta 973 zcmV;;12X*a58?-qBYy*_NklD@+{W$#wO}nl-aW!RWs!Ro6+o>~b z&Nvozwly=>$x*C=Z%ovh8XT?C#HMBbOL<1jP721^%A;M3xSz)DaWtNhAY-6YC@uU>A@jK41Z}HV;?w^VzHX z-MO)E<-)n~@ABTS0EI@w{~IJxLb|~Jg{L7QO(2zU#u3BDBsex!!z9$~J)vQ6bS*YU znm~%-4o3UbNPkO9b^p)HMO~Jo;vXh>`OSNLF1PYht-o)lYcz(&%Hl^V0x3+ZZExaA z0}FQEwYK5k;8ncZsm1i&Rw##7Fl6b*>wprb@$XUDJL96Uk_1kWa8SV-<8)X%U_h(M zjLz{f+_Ku>akSx2|JUF{Rlx7Xz!N3*7OtXHXAPg#Ie$+{5)hG~ezuqBZL2p1x=?iI z37Y2p7<@Q~fTtUWyY0XqO~BJyAfy6*D+KQ^#pc|XxX`sUEm9jVY1PM;9pS54;bK~;F z4qEO#!hhD|CL9K|n0e3-^Xw>mE6w;PSc3y^1)G5)@LQ#bxGV72LJiJzERSWn6>DgP z=k|M`G<%|b-mhd+&c5xluNWG<*sRA(e-(C@tFXUPfklf35oaY9%#AqHJb##}fcl)y z8OiNmN8#;XgdPhLp|Yq55mIAo=^C(C1oNmCmw$)dShFaH%lQLKUVh6pZ+w(m%l2TdSf1lAefIk?_ZQH$ENOK(TQNwZ{7h zIV!>Le9kBazg+^}r$Se62NYx5kPmu6GsZqggfo3C=Pvcw?Nlt!u#StvK73{lfE(3= z-+w3r?=3@Qy&Mxm%`7}1NXm^~obPqT1%@*fuzk~KX`x~t^|*xM6jEn;h{#%1lwYgy z)4+A)4@SeOU9s@wx1mIVBSw1xx3n6UpqVHzy0L53;Em%8Je#dY0cRJ&>2^&BpG>+D zrSVV5p&J-!$l)G8jTfgiq3C{u#^xWPXhxe6f@!l#2=|I^#S$LF1>y%4q;HiFBF5yq v@MHo~Iet)IX>rjCr`s&X^Vqr5$H%_~SR#_Ic3dBF00000NkvXXu0mjfUkceO literal 2033 zcmaJ?c~BGg9#0`0LG%g8>Cq)nsz|a~!jXhSL&Bvbg#c`UZ+#xpxwL?r z|IGJqh0%yKB@7B+6iHEu@WCZG=t3!392G3Y5LE<%$QHU7nuuTsnusU?4hLAfRjLpp zYINOOIFH8)R-l+rA%cUsK4e^gDwT>^o_?P09Ej%1@MO>-$ls00;QBGxkU!Tgz?DPi za2B{+M3f?j71#n-{3n;bC|BnMxe|}eg;mm2SR9~2dZuEJeiTirHKAP^IRx$Fo{=Z&q=Au*9FVrOn% zHKm)zBp3!H+PBl}a%-l-GNbm&Eh-GEs-?jqx6F;N&U+Nzxbf|55YKI_*(OP9@tCvW zWwzGX_hnv3g!z7}&X&ou0%D=wxLtxx!bsOnYQZvn2fD%2;4LG+9?qEFE_uFl+PCrW zzjJ4Q>*%|(k`%WFoJX2K_>(MNlZzeSum1q8FM*IZ}k`c2X4t>2`Kx-+hMm_ju zm|vqe$+0arUyzkg*WL>ci$A5x>O0Gr;&&qkf;DHK)C-(^Yy-#)uj)_cOjWU&=5Hpu4H4~NjrRt(LcN(M70flO~Sld=I zVU=A`W!R^vskmf&H`B(fzCPO(ohLb>*R0GN(wWCT3?nD+4w^L2{eWzC^y9+K9e)3_ za5ny`hR@Es=|!rGJ@UK#j&D9ZXZl~eF8OCJ=q5E={do5hnML;e&5`L%lA@ApT_qXc z$t6FVxF{d(AGo)hkmy2oLYO_ zc5u#X-S}FaBLqOD(gO{`!<=TDRDUacl-e+e9B7Jjm5`XER zzkuXMJGGYN<`hgt)vjJ*x96t_qJ#Izi+t04Vv%IbG<`(;L17D;^xS~mv?8|BVrAcQ z(n+&;t+9Q`x9rSRW6lAO*`4&k%a0p}dfP5TYx`~&4qVUZzU69grohv2a!hnKW*7hB zf$tdIHpLjw!y{^ZM$+Se9$|k`y;F@U@C52~({!}#^w%}!*9tcdb~rnS*nBY*-a6n_ zS7%6K-zj>%r~k*nRis8k@K9;7dVJ8ZffH`IuhXREVnP+~BjS@?y=^hRFTV^Jh`zT} zEBnDFd3KBgezYef5Oiud=GAQliOKH33bQ(``$^Vaqb;%k zX^)FVl%v_Y(?(uQBjX1zhLRi7tWc+nS2J%+XavjAX~bXuw+p(TaIin0`yao!&;Ji} CGdgGh diff --git a/platform/util/src/com/intellij/icons/AllIcons.java b/platform/util/src/com/intellij/icons/AllIcons.java index b34b7bd4aeab..2e3233570e37 100644 --- a/platform/util/src/com/intellij/icons/AllIcons.java +++ b/platform/util/src/com/intellij/icons/AllIcons.java @@ -700,7 +700,9 @@ public class AllIcons { public static final Icon WebModule = IconLoader.getIcon("/javaee/webModule.png"); // 16x16 public static final Icon WebModuleGroup = IconLoader.getIcon("/javaee/webModuleGroup.png"); // 16x16 public static final Icon WebService = IconLoader.getIcon("/javaee/WebService.png"); // 16x16 + public static final Icon WebService2 = IconLoader.getIcon("/javaee/WebService2.png"); // 16x16 public static final Icon WebServiceClient = IconLoader.getIcon("/javaee/WebServiceClient.png"); // 16x16 + public static final Icon WebServiceClient2 = IconLoader.getIcon("/javaee/WebServiceClient2.png"); // 16x16 } diff --git a/plugins/terminal/resources/icons/OpenTerminal_13x13@2x_dark.png b/plugins/terminal/resources/icons/OpenTerminal_13x13@2x_dark.png index 382b1e728685b3ac9ab02763ca942a36234755bb..3abc58e0740d1c1aad733a29ea12fcb63cdba364 100644 GIT binary patch delta 195 zcmV;!06hQh2;TvaB!8w!L_t(|+GD7qDqt8jZjc$rKrt9K4g@45B&ccJ+O=z=qodi_ z*r;QizrX*|rAz0|ooi`nNu99c=H^aHN?N~ueM3Wow6rvJqC!$q5-0^UG(J9_3dXUp zuy}ZQEL*m0#flXa83!>47<{W&uLe4ehlhuJ;~)kB{g{@PCOjx8NNH4T+_Ga x3{Ask3_z4|va+&R?I+W?(GrC;;|6J60RT7<(M(P8@;m?l002ovPDHLkV1l3IR89Z@ literal 1134 zcmaJ>TWHfz7><_*8P*p;<{m~Chs;ZxOWSF~>e!NYEts*jg;g19nw)K6OHNGA?8O@h zKFCmExQPm05EU<2=8cKMd{Czkf>vZWZx0G8;swPUKIq9@rw`UZaxQ$|_kaI?{*xUo z%}uVdiZX&AT+xUa!()Z>&YF(D3u_+j!^3Ih;+m6k}Nq_mP(pze_!j3=X;m`xCM^%+xEx&b0npi?t~)cY$V6sf5}s?9Gkk|}^L zEt0c9JlC91a@|TmrRrCZbr~KD=m5!NM(;6fJ`-Pm%b}7j*te0jPnhUsDmiH~=*;;b)p>Q-y?cif#crq4V1*tBC zOrECG>9i;9^+2nWW&?o$&2TiwxiP|RXALB0+=jiNs2~Dcu{0BD&>$T}IR$%Bkit%X zr=XitvW7ibCR{K&BbzkqVVsnTKuP*PRM)4_Hj05ie*YW59;JmVytiV}TRO z4FH_UC<;2fvjoM3>BvBMH6sI;-iL*WJ3W_F-TznkEW@7nDYq@ zwPD}#+6IPYL%v2Y%Y+0$40B$F6}`)gToEe0IxtX?tN!8oOLCn~&`lg!1eUe|s9_80 zbuC^@^*u0fvs<{UrTsr|;T!Qh zDmElCDu%oFYblb?*p9f#m_08tI-mjR6QEmA(RekX3)%nt~e4dt{Tb5N>zh!0Xj%~Be necN9T-Yb;14$k4nrp+uT=I)j*Dg#=l^9P8An#Hq?>$d#@(jke< diff --git a/plugins/terminal/resources/icons/OpenTerminal_13x13_dark.png b/plugins/terminal/resources/icons/OpenTerminal_13x13_dark.png index d9ceedc74ae0ca7b6a0b742e31a9298254e36fd2..1a08ae5a77780bef484c9a3c466382004970a467 100644 GIT binary patch delta 85 zcmV-b0IL7H2y>7mPdZ6NK~#9!W2hnyFwj69Hy0Ovgiy!9&W;PAtJ}PJGg0brDaCFt rrc!dvLsqmI25{O-z&xVDj~D;|LfC!tl$95j00000NkvXXu0mjf-+v-} literal 1083 zcmbVLOK8+U7>+BVh($##s0c$mSkXKtn`|EJD%)hWt8Q)A6?-a9lG!%2$;4#pZhKPE zqTa=e2Ty`UD(Xe>-~&N~9zA)IUPL^25d}qXvfZs7N)HB-dF21T?|46@DgHtaFVj7SLWQ@oqGql7rPgg<+<63Q%I7+*TVkwi_ zD3+ioOJSJB)v-=#9shM>P3yEV8)K=CQ!g!@HJHd#Oq(R7ZuM0*d2_@+yiGgi{ zf%8G+lU8~ttI$fo4o-qg*gu|-5Oh*(1#8G_hU{yyZwLm=BLOR_Cm=0f5R8K2`?@MO zU0vh5c>jM>Co!j_tWW;wo8A>`#%#Mf1?;doM>t}`ldvhdbM4bKo3IO2r`%|Na33x# zxF9FP9h+~Qdz*W+>)`2^j|N`cyS(Z3&tE?zv9h$ZH1K_K{OSC_kL&Z-K91g6-d;R8 z`hLUi4Y!xSN%#3@58|Eu{;9`LM&Fl?{sm GxcUdNrdXE% From 6108866b86718df18170c9047b7fdee7af2d4730 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 17:53:10 +0100 Subject: [PATCH 54/63] DumbService alternative resolution -> resolve --- .../src/com/intellij/psi/impl/JavaPsiFacadeImpl.java | 2 +- .../src/com/intellij/openapi/project/DumbService.java | 6 +++--- .../core-impl/src/com/intellij/mock/MockDumbService.java | 4 ++-- .../navigation/actions/GotoDeclarationAction.java | 4 ++-- .../navigation/actions/GotoTypeDeclarationAction.java | 4 ++-- .../src/com/intellij/openapi/project/DumbServiceImpl.java | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java index b48ca53f6c75..540e97ebe478 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java @@ -149,7 +149,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { private boolean shouldUseSlowResolve() { DumbService dumbService = DumbService.getInstance(getProject()); - return dumbService.isDumb() && dumbService.isAlternativeResolutionEnabled(); + return dumbService.isDumb() && dumbService.isAlternativeResolveEnabled(); } @NotNull diff --git a/platform/core-api/src/com/intellij/openapi/project/DumbService.java b/platform/core-api/src/com/intellij/openapi/project/DumbService.java index 0215dc6dd4ea..ac3edf55d890 100644 --- a/platform/core-api/src/com/intellij/openapi/project/DumbService.java +++ b/platform/core-api/src/com/intellij/openapi/project/DumbService.java @@ -221,14 +221,14 @@ public abstract class DumbService { * A typical usage would involve try-finally, where the alternative resolution is first enabled, then an action is performed, * and then alternative resolution is turned off in the finally block. */ - public abstract void setAlternativeResolutionEnabled(boolean enabled); + public abstract void setAlternativeResolveEnabled(boolean enabled); /** * @return whether alternative resolution is enabled for the current thread. * - * @see #setAlternativeResolutionEnabled(boolean) + * @see #setAlternativeResolveEnabled(boolean) */ - public abstract boolean isAlternativeResolutionEnabled(); + public abstract boolean isAlternativeResolveEnabled(); /** * @see #DUMB_MODE diff --git a/platform/core-impl/src/com/intellij/mock/MockDumbService.java b/platform/core-impl/src/com/intellij/mock/MockDumbService.java index 359fc8f64550..b1fe7ae2a727 100644 --- a/platform/core-impl/src/com/intellij/mock/MockDumbService.java +++ b/platform/core-impl/src/com/intellij/mock/MockDumbService.java @@ -75,11 +75,11 @@ public class MockDumbService extends DumbService { } @Override - public void setAlternativeResolutionEnabled(boolean enabled) { + public void setAlternativeResolveEnabled(boolean enabled) { } @Override - public boolean isAlternativeResolutionEnabled() { + public boolean isAlternativeResolveEnabled() { return false; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java index d816b7fd042d..a633b302c969 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java @@ -76,7 +76,7 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code public void invoke(@NotNull final Project project, @NotNull Editor editor, @NotNull PsiFile file) { PsiDocumentManager.getInstance(project).commitAllDocuments(); - DumbService.getInstance(project).setAlternativeResolutionEnabled(true); + DumbService.getInstance(project).setAlternativeResolveEnabled(true); try { int offset = editor.getCaretModel().getOffset(); PsiElement[] elements = findAllTargetElements(project, editor, offset); @@ -107,7 +107,7 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code DumbService.getInstance(project).showDumbModeNotification("Navigation is not available here during index update"); } finally { - DumbService.getInstance(project).setAlternativeResolutionEnabled(false); + DumbService.getInstance(project).setAlternativeResolveEnabled(false); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java index 3f0efe8b2e58..eb4861f733ff 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoTypeDeclarationAction.java @@ -66,7 +66,7 @@ public class GotoTypeDeclarationAction extends BaseCodeInsightAction implements public void invoke(@NotNull final Project project, @NotNull Editor editor, @NotNull PsiFile file) { PsiDocumentManager.getInstance(project).commitAllDocuments(); - DumbService.getInstance(project).setAlternativeResolutionEnabled(true); + DumbService.getInstance(project).setAlternativeResolveEnabled(true); try { int offset = editor.getCaretModel().getOffset(); PsiElement[] symbolTypes = findSymbolTypes(editor, offset); @@ -82,7 +82,7 @@ public class GotoTypeDeclarationAction extends BaseCodeInsightAction implements DumbService.getInstance(project).showDumbModeNotification("Navigation is not available here during index update"); } finally { - DumbService.getInstance(project).setAlternativeResolutionEnabled(false); + DumbService.getInstance(project).setAlternativeResolveEnabled(false); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java index 0c4f65544295..42d88cf5a4a0 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java @@ -106,13 +106,13 @@ public class DumbServiceImpl extends DumbService implements Disposable { } @Override - public boolean isAlternativeResolutionEnabled() { + public boolean isAlternativeResolveEnabled() { return Boolean.TRUE.equals(myAlternativeResolution.get()); } @Override - public void setAlternativeResolutionEnabled(boolean enabled) { - assert isAlternativeResolutionEnabled() != enabled : "Nested alternative resolution mode is not supported"; + public void setAlternativeResolveEnabled(boolean enabled) { + assert isAlternativeResolveEnabled() != enabled : "Nested alternative resolution mode is not supported"; myAlternativeResolution.set(enabled); } From 3dc10f4b9de228f44d04667dd4931f1176b202e8 Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Mon, 22 Dec 2014 17:44:42 +0300 Subject: [PATCH 55/63] style: parameter renamed to more suitable; repository branch topic update duplication removed --- .../zmlx/hg4idea/command/HgUpdateCommand.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgUpdateCommand.java b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgUpdateCommand.java index 4cfe72f121f9..f64b923959bb 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgUpdateCommand.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgUpdateCommand.java @@ -103,7 +103,6 @@ public class HgUpdateCommand { DvcsUtil.workingTreeChangeFinished(project, token); } - project.getMessageBus().syncPublisher(HgVcs.BRANCH_TOPIC).update(project, null); VfsUtil.markDirtyAndRefresh(true, true, false, repo); return result; } @@ -120,28 +119,28 @@ public class HgUpdateCommand { return exitCode.get(); } - public static void updateTo(@NotNull final String taskName, @NotNull List repos, @Nullable final Runnable callInAwtLater) { + public static void updateTo(@NotNull final String targetRevision, @NotNull List repos, @Nullable final Runnable callInAwtLater) { FileDocumentManager.getInstance().saveAllDocuments(); for (HgRepository repo : repos) { final VirtualFile repository = repo.getRoot(); Project project = repo.getProject(); - updateRepoTo(project, repository, taskName, callInAwtLater); + updateRepoTo(project, repository, targetRevision, callInAwtLater); } } public static void updateRepoTo(@NotNull final Project project, @NotNull final VirtualFile repository, - @NotNull final String taskName, + @NotNull final String targetRevision, @Nullable final Runnable callInAwtLater) { - updateRepoTo(project, repository, taskName, false, callInAwtLater); + updateRepoTo(project, repository, targetRevision, false, callInAwtLater); } public static void updateRepoTo(@NotNull final Project project, @NotNull final VirtualFile repository, - @NotNull final String taskName, + @NotNull final String targetRevision, final boolean clean, @Nullable final Runnable callInAwtLater) { - new Task.Backgroundable(project, HgVcsMessages.message("action.hg4idea.updateTo.description", taskName)) { + new Task.Backgroundable(project, HgVcsMessages.message("action.hg4idea.updateTo.description", targetRevision)) { @Override public void onSuccess() { if (callInAwtLater != null) { @@ -151,17 +150,17 @@ public class HgUpdateCommand { @Override public void run(@NotNull ProgressIndicator indicator) { - updateRepoToInCurrentThread(project, repository, taskName, clean); + updateRepoToInCurrentThread(project, repository, targetRevision, clean); } }.queue(); } public static boolean updateRepoToInCurrentThread(@NotNull final Project project, @NotNull final VirtualFile repository, - @NotNull final String taskName, + @NotNull final String targetRevision, final boolean clean) { final HgUpdateCommand hgUpdateCommand = new HgUpdateCommand(project, repository); - hgUpdateCommand.setRevision(taskName); + hgUpdateCommand.setRevision(targetRevision); hgUpdateCommand.setClean(clean); HgCommandResult result = hgUpdateCommand.execute(); new HgConflictResolver(project).resolve(repository); From ae92a76c287d426ee0caa512bf7937d19b088bdb Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Mon, 22 Dec 2014 19:58:26 +0300 Subject: [PATCH 56/63] IDEA-134617 hg close branch from branch widget implemented * ability to close branch for selected repo added; * if repositories tracked synchronously , then add an ability to close all; * only related changes (for appropriate repositories) will be preselected to perform close commit --- .../changes/ui/CommitChangeListDialog.java | 32 +++++++-- .../openapi/vcs/changes/ui/CommitHelper.java | 13 +++- .../hg4idea/src/org/zmlx/hg4idea/HgVcs.java | 10 ++- .../zmlx/hg4idea/branch/HgBranchPopup.java | 1 + .../hg4idea/branch/HgBranchPopupActions.java | 65 +++++++++++++++++++ .../zmlx/hg4idea/command/HgCommitCommand.java | 35 +++++++--- .../provider/commit/HgCheckinEnvironment.java | 34 ++++++++-- .../commit/HgCloseBranchExecutor.java | 57 ++++++++++++++++ 8 files changed, 226 insertions(+), 21 deletions(-) create mode 100644 plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCloseBranchExecutor.java diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java index 779260b26f0d..73334983a268 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java @@ -142,9 +142,27 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj private final MyUpdateButtonsRunnable myUpdateButtonsRunnable = new MyUpdateButtonsRunnable(this); - public static boolean commitChanges(final Project project, final List changes, final LocalChangeList initialSelection, - final List executors, final boolean showVcsCommit, final String comment, - @Nullable CommitResultHandler customResultHandler, boolean cancelIfNoChanges) { + public static boolean commitChanges(final Project project, + final List changes, + final LocalChangeList initialSelection, + final List executors, + final boolean showVcsCommit, + final String comment, + @Nullable CommitResultHandler customResultHandler, + boolean cancelIfNoChanges) { + return commitChanges(project, changes, initialSelection, executors, showVcsCommit, null, comment, customResultHandler, + cancelIfNoChanges); + } + + public static boolean commitChanges(final Project project, + final List changes, + final LocalChangeList initialSelection, + final List executors, + final boolean showVcsCommit, + @Nullable final AbstractVcs singleVcs, + final String comment, + @Nullable CommitResultHandler customResultHandler, + boolean cancelIfNoChanges) { if (cancelIfNoChanges && changes.isEmpty() && !ApplicationManager.getApplication().isUnitTestMode()) { Messages.showInfoMessage(project, VcsBundle.message("commit.dialog.no.changes.detected.text"), VcsBundle.message("commit.dialog.no.changes.detected.title")); @@ -159,8 +177,10 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj } final ChangeListManager manager = ChangeListManager.getInstance(project); - CommitChangeListDialog dialog = new CommitChangeListDialog(project, changes, initialSelection, executors, showVcsCommit, manager.getDefaultChangeList(), manager.getChangeListsCopy(), null, - false, comment, customResultHandler); + CommitChangeListDialog dialog = + new CommitChangeListDialog(project, changes, initialSelection, executors, showVcsCommit, manager.getDefaultChangeList(), + manager.getChangeListsCopy(), singleVcs, + false, comment, customResultHandler); if (!ApplicationManager.getApplication().isUnitTestMode()) { dialog.show(); } @@ -990,7 +1010,7 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj if (myIsAlien) { helper.doAlienCommit(myVcs); } else { - helper.doCommit(); + helper.doCommit(myVcs); } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java index 3f0747e80b30..b64d5ac1997c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java @@ -101,7 +101,11 @@ public class CommitHelper { } public boolean doCommit() { - return doCommit(new CommitProcessor()); + return doCommit((AbstractVcs)null); + } + + public boolean doCommit(@Nullable AbstractVcs vcs) { + return doCommit(new CommitProcessor(vcs)); } public boolean doAlienCommit(final AbstractVcs vcs) { @@ -374,8 +378,10 @@ public class CommitHelper { private LocalHistoryAction myAction; private ChangeListsModificationAfterCommit myAfterVcsRefreshModification; private boolean myCommitSuccess; + @Nullable private final AbstractVcs myVcs; - private CommitProcessor() { + private CommitProcessor(@Nullable AbstractVcs vcs) { + myVcs = vcs; myAfterVcsRefreshModification = ChangeListsModificationAfterCommit.NOTHING; if (myChangeList instanceof LocalChangeList) { final LocalChangeList localList = (LocalChangeList) myChangeList; @@ -391,6 +397,9 @@ public class CommitHelper { } public void callSelf() { + if (myVcs != null && myIncludedChanges.isEmpty()) { + process(myVcs, myIncludedChanges); + } ChangesUtil.processChangesByVcs(myProject, myIncludedChanges, this); } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java index 02655cffa3ae..bce14e8215a0 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java @@ -53,6 +53,7 @@ import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.provider.*; import org.zmlx.hg4idea.provider.annotate.HgAnnotationProvider; import org.zmlx.hg4idea.provider.commit.HgCheckinEnvironment; +import org.zmlx.hg4idea.provider.commit.HgCloseBranchExecutor; import org.zmlx.hg4idea.provider.commit.HgCommitAndPushExecutor; import org.zmlx.hg4idea.provider.update.HgUpdateEnvironment; import org.zmlx.hg4idea.roots.HgIntegrationEnabler; @@ -104,7 +105,8 @@ public class HgVcs extends AbstractVcs { private HgExecutableValidator myExecutableValidator; private final Object myExecutableValidatorLock = new Object(); private File myPromptHooksExtensionFile; - private CommitExecutor myCommitAndPushExecutor; + private final CommitExecutor myCommitAndPushExecutor; + private final HgCloseBranchExecutor myCloseBranchExecutor; private HgRemoteStatusUpdater myHgRemoteStatusUpdater; private HgStatusWidget myStatusWidget; @@ -130,6 +132,7 @@ public class HgVcs extends AbstractVcs { committedChangesProvider = new HgCachingCommittedChangesProvider(project, this); myMergeProvider = new HgMergeProvider(myProject); myCommitAndPushExecutor = new HgCommitAndPushExecutor(checkinEnvironment); + myCloseBranchExecutor = new HgCloseBranchExecutor(checkinEnvironment); } public String getDisplayName() { @@ -396,6 +399,11 @@ public class HgVcs extends AbstractVcs { return Collections.singletonList(myCommitAndPushExecutor); } + @NotNull + public HgCloseBranchExecutor getCloseBranchExecutor() { + return myCloseBranchExecutor; + } + public static VcsKey getKey() { return ourKey; } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopup.java b/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopup.java index 3dcaf6dee161..dc73c36ee503 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopup.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopup.java @@ -81,6 +81,7 @@ public class HgBranchPopup extends DvcsBranchPopup { List allRepositories = repositoryManager.getRepositories(); popupGroup.add(new HgBranchPopupActions.HgNewBranchAction(myProject, allRepositories, myCurrentRepository)); popupGroup.addAction(new HgBranchPopupActions.HgNewBookmarkAction(allRepositories, myCurrentRepository)); + popupGroup.addAction(new HgBranchPopupActions.HgCloseBranchAction(allRepositories, myCurrentRepository)); popupGroup.addAction(new HgBranchPopupActions.HgShowUnnamedHeadsForCurrentBranchAction(myCurrentRepository)); popupGroup.addAll(createRepositoriesActions()); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopupActions.java b/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopupActions.java index 633fe1cf87d9..9de49d560b65 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopupActions.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopupActions.java @@ -23,9 +23,15 @@ import com.intellij.openapi.actionSystem.ActionGroup; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.openapi.vcs.changes.*; +import com.intellij.openapi.vcs.changes.ui.CommitChangeListDialog; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.PlatformIcons; @@ -35,15 +41,19 @@ import com.intellij.vcs.log.impl.HashImpl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.HgNameWithHashInfo; +import org.zmlx.hg4idea.HgVcs; import org.zmlx.hg4idea.action.HgCommandResultNotifier; import org.zmlx.hg4idea.command.HgBookmarkCommand; import org.zmlx.hg4idea.command.HgBranchCreateCommand; import org.zmlx.hg4idea.execution.HgCommandException; import org.zmlx.hg4idea.execution.HgCommandResult; import org.zmlx.hg4idea.execution.HgCommandResultHandler; +import org.zmlx.hg4idea.provider.commit.HgCloseBranchExecutor; import org.zmlx.hg4idea.repo.HgRepository; +import org.zmlx.hg4idea.repo.HgRepositoryManager; import org.zmlx.hg4idea.ui.HgBookmarkDialog; import org.zmlx.hg4idea.util.HgErrorUtil; +import org.zmlx.hg4idea.util.HgUtil; import java.util.*; @@ -64,6 +74,7 @@ public class HgBranchPopupActions { DefaultActionGroup popupGroup = new DefaultActionGroup(null, false); popupGroup.addAction(new HgNewBranchAction(myProject, Collections.singletonList(myRepository), myRepository)); popupGroup.addAction(new HgNewBookmarkAction(Collections.singletonList(myRepository), myRepository)); + popupGroup.addAction(new HgBranchPopupActions.HgCloseBranchAction(Collections.singletonList(myRepository), myRepository)); popupGroup.addAction(new HgShowUnnamedHeadsForCurrentBranchAction(myRepository)); if (toInsert != null) { popupGroup.addAll(toInsert); @@ -129,6 +140,60 @@ public class HgBranchPopupActions { } } + public static class HgCloseBranchAction extends DumbAwareAction { + @NotNull private final List myRepositories; + @NotNull final HgRepository myPreselectedRepo; + + HgCloseBranchAction(@NotNull List repositories, @NotNull HgRepository preselectedRepo) { + super("Close " + StringUtil.pluralize("branch", repositories.size()), + "Close current " + StringUtil.pluralize("branch", repositories.size()), AllIcons.Actions.Delete); + myRepositories = repositories; + myPreselectedRepo = preselectedRepo; + } + + @Override + public void actionPerformed(AnActionEvent e) { + final Project project = myPreselectedRepo.getProject(); + ApplicationManager.getApplication().saveAll(); + ChangeListManager.getInstance(project).invokeAfterUpdate(new Runnable() { + @Override + public void run() { + commitAndCloseBranch(project); + } + }, InvokeAfterUpdateMode.SYNCHRONOUS_CANCELLABLE, VcsBundle + .message("waiting.changelists.update.for.show.commit.dialog.message"), + ModalityState.current()); + } + + private void commitAndCloseBranch(@NotNull final Project project) { + final LocalChangeList activeChangeList = ChangeListManager.getInstance(project).getDefaultChangeList(); + HgVcs vcs = HgVcs.getInstance(project); + assert vcs != null; + final HgRepositoryManager repositoryManager = HgUtil.getRepositoryManager(project); + List changesForRepositories = ContainerUtil.filter(activeChangeList.getChanges(), new Condition() { + @Override + public boolean value(Change change) { + return myRepositories.contains(repositoryManager.getRepositoryForFile(ChangesUtil.getFilePath(change))); + } + }); + HgCloseBranchExecutor closeBranchExecutor = vcs.getCloseBranchExecutor(); + closeBranchExecutor.setRepositories(myRepositories); + CommitChangeListDialog.commitChanges(project, changesForRepositories, activeChangeList, + Collections.singletonList(closeBranchExecutor), + false, vcs, "Close Branch", null, false); + } + + @Override + public void update(AnActionEvent e) { + e.getPresentation().setEnabledAndVisible(ContainerUtil.and(myRepositories, new Condition() { + @Override + public boolean value(HgRepository repository) { + return repository.getOpenedBranches().contains(repository.getCurrentBranch()); + } + })); + } + } + public static class HgNewBookmarkAction extends DumbAwareAction { @NotNull protected final List myRepositories; @NotNull final HgRepository myPreselectedRepo; diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCommitCommand.java b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCommitCommand.java index 794c7096d207..4ba12ee4add0 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCommitCommand.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCommitCommand.java @@ -12,6 +12,7 @@ // limitations under the License. package org.zmlx.hg4idea.command; +import com.intellij.dvcs.repo.Repository; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; @@ -28,6 +29,7 @@ import org.zmlx.hg4idea.HgVcs; import org.zmlx.hg4idea.HgVcsMessages; import org.zmlx.hg4idea.execution.HgCommandException; import org.zmlx.hg4idea.execution.HgCommandExecutor; +import org.zmlx.hg4idea.repo.HgRepository; import org.zmlx.hg4idea.repo.HgRepositoryManager; import org.zmlx.hg4idea.util.HgEncodingUtil; import org.zmlx.hg4idea.util.HgUtil; @@ -51,16 +53,22 @@ public class HgCommitCommand { private final String myMessage; @NotNull private final Charset myCharset; private final boolean myAmend; + private final boolean myCloseBranch; private Set myFiles = Collections.emptySet(); @NotNull private List mySubrepos = Collections.emptyList(); - public HgCommitCommand(Project project, @NotNull VirtualFile root, String message, boolean amend) { + public HgCommitCommand(@NotNull Project project, @NotNull VirtualFile root, String message, boolean amend, boolean closeBranch) { myProject = project; myRoot = root; myMessage = message; myCharset = HgEncodingUtil.getDefaultCharset(myProject); myAmend = amend; + myCloseBranch = closeBranch; + } + + public HgCommitCommand(@NotNull Project project, @NotNull VirtualFile root, String message, boolean amend) { + this(project, root, message, amend, false); } public HgCommitCommand(Project project, @NotNull VirtualFile root, String message) { @@ -80,9 +88,9 @@ public class HgCommitCommand { throw new HgCommandException(HgVcsMessages.message("hg4idea.commit.error.messageEmpty")); } //if it's merge commit, so myFiles is Empty. Need to commit all files in changeList. - // see HgCheckinEnviroment->commit() method + // see HgCheckinEnvironment->commit() method if (myFiles.isEmpty()) { - commitChunkFiles(Collections.emptyList(), myAmend); + commitChunkFiles(Collections.emptyList(), myAmend, myCloseBranch); } else { List relativePaths = ContainerUtil.map2List(myFiles, new Function() { @@ -94,12 +102,12 @@ public class HgCommitCommand { List> chunkedCommits = VcsFileUtil.chunkRelativePaths(relativePaths); int size = chunkedCommits.size(); // commit with subrepo should be first, because it's not possible to amend with --subrepos argument; - commitChunkFiles(chunkedCommits.get(0), myAmend, !mySubrepos.isEmpty()); + commitChunkFiles(chunkedCommits.get(0), myAmend, !mySubrepos.isEmpty(), myCloseBranch && size == 1); HgVcs vcs = HgVcs.getInstance(myProject); boolean amendCommit = vcs != null && vcs.getVersion().isAmendSupported(); for (int i = 1; i < size; i++) { List chunk = chunkedCommits.get(i); - commitChunkFiles(chunk, amendCommit); + commitChunkFiles(chunk, amendCommit, false, myCloseBranch && i == size - 1); } } if (!myProject.isDisposed()) { @@ -111,11 +119,14 @@ public class HgCommitCommand { messageBus.syncPublisher(HgVcs.BRANCH_TOPIC).update(myProject, null); } - private void commitChunkFiles(@NotNull List chunk, boolean amendCommit) throws VcsException { - commitChunkFiles(chunk, amendCommit, false); + private void commitChunkFiles(@NotNull List chunk, boolean amendCommit, boolean closeBranch) throws VcsException { + commitChunkFiles(chunk, amendCommit, false, closeBranch); } - private void commitChunkFiles(@NotNull List chunk, boolean amendCommit, boolean withSubrepos) throws VcsException { + private void commitChunkFiles(@NotNull List chunk, boolean amendCommit, boolean withSubrepos, boolean closeBranch) + throws VcsException { + HgRepository repository = HgUtil.getRepositoryForFile(myProject, myRoot); + assert repository != null; List parameters = new LinkedList(); parameters.add("--logfile"); parameters.add(saveCommitMessage().getAbsolutePath()); @@ -127,6 +138,14 @@ public class HgCommitCommand { else if (amendCommit) { parameters.add("--amend"); } + if (closeBranch) { + if (chunk.isEmpty() && repository.getState() != Repository.State.MERGING) { + //if there are changed files but nothing selected -> need to exclude all; if merge commit then nothing excluded + parameters.add("-X"); + parameters.add("\"**\""); + } + parameters.add("--close-branch"); + } parameters.addAll(chunk); HgCommandExecutor executor = new HgCommandExecutor(myProject); executor.setCharset(myCharset); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCheckinEnvironment.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCheckinEnvironment.java index cd46452f96f1..fe13294ef8ab 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCheckinEnvironment.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCheckinEnvironment.java @@ -60,6 +60,8 @@ public class HgCheckinEnvironment implements CheckinEnvironment { private boolean myNextCommitIsPushed; private boolean myNextCommitAmend; // If true, the next commit is amended private boolean myShouldCommitSubrepos; + private boolean myCloseBranch; + @Nullable private Collection myRepos; public HgCheckinEnvironment(Project project) { myProject = project; @@ -67,8 +69,15 @@ public class HgCheckinEnvironment implements CheckinEnvironment { public RefreshableOnComponent createAdditionalOptionsPanel(CheckinProjectPanel panel, PairConsumer additionalDataConsumer) { + reset(); + return new HgCommitAdditionalComponent(myProject, panel); + } + + public void reset() { myNextCommitIsPushed = false; - return new HgCommitAdditionalComponent(myProject,panel); + myShouldCommitSubrepos = false; + myCloseBranch = false; + myRepos = null; } public String getDefaultMessageFor(FilePath[] filesToCheckin) { @@ -83,19 +92,19 @@ public class HgCheckinEnvironment implements CheckinEnvironment { return HgVcsMessages.message("hg4idea.commit"); } - @SuppressWarnings({"ThrowableInstanceNeverThrown"}) public List commit(List changes, String preparedComment, @NotNull NullableFunction parametersHolder, Set feedback) { List exceptions = new LinkedList(); Map> repositoriesMap = getFilesByRepository(changes); + addRepositoriesWithoutChanges(repositoriesMap); for (Map.Entry> entry : repositoriesMap.entrySet()) { HgRepository repo = entry.getKey(); Set selectedFiles = entry.getValue(); HgCommitCommand command = - new HgCommitCommand(myProject, repo.getRoot(), preparedComment, myNextCommitAmend); + new HgCommitCommand(myProject, repo.getRoot(), preparedComment, myNextCommitAmend, myCloseBranch); if (isMergeCommit(repo.getRoot())) { //partial commits are not allowed during merges @@ -255,7 +264,7 @@ public class HgCheckinEnvironment implements CheckinEnvironment { private void addFile(Map> result, ContentRevision contentRevision) { FilePath filePath = contentRevision.getFile(); - // try to find repository from hgFile from change + // try to find repository from hgFile from change: to be able commit sub repositories as expected HgRepository repo = HgUtil.getRepositoryForFile(myProject, contentRevision instanceof HgCurrentBinaryContentRevision ? ((HgCurrentBinaryContentRevision)contentRevision).getRepositoryRoot() : ChangesUtil.findValidParentAccurately(filePath)); @@ -276,6 +285,23 @@ public class HgCheckinEnvironment implements CheckinEnvironment { myNextCommitIsPushed = true; } + public void setCloseBranch(boolean closeBranch) { + myCloseBranch = closeBranch; + } + + public void setRepos(@NotNull Collection repos) { + myRepos = repos; + } + + private void addRepositoriesWithoutChanges(@NotNull Map> repositoryMap) { + if (myRepos == null) return; + for (HgRepository repository : myRepos) { + if (!repositoryMap.keySet().contains(repository)) { + repositoryMap.put(repository, Collections.emptySet()); + } + } + } + /** * Commit options for hg */ diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCloseBranchExecutor.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCloseBranchExecutor.java new file mode 100644 index 000000000000..3aac41d2b394 --- /dev/null +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCloseBranchExecutor.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.zmlx.hg4idea.provider.commit; + +import com.intellij.openapi.vcs.changes.CommitExecutorBase; +import com.intellij.openapi.vcs.changes.CommitSession; +import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NotNull; +import org.zmlx.hg4idea.repo.HgRepository; + +import java.util.Collection; + +public class HgCloseBranchExecutor extends CommitExecutorBase { + + @NotNull private final HgCheckinEnvironment myCheckinEnvironment; + @NotNull private static final String CLOSE_BRANCH_TITLE = "Commit And &Close" ; + + + public HgCloseBranchExecutor(@NotNull HgCheckinEnvironment environment) { + myCheckinEnvironment = environment; + } + + @Override + public boolean areChangesRequired() { + return false; + } + + @Nls + @Override + public String getActionText() { + return CLOSE_BRANCH_TITLE; + } + + @NotNull + @Override + public CommitSession createCommitSession() { + myCheckinEnvironment.setCloseBranch(true); + return CommitSession.VCS_COMMIT; + } + + public void setRepositories(@NotNull Collection repositories) { + myCheckinEnvironment.setRepos(repositories); + } +} From 4d6b05337c07f0259d09cc6aba90cafdc77147eb Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Mon, 22 Dec 2014 20:01:26 +0300 Subject: [PATCH 57/63] style: redundant statement removed --- plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java index bce14e8215a0..9c496969a3bb 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java @@ -476,13 +476,11 @@ public class HgVcs extends AbstractVcs { final String reason = (e.getCause() != null ? e.getCause() : e).getMessage(); String message = HgVcsMessages.message("hg4idea.unable.to.run.hg", executable); vcsNotifier.notifyError(message, - String.format( - reason + - "
Please check your hg executable path in
settings " - ), - linkAdapter + reason + + "
Please check your hg executable path in settings ", + linkAdapter ); } } From fa61cd8be5011656682c809d9cb880678bdca597 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 22 Dec 2014 17:52:17 +0100 Subject: [PATCH 58/63] =?UTF-8?q?AbstractExternalFilter=20=E2=80=94=20use?= =?UTF-8?q?=20HttpRequests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../documentation/AbstractExternalFilter.java | 48 ++++++++----------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java index a64917f88e4e..d923262be097 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/AbstractExternalFilter.java @@ -37,7 +37,6 @@ import org.jetbrains.annotations.Nullable; import java.io.*; import java.net.URL; -import java.net.URLConnection; import java.util.Locale; import java.util.concurrent.Future; import java.util.jar.JarFile; @@ -243,34 +242,27 @@ public abstract class AbstractExternalFilter { }); } + @Nullable private static String guessEncoding(URL url) { - String result = null; - BufferedReader reader = null; - try { - URLConnection connection = url.openConnection(); - result = connection.getContentEncoding(); - if (result != null) return result; - //noinspection IOResourceOpenedButNotSafelyClosed - reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - for (String htmlLine = reader.readLine(); htmlLine != null; htmlLine = reader.readLine()) { - result = parseContentEncoding(htmlLine); - if (result != null) { - break; - } - } - } - catch (IOException ignored) { - } - finally { - if (reader != null) { + return HttpRequests.request(url.toExternalForm()).connect(new HttpRequests.RequestProcessor() { + @Override + public String process(@NotNull HttpRequests.Request request) throws IOException { + String result = request.getConnection().getContentEncoding(); + BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); try { + for (String htmlLine = reader.readLine(); htmlLine != null; htmlLine = reader.readLine()) { + result = parseContentEncoding(htmlLine); + if (result != null) { + break; + } + } + } + finally { reader.close(); } - catch (IOException ignored) { - } + return result; } - } - return result; + }, null, null); } @Nullable @@ -475,11 +467,9 @@ public abstract class AbstractExternalFilter { if (!htmlLine.contains("charset")) { return null; } - final Matcher matcher = CHARSET_META_PATTERN.matcher(htmlLine); - if (matcher.find()) { - return matcher.group(1); - } - return null; + + Matcher matcher = CHARSET_META_PATTERN.matcher(htmlLine); + return matcher.find() ? matcher.group(1) : null; } private static void appendLine(StringBuilder buffer, final String read) { From a5a6638cef8bde4808493b7750f1d9bd7fee8f13 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 22 Dec 2014 20:18:31 +0300 Subject: [PATCH 59/63] IDEA-131081 pick caret foreground color depending on caret background color --- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 061fc5bb07a8..52cdc8c558e2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -134,7 +134,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private static final boolean HONOR_CAMEL_HUMPS_ON_TRIPLE_CLICK = Boolean.parseBoolean(System.getProperty("idea.honor.camel.humps.on.triple.click")); private static final Key BUFFER = Key.create("buffer"); - public static final JBColor CURSOR_FOREGROUND = new JBColor(Gray._255, Gray._0); + public static final Color CURSOR_FOREGROUND_LIGHT = Gray._255; + public static final Color CURSOR_FOREGROUND_DARK = Gray._0; @NotNull private final DocumentEx myDocument; private final JPanel myPanel; @@ -4747,7 +4748,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi //todo[kb] //in case of italic style we paint out of the cursor block. Painting the symbol to a dedicated buffered image //solves the problem, but still looks weird because it leaves colored pixels at right. - g.setColor(CURSOR_FOREGROUND); + g.setColor(ColorUtil.isDark(caretColor) ? CURSOR_FOREGROUND_LIGHT : CURSOR_FOREGROUND_DARK); g.drawChars(new char[]{ch}, 0, 1, x, y + getAscent()); } } From c60bdddb09801ed8c7f294cbd12df717cea2d4ca Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 22 Dec 2014 18:38:00 +0100 Subject: [PATCH 60/63] more reliable version check --- jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java index ed5bf0270f5f..c880924ea232 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacMain.java @@ -193,8 +193,7 @@ public class JavacMain { private static boolean canUseOptimizedFileManager(JavaCompilingTool compilingTool) { // since java 9 internal API's used by the optimizedFileManager have changed - return compilingTool instanceof JavacCompilerTool && - (JAVA_VERSION.contains("1.6") || JAVA_VERSION.contains("1.7") || JAVA_VERSION.contains("1.8")); + return compilingTool instanceof JavacCompilerTool && !SystemInfo.isJavaVersionAtLeast("1.9"); } private static void handleCancelException(DiagnosticOutputConsumer diagnosticConsumer) { From 31ed6d17655d5081e42864201cef32a38683c60e Mon Sep 17 00:00:00 2001 From: akosyakov Date: Fri, 5 Dec 2014 13:02:23 +0100 Subject: [PATCH 61/63] [IDEABKL-7100] Create an instance of PsiElementFinderImpl via the extension point 'com.intellij.java.elementFinder' --- .../intellij/psi/impl/JavaPsiFacadeImpl.java | 138 -------------- .../psi/impl/PsiElementFinderImpl.java | 177 ++++++++++++++++++ resources/src/META-INF/IdeaPlugin.xml | 16 ++ 3 files changed, 193 insertions(+), 138 deletions(-) create mode 100644 java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java index 540e97ebe478..e623f0714deb 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java @@ -16,16 +16,11 @@ package com.intellij.psi.impl; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.ReadActionProcessor; import com.intellij.openapi.progress.ProgressIndicatorProvider; -import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.FileIndexFacade; -import com.intellij.openapi.roots.PackageIndex; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.*; import com.intellij.psi.impl.file.impl.JavaFileManager; @@ -34,19 +29,15 @@ import com.intellij.psi.impl.source.JavaDummyHolder; import com.intellij.psi.impl.source.JavaDummyHolderFactory; import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.stubs.StubTreeLoader; import com.intellij.psi.util.PsiModificationTracker; -import com.intellij.psi.util.PsiUtilCore; import com.intellij.reference.SoftReference; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.Processor; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.HashMap; import com.intellij.util.messages.MessageBus; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import java.util.*; @@ -166,7 +157,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { @NotNull private PsiElementFinder[] calcFinders() { List elementFinders = new ArrayList(); - elementFinders.add(new PsiElementFinderImpl()); ContainerUtil.addAll(elementFinders, myProject.getExtensions(PsiElementFinder.EP_NAME)); return elementFinders.toArray(new PsiElementFinder[elementFinders.size()]); } @@ -279,134 +269,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx { return result.values().toArray(new PsiPackage[result.size()]); } - private class PsiElementFinderImpl extends PsiElementFinder implements DumbAware { - @Override - public PsiClass findClass(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { - return myFileManager.findClass(qualifiedName, scope); - } - - @Override - @NotNull - public PsiClass[] findClasses(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { - return myFileManager.findClasses(qualifiedName, scope); - } - - @Override - public PsiPackage findPackage(@NotNull String qualifiedName) { - return myFileManager.findPackage(qualifiedName); - } - - @Override - @NotNull - public PsiPackage[] getSubPackages(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope scope) { - final Map packagesMap = new HashMap(); - final String qualifiedName = psiPackage.getQualifiedName(); - for (PsiDirectory dir : psiPackage.getDirectories(scope)) { - PsiDirectory[] subDirs = dir.getSubdirectories(); - for (PsiDirectory subDir : subDirs) { - final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(subDir); - if (aPackage != null) { - final String subQualifiedName = aPackage.getQualifiedName(); - if (subQualifiedName.startsWith(qualifiedName) && !packagesMap.containsKey(subQualifiedName)) { - packagesMap.put(aPackage.getQualifiedName(), aPackage); - } - } - } - } - - packagesMap.remove(qualifiedName); // avoid SOE caused by returning a package as a subpackage of itself - return packagesMap.values().toArray(new PsiPackage[packagesMap.size()]); - } - - @Override - @NotNull - public PsiClass[] getClasses(@NotNull PsiPackage psiPackage, @NotNull final GlobalSearchScope scope) { - return getClasses(null, psiPackage, scope); - } - - @Override - @NotNull - public PsiClass[] getClasses(@Nullable String shortName, @NotNull PsiPackage psiPackage, @NotNull final GlobalSearchScope scope) { - List list = null; - String packageName = psiPackage.getQualifiedName(); - for (PsiDirectory dir : psiPackage.getDirectories(scope)) { - PsiClass[] classes = JavaDirectoryService.getInstance().getClasses(dir); - if (classes.length == 0) continue; - if (list == null) list = new ArrayList(); - for (PsiClass aClass : classes) { - // class file can be located in wrong place inside file system - String qualifiedName = aClass.getQualifiedName(); - if (qualifiedName != null) qualifiedName = StringUtil.getPackageName(qualifiedName); - if (Comparing.strEqual(qualifiedName, packageName)) { - if (shortName == null || shortName.equals(aClass.getName())) list.add(aClass); - } - } - } - if (list == null) { - return PsiClass.EMPTY_ARRAY; - } - - if (list.size() > 1) { - ContainerUtil.quickSort(list, new Comparator() { - @Override - public int compare(PsiClass o1, PsiClass o2) { - VirtualFile file1 = PsiUtilCore.getVirtualFile(o1); - VirtualFile file2 = PsiUtilCore.getVirtualFile(o2); - return file1 == null ? file2 == null ? 0 : -1 : file2 == null ? 1 : scope.compare(file2, file1); - } - }); - } - - return list.toArray(new PsiClass[list.size()]); - } - - @NotNull - @Override - public Set getClassNames(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope scope) { - Set names = null; - FileIndexFacade facade = FileIndexFacade.getInstance(myProject); - for (PsiDirectory dir : psiPackage.getDirectories(scope)) { - for (PsiFile file : dir.getFiles()) { - if (file instanceof PsiClassOwner && file.getViewProvider().getLanguages().size() == 1) { - VirtualFile vFile = file.getVirtualFile(); - if (vFile != null && - !(file instanceof PsiCompiledElement) && - !facade.isInSourceContent(vFile) && - (!scope.isForceSearchingInLibrarySources() || - !StubTreeLoader.getInstance().canHaveStub(vFile))) { - continue; - } - - Set inFile = file instanceof PsiClassOwnerEx ? ((PsiClassOwnerEx)file).getClassNames() : getClassNames(((PsiClassOwner)file).getClasses()); - - if (inFile.isEmpty()) continue; - if (names == null) names = new HashSet(); - names.addAll(inFile); - } - } - - } - return names == null ? Collections.emptySet() : names; - } - - @Override - public boolean processPackageDirectories(@NotNull PsiPackage psiPackage, - @NotNull final GlobalSearchScope scope, - @NotNull final Processor consumer, - boolean includeLibrarySources) { - final PsiManager psiManager = PsiManager.getInstance(getProject()); - return PackageIndex.getInstance(getProject()).getDirsByPackageName(psiPackage.getQualifiedName(), includeLibrarySources) - .forEach(new ReadActionProcessor() { - @Override - public boolean processInReadAction(final VirtualFile dir) { - if (!scope.contains(dir)) return true; - PsiDirectory psiDir = psiManager.findDirectory(dir); - return psiDir == null || consumer.process(psiDir); - } - }); - } - } - @Override public boolean isPartOfPackagePrefix(@NotNull String packageName) { final Collection packagePrefixes = myFileManager.getNonTrivialPackagePrefixes(); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java new file mode 100644 index 000000000000..2c482367abd6 --- /dev/null +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFinderImpl.java @@ -0,0 +1,177 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.psi.impl; + +import com.intellij.openapi.application.ReadActionProcessor; +import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.FileIndexFacade; +import com.intellij.openapi.roots.PackageIndex; +import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import com.intellij.psi.impl.file.impl.JavaFileManager; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.stubs.StubTreeLoader; +import com.intellij.psi.util.PsiUtilCore; +import com.intellij.util.Processor; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.HashMap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +/** + * Created by kosyakov on 05.12.14. + */ +public class PsiElementFinderImpl extends PsiElementFinder implements DumbAware { + + private final Project myProject; + private final JavaFileManager myFileManager; + + public PsiElementFinderImpl(Project project, JavaFileManager javaFileManager) { + this.myProject = project; + this.myFileManager = javaFileManager; + } + + @Override + public PsiClass findClass(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { + return myFileManager.findClass(qualifiedName, scope); + } + + @Override + @NotNull + public PsiClass[] findClasses(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { + return myFileManager.findClasses(qualifiedName, scope); + } + + @Override + public PsiPackage findPackage(@NotNull String qualifiedName) { + return myFileManager.findPackage(qualifiedName); + } + + @Override + @NotNull + public PsiPackage[] getSubPackages(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope scope) { + final Map packagesMap = new HashMap(); + final String qualifiedName = psiPackage.getQualifiedName(); + for (PsiDirectory dir : psiPackage.getDirectories(scope)) { + PsiDirectory[] subDirs = dir.getSubdirectories(); + for (PsiDirectory subDir : subDirs) { + final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(subDir); + if (aPackage != null) { + final String subQualifiedName = aPackage.getQualifiedName(); + if (subQualifiedName.startsWith(qualifiedName) && !packagesMap.containsKey(subQualifiedName)) { + packagesMap.put(aPackage.getQualifiedName(), aPackage); + } + } + } + } + + packagesMap.remove(qualifiedName); // avoid SOE caused by returning a package as a subpackage of itself + return packagesMap.values().toArray(new PsiPackage[packagesMap.size()]); + } + + @Override + @NotNull + public PsiClass[] getClasses(@NotNull PsiPackage psiPackage, @NotNull final GlobalSearchScope scope) { + return getClasses(null, psiPackage, scope); + } + + @Override + @NotNull + public PsiClass[] getClasses(@Nullable String shortName, @NotNull PsiPackage psiPackage, @NotNull final GlobalSearchScope scope) { + List list = null; + String packageName = psiPackage.getQualifiedName(); + for (PsiDirectory dir : psiPackage.getDirectories(scope)) { + PsiClass[] classes = JavaDirectoryService.getInstance().getClasses(dir); + if (classes.length == 0) continue; + if (list == null) list = new ArrayList(); + for (PsiClass aClass : classes) { + // class file can be located in wrong place inside file system + String qualifiedName = aClass.getQualifiedName(); + if (qualifiedName != null) qualifiedName = StringUtil.getPackageName(qualifiedName); + if (Comparing.strEqual(qualifiedName, packageName)) { + if (shortName == null || shortName.equals(aClass.getName())) list.add(aClass); + } + } + } + if (list == null) { + return PsiClass.EMPTY_ARRAY; + } + + if (list.size() > 1) { + ContainerUtil.quickSort(list, new Comparator() { + @Override + public int compare(PsiClass o1, PsiClass o2) { + VirtualFile file1 = PsiUtilCore.getVirtualFile(o1); + VirtualFile file2 = PsiUtilCore.getVirtualFile(o2); + return file1 == null ? file2 == null ? 0 : -1 : file2 == null ? 1 : scope.compare(file2, file1); + } + }); + } + + return list.toArray(new PsiClass[list.size()]); + } + + @NotNull + @Override + public Set getClassNames(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope scope) { + Set names = null; + FileIndexFacade facade = FileIndexFacade.getInstance(myProject); + for (PsiDirectory dir : psiPackage.getDirectories(scope)) { + for (PsiFile file : dir.getFiles()) { + if (file instanceof PsiClassOwner && file.getViewProvider().getLanguages().size() == 1) { + VirtualFile vFile = file.getVirtualFile(); + if (vFile != null && + !(file instanceof PsiCompiledElement) && + !facade.isInSourceContent(vFile) && + (!scope.isForceSearchingInLibrarySources() || !StubTreeLoader.getInstance().canHaveStub(vFile))) { + continue; + } + + Set inFile = + file instanceof PsiClassOwnerEx ? ((PsiClassOwnerEx)file).getClassNames() : getClassNames(((PsiClassOwner)file).getClasses()); + + if (inFile.isEmpty()) continue; + if (names == null) names = new HashSet(); + names.addAll(inFile); + } + } + + } + return names == null ? Collections.emptySet() : names; + } + + @Override + public boolean processPackageDirectories(@NotNull PsiPackage psiPackage, + @NotNull final GlobalSearchScope scope, + @NotNull final Processor consumer, + boolean includeLibrarySources) { + final PsiManager psiManager = PsiManager.getInstance(myProject); + return PackageIndex.getInstance(myProject).getDirsByPackageName(psiPackage.getQualifiedName(), includeLibrarySources) + .forEach(new ReadActionProcessor() { + @Override + public boolean processInReadAction(final VirtualFile dir) { + if (!scope.contains(dir)) return true; + PsiDirectory psiDir = psiManager.findDirectory(dir); + return psiDir == null || consumer.process(psiDir); + } + }); + } +} diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index e4ed2ce70673..b4d2e383629f 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -1,3 +1,18 @@ + com.intellij IDEA CORE @@ -1506,6 +1521,7 @@ + From ed071042daf0faa9f9b95d5cebb484712b377d92 Mon Sep 17 00:00:00 2001 From: akosyakov Date: Fri, 5 Dec 2014 14:13:48 +0100 Subject: [PATCH 62/63] [IDEABKL-7100] Assigned 'java' as id for com.intellij.psi.impl.PsiElementFinderImpl --- resources/src/META-INF/IdeaPlugin.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index b4d2e383629f..d51427bbd001 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -1521,7 +1521,7 @@ - + From 7145e83746d62305280806136e3f3d9cd3a238b2 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 22 Dec 2014 18:23:20 +0100 Subject: [PATCH 63/63] IDEA-134248 "Enable dynamic classpath" doesn't work from event log window. --- .../com/intellij/execution/runners/ExecutionUtil.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java index 1c3d265e4c86..cb2c3225e83f 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java +++ b/platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java @@ -23,6 +23,7 @@ import com.intellij.execution.process.ProcessNotCreatedException; import com.intellij.execution.ui.RunContentDescriptor; import com.intellij.ide.DataManager; import com.intellij.ide.util.PropertiesComponent; +import com.intellij.notification.Notification; import com.intellij.notification.NotificationGroup; import com.intellij.notification.NotificationListener; import com.intellij.notification.NotificationType; @@ -34,7 +35,6 @@ import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.ui.content.Content; -import com.intellij.util.ObjectUtils; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -124,7 +124,12 @@ public class ExecutionUtil { else { Messages.showErrorDialog(project, UIUtil.toHtml(fullMessage), ""); } - NotificationListener notificationListener = ObjectUtils.tryCast(finalListener, NotificationListener.class); + NotificationListener notificationListener = finalListener == null ? null : new NotificationListener() { + @Override + public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { + finalListener.hyperlinkUpdate(event); + } + }; ourNotificationGroup.createNotification(title, finalDescription, NotificationType.ERROR, notificationListener).notify(project); } });