Merge branch 'master' of ssh://svjatoslav.eu/home/git/repositories/javainspect
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 5 Jul 2013 19:44:27 +0000 (22:44 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 5 Jul 2013 19:44:27 +0000 (22:44 +0300)
src/main/java/eu/svjatoslav/inspector/java/structure/ClassDescriptor.java

index c8a2773..41f92f3 100644 (file)
@@ -44,6 +44,8 @@ public class ClassDescriptor implements GraphElement {
 
        boolean isArray;
 
+       private boolean isShown = true;
+
        private final ClassGraph dump;
 
        List<ClassDescriptor> interfaces = new ArrayList<ClassDescriptor>();
@@ -55,7 +57,8 @@ public class ClassDescriptor implements GraphElement {
         */
        private int referenceCount = 0;
 
-       public ClassDescriptor(final Class<? extends Object> clazz, final ClassGraph dump) {
+       public ClassDescriptor(final Class<? extends Object> clazz,
+                       final ClassGraph dump) {
                this.dump = dump;
 
                fullyQualifiedName = clazz.getName();
@@ -185,8 +188,15 @@ public class ClassDescriptor implements GraphElement {
                result.append("    // class descriptor header\n");
                result.append("    <TR><TD colspan=\"2\" PORT=\"f0\">"
                                + "<FONT POINT-SIZE=\"8.0\" >" + getPackageName()
-                               + "</FONT><br/>" + "<FONT POINT-SIZE=\"25.0\"><B>"
-                               + getClassName(false) + "</B></FONT>" + "</TD></TR>\n");
+                               + "</FONT><br/>");
+
+               final String parentClassesName = getParentClassesName();
+               if (parentClassesName.length() > 0)
+                       result.append("<FONT POINT-SIZE=\"12.0\"><B>" + parentClassesName
+                                       + "</B></FONT><br/>\n");
+
+               result.append("<FONT POINT-SIZE=\"25.0\"><B>" + getClassName(false)
+                               + "</B></FONT>" + "</TD></TR>\n");
        }
 
        public List<FieldDescriptor> getAllFields() {
@@ -219,10 +229,12 @@ public class ClassDescriptor implements GraphElement {
        }
 
        public String getClassName(final boolean differentiateArray) {
+               // this is needed for nested classes
+               final String actualClassName = fullyQualifiedName.replace('$', '.');
 
-               final int i = fullyQualifiedName.lastIndexOf('.');
+               final int i = actualClassName.lastIndexOf('.');
 
-               String result = fullyQualifiedName.substring(i + 1);
+               String result = actualClassName.substring(i + 1);
 
                if (isArray)
                        result = result.substring(0, result.length() - 1);
@@ -231,6 +243,8 @@ public class ClassDescriptor implements GraphElement {
                        if (isArray)
                                result += " []";
 
+               // this is needed for nested classes
+               // result = result.replace('$', '.');
                return result;
        }
 
@@ -283,7 +297,7 @@ public class ClassDescriptor implements GraphElement {
        public String getGraphId() {
                final String result = "class_"
                                + fullyQualifiedName.replace('.', '_').replace(";", "")
-                                               .replace("[L", "");
+                                               .replace("[L", "").replace('$', '_');
                return result;
        }
 
@@ -304,6 +318,17 @@ public class ClassDescriptor implements GraphElement {
                return fullyQualifiedName.substring(0, i).replace("[L", "");
        }
 
+       public String getParentClassesName() {
+               int i = fullyQualifiedName.lastIndexOf('.');
+               final String fullClassName = fullyQualifiedName.substring(i + 1);
+
+               i = fullClassName.lastIndexOf('$');
+               if (i == -1)
+                       return "";
+               final String parentClassesName = fullClassName.substring(0, i);
+               return parentClassesName.replace('$', '.');
+       }
+
        // public String getReadableName() {
        //
        // // do not print full class name for well known system classes
@@ -325,6 +350,10 @@ public class ClassDescriptor implements GraphElement {
                return superClassColor;
        }
 
+       public void hide() {
+               isShown = false;
+       }
+
        public void indexFields(final Field[] fields) {
                for (final Field field : fields) {
                        if (nameToFieldMap.containsKey(field.getName()))
@@ -353,7 +382,7 @@ public class ClassDescriptor implements GraphElement {
                if (Utils.isSystemPackage(fullyQualifiedName))
                        return false;
 
-               return true;
+               return isShown;
        }
 
        public void registerReference() {