From ce64cb46e7d201e081c844447a0ac67af927c1ba Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Mon, 17 Dec 2018 14:01:24 +0100 Subject: [PATCH] adding turret --- .../diylc/components/connectivity/Turret.java | 164 ++++++++++++++++++ diylc/diylc-swing/build.xml | 2 +- diylc/diylc-swing/library/main.jar | Bin 428338 -> 431110 bytes diylc/diylc-swing/update.xml | 16 ++ 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java new file mode 100644 index 00000000..d19b3287 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java @@ -0,0 +1,164 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2018 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ +package org.diylc.components.connectivity; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Point; + +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.AbstractComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.BomPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.KeywordPolicy; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Turret Lug", category = "Connectivity", author = "Branislav Stojkovic", + description = "Turret terminal lug", instanceNamePrefix = "Eyelet", stretchable = false, + zOrder = IDIYComponent.TRACE + 0.1, bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, + keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = SimpleComponentTransformer.class) +public class Turret extends AbstractComponent { + + private static final long serialVersionUID = 1L; + + public static Size SIZE = new Size(0.16d, SizeUnit.in); + public static Size HOLE_SIZE = new Size(0.0625d, SizeUnit.in); + public static Color COLOR = Color.decode("#E0C04C"); + + private Size size = SIZE; + private Size holeSize = HOLE_SIZE; + private Color color = COLOR; + private Point point = new Point(0, 0); + private String value = ""; + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + if (checkPointsClipped(g2d.getClip())) { + return; + } + int diameter = getClosestOdd((int) size.convertToPixels()); + int holeDiameter = getClosestOdd((int) holeSize.convertToPixels()); + g2d.setColor(color); + drawingObserver.startTrackingContinuityArea(true); + g2d.fillOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter); + drawingObserver.stopTrackingContinuityArea(); + g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : color.darker()); + g2d.drawOval(point.x - diameter / 2, point.y - diameter / 2, diameter, diameter); + g2d.setColor(Constants.CANVAS_COLOR); + g2d.fillOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter); + g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : color.darker()); + g2d.drawOval(point.x - holeDiameter / 2, point.y - holeDiameter / 2, holeDiameter, holeDiameter); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int diameter = getClosestOdd(width / 2); + int holeDiameter = 5; + g2d.setColor(COLOR); + g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); + g2d.setColor(COLOR.darker()); + g2d.drawOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); + g2d.setColor(Constants.CANVAS_COLOR); + g2d.fillOval((width - holeDiameter) / 2, (height - holeDiameter) / 2, holeDiameter, holeDiameter); + g2d.setColor(COLOR.darker()); + g2d.drawOval((width - holeDiameter) / 2, (height - holeDiameter) / 2, holeDiameter, holeDiameter); + } + + @EditableProperty + public Size getSize() { + return size; + } + + public void setSize(Size size) { + this.size = size; + } + + @EditableProperty(name = "Hole size") + public Size getHoleSize() { + return holeSize; + } + + public void setHoleSize(Size holeSize) { + this.holeSize = holeSize; + } + + @Override + public String getName() { + return super.getName(); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @EditableProperty(name = "Color") + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + @Override + @EditableProperty + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } +} diff --git a/diylc/diylc-swing/build.xml b/diylc/diylc-swing/build.xml index 5da306c8..0cf3f168 100644 --- a/diylc/diylc-swing/build.xml +++ b/diylc/diylc-swing/build.xml @@ -7,7 +7,7 @@ - + diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index ffb425484832a1b9ca4d50641f0d74c58479beed..e970987c002b766fe9e7ae3601fc67c997ca0214 100644 GIT binary patch delta 10386 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 L=I#jR1MU9+zh1Jz delta 7695 zcmZu$30RiZ@_*OE$MUg*tb!top#tKDkb;&bAd3rv3P>i#BH~6OxKN0K$|B)Ot;9Cd zz%;)I{%Xxta=gOU;tBw9H)oGv|EI3orNY^XPo<{AT9NnKN_FoMXlN9v`ju zut|!O6)Qn72!e-HXVX`5m+FRAOKwu#319s8=K#q=s&^2>kUS$sA&HR!>qC25)bA3l z@bjQJ0?9*hGzW(vxgrNryBwnG?ANzQ5eRlj(Ofi;t|%vl`b^mpzjNimNVdw6NUq33 zkhm%XfV7NJwm2ZY?lMtE8s&akL2B9aj1lQ~!9k2KhV(YzxBt*F64E&l^^y^0Hr{g8 zJnylRApA-T+eEJo6NqC=WK<55d2hrzSCkz*IT9z-GC%V}^ryuy$Ax_lUyv=?q7ARy zQ;|>i5QN4sT5B(PVh~!+Et=W`h5N00mN~Lu(?M(e4tuXBb1->F8*^x2%UuiP2Yph@ zj2<|?iSbj;=2|faH$D?_xeXkQqVt?2FM2M880$kXS$%Zj0dw-<_cxf`YuCM*9rd?B zMhE=)ss(c{psqL^^#cjL^GNn&2I#po;@o2M_-8b+=PxnJ2B>MUQQTv+#0drea<{}l z?<9)@>61XwNHeDqgXtrG(GlfMUj&LjV$e-Z5n?9e7^B4RU66A#SXk&5+yQ?Wt3;)I;+9pZGp zVo47k4!q_n2!m+ZDaDIMPa}?W%MQ_+F3%#wWZNv>#)0=96TKZ#(dSz+la0ILf|$(L zD?IVdmcg3#0g)Shk8 z`#lBWwMcq(oZ?9vlcgS}tVzKqV{Vg z8`GoJ(ofvxf%bPN9u*byw#b?P zk(9#xJGDnDvV(dzjXEwJCM=)EJFUzPQw8C?4L#QcM(r060}aV1o~H3%p-2517qbMnQUW{ zyos5Knkd(^d7jUbw_37UH3YA#x-SYsu0mssd{&;Oy?L_46b{Uhmoq0L=gGN@vu%NV z+Ma2)8Nao78+OVL7rt;T9@Ptpi)mlE+{^+zyGGv1)UE1eAFO^;FqNP6VCpvtHovwL zmhmZ-uMtxZE+TfOUAyIdY^>amAJ_-st6t z-(@e{TueVbl6$e47!1lFf}9byilfZzJg9AvK7a`{s<^*AWm@f^oM2-nJ1YUKSc(G_ z59Urof5n$&foX{H4Rg6VN=awXt@DdQZjQ%YH7 zJ>9G<;??r`((_yXfL+`voLP4rNt<0eNRpkV) ziyGn`aD)iL1Uq&J;0b17vcI8RX3qWAp)6xR=H62RnRBn*R|d0Sw2JDNEC!n_)j7<% zrH%S8Hp$EODj#M=pc=?H+k;gr_G3?ox`YXb4OHEkdVGZX65||?R0lK8!%?c)-Dg#2 z##tM$vZ^yZPEbo2rzAz?5&1h+y~jMfovF^}5plkH`?YeIQi72m9lmL*6|GrA9B6c+ zN=!}9tJO>+Do5pMwmnbn!>qQ>SLZTcq8F(djMG?Zo}Ars^;f3#Xr+1NlGSQClM!px zVy0EPUiD?1H#e%s>@o5$>`h_@|?)mlaE2A*edP2GaM6Lhl?^dznJds5_Vs zm(HqoY@u$QSKAop?AK}nJBxbWQ0@DpSD`M%8G92tCYD4%i$u#}Ni=Mi^z&E}iu7JA z8G?BKI1+=jFpk6{JrqZtLu!a82}o1p$wV{Xi+&kT`r*fc1mZ=V#*?S;W8`=;4r$eR zlB7xAAI~KN63Da2oRdJ}kb>qIq*5Zm9*mAkBxy+BNF)=G-bp0cNYj$YG^BfzNIFuN zWRi+>ZZesQ^mHyTo|(ku0w;5P zg_&NM%=Lz+aJo5#%imAoa>-Np_{~#D4%&4~B^gK;o9Ta2IX)JfVrx@y#eZ+LgCOkp6NKSH=bv}VMtRfSS)?y^JWjNA8o{23 zUIq(NPzXoXO(!-qbUJZnmaZ@RaYTiSAVlXSumm?gLLzqW@%Mpwkj@&M9Epk3yDF%Wqc)be=C70Oold2zl=X@;Rc{3bYdY!)BUr+bo5&q!kR@# z7K|+yp7uNe36a&OyQR|oD9`HjAJpG`n(L>2E4tGBS?0J4RtbG1@FWgA3D*Vl;aQaL zL65jf7PN3Cv8RVFh!%9jY_n!(8!8ARb()FiyK6#=>ciYEeDj5ZaWLF1rMuGAuk}hH zIPtAB!SPk!=@C2n>r8@2^M)4yb-1IU2Kw|1e3hmmlJbWhv7q*k|DUy}%((Sl1Gw}Q zb|$)c2!vkE=MiwEpV~_X8b5<)j@>M<|AV0myv0f4QAM|xAnanJ!EXPP0Ls4ESpp0i z0bz%-(f+(s_C{|_&4MQOmmFBc(Q0TmSiR9l4_ncqY=Uh*twZ>FkRGq-38e=o3MI4fXKZu8q!azjlM4evSplx^w7qsMCAQh9D%l; z&|@zWXLRr)B2|ktqz}so?IHjt_0w7$1lWgSmT98=Zb0E~&_i>fF$c`eDAUV0(y!+8 zC3=8x?ivn<jfu2c+OT3ntTPpU+2usja`&3<&qxE z`GT9tPaI$g`+@U)b@CnCy2yv*@wAN3gW<<~phqm|x;$7SIBvHheCR+IxZt>C`9HbS zd4=h||1Cd?y1q0tp9J7^Q}e+fIf2YR^w4=|xp&Sp&(v?wbKy_mzOmk^`+lo@hw`J@ z{7%%AHf)A&js$6#qL1-`v!VulapE%H%`7kpW8J-U25^U3H@mv@=$h`~l`CNic zHNAvLnI}iw3yC}Pq@lRMX)CBJq$weOof#;=#JXxy>!N?DOi1^Zzg(R36 ziLR;o>8Kq<)35tUsmM=e@9AN0ph;rfQ>WgD%)zDMNt4379N;L(U!0L&pX zk?BK!o&!^Ko5Q`ULBy2JkpT;d9sPa*U)4K^_~mFwFB~^{AzClyOt_CS=5A#Ex12LO z7Lp*8bXx?>iq#s^g(lR?4%#+RiSV|y8thC9s7z@4BJNfP!X58%7%r~tkbkZSnAf&* z=Ejd@BTapti#H;2_CwmMm;_L`y1LW0I*wSs1jw*G97%kM;1!e>AoH||Ggp2l+iB5j zMdahdi1efGi+LnM76Y@_XPjBQm{0n3WX2umOzU%C!z$Ihf}NLOK?v2Y;PO)_&${QV zV$dIbgI+Br!E{HldFMJVpL@0yD)nuse|`RE{ehy-_+X!Mc=@!V|3Vsn4QZ?|sB+ql zo)<3R^-;A1200+puu_Q2*(H4Tw~%?3a3)-=;i0RX2P?S*kgqH`vdUSp)#9=nk$avT z`7l7S@7yfHVh1{W2V2(j(C+BZOb0)dk7N-q1^w`T_}!P@9-?&SYbzpF1G(j6QQ!?8 z6|B%!FO)y8g=r3gY3kdtoCun{ls8eEmx6xsNV4eD>yU!TY4437aebleJpPn~qe3P7w1x*)q&5GUsSihmD% z(;qhF2CyEf%c@VyyU4qg@sb}<29_dMbwQSu5f}Cta^G*rN#6}P;{LZZ+(=h6!$dmD zcq%+Z_0V@Um^B_*F9UP&ryA3SjyS1U(NACo==_%m|9-d&?EZ?mf?ffn;aiR*UR7LK zDA}|+UpTt=c^Q{c-i;o)uMi4v9!{NmeR3@W0&D z5F@QF=e5ubi0Dim%3)u8LV*NH8_m^gf(CC$XZ%SVY zL%2TSNO}cvrQ28XxgQ2ZTuFPagbO1BtSihnCg&;cZ%u?7S|}u={uoaq^yn&RaYJp? z9&|y4*(Ha!xBIli>Td_P^e#R0;_~N$RSUW^P_<(n1+GbZ1^DIPOM_i#fw>bKwhE9i ze?*4Tb*s$x&#G5b27LyRJqZV}KFgW|QItIw*sKQClLPR(7hM{mdeO!jbIsH80(LJxtZW8jIt`hOp;$-8Klc2_HL<&R;SOCD>% z(!LCuwT}4FxjCvca|zdXDI)$^8e*f3eg%=Z7ZC}Ahilc)8QLG;i#Tt@E(;b(e|{Xy zMS0$3TKIX_dcuaY22xHRHm~`7ytr!U#o9~FrqLa%Y8Z6QLJelyMm{o&OOV-{hE%9N zn)eqF`D>|$K*raYll|W1i_N`Y^fzGiDBX6qbS0PHxgO&1Fr>@qJ8Qt){Z$<9s38Gt z(L(Nh)l_6J2#@``mzf96s)4G!oj??tR7-dZ8f*ON=wukUH{6Bw70?ck0Cn*8v#XZi zLmh3ah2g5<{*O$2Euz|mIMTjXb?V&j)@H3t{~AvC%Z_kA(akH%g!02t z{}$+r%jvE<(v!m5p+o2S@`r=b4*!E@8=Q;!YjNr^RQE=CE4p?)ab?-oU^}$19^}(O zUVrB0oaiF|^Lldw@^{hwHw@5x3=Dv)x6ZxTQ<}Ub9aGOII<=m7$(t^#GzK0m>AHHp ft2QCG$%-J?pWdz~2HWGpabfy6K{zrJ%18J=Iw=J- diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index caacc451..f0c793cc 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1928,6 +1928,22 @@ https://github.com/bancika/diy-layout-creator/releases + + + + 3 + 42 + 2 + + 2018-12-17 00:00:00.000 CET + + + + NEW_FEATURE + Added "Turret Lug" component + + + https://github.com/bancika/diy-layout-creator/releases