From ff906850e10ea22be3ea7336480e8d73fb7e3848 Mon Sep 17 00:00:00 2001 From: Dietrich Travkin Date: Thu, 22 Aug 2024 16:14:10 +0200 Subject: [PATCH] Add hide fields toolbar button to outline view (fix #1073) --- .../icons/full/dlcl16/fields_co.png | Bin 0 -> 4740 bytes .../icons/full/elcl16/fields_co.png | Bin 0 -> 4774 bytes org.eclipse.lsp4e/plugin.properties | 2 + org.eclipse.lsp4e/plugin.xml | 40 +++++++++- .../ToggleHideFieldsOutlineHandler.java | 74 ++++++++++++++++++ 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 org.eclipse.lsp4e/icons/full/dlcl16/fields_co.png create mode 100644 org.eclipse.lsp4e/icons/full/elcl16/fields_co.png create mode 100644 org.eclipse.lsp4e/src/org/eclipse/lsp4e/outline/ToggleHideFieldsOutlineHandler.java diff --git a/org.eclipse.lsp4e/icons/full/dlcl16/fields_co.png b/org.eclipse.lsp4e/icons/full/dlcl16/fields_co.png new file mode 100644 index 0000000000000000000000000000000000000000..2820f965afbe6cc2dc611030c35c67083b6ad816 GIT binary patch literal 4740 zcmeHKc~leE8Xr_pL8OXS>%lU{1@)0+vM(j9K@A$=K#Jh2-IDxs84}H zMHDQEX~ngOLQ$z$1gucS4HaC#1y`z+KDA)w-2?0pAr=jR45t`8;p7tsUcu0!9c)- znN&fLxn3L6;9L$5d-H14_|wd!Pd0G#uQ-cW$e$^4TV!qzHw?$FFTODNro;A8M?J$A z9DG#!?UoZx<-R`KLtM^7!K?>OVM~HH-Wi#D^_frGx-{3=c@LEME6)R_T(Z3(V?@%VvO{8*&qcc&dkCrx8)T@!u!baKVMwVMkM4L`I7 zerv8Zw8?Lo(~c&!HvZuL{8!1Zx9$A*pW_xX?V^qoc&Ln(v3T^r!$XwACY%|O zni=^`+8(Y~)iueoWu=>2J)fIaZuL91gk9z_(j(&5_ep}JdppCk+q`48e@%S-I?H@1 z$7!UGaZ$`4TTDNrtJUkbXjHp|b3C^tMm$Et`P{po+}*qHaXRz?eKd8T#t{m`?Y+fA$*u(THbY{d(o z*S8KvX6-Vj`O9)TD~fz7SC=trb@eY_6=;itp-zs$694D1kC6^pV&VS4)6*Ce;c zKWk~Z!^wWT0%~L%FIASii~wDiNP_N)kk1igdMyLR^-6+a)*3+DL6Db^*??lv1O+Pz zHK~)(o}V~HgGpRMo5zzQazg+SMb1hz5@CsR66*bY@eDwTg3ckesG49JbZXlYYhA=38=x#|ZB)Q) zvx8*B0Y(C)^hSkVuaVHK!NOL`o@qJQPdG}UQj{WqH-yaCF$C7kv?JU)uB)(0p?M}+iV#RT1oF}pKnT2GC4DSI*h zOB62~pwBS_)^*vy@dZvpX3ufhEgA^;@BDNZ}AU`i$r9Qc)l5;+bLO)fn;q$t9*fQ%|kI5~FO==t@cU&?BdMKw`HT9?4Qi{GPTb>i%| zzlZ{cOwcLzUv=r|=&<Hp5FG}I43xGaC39>fbRxC)z#I{m)}|0 zKBg5?snv&_CV2nxW9PY;tg?Jx_o0IZFzf2-bj@uE_B8|JSEq+Q$-O76&xd^ZJC|dT z;l+ySEFSOJ)OEF%^zt&3<;sgp$hTzSr<*F22M!!a39=yaw7k5$j#Vwf^A?U>`j=DZ*aPyR*iW9s^?TNOtr=|XIq_k8krKMij^^n(T=j7zn-qh6eS>wm6 z(!W}}c3@mw+}>+XuRM*dtg34DN|w@4a6A8#EpMxCZ$Ey?ZvMe->7oC0`0#R{i>{R}jofy*B`#x?dwoG+=@g4s+Zb{7`H73JWlZt#h(5gp$&Xom7H0?V uN!O?Se1BfTh@8-TMS0VUCuh%|E%vd$eEY~My&ML;1IYsCN)P!jS@R!f(e<1F literal 0 HcmV?d00001 diff --git a/org.eclipse.lsp4e/icons/full/elcl16/fields_co.png b/org.eclipse.lsp4e/icons/full/elcl16/fields_co.png new file mode 100644 index 0000000000000000000000000000000000000000..0f657542711093b2e3d23c4990c82202c6b8f092 GIT binary patch literal 4774 zcmeHKc~BE+7H6{P|2ujpI1O{Pb)K0n+T62*E67fO>#Q{MS z6j2y)aK-_=6~=QI4@7sJ1zZoL6br#)2SvmgVNuyH0TF7ZYRjsf|43ER{k`|=-+S-( zz3)|ei!^kull>%n2!fo%A);__9b@^98UcQ%bo5~0axp0~+8B0;+g6vyr-<9q|%Mo!8Mx)XZODe-OU_E2Ka)Qpa8qs867c7;?pW0HLL z8K=hS<8DpAky<<3H&5)6nHU@Hf-S3`NU38+K)9 zIIP)!xPnoF*-o@`-pIKSeBhq`-NiFE9Y6C<2;Xz{{TBDe2Rq+QPHSDZjkQb;z5aIe zja0rv2^V>lz22}XWjDRKu`slld$%@b{MqlCN+HN5g$xRkii3haR0C?*yCz#0a%uM8 zt}Kl>5Io&EaohfFMS}X^1H9YQ#}x%09RFnk?^zpHnIt5=^-Z=cy_SeF@aY8g`L?dBbQ|7aRF?a`j7f{t17dAUSx=U#K& zJ_k2{{a5i_TMgH+^~z0KRfGu!Tq=(O6B9WrWAx7cOf<@Wi_;niQ*cwQa0yoTbt_N9O4 z{X;Q(3-vn!#rt}$l>1k$ucXyz?*0Den7Sei>S5^)nBJY5z~~kyohS{?N-k1AY&uiw zv#PSinei%ems5TATQpVXYWDwDdwuw&ipt9ThQ-P$-@DA-d1hWCG;(vLXv^_C!UvOE zpFeM86}(>yJw)_%RhL{`LDwabpu3_a3j}hlnug(889_6vb)fAa$j{%b!{jRnBSl6i zNsW-&cJ?PKg~Wx_MQjN}q6;G8$dDvG5s?%cDNkA<=i^lWS@wQr0U%HlMvP)st273I zSxB|=3c$U^Os7(;5aS9VHCiI21ZnjI1*M@h1{`cA6A|hxdy1bPR|vvIbNVR2N=S_} z8g&9X-DEP+Oe~sKucR~id_J9l&=CX%2-vVvW5mp`#^7n8=;aU*2DzTp8A+{%V&TMO z+61GJN(Fw(hy2t!iKL%iW9U->=s`DQIy#fapsUsNflnBW!HIyRFQGqu!Vn1#DLtGp zXcP2uA~=!I7(EA4%oR(d{S20pl%!f`EeeP?C>Sp9$LSLEDk}z;(+L%!2BZd%A9E1i zNGd*xH7GZW$6C(7L_oNH{z2#uwOhdeC6Ne3T6uycs8}SVTJja(S~-aethXqS1GWPp zU=ADMz$jaW!8{C8z#LT0mvK1^E}JVKKqb}~jF?7FSf~IwjRZV6#>JT|lm+uRJV3!j zc`#q0V8RR;&Sr493@%sB9Y7JLCqY+Ys)1QqsBl1~KxHTo!3kK7GvzSKVk58&2TN2z zC@`E$U>Jg0sVw^-2#|_}RD{O(XpyQgqe81!3#k%JP6>AOi<63#{|jw7Jruv*Jr5xbApT0LsrN`l5b?dM-ldAPo+S#!dMX5%ytf1cmPp{% zJONj)OCE=5lmr+bef|2uPX0+RAY28XqhK>(1Y@Bvii3vWarp`uW3rhzB4fzdC^neg zpj8-6n4Snw0v&-?pg*lzQKt27q0eBrDUPu04^Rwd@ZdhhPyxd3Q;gnMG2JpXK9uZ7 z|AQ!gR=|KU1D@-(f$;^VA-#Vb_K9X0Jb&S*Z!`YF2!MJh$S3JLB-fB!pQOMifrq+l zNUl#(;FG{Z-SvNy%l_jF6`=utgG}IciC=lG8oX-RDgz_|5Ogfd;Votd)+1!|=ZYW? z$O&@b)Wc7JWwb6N#sEPMV=Z4BD1Wa9Fpe~eCBY+~j+*RbJF#ra=*18;%wH@Dh~)jf z;O18$JFsyhU-opIYvVNfvQ)xGC## z(S`Q?`}|w&k~5qijS#y|j!88~+*;^!*>-LFkvRk`(@ zZ&uvK)-`FR)roZfch#dHyk2529&;Zuu2bhpAxAg)PxcYMbvw@;FCKn~m_l;2WIa37n*OS)=uvK49edtbar5w&f1mg*XV-7s!s83{TcFyP=@qNz g?N**x(%t2qSp2U!6As+<0^J3PgF{7!1D9?1FM9p=;s5{u literal 0 HcmV?d00001 diff --git a/org.eclipse.lsp4e/plugin.properties b/org.eclipse.lsp4e/plugin.properties index 97215c502..6d832ee62 100644 --- a/org.eclipse.lsp4e/plugin.properties +++ b/org.eclipse.lsp4e/plugin.properties @@ -27,6 +27,8 @@ command.toggle.highlight.label = Toggle Mark Occurrences command.toggle.highlight.name = Toggle Highlight command.toggle.outline.sort.name = Sort command.toggle.outline.sort.label = Sort +command.toggle.outline.hideFields.name = Hide Fields +command.toggle.outline.hideFields.label = Hide Fields command.open.call.hierarchy.name = Open Call Hierarchy command.open.call.hierarchy.description = Open Call Hierarchy for the selected item command.open.type.hierarchy.name = Open Type Hierarchy diff --git a/org.eclipse.lsp4e/plugin.xml b/org.eclipse.lsp4e/plugin.xml index 2ad76b750..5b21300a1 100644 --- a/org.eclipse.lsp4e/plugin.xml +++ b/org.eclipse.lsp4e/plugin.xml @@ -90,6 +90,15 @@ class="org.eclipse.ui.handlers.RegistryToggleState:false" id="org.eclipse.ui.commands.toggleState" /> + + + + + + + + @@ -336,12 +351,30 @@ - + + + + + + + + + + + toggleHideFieldsCommand; + + public ToggleHideFieldsOutlineHandler() { + preferences = InstanceScope.INSTANCE.getNode(LanguageServerPlugin.PLUGIN_ID); + preferences.addPreferenceChangeListener(this); + + ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class); + if (commandService != null) { + toggleHideFieldsCommand = Optional.of(commandService.getCommand(COMMAND_ID_HIDE_FIELDS)); + } else { + toggleHideFieldsCommand = Optional.empty(); + } + } + + @Override + public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException { + OutlineViewHideSymbolKindMenuContributor.toggleHideSymbolKind(SymbolKind.Field); + return null; + } + + @Override + public void dispose() { + super.dispose(); + preferences.removePreferenceChangeListener(this); + } + + @Override + public void preferenceChange(PreferenceChangeEvent event) { + if (toggleHideFieldsCommand.isPresent() + && event.getKey().startsWith(CNFOutlinePage.HIDE_DOCUMENT_SYMBOL_KIND_PREFERENCE_PREFIX) + && event.getKey().endsWith(SymbolKind.Field.name())) { + try { + HandlerUtil.toggleCommandState(toggleHideFieldsCommand.get()); + } catch (ExecutionException e) { + LanguageServerPlugin.logError(e); + } + } + } +}