tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / uml2sd / core / GraphNode.java
index 97c7f31e8a754c4c84fafb01228d4b1a501d1663..34c79c1cf4239a32d210bd76cc3cc383e443ce7c 100755 (executable)
@@ -1,15 +1,15 @@
 /**********************************************************************
- * Copyright (c) 2005, 2008, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2012 IBM Corporation, Ericsson
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * $Id: GraphNode.java,v 1.3 2008/01/24 02:28:49 apnan Exp $
- * 
- * Contributors: 
- * IBM - Initial API and implementation
- * Bernd Hufmann - Updated for TMF
+ *
+ * Contributors:
+ *     IBM - Initial API and implementation
+ *     Bernd Hufmann - Updated for TMF
  **********************************************************************/
+
 package org.eclipse.linuxtools.tmf.ui.views.uml2sd.core;
 
 import java.util.ArrayList;
@@ -18,114 +18,144 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
-import org.eclipse.linuxtools.tmf.ui.TmfUiTracer;
+import org.eclipse.linuxtools.internal.tmf.ui.TmfUiTracer;
 import org.eclipse.linuxtools.tmf.ui.views.uml2sd.drawings.IGC;
-import org.eclipse.linuxtools.tmf.ui.views.uml2sd.drawings.ISDPreferences;
+import org.eclipse.linuxtools.tmf.ui.views.uml2sd.preferences.ISDPreferences;
+import org.eclipse.linuxtools.tmf.ui.views.uml2sd.preferences.SDViewPref;
 
 /**
  * The base class used for all UML2 graph nodes displayed in the Sequence Diagram SDWidget.
- * 
+ *
  * @author sveyrier
  * @version 1.0
  */
-
 public abstract class GraphNode {
 
-    protected int startEventOccurrence = 0;
-
-    protected int endEventOccurrence = 0;
-
+    // ------------------------------------------------------------------------
+    // Attributes
+    // ------------------------------------------------------------------------
+    /**
+     * The start event occurrence.
+     */
+    protected int fStartEventOccurrence = 0;
+    /**
+     * The event event occurrence.
+     */
+    protected int fEndEventOccurrence = 0;
     /**
      * Preference ColorId to use to draw font
      */
-    public String prefId = ISDPreferences.PREF_SYNC_MESS;
-
+    public String fPrefId = ISDPreferences.PREF_SYNC_MESS;
     /**
      * The selection state of the graph node.
      */
-    protected boolean selected = false;
-
+    protected boolean fSelected = false;
     /**
      * The focus state of the graph node.
      */
-    protected boolean focused = false;
-
-    protected boolean hasChilden = false;
-
+    protected boolean fFocused = false;
+    /**
+     * Flag to indicate whether node has children or not.
+     */
+    protected boolean fHasChilden = false;
     /**
      * The graph node name used to label the graph node in the View.
      */
-    protected String name = ""; //$NON-NLS-1$
-
-    protected HashMap<String, List<GraphNode>> nodes;
-    protected HashMap<String, List<GraphNode>> fnodes;
-    protected HashMap<String, List<GraphNode>> bnodes;
+    protected String fName = ""; //$NON-NLS-1$
+    /**
+     * A map from node name to graph node.
+     */
+    protected Map<String, List<GraphNode>> fNodes;
+    /**
+     * A map from node name to graph node for forward sorting
+     */
+    protected Map<String, List<GraphNode>> fForwardNodes;
+    /**
+     * A map from node name to graph node for backwards sorting.
+     */
+    protected Map<String, List<GraphNode>> fBackwardNodes;
+    /**
+     * A map from node name to index.
+     */
+    protected Map<String, Integer> fIndexes;
+    /**
+     * A map from node name to index for forwards sorting.
+     */
+    protected Map<String, Boolean> fForwardSort;
+    /**
+     * A map from node name to index for forwards sorting.
+     */
+    protected Map<String, Boolean> fBackwardSort;
 
-    protected HashMap<String, Integer> indexes;
-    protected HashMap<String, Boolean> fSort;
-    protected HashMap<String, Boolean> bSort;
+    // ------------------------------------------------------------------------
+    // Methods
+    // ------------------------------------------------------------------------
 
     /**
      * Reset the internal index of the first visible GraphNode for each ordered GraphNode lists
-     * 
      */
     public void resetIndex() {
-        if (!hasChilden)
+        if (!fHasChilden) {
             return;
-        Iterator<String> it = indexes.keySet().iterator();
+        }
+
+        Iterator<String> it = fIndexes.keySet().iterator();
         while (it.hasNext()) {
             String nodeType = it.next();
-            indexes.put(nodeType, Integer.valueOf(0));
+            fIndexes.put(nodeType, Integer.valueOf(0));
         }
     }
 
     /**
      * Add a GraphNode into the receiver
-     * 
+     *
      * @param nodeToAdd the node to add
      */
     public void addNode(GraphNode nodeToAdd) {
-        if (!hasChilden) {
-            nodes = new HashMap<String, List<GraphNode>>(2);
-            fnodes = new HashMap<String, List<GraphNode>>(2);
-            bnodes = new HashMap<String, List<GraphNode>>(2);
-            indexes = new HashMap<String, Integer>(2);
-            bSort = new HashMap<String, Boolean>(2);
-            fSort = new HashMap<String, Boolean>(2);
-            hasChilden = true;
+        if (!fHasChilden) {
+            fNodes = new HashMap<String, List<GraphNode>>(2);
+            fForwardNodes = new HashMap<String, List<GraphNode>>(2);
+            fBackwardNodes = new HashMap<String, List<GraphNode>>(2);
+            fIndexes = new HashMap<String, Integer>(2);
+            fBackwardSort = new HashMap<String, Boolean>(2);
+            fForwardSort = new HashMap<String, Boolean>(2);
+            fHasChilden = true;
         }
 
         // Nothing to add
-        if (nodeToAdd == null)
+        if (nodeToAdd == null) {
             return;
+        }
 
-        if (nodes.get(nodeToAdd.getArrayId()) == null) {
-            nodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
-            indexes.put(nodeToAdd.getArrayId(), Integer.valueOf(0));
-            fnodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
-            fSort.put(nodeToAdd.getArrayId(), Boolean.valueOf(false));
+        if (fNodes.get(nodeToAdd.getArrayId()) == null) {
+            fNodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
+            fIndexes.put(nodeToAdd.getArrayId(), Integer.valueOf(0));
+            fForwardNodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
+            fForwardSort.put(nodeToAdd.getArrayId(), Boolean.FALSE);
             if (nodeToAdd.getBackComparator() != null) {
-                bnodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
-                bSort.put(nodeToAdd.getArrayId(), Boolean.valueOf(false));
+                fBackwardNodes.put(nodeToAdd.getArrayId(), new ArrayList<GraphNode>(1));
+                fBackwardSort.put(nodeToAdd.getArrayId(), Boolean.FALSE);
             }
         }
 
-        List<GraphNode> fNodeList = (List<GraphNode>) fnodes.get(nodeToAdd.getArrayId());
+        List<GraphNode> fNodeList = fForwardNodes.get(nodeToAdd.getArrayId());
         List<GraphNode> bNodeList = null;
-        if (bnodes != null)
-            bNodeList = (List<GraphNode>) bnodes.get(nodeToAdd.getArrayId());
+        if (fBackwardNodes != null) {
+            bNodeList = fBackwardNodes.get(nodeToAdd.getArrayId());
+        }
         if (fNodeList != null && fNodeList.size() > 0) {
             // check if the nodes are added y ordered
             // if not, tag the list to sort it later (during draw)
-            GraphNode node = (GraphNode) fNodeList.get(fNodeList.size() - 1);
+            GraphNode node = fNodeList.get(fNodeList.size() - 1);
             Comparator<GraphNode> fcomp = nodeToAdd.getComparator();
             Comparator<GraphNode> bcomp = nodeToAdd.getBackComparator();
             if ((fcomp != null) && (fcomp.compare(node, nodeToAdd) > 0)) {
-                fSort.put(nodeToAdd.getArrayId(), Boolean.valueOf(true));
+                fForwardSort.put(nodeToAdd.getArrayId(), Boolean.TRUE);
             }
             if ((bcomp != null) && (bcomp.compare(node, nodeToAdd) > 0)) {
-                bSort.put(nodeToAdd.getArrayId(), Boolean.valueOf(true));
+                fBackwardSort.put(nodeToAdd.getArrayId(), Boolean.TRUE);
             }
         }
 
@@ -134,146 +164,152 @@ public abstract class GraphNode {
         }
 
         fNodeList.add(nodeToAdd);
-        nodes.put(nodeToAdd.getArrayId(), fNodeList);
-        fnodes.put(nodeToAdd.getArrayId(), fNodeList);
-        if (nodeToAdd.getBackComparator() != null) {
+        fNodes.put(nodeToAdd.getArrayId(), fNodeList);
+        fForwardNodes.put(nodeToAdd.getArrayId(), fNodeList);
+        if ((bNodeList != null) && (nodeToAdd.getBackComparator() != null)) {
             bNodeList.add(nodeToAdd);
-            bnodes.put(nodeToAdd.getArrayId(), bNodeList);
+            fBackwardNodes.put(nodeToAdd.getArrayId(), bNodeList);
         }
     }
 
     /**
      * Set the graph node name.<br>
      * It is the name display in the view to label the graph node.
-     * 
-     * @param the name to set
+     *
+     * @param nodeName the name to set
      */
     public void setName(String nodeName) {
-        name = nodeName;
+        fName = nodeName;
     }
 
     /**
      * Returns the graph node name.<br>
      * It is the name display in the view to label the graph node.
-     * 
+     *
      * @return the graph node name
      */
     public String getName() {
-        return name;
+        return fName;
     }
 
     /**
      * Tags the the graph node has selected.<br>
      * WARNING: This method is only used to draw the graph node using the system selection colors. <br>
      * To use the complete SDViewer selection mechanism (selection management, notification, etc..) see SDWidget class
-     * 
+     *
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#addSelection(GraphNode)
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#removeSelection(GraphNode)
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#clearSelection()
      * @param selection - true to set selected, false to set unselected
      */
     public void setSelected(boolean selection) {
-        selected = selection;
+        fSelected = selection;
     }
 
     /**
      * Tags the the graph node as focused.<br>
      * WARNING: This method is only used to draw the graph node using the system focus style. <br>
      * To use the complete SDViewer focus mechanism see SDWidget class
-     * 
+     *
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#addSelection(GraphNode)
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#removeSelection(GraphNode)
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDWidget#clearSelection()
      * @param focus - true to set focued, false otherwise
      */
     public void setFocused(boolean focus) {
-        focused = focus;
+        fFocused = focus;
     }
 
     /**
      * Returns true if the graph node is selected, false otherwise.<br>
      * The returned value is used to highlight the graph node in the View.
-     * 
+     *
      * @return true if selected, false otherwise
-     * 
      */
     public boolean isSelected() {
-        return selected;
+        return fSelected;
     }
 
     /**
      * Returns true if the graph node is focused, false otherwise.<br>
      * The returned value is used to highlight the graph node in the View.
-     * 
-     * @return true if focued, false otherwise
-     * 
+     *
+     * @return true if focused, false otherwise
      */
     public boolean hasFocus() {
-        return focused;
+        return fFocused;
     }
 
     /**
-     * Returns true if the graph node contains the point given in parameter, return false otherwise.
-     * 
-     * @param x the x coordinate of the point to test containment <br>
-     *            y the y coordinate of the point to test containment
+     * Returns true if the graph node contains the point given in parameter,
+     * return false otherwise.
+     *
+     * @param x
+     *            the x coordinate of the point to test containment
+     * @param y
+     *            the y coordinate of the point to test containment
      * @return true if contained, false otherwise
      */
     abstract public boolean contains(int x, int y);
 
     /**
      * Returns the x coordinate of the graph node
-     * 
+     *
      * @return the x coordinate
      */
     abstract public int getX();
 
     /**
      * Returns the y coordinate of the graph node
-     * 
+     *
      * @return the y coordinate
      */
     abstract public int getY();
 
     /**
      * Returns the graph node height
-     * 
+     *
      * @return the graph node height
      */
     abstract public int getHeight();
 
     /**
      * Returns the graph node width
-     * 
+     *
      * @return the graph node width
      */
     abstract public int getWidth();
 
     /**
      * Draws the graph node in the given context
-     * 
+     *
      * @param context the graphical context to draw in
      */
     abstract protected void draw(IGC context);
 
     /**
-     * Returns the GraphNode visibility for the given visible area. Wrong visibility calculation, may strongly impact
-     * drawing performance
-     * 
-     * @param vx
-     * @param vy
-     * @param vwidth
-     * @param vheight
-     * @return true if visible false otherwise
+     * Returns the GraphNode visibility for the given visible area. Wrong
+     * visibility calculation, may strongly impact drawing performance
+     *
+     * @param x
+     *            The X coordinate
+     * @param y
+     *            The Y coordinate
+     * @param width
+     *            The width of the area
+     * @param height
+     *            The height of the area
+     * @return true if visible, false otherwise
      */
     public boolean isVisible(int x, int y, int width, int height) {
         return true;
     }
 
     /**
-     * Return a comparator to sort the GraphNode of the same type This comparator is used to order the GraphNode array
-     * of the given node type. (see getArrayId).
-     * 
+     * Return a comparator to sort the GraphNode of the same type This
+     * comparator is used to order the GraphNode array of the given node type.
+     * (see getArrayId).
+     *
      * @return the comparator
      */
     public Comparator<GraphNode> getComparator() {
@@ -281,8 +317,9 @@ public abstract class GraphNode {
     }
 
     /**
-     * If needed, return a different comparator to backward scan the GraphNode array
-     * 
+     * If needed, return a different comparator to backward scan the GraphNode
+     * array
+     *
      * @return the backward comparator or null if not needed
      */
     public Comparator<GraphNode> getBackComparator() {
@@ -291,8 +328,9 @@ public abstract class GraphNode {
 
     /**
      * Compare two graphNodes
-     * 
-     * @param node the node to compare to
+     *
+     * @param node
+     *            the node to compare to
      * @return true if equal false otherwise
      */
     public boolean isSameAs(GraphNode node) {
@@ -302,14 +340,14 @@ public abstract class GraphNode {
     /**
      * Return the node type for all class instances. This id is used to store the same nodes kind in the same ordered
      * array.
-     * 
+     *
      * @return the node type identifier
      */
     abstract public String getArrayId();
 
     /**
      * Return true if the distance from the GraphNode to the given point is positive
-     * 
+     *
      * @param x the point x coordinate
      * @param y the point y coordinate
      * @return true if positive false otherwise
@@ -321,7 +359,7 @@ public abstract class GraphNode {
     /**
      * Returns the graph node which contains the point given in parameter WARNING: Only graph nodes in the current
      * visible area can be returned
-     * 
+     *
      * @param x the x coordinate of the point to test
      * @param y the y coordinate of the point to test
      * @return the graph node containing the point given in parameter, null otherwise
@@ -329,32 +367,41 @@ public abstract class GraphNode {
     public GraphNode getNodeAt(int x, int y) {
         GraphNode toReturn = null;
 
-        if (!hasChilden)
+        if (!fHasChilden) {
             return null;
+        }
 
-        Iterator<String> it = nodes.keySet().iterator();
+        Iterator<String> it = fNodes.keySet().iterator();
         GraphNode node = null;
         while (it.hasNext()) {
             Object nodeType = it.next();
-            List<GraphNode> list = (List<GraphNode>) nodes.get(nodeType);
-            int index = ((Integer) indexes.get(nodeType)).intValue();
+            List<GraphNode> list = fNodes.get(nodeType);
+            int index = fIndexes.get(nodeType).intValue();
             node = getNodeFromListAt(x, y, list, index);
-            if (toReturn == null)
+            if (toReturn == null) {
                 toReturn = node;
+            }
             if (node != null) {
                 GraphNode internalNode = node.getNodeAt(x, y);
-                if (internalNode != null)
+                if (internalNode != null) {
                     return internalNode;
-                // else return node;
-                else if (Math.abs(node.getWidth()) < Math.abs(toReturn.getWidth()) || Math.abs(node.getHeight()) < Math.abs(toReturn.getHeight()))
+                } else if (Math.abs(node.getWidth()) < Math.abs(toReturn.getWidth()) || Math.abs(node.getHeight()) < Math.abs(toReturn.getHeight())) {
                     toReturn = node;
+                }
             }
         }
         return toReturn;
     }
 
-    public ArrayList<GraphNode> getNodeList(GraphNode from, GraphNode to) {
-        ArrayList<GraphNode> result = new ArrayList<GraphNode>();
+    /**
+     * Gets node list from node A to node B
+
+     * @param from A from node
+     * @param to A to node
+     * @return the list of nodes
+     */
+    public List<GraphNode> getNodeList(GraphNode from, GraphNode to) {
+        List<GraphNode> result = new ArrayList<GraphNode>();
 
         if (from != null) {
             result.add(from);
@@ -362,39 +409,46 @@ public abstract class GraphNode {
             result.add(to);
         }
 
-        if (from == null || to == null)
+        if ((from == null) || (to == null)) {
             return result;
+        }
 
-        if (from == to)
+        if (from == to) {
             return result;
+        }
 
         int startX = Math.min(from.getX(), Math.min(to.getX(), Math.min(from.getX() + from.getWidth(), to.getX() + to.getWidth())));
         int endX = Math.max(from.getX(), Math.max(to.getX(), Math.max(from.getX() + from.getWidth(), to.getX() + to.getWidth())));
         int startY = Math.min(from.getY(), Math.min(to.getY(), Math.min(from.getY() + from.getHeight(), to.getY() + to.getHeight())));
         int endY = Math.max(from.getY(), Math.max(to.getY(), Math.max(from.getY() + from.getHeight(), to.getY() + to.getHeight())));
 
-        if (!hasChilden)
+        if (!fHasChilden) {
             return result;
+        }
 
-        Iterator<String> it = nodes.keySet().iterator();
+        Iterator<String> it = fNodes.keySet().iterator();
         while (it.hasNext()) {
             Object nodeType = it.next();
-            List<GraphNode> nodesList = (List<GraphNode>) nodes.get(nodeType);
-            if (nodesList == null || nodesList.isEmpty())
+            List<GraphNode> nodesList = fNodes.get(nodeType);
+            if (nodesList == null || nodesList.isEmpty()) {
                 return null;
+            }
             for (int i = 0; i < nodesList.size(); i++) {
-                GraphNode node = (GraphNode) nodesList.get(i);
+                GraphNode node = nodesList.get(i);
                 int nw = node.getWidth();
                 int nh = node.getHeight();
                 int nx = node.getX();
                 int ny = node.getY();
-                if (contains(startX, startY, endX - startX, endY - startY, nx + 1, ny + 1) && contains(startX, startY, endX - startX, endY - startY, nx + nw - 2, ny + nh - 2))
+                if (contains(startX, startY, endX - startX, endY - startY, nx + 1, ny + 1) && contains(startX, startY, endX - startX, endY - startY, nx + nw - 2, ny + nh - 2)) {
                     result.add(node);
+                }
                 result.addAll(node.getNodeList(from, to));
             }
         }
-        if ((to != null) && (!result.contains(to)))
+
+        if (!result.contains(to)) {
             result.add(to);
+        }
         return result;
     }
 
@@ -402,7 +456,7 @@ public abstract class GraphNode {
      * Returns the graph node which contains the point given in parameter for the given graph node list and starting the
      * iteration at the given index<br>
      * WARNING: Only graph nodes with smaller coordinates than the current visible area can be returned.<br>
-     * 
+     *
      * @param x the x coordinate of the point to test
      * @param y the y coordinate of the point to test
      * @param list the list to search in
@@ -410,145 +464,158 @@ public abstract class GraphNode {
      * @return the graph node containing the point given in parameter, null otherwise
      */
     protected GraphNode getNodeFromListAt(int x, int y, List<GraphNode> list, int fromIndex) {
-        if (list == null)
+        if (list == null) {
             return null;
+        }
         for (int i = fromIndex; i < list.size(); i++) {
-            GraphNode node = (GraphNode) list.get(i);
-            if (node.contains(x, y))
+            GraphNode node = list.get(i);
+            if (node.contains(x, y)) {
                 return node;
+            }
         }
         return null;
     }
 
     /**
      * Returns the start event occurrence attached to this graphNode.
-     * 
+     *
      * @return the start event occurrence attached to the graphNode
      */
     public int getStartOccurrence() {
-        return startEventOccurrence;
+        return fStartEventOccurrence;
     }
 
     /**
      * Returns the end event occurrence attached to this graphNode
-     * 
+     *
      * @return the start event occurrence attached to the graphNode
      */
     public int getEndOccurrence() {
-        return endEventOccurrence;
+        return fEndEventOccurrence;
     }
 
     /**
      * Computes the index of the first visible GraphNode for each ordered graph node lists depending on the visible area
      * given in parameter
-     * 
+     *
      * @param x visible area top left corner x coordinate
      * @param y visible area top left corner y coordinate
      * @param width visible area width
      * @param height visible area height
      */
     public void updateIndex(int x, int y, int width, int height) {
-        if (!hasChilden)
+        if (!fHasChilden) {
             return;
+        }
         if(TmfUiTracer.isIndexTraced()) {
             TmfUiTracer.traceIndex("*****************************\n"); //$NON-NLS-1$
             TmfUiTracer.traceIndex("Visible area position in virtual screen (x,y)= " + x + " " + y + "\n\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         }
 
-        Iterator<String> it = nodes.keySet().iterator();
+        Iterator<String> it = fNodes.keySet().iterator();
         while (it.hasNext()) {
             String nodeType = it.next();
             int direction = 1;
-            int drawIndex = ((Integer) indexes.get(nodeType)).intValue();
+            int drawIndex = fIndexes.get(nodeType).intValue();
             /*
              * if (x==0) { drawIndex = 0; indexes.put(nodeType,new Integer(drawIndex)); }
              */
-            if ((nodes.get(nodeType) != null) && (((List<GraphNode>) nodes.get(nodeType)).size() > 1)) {
-                if (((GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(drawIndex)).positiveDistanceToPoint(x, y))
+            if ((fNodes.get(nodeType) != null) && (fNodes.get(nodeType).size() > 1)) {
+                if (fNodes.get(nodeType).get(drawIndex).positiveDistanceToPoint(x, y)) {
                     direction = -1;
+                }
 
-                if (drawIndex == 0)
+                if (drawIndex == 0) {
                     direction = 1;
+                }
 
-                if ((direction == -1) && (bnodes.get(nodeType) != null)) {
-                    GraphNode currentNode = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(drawIndex);
-                    drawIndex = Arrays.binarySearch(((List<GraphNode>) bnodes.get(nodeType)).toArray(new GraphNode[0]), ((List<GraphNode>) nodes.get(nodeType)).get(drawIndex), currentNode.getBackComparator());
-                    nodes.put(nodeType, (List<GraphNode>) bnodes.get(nodeType));
+                if ((direction == -1) && (fBackwardNodes.get(nodeType) != null)) {
+                    GraphNode currentNode = fNodes.get(nodeType).get(drawIndex);
+                    drawIndex = Arrays.binarySearch(fBackwardNodes.get(nodeType).toArray(new GraphNode[fBackwardNodes.get(nodeType).size()]),
+                            fNodes.get(nodeType).get(drawIndex), currentNode.getBackComparator());
+                    fNodes.put(nodeType, fBackwardNodes.get(nodeType));
                     if (drawIndex < 0) {
                         drawIndex = 0;
                         direction = 1;
-                    } else
-                        nodes.put(nodeType, (List<GraphNode>) bnodes.get(nodeType));
+                    } else {
+                        fNodes.put(nodeType, fBackwardNodes.get(nodeType));
+                    }
                 }
                 GraphNode prev = null;
 
-                for (int i = drawIndex; i < ((List<GraphNode>) nodes.get(nodeType)).size() && i >= 0; i = i + direction) {
+                for (int i = drawIndex; i < fNodes.get(nodeType).size() && i >= 0; i = i + direction) {
                     drawIndex = i;
-                    indexes.put(nodeType, Integer.valueOf(i));
+                    fIndexes.put(nodeType, Integer.valueOf(i));
 
-                    GraphNode currentNode = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(i);
+                    GraphNode currentNode = fNodes.get(nodeType).get(i);
 
-                    if (prev == null)
+                    if (prev == null) {
                         prev = currentNode;
+                    }
 
                     Comparator<GraphNode> comp = currentNode.getComparator();
-                    HashMap<String, Boolean> sort = fSort;
+                    Map<String, Boolean> sort = fForwardSort;
 
-                    if (direction == -1) {
-                        if (currentNode.getBackComparator() != null) {
-                            comp = currentNode.getBackComparator();
-                            sort = bSort;
-                        }
+                    if ((direction == -1) && (currentNode.getBackComparator() != null)) {
+                        comp = currentNode.getBackComparator();
+                        sort = fBackwardSort;
                     }
 
-                    if (i < ((List<GraphNode>) nodes.get(nodeType)).size() - 1) {
-                        GraphNode next = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(i + 1);
+                    if (i < fNodes.get(nodeType).size() - 1) {
+                        GraphNode next = fNodes.get(nodeType).get(i + 1);
 
-                        if ((comp != null) && (comp.compare(currentNode, next) > 0))
-                            sort.put(nodeType, Boolean.valueOf(true));
+                        if ((comp != null) && (comp.compare(currentNode, next) > 0)) {
+                            sort.put(nodeType, Boolean.TRUE);
+                        }
                     }
                     if (direction == 1) {
-                        if (((GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(i)).positiveDistanceToPoint(x, y))
+                        if (fNodes.get(nodeType).get(i).positiveDistanceToPoint(x, y)) {
                             break;
+                        }
                     } else {
                         if (currentNode.getBackComparator() == null) {
                             if // (currentNode.isVisible(x,y,width,height)
-                            (!currentNode.positiveDistanceToPoint(x, y))
+                            (!currentNode.positiveDistanceToPoint(x, y)) {
                                 break;
+                            }
                         } else {
                             if (currentNode.isVisible(x, y, width, height) && !currentNode.positiveDistanceToPoint(x, y)) {
-                                if ((comp != null) && (comp.compare(currentNode, prev) <= 0))
+                                if ((comp != null) && (comp.compare(currentNode, prev) <= 0)) {
                                     break;
-                            } else if ((comp != null) && (comp.compare(currentNode, prev) <= 0))
+                                }
+                            } else if ((comp != null) && (comp.compare(currentNode, prev) <= 0)) {
                                 prev = currentNode;
+                            }
                         }
                     }
                 }
 
-                nodes.put(nodeType, fnodes.get(nodeType));
-                if ((bnodes.get(nodeType) != null) && (direction == -1)) {
+                fNodes.put(nodeType, fForwardNodes.get(nodeType));
+                if ((fBackwardNodes.get(nodeType) != null) && (direction == -1)) {
                     // nodes.put(nodeType,fnodes.get(nodeType));
-                    int index = ((Integer) indexes.get(nodeType)).intValue();
-                    List<GraphNode> list = (List<GraphNode>) nodes.get(nodeType);
-                    List<GraphNode> backList = (List<GraphNode>) bnodes.get(nodeType);
-                    GraphNode currentNode = (GraphNode) (backList.get(index));
+                    int index = fIndexes.get(nodeType).intValue();
+                    List<GraphNode> list = fNodes.get(nodeType);
+                    List<GraphNode> backList = fBackwardNodes.get(nodeType);
+                    GraphNode currentNode = (backList.get(index));
                     if (index > 0) {
-                        index = Arrays.binarySearch(list.toArray(new GraphNode[0]), backList.get(index), currentNode.getComparator());
-                        if (index < 0)
+                        index = Arrays.binarySearch(list.toArray(new GraphNode[list.size()]), backList.get(index), currentNode.getComparator());
+                        if (index < 0) {
                             index = 0;
-                        indexes.put(nodeType, Integer.valueOf(index));
+                        }
+                        fIndexes.put(nodeType, Integer.valueOf(index));
                     }
                 }
 
-                for (int i = drawIndex; i < ((List<GraphNode>) nodes.get(nodeType)).size() && i >= 0; i++) {
-                    GraphNode toDraw = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(i);
+                for (int i = drawIndex; i < fNodes.get(nodeType).size() && i >= 0; i++) {
+                    GraphNode toDraw = fNodes.get(nodeType).get(i);
                     toDraw.updateIndex(x, y, width, height);
-                    if (!toDraw.isVisible(x, y, width, height))
+                    if (!toDraw.isVisible(x, y, width, height)) {
                         break;
+                    }
                 }
             }
             if (TmfUiTracer.isIndexTraced()) {
-                TmfUiTracer.traceIndex("First drawn " + nodeType + " index = " + drawIndex + "\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$          
+                TmfUiTracer.traceIndex("First drawn " + nodeType + " index = " + drawIndex + "\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                 TmfUiTracer.traceIndex(nodeType + " found in " + 0 + " iterations\n"); //$NON-NLS-1$ //$NON-NLS-2$
             }
         }
@@ -562,44 +629,46 @@ public abstract class GraphNode {
      * Draws the children nodes on the given context.<br>
      * This method start width GraphNodes ordering if needed.<br>
      * After, depending on the visible area, only visible GraphNodes are drawn.<br>
-     * 
+     *
      * @param context the context to draw to
-     * @param drawFrame indicate if the frame rectangle need to be redrawn
      * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#draw(IGC)
      */
     protected void drawChildenNodes(IGC context) {
 
-        if (!hasChilden)
+        if (!fHasChilden) {
             return;
+        }
         // If the nodes have not been added ordered, the array is ordered
-        Iterator<String> it = fSort.keySet().iterator();
+        Iterator<String> it = fForwardSort.keySet().iterator();
         while (it.hasNext()) {
             String nodeType = it.next();
-            boolean sort = ((Boolean) fSort.get(nodeType)).booleanValue();
+            boolean sort = fForwardSort.get(nodeType).booleanValue();
             if (sort) {
-                GraphNode[] temp = ((List<GraphNode>) fnodes.get(nodeType)).toArray(new GraphNode[0]);
-                GraphNode node = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(0);
+                GraphNode[] temp = fForwardNodes.get(nodeType).toArray(new GraphNode[fForwardNodes.get(nodeType).size()]);
+                GraphNode node = fNodes.get(nodeType).get(0);
                 Arrays.sort(temp, node.getComparator());
-                fSort.put(nodeType, Boolean.valueOf(false));
-                nodes.put(nodeType, Arrays.asList(temp));
-                fnodes.put(nodeType, Arrays.asList(temp));
-                if (TmfUiTracer.isSortingTraced())
+                fForwardSort.put(nodeType, Boolean.FALSE);
+                fNodes.put(nodeType, Arrays.asList(temp));
+                fForwardNodes.put(nodeType, Arrays.asList(temp));
+                if (TmfUiTracer.isSortingTraced()) {
                     TmfUiTracer.traceSorting(nodeType + " array sorted\n"); //$NON-NLS-1$
+                }
             }
         }
 
-        Iterator<String> it2 = bSort.keySet().iterator();
+        Iterator<String> it2 = fBackwardSort.keySet().iterator();
         while (it2.hasNext()) {
             String nodeType = it2.next();
-            boolean sort = ((Boolean) bSort.get(nodeType)).booleanValue();
+            boolean sort = fBackwardSort.get(nodeType).booleanValue();
             if (sort) {
-                GraphNode[] temp = ((List<GraphNode>) bnodes.get(nodeType)).toArray(new GraphNode[0]);
-                GraphNode node = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(0);
+                GraphNode[] temp = fBackwardNodes.get(nodeType).toArray(new GraphNode[fBackwardNodes.get(nodeType).size()]);
+                GraphNode node = fNodes.get(nodeType).get(0);
                 Arrays.sort(temp, node.getBackComparator());
-                bSort.put(nodeType, Boolean.valueOf(false));
-                bnodes.put(nodeType, Arrays.asList(temp));
-                if (TmfUiTracer.isSortingTraced())
+                fBackwardSort.put(nodeType, Boolean.FALSE);
+                fBackwardNodes.put(nodeType, Arrays.asList(temp));
+                if (TmfUiTracer.isSortingTraced()) {
                     TmfUiTracer.traceSorting(nodeType + " back array sorted\n"); //$NON-NLS-1$
+                }
             }
         }
 
@@ -608,20 +677,22 @@ public abstract class GraphNode {
         }
 
         int arrayStep = 1;
-        if ((Metrics.getMessageFontHeigth() + Metrics.MESSAGES_NAME_SPACING * 2) * context.getZoom() < Metrics.MESSAGE_SIGNIFICANT_VSPACING)
+        if ((Metrics.getMessageFontHeigth() + Metrics.MESSAGES_NAME_SPACING * 2) * context.getZoom() < Metrics.MESSAGE_SIGNIFICANT_VSPACING) {
             arrayStep = Math.round(Metrics.MESSAGE_SIGNIFICANT_VSPACING / ((Metrics.getMessageFontHeigth() + Metrics.MESSAGES_NAME_SPACING * 2) * context.getZoom()));
+        }
 
         int count = 0;
-        Iterator<String> it3 = fSort.keySet().iterator();
+        Iterator<String> it3 = fForwardSort.keySet().iterator();
         while (it3.hasNext()) {
             count = 0;
             Object nodeType = it3.next();
-            GraphNode node = (GraphNode) ((List<GraphNode>) nodes.get(nodeType)).get(0);
-            context.setFont(Frame.getUserPref().getFont(node.prefId));
-            int index = ((Integer) indexes.get(nodeType)).intValue();
-            count = drawNodes(context, (List<GraphNode>) nodes.get(nodeType), index, arrayStep);
-            if (TmfUiTracer.isDisplayTraced())
+            GraphNode node = fNodes.get(nodeType).get(0);
+            context.setFont(SDViewPref.getInstance().getFont(node.fPrefId));
+            int index = fIndexes.get(nodeType).intValue();
+            count = drawNodes(context, fNodes.get(nodeType), index, arrayStep);
+            if (TmfUiTracer.isDisplayTraced()) {
                 TmfUiTracer.traceDisplay(count + " " + nodeType + " drawn, starting from index " + index + "\r\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+            }
         }
         if (TmfUiTracer.isDisplayTraced()) {
             TmfUiTracer.traceDisplay("*****************************\n"); //$NON-NLS-1$
@@ -631,7 +702,7 @@ public abstract class GraphNode {
 
     /**
      * Draw the GraphNode stored in the given list, starting at index startIndex with the given step
-     * 
+     *
      * @param context the context to draw to
      * @param list the GraphNodes list
      * @param startIndex the start index
@@ -639,23 +710,25 @@ public abstract class GraphNode {
      * @return the number of GraphNodes drawn
      */
     protected int drawNodes(IGC context, List<GraphNode> list, int startIndex, int step) {
-        if (!hasChilden)
+        if (!fHasChilden) {
             return 0;
+        }
 
         GraphNode last = null;
         int nodesCount = 0;
-        if (list.size() < 0)
+        if (list.size() < 0) {
             return 0;
+        }
 
-        GraphNode node = (GraphNode) list.get(0);
-        context.setFont(Frame.getUserPref().getFont(node.prefId));
+        GraphNode node = list.get(0);
+        context.setFont(SDViewPref.getInstance().getFont(node.fPrefId));
         Comparator<GraphNode> comparator = node.getComparator();
         for (int i = startIndex; i < list.size(); i = i + step) {
-            GraphNode toDraw = (GraphNode) list.get(i);
+            GraphNode toDraw = list.get(i);
             if (i < list.size() - 1) {
-                GraphNode next = (GraphNode) list.get(i + 1);
+                GraphNode next = list.get(i + 1);
                 if ((comparator != null) && (comparator.compare(toDraw, next) > 0)) {
-                    fSort.put(next.getArrayId(), Boolean.valueOf(true));
+                    fForwardSort.put(next.getArrayId(), Boolean.TRUE);
                 }
             }
             int cx = context.getContentsX();
@@ -663,28 +736,36 @@ public abstract class GraphNode {
             int cw = context.getVisibleWidth();
             int ch = context.getVisibleHeight();
             // The arrays should be ordered, no needs to continue for this one
-            if (!toDraw.isVisible(cx, cy, cw, ch) && toDraw.positiveDistanceToPoint(cx + cw, cy + ch))
+            if (!toDraw.isVisible(cx, cy, cw, ch) && toDraw.positiveDistanceToPoint(cx + cw, cy + ch)) {
                 break;
+            }
             // ***Common*** nodes visibility
             if ((!toDraw.isSameAs(last) || toDraw.isSelected()) && (toDraw.isVisible(context.getContentsX(), context.getContentsY(), context.getVisibleWidth(), context.getVisibleHeight()))) {
                 nodesCount++;
-                
+
                 toDraw.draw(context);
-                if (hasFocus())
+                if (hasFocus()) {
                     toDraw.drawFocus(context);
+                }
             }
             last = toDraw;
         }
         return nodesCount;
     }
 
+    /**
+     * Draws the focus within the graphical context.
+     *
+     * @param context
+     *            The context
+     */
     public void drawFocus(IGC context) {
         context.drawFocus(getX(), getY(), getWidth(), getHeight());
     }
 
     /**
      * Determine if the given point (px,py) is contained in the rectangle (x,y,width,height)
-     * 
+     *
      * @param x the rectangle x coordinate
      * @param y the rectangle y coordinate
      * @param width the rectangle width
This page took 0.037914 seconds and 5 git commands to generate.