chiark / gitweb /
when looking for the league tracker, cope if it isn't exactly where we expected;... 1.0.4
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Mon, 3 Jan 2011 15:30:24 +0000 (15:30 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Mon, 3 Jan 2011 15:30:24 +0000 (15:30 +0000)
src/net/chiark/yarrg/MarketUploader.java

index 53b4349..2e83678 100644 (file)
@@ -346,7 +346,10 @@ public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
                // If the league tracker is there, we can skip the faff
                // and ask for its tooltip, since we're on a boat
 
-               Accessible leagueTracker = descendNodes(window,new int[] {0,1,0,0,2,1,1,1});
+               Accessible leagueTrackerContainer = descendNodes(window,new int[] {0,1,0,0,2,1});
+               Accessible leagueTrackerItself = descendByClass(leagueTrackerContainer,
+                                                               "com.threerings.yohoho.sea.client.LeagueTracker");
+               Accessible leagueTracker = descend(leagueTrackerItself, 1);
                try {
                        islandName = ((JLabel)leagueTracker).getToolTipText();
                } catch (NullPointerException e) {
@@ -692,7 +695,29 @@ public class MarketUploader implements TopLevelWindowListener, GUIInitializedLis
                if (dtxt!=null) dtxt.println("DESCEND "+childNum+" "+child.getClass().getName()+" OK");
                return child;
        }
-       
+
+       /**
+       *       Descends one level to the child which has the specified class.
+       *       
+       *       @param parent the node with children
+       *       @param classname the name of the class, as a string
+       *       @return the child or <code>null</code> if the child is not found.
+       */
+       private Accessible descendByClass(Accessible parent, String classname) {
+               if (parent == null) return null;
+               AccessibleContext ac = parent.getAccessibleContext();
+               int children = ac.getAccessibleChildrenCount();
+               for (int i=0; i<children; i++) {
+                       Accessible child = ac.getAccessibleChild(i);
+                       if (child.getClass().getName() == classname) {
+                           if (dtxt!=null) dtxt.println("DESCEND CLASS "+classname+" OK");
+                           return child;
+                       }
+               }
+               if (dtxt!=null) dtxt.println("DESCEND CLASS "+classname+" NOT FOUND");
+               return null;
+       }
+
        public static void main(String[] args) {
                new MarketUploader();
        }