From 39051c4adbf91fbff26dcd837a3e939708f603be Mon Sep 17 00:00:00 2001 From: Ken Ryall Date: Mon, 7 May 2007 03:42:24 +0000 Subject: [PATCH] Added build toolbar button discussed in bug 154280. --- .../icons/dlcl16/build_exec.png | Bin 0 -> 870 bytes .../icons/elcl16/build_exec.png | Bin 0 -> 3539 bytes core/org.eclipse.cdt.ui/plugin.properties | 4 +- core/org.eclipse.cdt.ui/plugin.xml | 13 ++- .../actions/BuildActiveConfigMenuAction.java | 99 ++++++++++++++++++ .../cdt/ui/actions/BuildConfigAction.java | 50 +++------ .../actions/ChangeBuildConfigActionBase.java | 6 +- .../cdt/ui/actions/ChangeConfigAction.java | 66 ++++++++++++ 8 files changed, 198 insertions(+), 40 deletions(-) create mode 100644 core/org.eclipse.cdt.ui/icons/dlcl16/build_exec.png create mode 100644 core/org.eclipse.cdt.ui/icons/elcl16/build_exec.png create mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/BuildActiveConfigMenuAction.java create mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java diff --git a/core/org.eclipse.cdt.ui/icons/dlcl16/build_exec.png b/core/org.eclipse.cdt.ui/icons/dlcl16/build_exec.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d8adc93f5ca67f105a47c55296826972f11684 GIT binary patch literal 870 zcmV-s1DX7ZP)00009a7bBm000XU z000XU0RWnu7ytkO1ZP1_K>z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;+(|@1RCwBAT()#611lTbe00960 zVqCp?^?wEi21b_OzkX@(|9Hp<00030|6*Lddi8%56%~eO=e9F4FfcH%{QmWe@!7fU z3{1?-|7FDm82|tP0RR7Dgqgy?z`)4Bz`($ytfKN?R8*AV_pe_JT%T?;usnM7h(VhD z1A`RPr~h9W7#Nv;|N6!F{`G4{bsb#>1_p+$00000|NlJ9ArFE;06^h)4w->LusJt_ zgp`?Er;cjg%KGLV1wPc9R+>)+xtJ1QfRFKaMqSU1rQv=&`T*X#&AtMOV_Zh zu43=ttQGIN7V|WTq5TwTmUF*dd>oxTa1MSlSsQ?temn*61xBFXs2+PAf}sG6o=QnH zep+JbK$04HaQi!Kf>;^Gt3M^JEfk`4|* zY87muLWk5^(@5`4%ynr%i)a1#;X5C{an)>QLD?4K1>m<9K&#dIq@1wOwN=cfgtPotMpV2AM;2(0aQkTB( zqm*JW7|?$7k4Bw4w%0ATHeEK{)x(9n(7@UJapr6R`@k*mRGjuq3?nI5DioITL?1)s zSH$}`ViHX+W=$fqUateBz&$VoaFVeGjz>YDO*`+ETo=R8*g4JeqO+?F8d4?Sx%n!y w_sckW>%Hzhw>uO{F2yw$({Ye826*@x0F(q8r(I*MRsaA107*qoM6N<$f>}>_RR910 literal 0 HcmV?d00001 diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/build_exec.png b/core/org.eclipse.cdt.ui/icons/elcl16/build_exec.png new file mode 100644 index 0000000000000000000000000000000000000000..c0272bb5d88fc2871e41567c03d9a7c450e5d722 GIT binary patch literal 3539 zcmV;^4J`7BP)00009a7bBm000XU z000XU0RWnu7ytkYO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C0`N&hK~#9!V)XL#WZ>c9`On0_z#y1p_>BPo00960Vhjrn z{m;O_z{v9D%NGr~4+j_l00030|6&Xa4gK%t?#^&#ZZ0DO0|NuomoHx!&&OV|NmlynZm%p08!!L>G@w%ON-&lmoE%LPqr|y965ZL!HoAFgDLZq|1TLB z7@59&`NDYT`ZY%X=x7E828OKw00030|AL#5l$^{kZ|+=Q1!bOk+Xz!@Jk7`2Vnrd=!z9XVCuiJrhNefq~)EvYAt-FfcIW zFfcGQ1IQ$QUk1Ve3_p5}P+!ti1OwNBCJYuynG7``7Gm-T=wPxp2BL|PnCfq^laO36 z++gY=PSa9St`13?UiF9TeWpte&-M=Q@Vt5bON|L3@&JAuGGFfdIMP17iw=CTmt%-iNKK|pRKlSnDibsg7rsnu$99EWjfoVH8leIV7(f0Sr6 zI+V-h;;O2W&1TWBwQcwIWPW{ViU~EsKuDQuG+I0LW?KLk{<7yB1U7+l;9jj - - + 0) { - for (int i = 0; i < configs.length; i++) { - if (configs[i].getName().equals(fConfigName)) { - configs[i].setActive(); - CDTPropertyManager.performOk(null); - AbstractPage.updateViews(prj); - break; - } - } - } - } + super.run(); + buildAction.selectionChanged(new StructuredSelection(fProjects.toArray())); + buildAction.run(); } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigActionBase.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigActionBase.java index 6667089b2b6..1246670f8d6 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigActionBase.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeBuildConfigActionBase.java @@ -122,7 +122,7 @@ public class ChangeBuildConfigActionBase { builder.append(" (...)"); //$NON-NLS-1$ } - IAction action = new BuildConfigAction(fProjects, sName, builder.toString(), accel + 1); + IAction action = makeAction(sName ,builder, accel); if (bCurrentConfig && sCurrentConfig.equals(sName)) { action.setChecked(true); } @@ -133,6 +133,10 @@ public class ChangeBuildConfigActionBase { } } + protected IAction makeAction(String sName, StringBuffer builder, int accel) { + return new ChangeConfigAction(fProjects, sName, builder.toString(), accel + 1); + } + /** * selectionChanged() event handler. Fills the list of managed-built projects * based on the selection. If some non-managed-built projects are selected, diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java new file mode 100644 index 00000000000..85501d61b5b --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2006, 2007 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Intel Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.ui.actions; + +import java.util.HashSet; +import java.util.Iterator; + +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.action.Action; + +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; +import org.eclipse.cdt.ui.newui.AbstractPage; +import org.eclipse.cdt.ui.newui.CDTPropertyManager; + +/** + * Action which changes active build configuration of the current project to + * the given one. + */ +public class ChangeConfigAction extends Action { + + private String fConfigName = null; + protected HashSet fProjects = null; + + /** + * Constructs the action. + * @param projects List of selected managed-built projects + * @param configName Build configuration name + * @param accel Number to be used as accelerator + */ + public ChangeConfigAction(HashSet projects, String configName, String displayName, int accel) { + super("&" + accel + " " + displayName); //$NON-NLS-1$ //$NON-NLS-2$ + fProjects = projects; + fConfigName = configName; + } + + /** + * @see org.eclipse.jface.action.IAction#run() + */ + public void run() { + Iterator iter = fProjects.iterator(); + while (iter.hasNext()) { + IProject prj = (IProject)iter.next(); + ICProjectDescription prjd = CDTPropertyManager.getProjectDescription(prj); + ICConfigurationDescription[] configs = prjd.getConfigurations(); + if (configs != null && configs.length > 0) { + for (int i = 0; i < configs.length; i++) { + if (configs[i].getName().equals(fConfigName)) { + configs[i].setActive(); + CDTPropertyManager.performOk(null); + AbstractPage.updateViews(prj); + break; + } + } + } + } + } +}