sort variables in watch view alphabetically
[phpeclipse.git] / net.sourceforge.phpeclipse.debug.core / src / net / sourceforge / phpdt / internal / debug / core / model / PHPStackFrame.java
index e47f21d..1c5dcdd 100644 (file)
@@ -6,11 +6,12 @@ which accompanies this distribution, and is available at
 http://www.eclipse.org/legal/cpl-v10.html
 
 Contributors:
-    IBM Corporation - Initial implementation
-    Vicente Fernando - www.alfersoft.com.ar
+       IBM Corporation - Initial implementation
+       Vicente Fernando - www.alfersoft.com.ar
 **********************************************************************/
 package net.sourceforge.phpdt.internal.debug.core.model;
 
+import java.util.Arrays;
 import java.util.Vector;
 
 import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy;
@@ -39,7 +40,7 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
        private int                     modno;              //
        private PHPVariable[]   variables;          // The array of variables TODO: better introduce a vector?
        private Vector          varList  = new Vector ();
-       private String                  description;        //
+       private String                  description;        // The source file name with the full path on target/remote system
        private boolean         fUpToDate;          //
 
        /**
@@ -215,9 +216,9 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
 
                                        try {
                                                if (valOld.hasVariables () ||                           // If the 'static' value has child variables
-                                                   valNew.hasVariables ()) {                           //  or if the DBG value has child variables
+                                                       valNew.hasVariables ()) {                               //  or if the DBG value has child variables
                                                        if (!hasRecursion (varOld) &&
-                                                           !hasRecursion (varNew)) {                   // Both branches should not have a recursion
+                                                               !hasRecursion (varNew)) {                       // Both branches should not have a recursion
                                                                updateVariableList (valOld.getChildVariables (),        // Update the variable list for the child variables
                                                                                                        valNew.getChildVariables ());
                                                        }
@@ -285,10 +286,11 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
 
                if (!isUpToDate ()) {
                        resetHasChangedInfo (varList);
-               updateVariableList (varList, this.getPHPDBGProxy ().readVariables (this));
+                       updateVariableList (varList, this.getPHPDBGProxy ().readVariables (this));
                        setUpToDate (true);
 
                        variables = (PHPVariable[]) varList.toArray (new PHPVariable[varList.size ()]);
+                       Arrays.sort(variables, new PHPVariableComparator());
                }
 
                return variables;                                           // Give the array back to user interface
@@ -337,7 +339,7 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
        public IVariable findVariable (String s) throws DebugException {
                if (!isUpToDate ()) {
                        resetHasChangedInfo (varList);
-               updateVariableList (varList, this.getPHPDBGProxy ().readVariables (this));
+                       updateVariableList (varList, this.getPHPDBGProxy ().readVariables (this));
                        setUpToDate (true);
 
                        variables = (PHPVariable[]) varList.toArray (new PHPVariable[varList.size ()]);
@@ -372,10 +374,20 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
        }
 
        public String getName() {
-               if(!this.getDescription().equals(""))
-                       return this.getDescription() + " [line: " + this.getLineNumber() + "]";
-               else
-                       return this.getFileName() + " [line: " + this.getLineNumber() + "]";
+               StringBuffer name = new StringBuffer();
+
+               if (!this.getDescription().equals ("")) {
+                       name.append (this.getDescription ());
+               }
+               else {
+                       name.append (this.getFileName ());
+               }
+
+               name.append (" [line ");
+               name.append (this.getLineNumber ());
+               name.append ("]");
+
+               return name.toString();
        }
 
        public String getFileName() {
@@ -434,7 +446,7 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
 
                setUpToDate (false);
 
-        thread.prepareForResume (DebugEvent.STEP_INTO);             // Don't know why, but this is necessary
+               thread.prepareForResume (DebugEvent.STEP_INTO);             // Don't know why, but this is necessary
                this.getPHPDBGProxy ().readStepIntoEnd (PHPStackFrame.this);
 
                ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_INTO);
@@ -449,7 +461,7 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
 
                setUpToDate (false);
 
-        thread.prepareForResume (DebugEvent.STEP_OVER);
+               thread.prepareForResume (DebugEvent.STEP_OVER);
                this.getPHPDBGProxy ().readStepOverEnd (PHPStackFrame.this) ;
 
                ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_OVER);
@@ -464,7 +476,7 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa
 
                setUpToDate (false);
 
-        thread.prepareForResume (DebugEvent.STEP_RETURN);
+               thread.prepareForResume (DebugEvent.STEP_RETURN);
                this.getPHPDBGProxy ().readStepReturnEnd (PHPStackFrame.this) ;
 
                ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_RETURN);