From c6dcfe71a1aeb14ab280437be1da53e65b4a0a20 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Wed, 18 Oct 2017 18:07:07 -0600 Subject: [PATCH 01/32] Arreglo barras de desplazamiento --- src/org/tec/datos1/flow/parts/DiagramView.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index ed39672..0a7895e 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -10,6 +10,7 @@ import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.tec.datos1.flow.graphics.If; @@ -22,14 +23,12 @@ public class DiagramView { @Inject public DiagramView(Composite parent) { + ScrolledComposite container = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); + Canvas canvas = new Canvas(container, SWT.NONE); + canvas.setSize(1000, 1000); + container.setContent(canvas); - - //Todavia no funciona el scroll - ScrolledComposite canvas = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - canvas.setExpandHorizontal(true); - canvas.setExpandVertical(true); - canvas.setBackground(new Color(Display.getCurrent(), 255, 255, 255)); canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { From 4a9b488841cadc16f1ff5efbee9014d47080d931 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Wed, 18 Oct 2017 23:04:06 -0600 Subject: [PATCH 02/32] Funciones para actualizar el dibujo de acuerdo con el metodo --- .../tec/datos1/flow/parts/DiagramView.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index 0a7895e..af92375 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -21,29 +21,28 @@ public class DiagramView { + Canvas canvas; + //Variable con clase que se va a dibujar + @Inject public DiagramView(Composite parent) { - ScrolledComposite container = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); + //Aqui debe llamar a la funcion de AST y pasarle la referencia a esta instancia - Canvas canvas = new Canvas(container, SWT.NONE); + ScrolledComposite container = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); + this.canvas = new Canvas(container, SWT.NONE); canvas.setSize(1000, 1000); container.setContent(canvas); canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { - Rectangle clientArea = parent.getClientArea(); - Method metodo = new Method(e.gc, "System.out.println(\"Hola mundo\")", clientArea.width / 2, 20); - Process process = new Process(e.gc, "x = 1", clientArea.width / 2, 100); - Line line1 = new Line(e.gc, metodo.getOutput(), process.getInput()); - If condicional = new If(e.gc, "a <= 1", clientArea.width / 2, 200); - Line line2 = new Line(e.gc, process.getOutput(), condicional.getInput()); - While ciclo = new While(e.gc, "cont <= 100", clientArea.width * 2 / 3, 400); - Line line3 = new Line(e.gc, condicional.getOutputFalse(), ciclo.getInput()); - Line line4 = new Line(e.gc, ciclo.getOutputTrue(), ciclo.getInputReturn()); + //Codigo donde que indica que se va a dibujar } - }); - + } + + public void draw() { // Recibe la clase que se va a dibujar + //Guarda la clase que se va a dibujar + canvas.redraw(); } } From 174dd09137d98d797c87a840fe7873d02d309312 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Wed, 18 Oct 2017 23:17:29 -0600 Subject: [PATCH 03/32] Nueva vista para el explorador de metodos --- .DS_Store | Bin 0 -> 6148 bytes fragment.e4xmi | 1 + src/.DS_Store | Bin 0 -> 6148 bytes src/org/.DS_Store | Bin 0 -> 6148 bytes src/org/tec/.DS_Store | Bin 0 -> 6148 bytes src/org/tec/datos1/.DS_Store | Bin 0 -> 6148 bytes src/org/tec/datos1/flow/.DS_Store | Bin 0 -> 6148 bytes src/org/tec/datos1/flow/parts/DiagramView.java | 2 +- src/org/tec/datos1/flow/parts/ExplorerView.java | 15 +++++++++++++++ 9 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/org/.DS_Store create mode 100644 src/org/tec/.DS_Store create mode 100644 src/org/tec/datos1/.DS_Store create mode 100644 src/org/tec/datos1/flow/.DS_Store create mode 100644 src/org/tec/datos1/flow/parts/ExplorerView.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a9c43fa288f9e73bc7e729b04879f6507d84456d GIT binary patch literal 6148 zcmeHK%}T>S5Z<*_w-vDm!5;VGt%sDTJqe-KgEt|f2bDH4#Rh6pn$(~*lGo5T@(Fw$ zXLh$@u?J5gb_RC8nVp&4%m>*Y#u#r;f+k}%#+ZPH$Wd7!IK0rcVuBGl&XJ7#VeEtT z=8uf;uLFL2i6v~zZv5=)_YcD)wXAo(QYx>mtqV~V)y?X)JBTwk_0mbw_QscJoqFlO zH~Lu|4?lI!KM(s^x3+y0N2wP^{jo|8gFb{@U4&5(XYF_r1&Nx+)ea#lqSCF^r&HVB zZ%Es=@`jwYT2@2u*#~)E5j(rh!;{|K!{hWRe}2*Ya-d(ymcbdkf?~?McgN8%j&5OO z7Cnn1BnF59Vt^P}DhA9kAU2k&YATi(AO?QI0PYVG8lq#c(5SW!=iI4bT5$_+=J8^5;{?A_j(gEorpa`Lk82AMSJ^*6MPt*Va literal 0 HcmV?d00001 diff --git a/fragment.e4xmi b/fragment.e4xmi index d9cb52a..b8336df 100644 --- a/fragment.e4xmi +++ b/fragment.e4xmi @@ -5,6 +5,7 @@ View categoryTag:Sample Category + diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f5a328d57f20a91d719d054936d82b6038f74676 GIT binary patch literal 6148 zcmeHK%}xR_5N-vvV2m70opjwFvbKlM2^Z5!QrK@H5-h`agOOY7^wiP zw_t32e;x4K3rw*I8wB&O-#-ecalQV|*9yh;jZGoSqP$(c^@eKh#eO`Sw*1L8TIYT| z46J^k)aX<9gUhf#?^JeAR22JR)Su|&u-Au>o2xMDsd-DyqTW=`;~9q#B~j{Bs!8HF zhc)Rq^|U6FX0u+C2hLHNmc-tEzZ*|C_zD=4(#E+KGlM3balJCkV^_`}FI=w<<5Gt+?i!??7$61~ z87LUDg6ID!{4z@)`HLxJ5d*})KVyIw+g`f`McK3UTX}faN@!hZC>WQa0s{KNB>)WE gN2=Os{1SDDb1h~DaTXlc>40<*(1cJ&4EzEEA7ZLc)Bpeg literal 0 HcmV?d00001 diff --git a/src/org/.DS_Store b/src/org/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b68777e499d4fadd6ab419e66bd0f2e8c09800ec GIT binary patch literal 6148 zcmeHK%}T>S5Z<*_w-vDm!5;VGt%sJVJqaP!gEt|f2bDH4!3Jtln$)7PlGo5T@(Fw$ zXLh$@u?J5gb_RC8nVp&4%m>*Y#u#_TL5r~(V@yCpM3yt6b;W`yir*iYe;5r?~rHQi*78-Rr<7#D?$E-Yiyl}NTj7t^HxUG?TVt^Q! zXP~6b8lL~h@XIWG(gEorpa`Lk82AMSJ^)6HPrLvC literal 0 HcmV?d00001 diff --git a/src/org/tec/.DS_Store b/src/org/tec/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..54c04aada01a7a10f1ef87bc73b18761a06fb291 GIT binary patch literal 6148 zcmeHK!A=4(5N!dmV2m70IV{kze5N zIMWsqf*!mWBQweLO{X($`gYT48DqRP4jYVB7-IqyF;{}-3&C;J70Fo-BG+>ytPxC- zVK7j^N;EnCA_MsCiY#P4OPONJ-|syb4x%Kj*FShJU)U&a3Q-p2?eeYHR}(Mw({a-B zN7vXp_tSo0?F*#_3)>Gaqu!)b**#Hl>PK;Jq?4nt2O&3CQ5>pCOO4|&(erp_K!}nk zbt={A)Nu}L(sAmunw&P9^_o0zj%Krx*xPR$pLOpapQg{Vmsi6qho4Z(j>S2=fw8p7 z2X7P)RD1{idCokRkQg8ah=Da=z#e^KYYp~FTO&oV^)=JPWCT`1E=r1WMOX_)8zm5n&<3#VcBf^-veWEtsZeYB z3SMgB1NaQQfIfj&#z)W>F!9V!0WETAjLu1BzBA`%X6M`NoE?M^&NrPIgmi?E2904X z0o^&m{H*oKfV2z(Vm61}3LCaZZ5V&-i&h53fMVcpV}O0TF;qhyqNsKD`?VXM8%Eje zCp<71yL5R-(-K-@B(YuGrLAIQMa?j81)FTNYDK%Y)YmBWPISv&cS)8_y5SOIH9=rwRWP@(?Kps%|xVOPCy58GjJTZJ_o?LBecZOHd-Z@l>>~AOkoTHovmUrkv0+tRzg~*Si>T-xk%~U{OXySL zJU=z99X23l;?%&Wdl(Sn^Z8b4wU9)mGkUqAC&Ow$J#UqUZsbzGycGiNg^27I{2GN7 z4}j*C26Kh$BnScfa!T8tWfO13&(kQP`(-N#EWb|jhb6a4eevW;J}nGa1Hz`vEPN9z zX3S?M*D~fEVbM`WC{P-79N%)Rh%8gbt+~X>m>a?uhq5t+?xSV2j`q+IdX3(p_vjdX zK%dc9^c@dj9pA!Jcoxs&1^fsX@MHW0mocj!AOpQudQ*&hJ+6Xw@=6bif$vej4z^x= zFHqsd3`oAT;fuqRS23U%_zxLi=Ys)_p((K|kRKh;@hbpe49r|WXLkvfV@Nb5b_Ie5 z1dCKak&5LN1B-O98#2z6*cB+!5#}qyJaT0$Zz!0r4t9fwBWwy(y<$Ky@G}GK-ycM0 z_5T5U!@s%z^B~nJ1{4GTCIdLOR9wo#-ehg<+a;^D2DBY$Ojul3AWwl#mSe84Qk;gy b1$+im08NQqfnWhqKLVTv)hP!4C<8wLcw^8U literal 0 HcmV?d00001 diff --git a/src/org/tec/datos1/flow/.DS_Store b/src/org/tec/datos1/flow/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b6de6395db66099e14e99c0bdee973bbfdeb0b95 GIT binary patch literal 6148 zcmeHKQA+|r5S~q~)rfou@^N2!^FcYwr{FMq=q!`y2I-`UU-+ zW_H)mEC_;-+=1C|c4udg`CxZ$0D#qotujC!05~dPI)}p-LVnT(S<@?NL?+MZf)6(k zd84Smu-hyc1`Gqs#sJ-24jmYP3w@Zmzg{o&(D&-~dwvv`N^fi}mCmehaGvA2t=zTK z4M$Gw#>1%Q4lZeS>c(A9+h<|e`>`JJOMh+RKu4`i_4YU7rx3qNRuqgpr& zT9G`*Q4Y?tJln_@#$(IcFAB>lO^RY%t(JYuctK+!(K}}l^unNnK8njA1ujw%t0!!!D5wwxNu@1N1%!R6<*0qEJ2^ILHFwa0rP4iU$kH7E#=Y!15Fkl$? zR}8Rp-Kp0wC0$z=lA~HHP@AYEv@cO8LvYaLSQ=D{3#d}iC&)mwH6{vi1;zXbNE*yw J82D2L-T{zXmTUk3 literal 0 HcmV?d00001 diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index af92375..d7b70e7 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -36,7 +36,7 @@ public DiagramView(Composite parent) { canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { - //Codigo donde que indica que se va a dibujar + //Codigo que indica que se va a dibujar } }); } diff --git a/src/org/tec/datos1/flow/parts/ExplorerView.java b/src/org/tec/datos1/flow/parts/ExplorerView.java new file mode 100644 index 0000000..3609ee6 --- /dev/null +++ b/src/org/tec/datos1/flow/parts/ExplorerView.java @@ -0,0 +1,15 @@ +package org.tec.datos1.flow.parts; + +import javax.inject.Inject; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +public class ExplorerView { + @Inject + public ExplorerView(Composite parent) { + Label label = new Label(parent, SWT.NONE); + label.setText("Prueba1"); + } +} From eaa59a37e5ec6f439adc165c124e7c0f13d3b7b8 Mon Sep 17 00:00:00 2001 From: m-herrera Date: Tue, 24 Oct 2017 08:17:10 -0600 Subject: [PATCH 04/32] =?UTF-8?q?[NEW]=20Obtener=20n=C3=BAmero=20de=20line?= =?UTF-8?q?a=20del=20debugger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tec/datos1/flow/debug/DebugListener.java | 5 ++- .../tec/datos1/flow/debug/DebugStepper.java | 41 +++++++++++++++++++ src/org/tec/datos1/flow/handlers/Handler.java | 20 ++++++++- .../datos1/flow/handlers/MethodVisitor.java | 7 ++++ 4 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/org/tec/datos1/flow/debug/DebugListener.java b/src/org/tec/datos1/flow/debug/DebugListener.java index 2b58f3f..add27bd 100644 --- a/src/org/tec/datos1/flow/debug/DebugListener.java +++ b/src/org/tec/datos1/flow/debug/DebugListener.java @@ -29,12 +29,13 @@ public int breakpointHit(IJavaThread thread, IJavaBreakpoint breakpoint) { DebugStepper.setDebugThread(thread); + ILineBreakpoint lineBreak = (ILineBreakpoint)breakpoint; int numLinea = 0; try { numLinea = lineBreak.getLineNumber(); - ASTStorage storage = ASTStorage.getRoot().findLine(numLinea); - storage.print(); + //ASTStorage storage = ASTStorage.getRoot().findLine(numLinea); + //storage.print(); //storage.print(); }catch(CoreException e) {} diff --git a/src/org/tec/datos1/flow/debug/DebugStepper.java b/src/org/tec/datos1/flow/debug/DebugStepper.java index b9c0921..1af7efd 100644 --- a/src/org/tec/datos1/flow/debug/DebugStepper.java +++ b/src/org/tec/datos1/flow/debug/DebugStepper.java @@ -1,8 +1,10 @@ package org.tec.datos1.flow.debug; import org.eclipse.debug.core.DebugException; +import org.eclipse.debug.core.model.IStackFrame; import org.eclipse.jdt.debug.core.IJavaThread; + public class DebugStepper { private static IJavaThread debugThread; @@ -14,14 +16,26 @@ public static IJavaThread getDebugThread() { public static void setDebugThread(IJavaThread DebugThread) { debugThread = DebugThread; + } public static void stepInto() { try { + + debugThread.stepInto(); + update(); + +// Thread p = (Thread)debugThread.getThreadObject(); +// +// System.out.println(p.getStackTrace()[0].getClassName()); +// System.out.println(p.getStackTrace()[0].getMethodName()); +// System.out.println(p.getStackTrace()[0].getLineNumber()); + } catch (DebugException e) { e.printStackTrace(); } + } public static void stepOver() { @@ -32,6 +46,33 @@ public static void stepOver() { } } + public static void update(){ + + try { + + IStackFrame Frame = null; + + + //solucionar... + while (Frame == null) { + + //auxThread.suspend(); + Frame = debugThread.getTopStackFrame(); + //System.out.println(Frame); + } + System.out.println(Frame.getLineNumber()); + + + + + + } catch (DebugException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + public static void resume() { try { debugThread.resume(); diff --git a/src/org/tec/datos1/flow/handlers/Handler.java b/src/org/tec/datos1/flow/handlers/Handler.java index 6892f02..40bbee9 100644 --- a/src/org/tec/datos1/flow/handlers/Handler.java +++ b/src/org/tec/datos1/flow/handlers/Handler.java @@ -44,7 +44,7 @@ public Object execute(ExecutionEvent event) throws ExecutionException { return null; } - private void createAST(ICompilationUnit IcUnit) + private static void createAST(ICompilationUnit IcUnit) throws JavaModelException { CompilationUnit parse = parse(IcUnit); @@ -53,6 +53,15 @@ private void createAST(ICompilationUnit IcUnit) parse.accept(visitor); } + + public static void createAST2( String IcUnit) + throws JavaModelException { + + CompilationUnit parse = parse(IcUnit); + //ASTStorage.setCompUnit(parse); + System.out.println(parse); + + } /** * Reads a ICompilationUnit and creates the AST DOM for manipulating the @@ -71,6 +80,15 @@ public static CompilationUnit parse(ICompilationUnit unit) { return (CompilationUnit) parser.createAST(null); // parse } + public static CompilationUnit parse(String unit) { + ASTParser parser = ASTParser.newParser(AST.JLS3); + parser.setKind(ASTParser.K_COMPILATION_UNIT); + parser.setSource(unit.toCharArray()); + parser.setResolveBindings(true); + + return (CompilationUnit) parser.createAST(null); // parse + } + } diff --git a/src/org/tec/datos1/flow/handlers/MethodVisitor.java b/src/org/tec/datos1/flow/handlers/MethodVisitor.java index 40fd6af..c195d50 100644 --- a/src/org/tec/datos1/flow/handlers/MethodVisitor.java +++ b/src/org/tec/datos1/flow/handlers/MethodVisitor.java @@ -139,7 +139,14 @@ public static void addChildrenAux(ASTStorage parent, ASTNode child) { ExpressionStatement Expression = (ExpressionStatement) child; + + + try{ + //System.out.println(Expression); + Handler.createAST2 (Expression.toString()); + System.out.println("____________________"); + MethodInvocation methodInvocation = (MethodInvocation) Expression.getExpression(); ASTStorage MethoInvocationStorage = new ASTStorage(methodInvocation, parent, methodInvocation.toString()); parent.addChild(MethoInvocationStorage); From a1d04d8b64183a297155dc2057822402e3457c77 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Tue, 24 Oct 2017 22:24:00 -0600 Subject: [PATCH 05/32] Implementacion de la interfaz Widget La interfaz Widget ayuda a minimizar los tiempos de renderizado del diagrama --- .DS_Store | Bin 6148 -> 10244 bytes src/org/tec/datos1/flow/graphics/If.java | 30 ++++---- src/org/tec/datos1/flow/graphics/Line.java | 6 +- src/org/tec/datos1/flow/graphics/Method.java | 63 ++++++++-------- src/org/tec/datos1/flow/graphics/Process.java | 45 ++++++------ src/org/tec/datos1/flow/graphics/While.java | 68 +++++++++--------- src/org/tec/datos1/flow/graphics/Widget.java | 7 ++ .../tec/datos1/flow/parts/DiagramView.java | 27 ++++++- 8 files changed, 142 insertions(+), 104 deletions(-) create mode 100644 src/org/tec/datos1/flow/graphics/Widget.java diff --git a/.DS_Store b/.DS_Store index a9c43fa288f9e73bc7e729b04879f6507d84456d..880a577694fb17b3ea883e6212ba90c97d2d9043 100644 GIT binary patch literal 10244 zcmeHMU2GLa6h5adus>k;0{!Lh>O}l-&hMAgL$>7y)z#NAFTY^H!bOs#NXioBSlbDAq%F{c zte?`oqpZ}b2Pe{DzTI{0sl1*(Y?&i{+VV!%33SUbJ#K6nCN=5lv>d}7Nx50a@OeLN zqC%2nN$%5%$HpG2tBlue9zR`S z9-C~VYr9^`&YDLDJj-Ys(leGb&=r`cgEs4o*{3a?)%1{Q^xjgnj}B3r<+l{PyM3N% zI=sJ@{(j#Ky85(2KjXQ!-Rk;QV7X5BwA$_-pI~na%)ut7-=z_U3Fej|*33U_dOpcH z_FczpJ#E@8PRb1ecd%RcJlz>EQ=?s0#&yKZ3wgIxZ1qgmWn$+q0?tITBgu1#E}VV;*;)RnoRgv1QVX{@#V;YM-mly^3_sNZ17TDGK3`wu90 zM2R7J%jG^TmeK7@)+T>;**3$)@65P%cF^&s*7%6;dI7B)DW{>QWqtFINru+2xtq*= z!bLj2qS&q=?0(;6%6XXH3T+5*?urzzGC|vY5I;U3DibNlQpw*|c>kYXzf|u|n;hHE~s$u_D?>lFVz?##QwwTdPLT zq|}fkF{uq|g{h4;6|**8r+84iF!M*k!aV9E!c`3*o%FrV;WE3DfBSFERN%o_!K^i z&*5u$4lm&Qco9FqkMUFd3_r)O@N4{DOmK>@&7z!3@do8)5;lxNdA+wK?4G^*?iOLc z4ddVPqT)4cH&oTuH>9Q(a@P7yClY6lpa!Q*juLzYXK<16xqQV+MeQJFnWtxe138v! zix`Kb$#UX{das(0h%H)JT&J#=h|*df@9V(|RnhW^y)rLutX5QQ0TET=#kx(3q7@L6 zMeWvYRJ)KkD{6P_q*`F#n#@O1)~T}mZ}|5PT%f>qnV5GCuES0E5q^cgh;s`m#FY}` zR^e(~gX?hvg}X|u!Yx=IvTrX1zWqG#bzmn2zaw}Q4eTfWS@;P0#J>?djidNDK0z#e z8lS;e@Kw&lxAFWe-ZkYICnR2&$-Ch;&#_%+fV3>M=7SF&WTsu(U(K=cZf*LdV`H_o zn=0eAwbg9f-?D|a{kq!CbGH3ALI-m@#O!VV&0Frxa#|QhX@o$8K!iYqK!m`2MIc`| z9%uLed+z-I|9pif@;gFcULb%4yW4iB$kp7B>DgYhyY@J}$LVDcYd0YzH=%?zVS0WY yPX%@z&u@xI7oOgEeKKq}AtW~^J8n)=+~)u1e+ES7e|}MU+Y77c{68|od&&ohS^0CGJQ A3jhEB diff --git a/src/org/tec/datos1/flow/graphics/If.java b/src/org/tec/datos1/flow/graphics/If.java index 939c845..8fa0ae3 100644 --- a/src/org/tec/datos1/flow/graphics/If.java +++ b/src/org/tec/datos1/flow/graphics/If.java @@ -7,41 +7,36 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; -public class If { +public class If implements Widget{ String text; Point input; Point outputTrue; Point outputFalse; GC gc; Rectangle focus; + int[] shape; /** - * Constructor para el gráfico de un condicional - * @param gc Graphical Context en el cual se dibuja + * Constructor para el gr�fico de un condicional\ * @param text Texto que va a contener el condicional * @param input Punto de entrada del condicional */ - public If(GC gc, String text, Point input) { + public If(String text, Point input) { this.input = input; this.outputTrue = new Point(input.x - 30 - gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); this.outputFalse = new Point(input.x + 30 + gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); this.text = text; - this.gc = gc; - int[] diamond = new int[] {input.x, input.y, outputFalse.x, outputFalse.y, input.x, input.y + gc.stringExtent(text).y + 40, outputTrue.x, outputTrue.y}; - - gc.drawPolygon(diamond); - gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + 20); + shape = new int[] {input.x, input.y, outputFalse.x, outputFalse.y, input.x, input.y + gc.stringExtent(text).y + 40, outputTrue.x, outputTrue.y}; } /** - * Constructor para el gráfico de un proceso - * @param gc Graphical Context en el cual se dibuja + * Constructor para el grafico de un proceso * @param text Texto que va a contener el proceso * @param x Coordenada en x del punto de entrada del condicional * @param y Coordenada en y del punto de entrada del condicional */ - public If(GC gc, String text, int x, int y) { - this(gc, text, new Point(x, y)); + public If(String text, int x, int y) { + this(text, new Point(x, y)); } /** @@ -52,14 +47,14 @@ public Point getInput() { } /** - * @return Punto de salida en caso de que se cumpla la condición + * @return Punto de salida en caso de que se cumpla la condicion */ public Point getOutputTrue() { return outputTrue; } /** - * @return Punto de salida en caso de que no se cumpla la condición + * @return Punto de salida en caso de que no se cumpla la condicion */ public Point getOutputFalse() { return outputFalse; @@ -81,4 +76,9 @@ public void execute() { public void end() { this.focus = null; } + @Override + public void draw(GC gc) { + gc.drawPolygon(shape); + gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + 20); + } } diff --git a/src/org/tec/datos1/flow/graphics/Line.java b/src/org/tec/datos1/flow/graphics/Line.java index 76b6139..e245f7f 100644 --- a/src/org/tec/datos1/flow/graphics/Line.java +++ b/src/org/tec/datos1/flow/graphics/Line.java @@ -7,10 +7,12 @@ public class Line { Point start; Point finish; - public Line(GC gc, Point start, Point finish) { + public Line(Point start, Point finish) { this.start = start; this.finish = finish; - + } + + public void draw(GC gc) { //Falta implementar la flecha de salida de un while if(finish.y < start.y) { gc.drawLine(start.x, start.y, start.x, start.y + 10); diff --git a/src/org/tec/datos1/flow/graphics/Method.java b/src/org/tec/datos1/flow/graphics/Method.java index 36ba1c6..3698aa9 100644 --- a/src/org/tec/datos1/flow/graphics/Method.java +++ b/src/org/tec/datos1/flow/graphics/Method.java @@ -7,40 +7,31 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; -public class Method { +public class Method implements Widget{ String text; Point input; Point output; - GC gc; Rectangle focus; /** - * Constructor para el gráfico de un método - * @param gc Graphical Context en el cual se dibuja - * @param text Texto que va a contener el método - * @param input Punto de entrada del método + * Constructor para el gr�fico de un m�todo + * @param text Texto que va a contener el m�todo + * @param input Punto de entrada del m�todo */ - public Method(GC gc, String text, Point input) { + public Method(String text, Point input) { this.input = input; this.output = new Point(input.x, input.y + 40); this.text = text; - this.gc = gc; - - Rectangle rectangle = new Rectangle(input.x - 10 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 20, 40); - gc.drawRectangle(rectangle); - Rectangle externalRectangle = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); - gc.drawRectangle(externalRectangle); - gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + (40 - gc.stringExtent(text).y) / 2); } /** - * Constructor para el gráfico de un método + * Constructor para el gr�fico de un m�todo * @param gc Graphical Context en el cual se dibuja - * @param text Texto que va a contener el método - * @param x Coordenada en x del punto de entrada del método - * @param y Coordenada en y del punto de entrada del método + * @param text Texto que va a contener el m�todo + * @param x Coordenada en x del punto de entrada del m�todo + * @param y Coordenada en y del punto de entrada del m�todo */ - public Method(GC gc, String text, int x, int y) { - this(gc, text, new Point(x, y)); + public Method(String text, int x, int y) { + this(text, new Point(x, y)); } /** @@ -58,19 +49,29 @@ public Point getInput() { } //Todavia no funcionan bien - public void execute() { - Display display = Display.getCurrent(); - Color red = display.getSystemColor(SWT.COLOR_RED); - gc.setForeground(red); - gc.setLineWidth(3); - this.focus = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); - gc.drawRectangle(focus); - Color black = display.getSystemColor(SWT.COLOR_BLACK); - gc.setForeground(black); - gc.setLineWidth(1); - } +// public void execute() { +// Display display = Display.getCurrent(); +// Color red = display.getSystemColor(SWT.COLOR_RED); +// gc.setForeground(red); +// gc.setLineWidth(3); +// this.focus = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); +// gc.drawRectangle(focus); +// Color black = display.getSystemColor(SWT.COLOR_BLACK); +// gc.setForeground(black); +// gc.setLineWidth(1); +// } public void end() { this.focus = null; } + @Override + public void draw(GC gc) { + Rectangle rectangle = new Rectangle(input.x - 10 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 20, 40); + gc.drawRectangle(rectangle); + Rectangle externalRectangle = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); + gc.drawRectangle(externalRectangle); + gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + (40 - gc.stringExtent(text).y) / 2); + } + + } diff --git a/src/org/tec/datos1/flow/graphics/Process.java b/src/org/tec/datos1/flow/graphics/Process.java index 1b732b6..4bde994 100644 --- a/src/org/tec/datos1/flow/graphics/Process.java +++ b/src/org/tec/datos1/flow/graphics/Process.java @@ -7,38 +7,31 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; -public class Process { +public class Process implements Widget{ String text; Point input; Point output; - GC gc; /** - * Constructor para el gráfico de un proceso - * @param gc Graphical Context en el cual se dibuja + * Constructor para el gr�fico de un proceso * @param text Texto que va a contener el proceso * @param input Punto de entrada del proceso */ - public Process(GC gc, String text, Point input) { + public Process(String text, Point input) { this.input = input; this.output = new Point(input.x, input.y + 40); this.text = text; - this.gc = gc; - - Rectangle rectangle = new Rectangle(input.x - 10 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 20, 40); - gc.drawRectangle(rectangle); - gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + (40 - gc.stringExtent(text).y) / 2); } /** - * Constructor para el gráfico de un proceso + * Constructor para el gr�fico de un proceso * @param gc Graphical Context en el cual se dibuja * @param text Texto que va a contener el proceso * @param x Coordenada en x del punto de entrada del proceso * @param y Coordenada en y del punto de entrada del proceso */ - public Process(GC gc, String text, int x, int y) { - this(gc, text, new Point(x, y)); + public Process(String text, int x, int y) { + this(text, new Point(x, y)); } /** @@ -56,15 +49,21 @@ public Point getInput() { } //Todavia no funcionan bien - public void execute() { - Display display = Display.getCurrent(); - Color red = display.getSystemColor(SWT.COLOR_RED); - gc.setForeground(red); - } - - public void end() { - Display display = Display.getCurrent(); - Color black = display.getSystemColor(SWT.COLOR_BLACK); - gc.setForeground(black); +// public void execute() { +// Display display = Display.getCurrent(); +// Color red = display.getSystemColor(SWT.COLOR_RED); +// gc.setForeground(red); +// } +// +// public void end() { +// Display display = Display.getCurrent(); +// Color black = display.getSystemColor(SWT.COLOR_BLACK); +// gc.setForeground(black); +// } + @Override + public void draw(GC gc) { + Rectangle rectangle = new Rectangle(input.x - 10 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 20, 40); + gc.drawRectangle(rectangle); + gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + (40 - gc.stringExtent(text).y) / 2); } } diff --git a/src/org/tec/datos1/flow/graphics/While.java b/src/org/tec/datos1/flow/graphics/While.java index b73fc07..104be17 100644 --- a/src/org/tec/datos1/flow/graphics/While.java +++ b/src/org/tec/datos1/flow/graphics/While.java @@ -7,44 +7,39 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; -public class While { +public class While implements Widget{ String text; Point input; Point outputTrue; Point outputFalse; Point inputReturn; - GC gc; Rectangle focus; + int[] shape; /** - * Constructor para el gráfico de un condicional - * @param gc Graphical Context en el cual se dibuja + * Constructor para el gr�fico de un condicional * @param text Texto que va a contener el condicional * @param input Punto de entrada del condicional */ - public While(GC gc, String text, Point input) { + public While(String text, Point input) { this.input = input; - this.outputTrue = new Point(input.x, input.y + gc.stringExtent(text).y + 40); - this.outputFalse = new Point(input.x + 30 + gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); - this.inputReturn = new Point(input.x - 30 - gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); +// this.outputTrue = new Point(input.x, input.y + gc.stringExtent(text).y + 40); +// this.outputFalse = new Point(input.x + 30 + gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); +// this.inputReturn = new Point(input.x - 30 - gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); this.text = text; - this.gc = gc; - int[] diamond = new int[] {input.x, input.y, outputFalse.x, outputFalse.y, outputTrue.x, outputTrue.y, inputReturn.x, inputReturn.y}; - - gc.drawPolygon(diamond); - gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + 20); + shape = new int[] {input.x, input.y, outputFalse.x, outputFalse.y, outputTrue.x, outputTrue.y, inputReturn.x, inputReturn.y}; } /** - * Constructor para el gráfico de un proceso + * Constructor para el gr�fico de un proceso * @param gc Graphical Context en el cual se dibuja * @param text Texto que va a contener el proceso * @param x Coordenada en x del punto de entrada del condicional * @param y Coordenada en y del punto de entrada del condicional */ - public While(GC gc, String text, int x, int y) { - this(gc, text, new Point(x, y)); + public While(String text, int x, int y) { + this(text, new Point(x, y)); } /** @@ -62,33 +57,42 @@ public Point getInputReturn() { } /** - * @return Punto de salida en caso de que se cumpla la condición + * @return Punto de salida en caso de que se cumpla la condici�n */ public Point getOutputTrue() { return outputTrue; } /** - * @return Punto de salida en caso de que no se cumpla la condición + * @return Punto de salida en caso de que no se cumpla la condici�n */ public Point getOutputFalse() { return outputFalse; } //Todavia no funcionan bien - public void execute() { - Display display = Display.getCurrent(); - Color red = display.getSystemColor(SWT.COLOR_RED); - gc.setForeground(red); - gc.setLineWidth(3); - this.focus = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); - gc.drawRectangle(focus); - Color black = display.getSystemColor(SWT.COLOR_BLACK); - gc.setForeground(black); - gc.setLineWidth(1); - } - - public void end() { - this.focus = null; +// public void execute() { +// Display display = Display.getCurrent(); +// Color red = display.getSystemColor(SWT.COLOR_RED); +// gc.setForeground(red); +// gc.setLineWidth(3); +// this.focus = new Rectangle(input.x - 20 - gc.stringExtent(text).x / 2, input.y, gc.stringExtent(text).x + 40, 40); +// gc.drawRectangle(focus); +// Color black = display.getSystemColor(SWT.COLOR_BLACK); +// gc.setForeground(black); +// gc.setLineWidth(1); +// } +// +// public void end() { +// this.focus = null; +// } + @Override + public void draw(GC gc) { + this.outputTrue = new Point(input.x, input.y + gc.stringExtent(text).y + 40); + this.outputFalse = new Point(input.x + 30 + gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); + this.inputReturn = new Point(input.x - 30 - gc.stringExtent(text).x / 2, input.y + gc.stringExtent(text).y / 2 + 20); + + gc.drawPolygon(shape); + gc.drawText(text, input.x - gc.stringExtent(text).x / 2, input.y + 20); } } diff --git a/src/org/tec/datos1/flow/graphics/Widget.java b/src/org/tec/datos1/flow/graphics/Widget.java new file mode 100644 index 0000000..b247681 --- /dev/null +++ b/src/org/tec/datos1/flow/graphics/Widget.java @@ -0,0 +1,7 @@ +package org.tec.datos1.flow.graphics; + +import org.eclipse.swt.graphics.GC; + +public interface Widget { + public void draw(GC gc); +} diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index d7b70e7..f479623 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -4,6 +4,15 @@ import javax.inject.Inject; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.debug.core.JDIDebugModel; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.PaintEvent; @@ -13,11 +22,16 @@ import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.tec.datos1.flow.debug.DebugListener; import org.tec.datos1.flow.graphics.If; import org.tec.datos1.flow.graphics.Line; import org.tec.datos1.flow.graphics.Method; import org.tec.datos1.flow.graphics.Process; import org.tec.datos1.flow.graphics.While; +import org.tec.datos1.flow.handlers.Handler; +import org.tec.datos1.flow.storage.ASTStorage; public class DiagramView { @@ -33,10 +47,21 @@ public DiagramView(Composite parent) { canvas.setSize(1000, 1000); container.setContent(canvas); + Handler handler = new Handler(); + canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { - //Codigo que indica que se va a dibujar + try { + handler.execute(new ExecutionEvent()); + MethodDeclaration metodo = (MethodDeclaration) ASTStorage.getRoot().getElement(); + Method dibujo = new Method(metodo.getName().toString(), 200, 20); + dibujo.draw(e.gc); + } catch (ExecutionException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } }); } From 44b731134fbe81151f6ec11374d6b785666da2ed Mon Sep 17 00:00:00 2001 From: JassonRM Date: Tue, 24 Oct 2017 22:38:29 -0600 Subject: [PATCH 06/32] Cambio de iconos y arreglo de botones --- .DS_Store | Bin 10244 -> 10244 bytes fragment.e4xmi | 10 ++-- icons/.DS_Store | Bin 0 -> 6148 bytes icons/001-diagrams.png | Bin 707 -> 0 bytes icons/002-flow-1.png | Bin 671 -> 0 bytes icons/003-flow-1.png | Bin 0 -> 1231 bytes icons/003-flow-1@2x.png | Bin 0 -> 1127 bytes icons/003-flow.png | Bin 427 -> 0 bytes icons/004-debug.png | Bin 510 -> 0 bytes icons/005-browser.png | Bin 661 -> 0 bytes icons/006-arrow-into-drive-symbol.png | Bin 373 -> 0 bytes icons/006-browser.png | Bin 0 -> 881 bytes icons/006-browser@2x.png | Bin 0 -> 1167 bytes icons/007-downloaded-into-inbox.png | Bin 377 -> 0 bytes .../008-login-square-arrow-button-outline.png | Bin 313 -> 0 bytes icons/icons8-step_into.png | Bin 0 -> 567 bytes icons/icons8-step_into@2x.png | Bin 0 -> 254 bytes icons/icons8-step_out@2x.png | Bin 0 -> 249 bytes icons/icons8-step_over.png | Bin 0 -> 579 bytes icons/icons8-step_over@2x.png | Bin 0 -> 263 bytes plugin.xml | 56 ------------------ 21 files changed, 5 insertions(+), 61 deletions(-) create mode 100644 icons/.DS_Store delete mode 100644 icons/001-diagrams.png delete mode 100644 icons/002-flow-1.png create mode 100644 icons/003-flow-1.png create mode 100644 icons/003-flow-1@2x.png delete mode 100644 icons/003-flow.png delete mode 100644 icons/004-debug.png delete mode 100644 icons/005-browser.png delete mode 100644 icons/006-arrow-into-drive-symbol.png create mode 100644 icons/006-browser.png create mode 100644 icons/006-browser@2x.png delete mode 100644 icons/007-downloaded-into-inbox.png delete mode 100644 icons/008-login-square-arrow-button-outline.png create mode 100644 icons/icons8-step_into.png create mode 100644 icons/icons8-step_into@2x.png create mode 100644 icons/icons8-step_out@2x.png create mode 100644 icons/icons8-step_over.png create mode 100644 icons/icons8-step_over@2x.png diff --git a/.DS_Store b/.DS_Store index 880a577694fb17b3ea883e6212ba90c97d2d9043..3ccf2e66a29b8414f7743b8bc18a5b47f4382830 100644 GIT binary patch delta 841 zcmZn(XbG6$FDTEzz`)4BAi$85ZWx@LpIfl8a2or>2Eonj94s95AXyd$J%)6KOokGe z3ZNKJk7pyYTyDOLOG;@;G6Tak(L)J+X{d53IOPg5Ahv>xWMB^fk(@yLiWyQFN*GG& zf!5{$EiXo~nt?GDRT)ebk|Vgj0X>CF72G*^RDm5<4-5~mF~INv0%nFJkX0y-VdPqX zkU?^Q=zNQn^~f@COVMOdLV)oCPzwVq(3WI|e1^Qq5(2!8CnifvG-!xdR~wn=D43Yl z>L^qj8kt$>C|DR9*4A=zh^rdfdM4ynR#n&3*3FoFRzRL{=H|BoPZ;^3F$yx0fx-O$ z=0if}tUgF?6zG_95)_nh`xuII^WpBqB8%cyh7AmpUyIAub1?WaxH5z=I5Oxmcry4g zxS@m(1M^&<4H#;WT){i_;6e%PYT$0csiq)<4=DiwqiHg$#LGBT7kqmRG@TikrivJn mk?oz8*&mB6gRl)%2F2Hm2N*U#k#J(!%&zc@Wpj}*Gcy1s^vNp# delta 151 zcmZn(XbG6$FU-!sz`)4BAi%&-oK#+1kd%|3v@vlh`(}0y77j-C$u)wKjK?QW6Kqfy ztFAUO(NQoltJP7cwlp!&QLr#JtgYqb5LY#{^-RdEtg5c5t(!jCPDq|{#^yMoCybjD uL^N1=%7TmXa`N-iLH10plX|)NytD<&#)5}To7ok9v230o_JfHVNeuwD@-7Sj diff --git a/fragment.e4xmi b/fragment.e4xmi index b8336df..08dd62b 100644 --- a/fragment.e4xmi +++ b/fragment.e4xmi @@ -1,11 +1,11 @@ - + View categoryTag:Sample Category - + @@ -16,10 +16,10 @@ - + - - + + diff --git a/icons/.DS_Store b/icons/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Da%gf8F$;d#s%G%mWGD?byiYjt)Dhdk9 za&oFbwt@nP4JMW3JHsHtnIXltk#>H?)y4D~EE z)NC!SY%HxzRaFdCl^yNuLyUBN^|h1D4NX*4JX~B&)l|w$OB?Fy)B{{K;{*Jy6w^GE zVw{!CJVPh+^-oDr(JqR!4oj~JRnlq9w2v=XzHHg1jhmF^6?X012_)SMJC3!eKFJDx z|Ngxw-~QLY0E#II@(X5QWM*aK=H(X!NWf|IisYkyrQD2s;;TI zqqC=X(v+#wmMmSma>K@rn>KCUx_$eO9lK9nxpn{k!$*%EKY9NA<*T=E-+lb_>C@-0 zUw{1g`TOs`mE3#FfcC8Nba4!kn3|l>z>p?g>&BLnAS#xlsjq*WQ9R)5$7zB>LE_FD z7XulDE-5go1sa;E2^yM48YXr$csO)S+fpwe@Z(bh>ybmrXSX;%ZaB~{u5(~v`oZJt z)+FUDSagI*EJ0v8o6w!MU2_7Q9hsV>-d&vNH|vf7V_mTF>lqy_EeAA;gX2~xv#7k; zYx7oR=Y%=uR%o<75*3SfXBSRk5YqgTe~ HDWM4f5s}|s diff --git a/icons/002-flow-1.png b/icons/002-flow-1.png deleted file mode 100644 index 44f467ee00e4ec317d248a01e614445185b8d0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P)_%AcGqC$w!jK~av3@L)3 zU8@#_76b-Ki-Krd+gwBjMe8WU+_ou+TDg$Gfg*((W-(70|ILgu#nlKt+Ra?5+XMATha*fI-IRd$XhZvw;QY%~!Cqe?X2 zlDz6BHwu?JJ1?p+k5fsf5u-DaD%008`{CP$Knyro5&-JL-#?v-kB%AO*2nR_rtI=b zfRyL5RN=~cPg9<|+n8Xgu)TPu{qy9!s44=|JeEA&IKS{BvsyowiG(kC*P>J9T~j?h zH5sqi(>6Q#Yry~VjFl)yW8LRfxDUW$!~Vo-b6Ab~B0)9?;(NW`x9Lh-xB***W58j6 zyptoJt^yx`NS)&}0KXOZufG86D-*AnFn+Km?#iD8egJI{G$h^<-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?VTYB(((!nVC?ys9!4!pBp*3EQTzcsBgxv6L=`%)pN_phv#lO8WEuAlBP`$_5J zh;~lp6=9AXE?QqVu{IX#bXZx=+pKUcLD4!td;hWv5JY z)t4LPy?ySy{a@G9%>DzXb#uR$rn%TooB1Mo;#WS7hL!Q(Hptl@`Ev7)?Cx{!o7LyP zmGyk0w9LkTed>>o`_7-7`ryv*^94&be*evW$$qZgwBHYQELIUaaOimag~H9&g^J>P z3JcRq4RrYSs_M)u*LuyPd-mhumo4sL`xX{%J@uS5QtJSb^+9Vf`En7Nd=EvkNR$?^jUMbx9JkRyivUN6d#B$Q! z&fIy=`S+x>=LgqCRmxjQg>_bjdvi~(3Mgn^UbN`T1{R4A=hj4Y-L^XQ=<>z{(`k`$ z3k7WUn*23AdQ#WQ+adD$6vOkJ?r&cfoZ5Z)>{)-Or(37*`+c6%?5aj^ysd?4-9m%v zXBST&e%QzQ@Ym_I+~W-Xb&|!eA_O0ETq~-4k|o;e_Hx79rfWCPe_Ca+!*K5#(RQ`p ztKvRy%CV4??caOt{;Iu}pIzAO<(}>p*MGFLZP|`84F|?A^7ky2AAfOpa@_X+gz&SM z3jDI~Pu05RxAK|$xor=3d(N*8Q_73)Sh;Yb#FC45ey}R@tV(^{W)_sSe@ZNBy8uz)$~0N-ZlSF7FX(3!Syg@1NI!uFDDkFY1`aKWNQ8 Zu>ZsA{P{nsSffDYkf*Dk%Q~loCIH{q7V-c9 literal 0 HcmV?d00001 diff --git a/icons/003-flow-1@2x.png b/icons/003-flow-1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..189628f1809a1336f3f89bd047008fd5267fb391 GIT binary patch literal 1127 zcmV-t1ep7YP)TV)u>|L^(8$!XS)Y#~Wo>E^m#=+uOo*=}>L zASgOvQqfKjoj9sjg{q*SIESG0a$*Z!=)j8jv0@o`vnf+yV-=wpI9WSCx^-)stX&h6 zHaU6EIgb}@vXkUA&D0q${9m0s&;Na%-tw1RF&yxcLmCIrl#gXHfTk@!Ge!`^IFrRbJbmtC01yDcu6a3eT~Sok9V{ht z++NVUSVRnl?xu`3jE}ZHbseAzB5u4}RREYqLv;Zd)2j<0NMlxjr5mqcUMmSPeX*jY zk~G6=g@*t@S_yRn*lzW>BTd1&Yo5JMl_%m2sjxLCG9!GkWAx{e!ad<1+2`%Orio?% zIGfzm#WiF1EmCy0QHf75AOS%2L;E?`kC>+M-OxaPS4BH3u5oba z&8)@`g3J#F2l@}#d8#)9E0XMjO-CcU{I}k_hc7vh&8k8F`%AA!pRakF0Q05-Z2aVs zTT_%lFyYCWIv+qPXwg-V1m5x;&h-1$?8CFYbz_wlzi)Ex|%0H1MCn4 z?;Wvk8E98Nn@~Y>E(@-~rFB}~G2`bVNC0dy6(iiZ#YBvX&RD9a@k+uD=`m+KHCdKrM23+IL~-9NN^ zq~~XV82hjybVdK(Hh$rP<_?En6&TwAqS9j;fFzsA+B*HgmP=>$f~fE|jCOm6LHM$4 zbBD1QbE$jES?a>!9~#o>c4BM*fB`J;T6OVbt2?- zd=O^*xaf{EkRe&(8c`CQpH@mmtT}V`<;yx0|TRmr;B5V zMeowf{@QB;Mc6*vx10NpbKwb>DV(L=k|#r!vHg3(tYNGyeE(p%fk9xo*WHVAJ=3PF zoWvM3r!!h)dX(C4nf2R0A3GbodT-Udz1Qom#pOmgmvmT{xU%p(+PAY=AJ`Ew#TiDp8CqG7xXt?daJ$T>@Tw_Wv4C<&85aZQ}TZIPM+hR zxN%8*(!$i|OPlYuzi~;_eeJJX{d%d`EZy!_v1bL1;W-Nh1y4!qZR~#7rTOK-bM|-j z$07o+*!UIyIa+z{|AXV{tgmLATYtwXUh)00{e1j4j+Os!l3J&=MQxtF_6N2|yBEu^ T9~Zm}3|IzFS3j3^P6%yUXVDV(sY-2M3F-O~S5CQ4UVH zQH2?)j2y>Nt1={X$;_0oxBm(%H-cQ0DCc2;-=BXF-&zU ze)D*S1w6&2QgKt+!gxeHpS!Q3C!e5phI+g~RxY_nGEHxMNqJCQ+an&e0Nl8c~otARBm}yYI#{|cv)?BU2k)4d1-ZQ zbd%Dkm5@=DrKOnDteUB*nyIRrs;Zo-tDUQ?ovf^#)v%tdte&i`pRBE**0Q0mv7@oF zr`Wiv+PkgTzpmT9u-d<}zTC9G+_l}qxx?PM*v!1f%e=7$+L>fh?Gsp_z+>bkY+ySM7Ty6VEe>c+$C%*pH6*6icc?C9p~@9ymH@a*vM?be#@ z*PQL%xb5D*?c%KM;;`-Hw(aQ4?$>wj+J)}hjPBi&?%$gPyF--#006y7L_t&-S7Tsi zXJ+PLW?_Z_26lUHUM*GzMz{boHybAxGZR9Ew2V3mU=Wr}&`?rR4$92TveQgRNMH~W zPl$*L3=9ml(a_M)1_}s>B$(gqT|`5pb!00000NkvXXu0mjfTgGJ9 diff --git a/icons/006-arrow-into-drive-symbol.png b/icons/006-arrow-into-drive-symbol.png deleted file mode 100644 index aa145425fa86276ddd9fa4223186e2951998d5b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?- zN)TqW*xDfkWJs2{MwA5SrERP@Qy#WBR9 zcj_fWeOE^T)(81{DngZ&on9*^1gzZCG_NIU_4VKETcYY4g1&OK$}b3ArRm~SF}3B@ z+C!6GZ~7iL*~e`6=I1GC=OzYSns(zb>pKJ2RZlD26qS-1ir-B6=P;2$-SmU0Ug7;8 z#nD;SJFh*{T=l4fwW*n>?y%GCzEw`YwSVsM)U@69_Q7lgr7-0rVlQk(T39ra&(-|*F5m-&~j@@~GLwWW#6U9#rd z%PUNdt;uIf1zE~AUR4WKUS_f8v~`}&TK~Lq$(7|H6~ENg9{zm&iP3Ype&#)HDHWja O89ZJ6T-G@yGywny_Li{# diff --git a/icons/006-browser.png b/icons/006-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..89175d00918750ff2c20551f8fdf37d73b1dc6ba GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVD!!mi71Ki^|4CM&(%vz$xlkv ztH>-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?nlyg05?2FbrKRGI}?FbYQ(Lp!w>V2P*e(*oJ&3*67$;5W4*@$QqH ze=5H(?X-K4e{1WP>MOTXznu4FXi_!Ew@Fx7*`n}<=|dNr@=V=zaaLEDT?*$gOq*+T zW=i2DwW*y_x2z8y);BF#IPc0Gs~T2&(_7^N#{z|7?0)UZSKks@xZLuE7~_YxI#VC5 zd??A1*pVs4kn>}EW_}cl<9WT+2GJ`XxS0m{-l%Jrn<>TOa@T_K$CeMp3zjV{>_ky@KRr|b}Ysz4>%vsOq zf^_zSs*ak4>>JMfQ~O@Ey2QS&{aV>1X?weq*TcH{R2RNb+H+<>^ORKK)%UdKudQj2 zN#T~8yvQfd#I@=p=VPzLm>I7BDtff;NiuXCy`EoU{o>89DNldRUwwOR9rNlvQy$xu R<^2TZ6i-(_mvv4FO#l!)TdV*8 literal 0 HcmV?d00001 diff --git a/icons/006-browser@2x.png b/icons/006-browser@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c47cecaa7806309247916addd2f643a8aeef2008 GIT binary patch literal 1167 zcmV;A1aSL_P)&tMNhYHPr7eVsc}%PaZ#3ZQJ!*Bdv{ZSc2j|NRBCxtYiWOvArdB~D{fnb7!U4(3L ziJ8obn#_!x&5fLB^wsF>5NnbWMA zsHvK%shg>)o2sgus;ix=tew@bpRBE)t<<2cuAr{2p{}o@udt%9)}yeoq_DE3v9qSJ zv!=7xrr5WqwAZM#wy3q(skFALwYRFa*si#`uDaT;+rF=!L9o2rvE0D2ZfdrpJhs8z zw%x?G-o>}x#kte=7w+3Dfh>f+ns>)++<;O6b(=+k1bQ|D=1=z4DGgL&wMdgzXY=#Pfzkca5)@aXUD>6eb_nULw3k?ER} z>7b|<_z#Z!E@9OXH>(I{Y(a-DF)$7~Z>)qVz-`?xu;p_15?B(U` z=jZI}*zD`;?Cjs{?cnU~;q2|??CtIB?e6UEelYpckbAI?%IUz+l%hroA1jz z@6Ji@&ra{pQ18)K@6lQB(_-+%8Sup)@W&=2LZO=g00Fy6L_t(Ijbq>>02nwq1;uzd zIfcZ59Bwvj3IvOm`Ed$&?f2&7VPIszqCjlfvJ_6K{reL+IT#t4uqfd5OOfH^^G}oJ zWDIUO}rmY23P>=xz*-IC%1A*yF^Aq3-Je+|F+~vVQ zDR<355ZJjyQy>+lfS?r~u0RDi-~KxdhgwI{L_#s)wIYd0+I?0|qtOC!VMkQG>& z0u==50D4nJ zFkc5@Mv2a|`anU+64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UPdAc}; zSoGeVw9(7iQNZC50>@+-pS=;n?0MBnN+izl zlJW<}m=+V3S=-i!CEV8L{KBB0x_+9kuU9GSnV`=+E3$41L=~R>%)&eApu)@P2aGSA zV!O+bFMPw3ZSIo$t=G1mExVhNZ00|y&AzlV+RS3Y6}EeOEZ(W*d);FC_Ag`G#1fXC zNe{&h7~>lK6U;veWH8-7(E0Y`d;19`Y%$Eo9i(scm$Fx|FPoVB;NUmz12Vz;S3h2} TYmYrJ1Q2?- zSP*6mP0*VHWJs2{MwA5SrERJ6_0#WBR9 zckN_Hu0sYQF84*=o^r03&~!WIKSLGYNbw(b_+F1|mmC(fkQ zeNw*thvoJbHBkY^^e~oH`y5%Ew)=?+G^|+1>bY&L>Pyv~Clpvc#XVnd{JZ|(nV0?v z%y*9YOybNjKd|pr_Hlv~WZFyOfW?}mx z_c>jgnB$TkIdcD(SP~T!p}^_$V BaU}o% diff --git a/icons/icons8-step_into.png b/icons/icons8-step_into.png new file mode 100644 index 0000000000000000000000000000000000000000..2f38021b0d551de561af52ca45dbd9e221ba0d15 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVD!!mi71Ki^|4CM&(%vz$xlkv ztH>-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?F5*9`-E-lHKypsq%Y6=$x_{~)bP0l+XkKGtj^1 literal 0 HcmV?d00001 diff --git a/icons/icons8-step_into@2x.png b/icons/icons8-step_into@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc31ca77e691874048e106d6c48be58929cd11a4 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v~0Ko-U3d z5v^~pIdU^PO0<8J=kv1gC=Bqko87(J|Dkc`_SDL(S((db z{=ZyZA=Y?JHRqsBV)3Fh5Ki|zecPHJ;6#ga?xK-@%2kSn!pji`1jfmGZ?=` zEc*NQ!wk7up{?Rh^W+0>y;r|{_mp*_g1`<&=9}`HEF><*1D(&{>FVdQ&MBb@0D_ul A{Qv*} literal 0 HcmV?d00001 diff --git a/icons/icons8-step_out@2x.png b/icons/icons8-step_out@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..13897b4731f93dedd1af5434f8deca5fcc6072a0 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v}~Ho-U3d z5v^~pY~*t^lxTa{-oo3-A=d4iRA|jM*}Kq{?YhE751lh=h5UU_J#^eB7PlnCI*E45D}NTpzpk(mDlLaMQ!Ir&9QnLU9HO;zCDUqT)5xSbX#D9-Yi4& zJ#*J|ScUzZrQBwC*qO;x=kqVl#Wx-*Hde-2C;#dEFu{S9+s95+PNk?Nyg$Jyg7&bJbkaVl9`on+kL}gQu&X%Q~loCIJ5DU!?#5 literal 0 HcmV?d00001 diff --git a/icons/icons8-step_over.png b/icons/icons8-step_over.png new file mode 100644 index 0000000000000000000000000000000000000000..79e902584da662e24fc4691097ac3cedb3d27ffa GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKVD!!mi71Ki^|4CM&(%vz$xlkv ztH>-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?_^Go)U((O&H zC8Ad@2(|xVHdI+s^7-Jwj}_nV6&}C)c;Th`N38cv_qp^Ln$0koS*v(ZI8OSN;Aa7m z>CS<=4;zHP=}NyZSSPesEK!;*QSJYF$F}&X(yniBNgw&a@k{sG!8d=`vmKwXYfZuC zT^Wtf`4)@nRcLoEt3NED{72*66s>)i`KOkywF!-};(fFv`$1nJ>y<{i{??5$aiF;O MboFyt=akR{0J%iVa{vGU literal 0 HcmV?d00001 diff --git a/icons/icons8-step_over@2x.png b/icons/icons8-step_over@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..be5192a07e6aba090df3c449717757f84afe5c5c GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v}}ko-U3d z5v^~p?#*&?6li;RJc32VEa`%i0QY)b->UV8vW-@%x^56;65G}^_3y^Wzz^?V6eb(% z^XxutbiZb|&Sn - - - - - - - - - - - - - - - - - - - - - - - - - - - - Date: Wed, 25 Oct 2017 12:40:42 -0600 Subject: [PATCH 07/32] =?UTF-8?q?[NEW]=20documentaci=C3=B3n=20y=20otros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tec/datos1/flow/debug/DebugListener.java | 15 ++++-- .../tec/datos1/flow/debug/DebugStepper.java | 49 +++++++++---------- src/org/tec/datos1/flow/handlers/Handler.java | 17 ------- .../datos1/flow/handlers/MethodVisitor.java | 22 ++++++--- .../tec/datos1/flow/parts/DiagramView.java | 17 ++++++- .../tec/datos1/flow/storage/ASTStorage.java | 48 +++++++++--------- 6 files changed, 89 insertions(+), 79 deletions(-) diff --git a/src/org/tec/datos1/flow/debug/DebugListener.java b/src/org/tec/datos1/flow/debug/DebugListener.java index add27bd..f5ae78c 100644 --- a/src/org/tec/datos1/flow/debug/DebugListener.java +++ b/src/org/tec/datos1/flow/debug/DebugListener.java @@ -23,7 +23,14 @@ public void breakpointHasCompilationErrors(IJavaLineBreakpoint arg0, Message[] a @Override public void breakpointHasRuntimeException(IJavaLineBreakpoint arg0, DebugException arg1) {} - + + /** + * Este método se ejecuta cuando al depurar un programa, + * choca con un breakPoint y se encarga de mantener una referencia al hilo + * @param thread Hilo que se encarga de mantener el proceso de depurado + * @param breakpoint BreakPoint contra el cual choca el depurador + * @see org.eclipse.jdt.debug.core.IJavaBreakpointListener#breakpointHit(org.eclipse.jdt.debug.core.IJavaThread, org.eclipse.jdt.debug.core.IJavaBreakpoint) + */ @Override public int breakpointHit(IJavaThread thread, IJavaBreakpoint breakpoint) { @@ -32,11 +39,9 @@ public int breakpointHit(IJavaThread thread, IJavaBreakpoint breakpoint) { ILineBreakpoint lineBreak = (ILineBreakpoint)breakpoint; int numLinea = 0; - try { + try { numLinea = lineBreak.getLineNumber(); - //ASTStorage storage = ASTStorage.getRoot().findLine(numLinea); - //storage.print(); - //storage.print(); + }catch(CoreException e) {} System.out.println("Breakpoint:" + numLinea); diff --git a/src/org/tec/datos1/flow/debug/DebugStepper.java b/src/org/tec/datos1/flow/debug/DebugStepper.java index 1af7efd..90d86f2 100644 --- a/src/org/tec/datos1/flow/debug/DebugStepper.java +++ b/src/org/tec/datos1/flow/debug/DebugStepper.java @@ -2,8 +2,8 @@ import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IStackFrame; -import org.eclipse.jdt.debug.core.IJavaThread; +import org.eclipse.jdt.debug.core.IJavaThread; public class DebugStepper { @@ -16,63 +16,58 @@ public static IJavaThread getDebugThread() { public static void setDebugThread(IJavaThread DebugThread) { debugThread = DebugThread; - } - + /** + * Este método se encarga de ejecutar la acción de + * StepInto del debugger de eclipse + */ public static void stepInto() { try { - - debugThread.stepInto(); update(); -// Thread p = (Thread)debugThread.getThreadObject(); -// -// System.out.println(p.getStackTrace()[0].getClassName()); -// System.out.println(p.getStackTrace()[0].getMethodName()); -// System.out.println(p.getStackTrace()[0].getLineNumber()); - - } catch (DebugException e) { + } catch (Exception e) { e.printStackTrace(); } } - + /** + * Este método se encarga de ejecutar la acción de + * StepOver del debugger de eclipse + */ public static void stepOver() { try { debugThread.stepOver(); + update(); } catch (DebugException e) { e.printStackTrace(); } } + /** + * Este método se encarga de obtener la línea en la que + * se encuentra el debugger en dicho instante. + */ public static void update(){ - try { - IStackFrame Frame = null; - - //solucionar... while (Frame == null) { - - //auxThread.suspend(); Frame = debugThread.getTopStackFrame(); - //System.out.println(Frame); - } + } System.out.println(Frame.getLineNumber()); - - - - + System.out.println(Frame.getName()); + System.out.println(Frame.getModelIdentifier()); } catch (DebugException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - } + /** + * Este método se encarga de ejecutar la acción de + * Resume del debugger de eclipse + */ public static void resume() { try { debugThread.resume(); diff --git a/src/org/tec/datos1/flow/handlers/Handler.java b/src/org/tec/datos1/flow/handlers/Handler.java index 40bbee9..37d3b63 100644 --- a/src/org/tec/datos1/flow/handlers/Handler.java +++ b/src/org/tec/datos1/flow/handlers/Handler.java @@ -54,14 +54,6 @@ private static void createAST(ICompilationUnit IcUnit) } - public static void createAST2( String IcUnit) - throws JavaModelException { - - CompilationUnit parse = parse(IcUnit); - //ASTStorage.setCompUnit(parse); - System.out.println(parse); - - } /** * Reads a ICompilationUnit and creates the AST DOM for manipulating the @@ -80,15 +72,6 @@ public static CompilationUnit parse(ICompilationUnit unit) { return (CompilationUnit) parser.createAST(null); // parse } - public static CompilationUnit parse(String unit) { - ASTParser parser = ASTParser.newParser(AST.JLS3); - parser.setKind(ASTParser.K_COMPILATION_UNIT); - parser.setSource(unit.toCharArray()); - parser.setResolveBindings(true); - - return (CompilationUnit) parser.createAST(null); // parse - } - } diff --git a/src/org/tec/datos1/flow/handlers/MethodVisitor.java b/src/org/tec/datos1/flow/handlers/MethodVisitor.java index c195d50..d639916 100644 --- a/src/org/tec/datos1/flow/handlers/MethodVisitor.java +++ b/src/org/tec/datos1/flow/handlers/MethodVisitor.java @@ -30,7 +30,7 @@ public boolean visit(MethodDeclaration methodNode) { try { ASTStorage storageMethod = new ASTStorage(methodNode,Root,methodNode.getName().toString()); - ASTStorage.setRoot(storageMethod); + ASTStorage.setRoot(Root); Root.addChild(storageMethod); Block b1 = (Block)methodNode.getBody(); addChildren(storageMethod, b1.statements()); @@ -49,17 +49,25 @@ public List getMethods() { public List getRoot() { return Root.getChildren(); } - - public static String addChildren(ASTStorage parent, List Statements) { + /** + * Este metodo se encarga de descomponer el AST de eclipse en una estructura + * más simple + * @param parent Nodo padre al que se le agregaran los componentes hijos + * @param Statements Lista de nodos hijos por agregar + */ + public static void addChildren(ASTStorage parent, List Statements) { for (Object statement : Statements) { ASTNode child = (ASTNode) statement; addChildrenAux(parent,child); //ASTNode.nodeClassForType(node2.getNodeType()); } - return null; } - + /** + * Este metodo auxiliar asiste al metodo addChildren para complir su función + * @param parent Nodo padre al que se le agregaran los componentes hijos + * @param Statements Nodo hijo por agregar + */ @SuppressWarnings("unchecked") public static void addChildrenAux(ASTStorage parent, ASTNode child) { String[] clazz_aux = child.getClass().toString().split("\\."); @@ -144,8 +152,8 @@ public static void addChildrenAux(ASTStorage parent, ASTNode child) { try{ //System.out.println(Expression); - Handler.createAST2 (Expression.toString()); - System.out.println("____________________"); + + MethodInvocation methodInvocation = (MethodInvocation) Expression.getExpression(); ASTStorage MethoInvocationStorage = new ASTStorage(methodInvocation, parent, methodInvocation.toString()); diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index d7b70e7..56ce8a1 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -4,6 +4,17 @@ import javax.inject.Inject; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.DoStatement; +import org.eclipse.jdt.core.dom.EnhancedForStatement; +import org.eclipse.jdt.core.dom.ExpressionStatement; +import org.eclipse.jdt.core.dom.ForStatement; +import org.eclipse.jdt.core.dom.IfStatement; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.TryStatement; +import org.eclipse.jdt.core.dom.VariableDeclarationStatement; +import org.eclipse.jdt.core.dom.WhileStatement; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.PaintEvent; @@ -18,6 +29,7 @@ import org.tec.datos1.flow.graphics.Method; import org.tec.datos1.flow.graphics.Process; import org.tec.datos1.flow.graphics.While; +import org.tec.datos1.flow.storage.ASTStorage; public class DiagramView { @@ -36,10 +48,13 @@ public DiagramView(Composite parent) { canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { - //Codigo que indica que se va a dibujar + //System.out.println(((MethodDeclaration)ASTStorage.getRoot().getElement()).getName()); + //Method m = new Method(e.gc,"HOLA",200,200); } }); } + + public void draw() { // Recibe la clase que se va a dibujar //Guarda la clase que se va a dibujar diff --git a/src/org/tec/datos1/flow/storage/ASTStorage.java b/src/org/tec/datos1/flow/storage/ASTStorage.java index a127658..fd5c407 100644 --- a/src/org/tec/datos1/flow/storage/ASTStorage.java +++ b/src/org/tec/datos1/flow/storage/ASTStorage.java @@ -19,13 +19,11 @@ import org.eclipse.jdt.core.dom.WhileStatement; public class ASTStorage { - static ASTStorage root; String Name; ASTNode Element; List Children; - Boolean then; - //ASTStorage Parent; + public Boolean then; static CompilationUnit compilationUnit; @@ -84,24 +82,26 @@ public static void setCompUnit(CompilationUnit compUnit) { compilationUnit = compUnit; } - public ASTStorage findLine(Integer lineNumber) { - - if (Element != null && (compilationUnit.getLineNumber(Element.getStartPosition()) == lineNumber)) { - return this; - }else if (Children.size() != 0) { - for (ASTStorage child : Children) { - ASTStorage tempNode = child.findLine(lineNumber); - if ( tempNode != null) - return tempNode; - - } - }else{ - return null; - } - return null; - - } - +// public ASTStorage findLine(Integer lineNumber) { +// +// if (Element != null && (compilationUnit.getLineNumber(Element.getStartPosition()) == lineNumber)) { +// return this; +// }else if (Children.size() != 0) { +// for (ASTStorage child : Children) { +// ASTStorage tempNode = child.findLine(lineNumber); +// if ( tempNode != null) +// return tempNode; +// +// } +// }else{ +// return null; +// } +// return null; +// +// } + /** + * Este método se encarga de mostrar todo lo que se encuentra dentro del arbol + */ public void print() { if (Element == null) { if (this.then) { @@ -125,6 +125,7 @@ public void print() { } else if (clazz.equalsIgnoreCase("DoStatement")) { DoStatement Do = (DoStatement) Element; + System.out.println("Do While:" + Do.getExpression()); @@ -140,7 +141,7 @@ public void print() { } else if (clazz.equalsIgnoreCase("IfStatement")) { IfStatement If = (IfStatement) Element; - + System.out.println("If(" + If.getExpression() + ")"); @@ -170,6 +171,7 @@ public void print() { MethodDeclaration Method = (MethodDeclaration) Element; + System.out.println("Method: " + Method.getName() + " | Return Type: " + Method.getReturnType2() + " | Parameters: " + Method.parameters()); @@ -183,5 +185,7 @@ public void print() { } } + + } From 64eb11c454e8d1a26560827b7ca8d064d3cbb993 Mon Sep 17 00:00:00 2001 From: m-herrera Date: Wed, 25 Oct 2017 20:50:36 -0600 Subject: [PATCH 08/32] =?UTF-8?q?[NEW]=20Reordenamiento=20de=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/tec/datos1/flow/Activator.java | 4 + .../Handler.java => CodeParser.java} | 144 ++++++------ .../datos1/flow/handlers/MethodVisitor.java | 173 +-------------- .../tec/datos1/flow/storage/ASTStorage.java | 209 ++++++++++++++---- 4 files changed, 244 insertions(+), 286 deletions(-) rename src/org/tec/datos1/flow/{handlers/Handler.java => CodeParser.java} (72%) diff --git a/src/org/tec/datos1/flow/Activator.java b/src/org/tec/datos1/flow/Activator.java index 8c452bc..23bc952 100644 --- a/src/org/tec/datos1/flow/Activator.java +++ b/src/org/tec/datos1/flow/Activator.java @@ -1,7 +1,9 @@ package org.tec.datos1.flow; +import org.eclipse.jdt.debug.core.JDIDebugModel; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.tec.datos1.flow.debug.DebugListener; public class Activator implements BundleActivator { @@ -16,7 +18,9 @@ static BundleContext getContext() { * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ public void start(BundleContext bundleContext) throws Exception { + JDIDebugModel.addJavaBreakpointListener(new DebugListener()); Activator.context = bundleContext; + } /* diff --git a/src/org/tec/datos1/flow/handlers/Handler.java b/src/org/tec/datos1/flow/CodeParser.java similarity index 72% rename from src/org/tec/datos1/flow/handlers/Handler.java rename to src/org/tec/datos1/flow/CodeParser.java index 37d3b63..daf8975 100644 --- a/src/org/tec/datos1/flow/handlers/Handler.java +++ b/src/org/tec/datos1/flow/CodeParser.java @@ -1,77 +1,67 @@ -package org.tec.datos1.flow.handlers; - - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.resources.IFile; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.dom.AST; -import org.eclipse.jdt.core.dom.ASTParser; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.debug.core.IJavaThread; -import org.eclipse.jdt.debug.core.JDIDebugModel; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; -import org.tec.datos1.flow.debug.DebugListener; -import org.tec.datos1.flow.storage.ASTStorage; - -public class Handler extends AbstractHandler { - - @Override - - public Object execute(ExecutionEvent event) throws ExecutionException { - - IWorkbenchPart workbenchPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); - ICompilationUnit IcUnit = null; - try{ - IFile file = (IFile) workbenchPart.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class); - IcUnit = (ICompilationUnit) JavaCore.create(file); - }catch(Exception e) { - System.err.println("Debe tener una clase abierta"); - return null; - } - try { - createAST(IcUnit); - - //poner en un "main" - JDIDebugModel.addJavaBreakpointListener(new DebugListener()); - - }catch(JavaModelException exeption){} - - return null; - } - - private static void createAST(ICompilationUnit IcUnit) - throws JavaModelException { - - CompilationUnit parse = parse(IcUnit); - ASTStorage.setCompUnit(parse); - MethodVisitor visitor = new MethodVisitor(); - parse.accept(visitor); - - } - - - /** - * Reads a ICompilationUnit and creates the AST DOM for manipulating the - * Java source file - * - * @param unit - * @return - */ - - public static CompilationUnit parse(ICompilationUnit unit) { - ASTParser parser = ASTParser.newParser(AST.JLS3); - parser.setKind(ASTParser.K_COMPILATION_UNIT); - parser.setSource(unit); - parser.setResolveBindings(true); - - return (CompilationUnit) parser.createAST(null); // parse - } - - - -} +package org.tec.datos1.flow; + + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTParser; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.tec.datos1.flow.handlers.MethodVisitor; +import org.tec.datos1.flow.storage.ASTStorage; + + +public class CodeParser { + + + public static void execute() throws ExecutionException { + + IWorkbenchPart workbenchPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + ICompilationUnit IcUnit = null; + try{ + IFile file = (IFile) workbenchPart.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class); + IcUnit = (ICompilationUnit) JavaCore.create(file); + }catch(Exception e) { + System.err.println("Debe tener una clase abierta"); + } + try { + createAST(IcUnit); + + }catch(JavaModelException exeption){} + + } + + private static void createAST(ICompilationUnit IcUnit) throws JavaModelException { + + CompilationUnit parse = parse(IcUnit); + ASTStorage.setCompUnit(parse); + MethodVisitor visitor = new MethodVisitor(); + parse.accept(visitor); + + } + + + /** + * Reads a ICompilationUnit and creates the AST DOM for manipulating the + * Java source file + * + * @param unit + * @return + */ + + public static CompilationUnit parse(ICompilationUnit unit) { + ASTParser parser = ASTParser.newParser(AST.JLS3); + parser.setKind(ASTParser.K_COMPILATION_UNIT); + parser.setSource(unit); + parser.setResolveBindings(true); + + return (CompilationUnit) parser.createAST(null); // parse + } + + + +} diff --git a/src/org/tec/datos1/flow/handlers/MethodVisitor.java b/src/org/tec/datos1/flow/handlers/MethodVisitor.java index d639916..a9a7832 100644 --- a/src/org/tec/datos1/flow/handlers/MethodVisitor.java +++ b/src/org/tec/datos1/flow/handlers/MethodVisitor.java @@ -1,186 +1,33 @@ package org.tec.datos1.flow.handlers; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.Block; -import org.eclipse.jdt.core.dom.DoStatement; -import org.eclipse.jdt.core.dom.EnhancedForStatement; -import org.eclipse.jdt.core.dom.ExpressionStatement; -import org.eclipse.jdt.core.dom.ForStatement; -import org.eclipse.jdt.core.dom.IfStatement; import org.eclipse.jdt.core.dom.MethodDeclaration; -import org.eclipse.jdt.core.dom.MethodInvocation; -import org.eclipse.jdt.core.dom.TryStatement; -import org.eclipse.jdt.core.dom.VariableDeclarationStatement; -import org.eclipse.jdt.core.dom.WhileStatement; - +import org.tec.datos1.flow.CodeParser; import org.tec.datos1.flow.storage.ASTStorage; public class MethodVisitor extends ASTVisitor { ASTStorage Root = new ASTStorage(null, "Root"); - List methods = new ArrayList<>(); + - @Override + @SuppressWarnings("unchecked") + @Override public boolean visit(MethodDeclaration methodNode) { - //methods.add(node); + + if (ASTStorage.getRoot() == null) {ASTStorage.setRoot(Root);} + try { - - ASTStorage storageMethod = new ASTStorage(methodNode,Root,methodNode.getName().toString()); - ASTStorage.setRoot(Root); + ASTStorage storageMethod = new ASTStorage(methodNode,methodNode.getName().toString()); Root.addChild(storageMethod); Block b1 = (Block)methodNode.getBody(); - addChildren(storageMethod, b1.statements()); - storageMethod.print(); - //System.out.println(getRoot()); + storageMethod.addChildren(b1.statements()); - }catch(Exception ex) { ex.printStackTrace();} + }catch(Exception ex) {ex.printStackTrace();} - methods.add(methodNode); return super.visit(methodNode); } - public List getMethods() { - return methods; - } - public List getRoot() { - return Root.getChildren(); - } - /** - * Este metodo se encarga de descomponer el AST de eclipse en una estructura - * más simple - * @param parent Nodo padre al que se le agregaran los componentes hijos - * @param Statements Lista de nodos hijos por agregar - */ - public static void addChildren(ASTStorage parent, List Statements) { - - for (Object statement : Statements) { - ASTNode child = (ASTNode) statement; - addChildrenAux(parent,child); - //ASTNode.nodeClassForType(node2.getNodeType()); - } - } - /** - * Este metodo auxiliar asiste al metodo addChildren para complir su función - * @param parent Nodo padre al que se le agregaran los componentes hijos - * @param Statements Nodo hijo por agregar - */ - @SuppressWarnings("unchecked") - public static void addChildrenAux(ASTStorage parent, ASTNode child) { - String[] clazz_aux = child.getClass().toString().split("\\."); - String clazz = clazz_aux[clazz_aux.length - 1]; - - if (clazz.equalsIgnoreCase("WhileStatement")) { - WhileStatement While = (WhileStatement) child; - ASTStorage WhileStorage = new ASTStorage(While,parent,While.getExpression().toString()); - parent.addChild(WhileStorage); - //System.out.println("While: \n" + While.getExpression()); - - Block block = (Block) While.getBody(); - - addChildren(WhileStorage, block.statements()); - } else if (clazz.equalsIgnoreCase("DoStatement")) { - DoStatement Do = (DoStatement) child; - ASTStorage DoStorage = new ASTStorage(Do,parent, Do.getExpression().toString()); - parent.addChild(DoStorage); - //System.out.println("Do: \n" + Do.getExpression()); - Block block = (Block) Do.getBody(); - - addChildren(DoStorage, block.statements()); - - } else if (clazz.equalsIgnoreCase("EnhancedForStatement")) { - EnhancedForStatement EnhancedFor = (EnhancedForStatement) child; - ASTStorage EnhancedForStorage = new ASTStorage(EnhancedFor,parent,EnhancedFor.getExpression().toString()); - parent.addChild(EnhancedForStorage); - //System.out.println("EnhancedFor: \n" + EnhancedFor.getExpression()); - Block block = (Block) EnhancedFor.getBody(); - - addChildren(EnhancedForStorage, block.statements()); - - } else if (clazz.equalsIgnoreCase("ForStatement")) { - ForStatement For = (ForStatement) child; - ASTStorage ForStorage = new ASTStorage(For,parent,For.getExpression().toString()); - parent.addChild(ForStorage); - //System.out.println("For: \n" + For.getExpression()); - Block block = (Block) For.getBody(); - - addChildren(ForStorage, block.statements()); - - } else if (clazz.equalsIgnoreCase("IfStatement")) { - IfStatement If = (IfStatement) child; - ASTStorage IfStorage = new ASTStorage(If,parent,If.getExpression().toString()); - parent.addChild(IfStorage); - ASTStorage thenStorage = new ASTStorage(null,parent,true,If.getExpression().toString()); - IfStorage.addChild(thenStorage); - Block b1 = (Block) If.getThenStatement(); - addChildren(thenStorage, b1.statements()); - - if (If.getElseStatement() instanceof Block) { - //System.out.println("If: \n" + If.getThenStatement() + "Else: \n" + If.getElseStatement()); - ASTStorage elseStorage = new ASTStorage(null,parent,false,If.getExpression().toString()); - IfStorage.addChild(elseStorage); - Block b2 = (Block) If.getElseStatement(); - addChildren(elseStorage, b2.statements()); - } else { - //System.out.println("If: \n" + If.getThenStatement() + "Else "); - ASTStorage elseStorage = new ASTStorage(null,parent,false, If.getExpression().toString()); - IfStorage.addChild(elseStorage); - IfStatement If2 = (IfStatement) If.getElseStatement(); - addChildrenAux(elseStorage, If2); - } - - } else if(clazz.equalsIgnoreCase("TryStatement")){ - TryStatement Try = (TryStatement) child; - ASTStorage TryStorage = new ASTStorage(Try,parent,"Try"); - parent.addChild(TryStorage); - - //System.out.println("For: \n"); - Block block = (Block) Try.getBody(); - - addChildren(TryStorage, block.statements()); - - } else if (clazz.equalsIgnoreCase("ExpressionStatement")) { - - ExpressionStatement Expression = (ExpressionStatement) child; - - - - - try{ - //System.out.println(Expression); - - - - MethodInvocation methodInvocation = (MethodInvocation) Expression.getExpression(); - ASTStorage MethoInvocationStorage = new ASTStorage(methodInvocation, parent, methodInvocation.toString()); - parent.addChild(MethoInvocationStorage); - -// IMethodBinding binding = methodInvocation.resolveMethodBinding().getMethodDeclaration(); -// ICompilationUnit unit = (ICompilationUnit) binding.getJavaElement().getAncestor( IJavaElement.COMPILATION_UNIT ); -// CompilationUnit parse = Handler.parse(unit); -// MethodDeclaration decl = (MethodDeclaration)parse.findDeclaringNode( binding.getKey() ); - - //System.out.println(decl.getBody()); - - }catch(Exception ex) { - ASTStorage ExpressionStorage = new ASTStorage(Expression,parent,Expression.toString()); - parent.addChild(ExpressionStorage); - } - - //System.out.println("Expression:" + Expression.getExpression()); - - }else if (clazz.equalsIgnoreCase("VariableDeclarationStatement")) { - VariableDeclarationStatement Variable = (VariableDeclarationStatement) child; - ASTStorage VariableStorage = new ASTStorage(Variable,parent,Variable.toString()); - parent.addChild(VariableStorage); - }else { - System.out.println("OTRO: " + clazz); - } - - } } \ No newline at end of file diff --git a/src/org/tec/datos1/flow/storage/ASTStorage.java b/src/org/tec/datos1/flow/storage/ASTStorage.java index fd5c407..cf809c4 100644 --- a/src/org/tec/datos1/flow/storage/ASTStorage.java +++ b/src/org/tec/datos1/flow/storage/ASTStorage.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; - import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.DoStatement; import org.eclipse.jdt.core.dom.EnhancedForStatement; @@ -19,20 +19,12 @@ import org.eclipse.jdt.core.dom.WhileStatement; public class ASTStorage { - static ASTStorage root; - String Name; - ASTNode Element; - List Children; - public Boolean then; - static CompilationUnit compilationUnit; - - - public ASTStorage(ASTNode Element,ASTStorage Parent,String Name) { - this.Element = Element; - this.Children = new ArrayList(); - //this.Parent = Parent; - this.Name = Name; - } + private static ASTStorage root; + private String Name; + private ASTNode Element; + private List Children; + private Boolean then; + private static CompilationUnit compilationUnit; public ASTStorage(ASTNode Element,String Name) { this.Element = Element; @@ -40,8 +32,8 @@ public ASTStorage(ASTNode Element,String Name) { this.Name = Name; } - public ASTStorage(ASTNode Element,ASTStorage Parent,Boolean then,String Name) { - this(Element,Parent,Name); + public ASTStorage(ASTNode Element,Boolean then,String Name) { + this(Element,Name); this.then = then; } @@ -53,27 +45,18 @@ public static void setRoot(ASTStorage Root) { root = Root; } - public void addChild(ASTStorage Child) { - Children.add(Child); - } - -// public void setParent(ASTStorage parent) { -// this.Parent = parent; -// } -// -// public ASTStorage getParent() { -// return this.Parent; -// } - public ASTNode getElement() { return this.Element; } + public List getChildren(){ return Children; } + public void setThen() { this.then = true; } + public String getName() { return this.Name; } @@ -82,23 +65,157 @@ public static void setCompUnit(CompilationUnit compUnit) { compilationUnit = compUnit; } -// public ASTStorage findLine(Integer lineNumber) { -// -// if (Element != null && (compilationUnit.getLineNumber(Element.getStartPosition()) == lineNumber)) { -// return this; -// }else if (Children.size() != 0) { -// for (ASTStorage child : Children) { -// ASTStorage tempNode = child.findLine(lineNumber); -// if ( tempNode != null) -// return tempNode; -// -// } -// }else{ -// return null; -// } -// return null; -// -// } + public static List getMethods() { + List result = new ArrayList<>(); + if (root == null) { + return null; + } + for (ASTStorage method :root.getChildren()) { + result.add(method.getName()); + } + return result; + } + + public static ASTStorage getMethod(String Method) { + for (ASTStorage method :root.getChildren()) { + if (method.getName() == Method) return method; + } + return null; + } + + public void addChild(ASTStorage Child) { + Children.add(Child); + } + + public ASTStorage findLine(Integer lineNumber) { + + if (Element != null && (compilationUnit.getLineNumber(Element.getStartPosition()) == lineNumber)) { + return this; + }else if (Children.size() != 0) { + for (ASTStorage child : Children) { + ASTStorage tempNode = child.findLine(lineNumber); + if ( tempNode != null) + return tempNode; + } + } + return null; + } + + + /** + * Este metodo se encarga de descomponer el AST de eclipse en una estructura + * más simple + * @param parent Nodo padre al que se le agregaran los componentes hijos + * @param Statements Lista de nodos hijos por agregar + */ + public void addChildren(List Statements) { + + for (Object statement : Statements) { + ASTNode child = (ASTNode) statement; + this.addChildrenAux(child); + } + } + + + /** + * Este metodo auxiliar asiste al metodo addChildren para complir su función + * @param parent Nodo padre al que se le agregaran los componentes hijos + * @param Statements Nodo hijo por agregar + */ + @SuppressWarnings("unchecked") + public void addChildrenAux(ASTNode child) { + String[] clazz_aux = child.getClass().toString().split("\\."); + String clazz = clazz_aux[clazz_aux.length - 1]; + + if (clazz.equalsIgnoreCase("WhileStatement")) { + + WhileStatement While = (WhileStatement) child; + ASTStorage WhileStorage = new ASTStorage(While,While.getExpression().toString()); + this.addChild(WhileStorage); + + Block block = (Block) While.getBody(); + + WhileStorage.addChildren(block.statements()); + + } else if (clazz.equalsIgnoreCase("DoStatement")) { + DoStatement Do = (DoStatement) child; + ASTStorage DoStorage = new ASTStorage(Do, Do.getExpression().toString()); + this.addChild(DoStorage); + //System.out.println("Do: \n" + Do.getExpression()); + Block block = (Block) Do.getBody(); + + DoStorage.addChildren(block.statements()); + + } else if (clazz.equalsIgnoreCase("EnhancedForStatement")) { + EnhancedForStatement EnhancedFor = (EnhancedForStatement) child; + ASTStorage EnhancedForStorage = new ASTStorage(EnhancedFor,EnhancedFor.getExpression().toString()); + this.addChild(EnhancedForStorage); + Block block = (Block) EnhancedFor.getBody(); + + EnhancedForStorage.addChildren(block.statements()); + + } else if (clazz.equalsIgnoreCase("ForStatement")) { + ForStatement For = (ForStatement) child; + ASTStorage ForStorage = new ASTStorage(For,For.getExpression().toString()); + this.addChild(ForStorage); + Block block = (Block) For.getBody(); + + ForStorage.addChildren(block.statements()); + + } else if (clazz.equalsIgnoreCase("IfStatement")) { + IfStatement If = (IfStatement) child; + ASTStorage IfStorage = new ASTStorage(If,If.getExpression().toString()); + this.addChild(IfStorage); + ASTStorage thenStorage = new ASTStorage(null,true,If.getExpression().toString()); + IfStorage.addChild(thenStorage); + Block b1 = (Block) If.getThenStatement(); + thenStorage.addChildren(b1.statements()); + + if (If.getElseStatement() instanceof Block) { + ASTStorage elseStorage = new ASTStorage(null,false,If.getExpression().toString()); + IfStorage.addChild(elseStorage); + Block b2 = (Block) If.getElseStatement(); + elseStorage.addChildren(b2.statements()); + } else { + ASTStorage elseStorage = new ASTStorage(null,false, If.getExpression().toString()); + IfStorage.addChild(elseStorage); + IfStatement If2 = (IfStatement) If.getElseStatement(); + elseStorage.addChildrenAux(If2); + } + + } else if(clazz.equalsIgnoreCase("TryStatement")){ + TryStatement Try = (TryStatement) child; + ASTStorage TryStorage = new ASTStorage(Try,"Try"); + this.addChild(TryStorage); + + Block block = (Block) Try.getBody(); + + TryStorage.addChildren(block.statements()); + + } else if (clazz.equalsIgnoreCase("ExpressionStatement")) { + + ExpressionStatement Expression = (ExpressionStatement) child; + try{ + + MethodInvocation methodInvocation = (MethodInvocation) Expression.getExpression(); + ASTStorage MethoInvocationStorage = new ASTStorage(methodInvocation, methodInvocation.toString()); + this.addChild(MethoInvocationStorage); + + }catch(Exception ex) { + ASTStorage ExpressionStorage = new ASTStorage(Expression,Expression.toString()); + this.addChild(ExpressionStorage); + } + + }else if (clazz.equalsIgnoreCase("VariableDeclarationStatement")) { + VariableDeclarationStatement Variable = (VariableDeclarationStatement) child; + ASTStorage VariableStorage = new ASTStorage(Variable,Variable.toString()); + this.addChild(VariableStorage); + }else { + System.out.println("OTRO: " + clazz); + } + + } + /** * Este método se encarga de mostrar todo lo que se encuentra dentro del arbol */ From 4796871f4239bc5f30bfe6ae4b0104f1f871efca Mon Sep 17 00:00:00 2001 From: m-herrera Date: Wed, 25 Oct 2017 22:11:39 -0600 Subject: [PATCH 09/32] =?UTF-8?q?[UPDATE]=20documentaci=C3=B3n=20de=20c?= =?UTF-8?q?=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- META-INF/MANIFEST.MF | 4 ++-- src/org/tec/datos1/flow/CodeParser.java | 6 +++++- src/org/tec/datos1/flow/debug/DebugStepper.java | 1 - src/org/tec/datos1/flow/handlers/MethodVisitor.java | 5 ++++- src/org/tec/datos1/flow/storage/ASTStorage.java | 7 ++++++- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 99ec216..4946c6a 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -18,8 +18,8 @@ Require-Bundle: javax.inject, org.eclipse.jface.text;bundle-version="3.12.0", org.eclipse.core.resources;bundle-version="3.12.0", org.eclipse.ui;bundle-version="3.109.0", - org.eclipse.jdt.debug;bundle-version="3.11.0", - org.eclipse.debug.core;bundle-version="3.11.0" + org.eclipse.debug.core;bundle-version="3.11.0", + org.eclipse.jdt.debug;bundle-version="3.11.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: javax.annotation;version="1.2.0" Bundle-ActivationPolicy: lazy diff --git a/src/org/tec/datos1/flow/CodeParser.java b/src/org/tec/datos1/flow/CodeParser.java index daf8975..026d469 100644 --- a/src/org/tec/datos1/flow/CodeParser.java +++ b/src/org/tec/datos1/flow/CodeParser.java @@ -17,7 +17,11 @@ public class CodeParser { - + /** + * Este método se encarga de parsear el código de la + * clase abierta en el instante que se llama el método + * @throws ExecutionException + */ public static void execute() throws ExecutionException { IWorkbenchPart workbenchPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); diff --git a/src/org/tec/datos1/flow/debug/DebugStepper.java b/src/org/tec/datos1/flow/debug/DebugStepper.java index 90d86f2..860a080 100644 --- a/src/org/tec/datos1/flow/debug/DebugStepper.java +++ b/src/org/tec/datos1/flow/debug/DebugStepper.java @@ -2,7 +2,6 @@ import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IStackFrame; - import org.eclipse.jdt.debug.core.IJavaThread; public class DebugStepper { diff --git a/src/org/tec/datos1/flow/handlers/MethodVisitor.java b/src/org/tec/datos1/flow/handlers/MethodVisitor.java index a9a7832..35589d7 100644 --- a/src/org/tec/datos1/flow/handlers/MethodVisitor.java +++ b/src/org/tec/datos1/flow/handlers/MethodVisitor.java @@ -10,7 +10,10 @@ public class MethodVisitor extends ASTVisitor { ASTStorage Root = new ASTStorage(null, "Root"); - + /** + * Este método se ejecuta cuando se encuentra una declaración de + * método durante el parseo del código + */ @SuppressWarnings("unchecked") @Override public boolean visit(MethodDeclaration methodNode) { diff --git a/src/org/tec/datos1/flow/storage/ASTStorage.java b/src/org/tec/datos1/flow/storage/ASTStorage.java index cf809c4..282074e 100644 --- a/src/org/tec/datos1/flow/storage/ASTStorage.java +++ b/src/org/tec/datos1/flow/storage/ASTStorage.java @@ -86,7 +86,12 @@ public static ASTStorage getMethod(String Method) { public void addChild(ASTStorage Child) { Children.add(Child); } - + /**parseado + * Este método busca el ASTStorage correspondiente a una linea + * específica dentro del código + * @param lineNumber + * @return + */ public ASTStorage findLine(Integer lineNumber) { if (Element != null && (compilationUnit.getLineNumber(Element.getStartPosition()) == lineNumber)) { From cd3362538a15f08ee237f9f319bbce47fd2aa937 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Wed, 25 Oct 2017 22:13:40 -0600 Subject: [PATCH 10/32] =?UTF-8?q?Actualizaci=C3=B3n=20interfaz=20gr=C3=A1f?= =?UTF-8?q?ica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fragment.e4xmi | 1 - icons/{006-browser.png => 005-browser.png} | Bin ...{006-browser@2x.png => 005-browser@2x.png} | Bin .../flow/graphics/ASTStorageParser.java | 127 ++++++++++++++++++ .../tec/datos1/flow/parts/DiagramView.java | 64 +++++++-- .../tec/datos1/flow/parts/ExplorerView.java | 15 --- .../tec/datos1/flow/storage/ASTStorage.java | 2 +- 7 files changed, 183 insertions(+), 26 deletions(-) rename icons/{006-browser.png => 005-browser.png} (100%) rename icons/{006-browser@2x.png => 005-browser@2x.png} (100%) create mode 100644 src/org/tec/datos1/flow/graphics/ASTStorageParser.java delete mode 100644 src/org/tec/datos1/flow/parts/ExplorerView.java diff --git a/fragment.e4xmi b/fragment.e4xmi index 08dd62b..596ac78 100644 --- a/fragment.e4xmi +++ b/fragment.e4xmi @@ -5,7 +5,6 @@ View categoryTag:Sample Category - diff --git a/icons/006-browser.png b/icons/005-browser.png similarity index 100% rename from icons/006-browser.png rename to icons/005-browser.png diff --git a/icons/006-browser@2x.png b/icons/005-browser@2x.png similarity index 100% rename from icons/006-browser@2x.png rename to icons/005-browser@2x.png diff --git a/src/org/tec/datos1/flow/graphics/ASTStorageParser.java b/src/org/tec/datos1/flow/graphics/ASTStorageParser.java new file mode 100644 index 0000000..85661ad --- /dev/null +++ b/src/org/tec/datos1/flow/graphics/ASTStorageParser.java @@ -0,0 +1,127 @@ +package org.tec.datos1.flow.graphics; + +import java.util.LinkedList; + +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.DoStatement; +import org.eclipse.jdt.core.dom.EnhancedForStatement; +import org.eclipse.jdt.core.dom.ExpressionStatement; +import org.eclipse.jdt.core.dom.ForStatement; +import org.eclipse.jdt.core.dom.IfStatement; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.TryStatement; +import org.eclipse.jdt.core.dom.VariableDeclarationStatement; +import org.eclipse.jdt.core.dom.WhileStatement; +import org.eclipse.swt.graphics.Point; +import org.tec.datos1.flow.graphics.Widget; +import org.tec.datos1.flow.storage.ASTStorage; + +public class ASTStorageParser { + LinkedList scene; + Point lastOutput; + + public LinkedList parse(ASTStorage storage){ + scene = new LinkedList(); + + lastOutput = new Point(200, 20); + + //Codigo que hace magia + draw(storage, lastOutput.x, lastOutput.y); + + return scene; + } + + public void draw(ASTStorage storage, int x, int y) { + ASTNode element = storage.getElement(); + System.out.println(element); + if (element == null) { + if (storage.getName().equals("Root") && storage.then) { + storage.getChildren(); + System.out.println("Cuerpo if"); + }else { + System.out.println("Else: "); + } + + } else { + String[] clazz_aux = element.getClass().toString().split("\\."); + String clazz = clazz_aux[clazz_aux.length - 1]; + + //System.out.print(compilationUnit.getLineNumber(Element.getStartPosition()) + " "); + + if (clazz.equalsIgnoreCase("WhileStatement")) { + + WhileStatement While = (WhileStatement) element; + + System.out.println("While(" + While.getExpression() + ")"); + + } else if (clazz.equalsIgnoreCase("DoStatement")) { + + DoStatement Do = (DoStatement) element; + + + System.out.println("Do While:" + Do.getExpression()); + + } else if (clazz.equalsIgnoreCase("EnhancedForStatement")) { + EnhancedForStatement EnhancedFor = (EnhancedForStatement) element; + + System.out.println("EnhancedFor: " + EnhancedFor.getExpression()); + + } else if (clazz.equalsIgnoreCase("ForStatement")) { + ForStatement For = (ForStatement) element; + + System.out.println("For(" + For.getExpression() + ")"); + + } else if (clazz.equalsIgnoreCase("IfStatement")) { + IfStatement If = (IfStatement) element; + + If dibujoIf = new If(If.getExpression().toString(),x,y); + + System.out.println("If(" + If.getExpression() + ")"); + + + } else if (clazz.equalsIgnoreCase("TryStatement")) { + TryStatement Try = (TryStatement) element; + + System.out.println("Try:"); + + } else if (clazz.equalsIgnoreCase("ExpressionStatement")) { + + ExpressionStatement Expression = (ExpressionStatement) element; + + //System.out.println(Expression.getExpression()); + + } else if (clazz.equalsIgnoreCase("VariableDeclarationStatement")) { + VariableDeclarationStatement Variable = (VariableDeclarationStatement) element; + + System.out.print(Variable.toString()); + + } else if (clazz.equalsIgnoreCase("MethodInvocation")) { + + MethodInvocation method = (MethodInvocation) element; + + Method methodDiagram = new Method(method.getName().toString(), x, y); + scene.add(methodDiagram); + y += 30; + + + System.out.println(method); + + } else if (clazz.equalsIgnoreCase("MethodDeclaration")) { + +// MethodDeclaration Method = (MethodDeclaration) element; + +// System.out.println("Method: " + Method.getName() + " | Return Type: " + Method.getReturnType2() + +// " | Parameters: " + Method.parameters()); + + } else { + System.out.println("OTRO: " + clazz); + } + } + + for (ASTStorage child : storage.getChildren()) { + draw(child, x, y+100); + + } + } + +} diff --git a/src/org/tec/datos1/flow/parts/DiagramView.java b/src/org/tec/datos1/flow/parts/DiagramView.java index f479623..b88f6b4 100644 --- a/src/org/tec/datos1/flow/parts/DiagramView.java +++ b/src/org/tec/datos1/flow/parts/DiagramView.java @@ -2,6 +2,8 @@ +import java.util.LinkedList; + import javax.inject.Inject; import org.eclipse.core.commands.ExecutionEvent; @@ -14,52 +16,96 @@ import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.debug.core.JDIDebugModel; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.tec.datos1.flow.debug.DebugListener; +import org.tec.datos1.flow.graphics.ASTStorageParser; import org.tec.datos1.flow.graphics.If; import org.tec.datos1.flow.graphics.Line; import org.tec.datos1.flow.graphics.Method; import org.tec.datos1.flow.graphics.Process; import org.tec.datos1.flow.graphics.While; +import org.tec.datos1.flow.graphics.Widget; import org.tec.datos1.flow.handlers.Handler; import org.tec.datos1.flow.storage.ASTStorage; public class DiagramView { Canvas canvas; + LinkedList diagram; // Almacena todos los dibujos que se van a hacer //Variable con clase que se va a dibujar @Inject public DiagramView(Composite parent) { //Aqui debe llamar a la funcion de AST y pasarle la referencia a esta instancia +// Composite selector = new Composite(parent, SWT.NONE); +// selector.setSize(parent.getBounds().width, 30); +// Composite drawing = new Composite(parent, SWT.NONE); +// drawing.setSize(parent.getBounds().width, parent.getBounds().height - 30); + + GridLayout layout = new GridLayout(); + parent.setLayout(layout); + + Combo methodSelector = new Combo(parent, SWT.NONE); + Combo selector2 = new Combo(parent, SWT.NONE); + + ScrolledComposite container = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); this.canvas = new Canvas(container, SWT.NONE); - canvas.setSize(1000, 1000); + canvas.setSize(500, 500); container.setContent(canvas); Handler handler = new Handler(); + ASTStorageParser astParser = new ASTStorageParser(); + diagram = new LinkedList(); - canvas.addPaintListener(new PaintListener() { + //Anade todo al selector + String[] methods = {"Main", "Print", "getHelp"}; + methodSelector.setItems(methods); + methodSelector.addSelectionListener(new SelectionListener() { + @Override - public void paintControl(PaintEvent e) { + public void widgetSelected(SelectionEvent e) { + System.out.println("Changed selection"); try { handler.execute(new ExecutionEvent()); - MethodDeclaration metodo = (MethodDeclaration) ASTStorage.getRoot().getElement(); - Method dibujo = new Method(metodo.getName().toString(), 200, 20); - dibujo.draw(e.gc); - } catch (ExecutionException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); + diagram = astParser.parse(ASTStorage.getRoot()); + } catch (Exception e1) { + System.err.println("No se pudo parsear el arbol"); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + System.out.println("Default selected"); + } + }); + + + canvas.addPaintListener(new PaintListener() { + @Override + public void paintControl(PaintEvent e) { + e.gc.drawLine(0, 0, 500, 500); + e.gc.drawLine(0, 500, 500, 0); + for(Widget widget : diagram) { + System.out.println(widget); + widget.draw(e.gc); } } diff --git a/src/org/tec/datos1/flow/parts/ExplorerView.java b/src/org/tec/datos1/flow/parts/ExplorerView.java deleted file mode 100644 index 3609ee6..0000000 --- a/src/org/tec/datos1/flow/parts/ExplorerView.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.tec.datos1.flow.parts; - -import javax.inject.Inject; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; - -public class ExplorerView { - @Inject - public ExplorerView(Composite parent) { - Label label = new Label(parent, SWT.NONE); - label.setText("Prueba1"); - } -} diff --git a/src/org/tec/datos1/flow/storage/ASTStorage.java b/src/org/tec/datos1/flow/storage/ASTStorage.java index a127658..bb6513d 100644 --- a/src/org/tec/datos1/flow/storage/ASTStorage.java +++ b/src/org/tec/datos1/flow/storage/ASTStorage.java @@ -24,7 +24,7 @@ public class ASTStorage { String Name; ASTNode Element; List Children; - Boolean then; + public Boolean then; //ASTStorage Parent; static CompilationUnit compilationUnit; From 3f5f38f13c73c6c1ad2f53a73cf0fc7299993a41 Mon Sep 17 00:00:00 2001 From: JassonRM Date: Thu, 26 Oct 2017 16:35:04 -0600 Subject: [PATCH 11/32] Documentacion --- .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .idea/workspace.xml | 643 ++++++++++++++++++ Class Diagram.pdf | Bin 0 -> 349699 bytes "Documentaci\303\263n Flow.pdf" | Bin 0 -> 454242 bytes Manual Flow.pdf | Bin 0 -> 103440 bytes org.tec.datos1.flow.iml | 21 + src/org/tec/datos1/flow/CodeParser.java | 5 + .../flow/graphics/ASTStorageParser.java | 11 + src/org/tec/datos1/flow/graphics/If.java | 33 +- src/org/tec/datos1/flow/graphics/Line.java | 11 +- src/org/tec/datos1/flow/graphics/Method.java | 27 +- src/org/tec/datos1/flow/graphics/Process.java | 9 +- src/org/tec/datos1/flow/graphics/While.java | 9 +- src/org/tec/datos1/flow/graphics/Widget.java | 4 + .../datos1/flow/handlers/StepInHandler.java | 4 + .../datos1/flow/handlers/StepOverHandler.java | 4 + .../tec/datos1/flow/parts/DiagramView.java | 11 +- 19 files changed, 779 insertions(+), 33 deletions(-) create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 Class Diagram.pdf create mode 100644 "Documentaci\303\263n Flow.pdf" create mode 100644 Manual Flow.pdf create mode 100644 org.tec.datos1.flow.iml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e208459 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cc08f7d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..9f219a2 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + JAVA + org.tec.datos1.flow + + org.tec.datos1.flow.graphics.ASTStorageParser + org.tec.datos1.flow.graphics.Process + org.tec.datos1.flow.graphics.Widget + org.tec.datos1.flow.handlers.StepOverHandler + org.tec.datos1.flow.debug.DebugListener + org.tec.datos1.flow.graphics.While + org.tec.datos1.flow.debug.DebugStepper + org.tec.datos1.flow.graphics.Method + org.tec.datos1.flow.handlers.MethodVisitor + org.tec.datos1.flow.graphics.Line + org.tec.datos1.flow.storage.ASTStorage + org.tec.datos1.flow.CodeParser + org.tec.datos1.flow.Activator + org.tec.datos1.flow.parts.DiagramView + org.tec.datos1.flow.handlers.StepInHandler + org.tec.datos1.flow.graphics.If + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constructors + Methods + Properties + Inner Classes + + All + private + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +