001    package com.google.gwt.maps.client.controls;
002    
003    /**
004     * Identifiers used to specify the placement of controls on the map. Controls are positioned relative to other controls in the same layout position. Controls that are added first are positioned closer to the edge of the map.<br> 
005     * <br>
006     * <table border="1px" padding="0px">
007     *   <col width="33,3%"/><col width="33,3%"/><col width="33,3%"/>
008     *   <thead><tbody>
009     *   <tbody>
010     *      <tr>
011     *              <td>TL</td>
012     *              <td>TC</td>
013     *              <td>TR</td>
014     *      </tr>
015     *      <tr>
016     *              <td>LT</td>
017     *              <td></td>
018     *              <td>RT</td>
019     *      </tr>
020     *      <tr>
021     *              <td>&nbsp;</td>
022     *              <td>&nbsp;</td>
023     *              <td>&nbsp;</td>
024     *      </tr>
025     *      <tr>
026     *              <td>LC</td>
027     *              <td></td>
028     *              <td>RC</td>
029     *      </tr>
030     *      <tr>
031     *              <td>&nbsp;</td>
032     *              <td>&nbsp;</td>
033     *              <td>&nbsp;</td>
034     *      </tr>
035     *      <tr>
036     *              <td>LB</td>
037     *              <td></td>
038     *              <td>LB</td>
039     *      </tr>
040     *      <tr>
041     *              <td>BL</td>
042     *              <td>BC</td>
043     *              <td>BR</td>
044     *      </tr>
045     * </tbody>
046     * </table>
047     * <br>
048     * Elements in the top or bottom row flow towards the middle. Elements at the left or right sides flow downwards.
049     * <br><br>
050     * See <a href="https://developers.google.com/maps/documentation/javascript/reference#ControlPosition">ControlPosition API Doc</a>
051     */
052    public enum ControlPosition {
053      
054      /**
055       * javascript constant numbers - reverse engineered
056          BOTTOM_CENTER=11
057          BOTTOM_LEFT=10
058          BOTTOM_RIGHT=12
059          LEFT_BOTTOM=6
060          LEFT_CENTER=4
061          LEFT_TOP=5
062          RIGHT_BOTTOM=9
063          RIGHT_CENTER=8
064          RIGHT_TOP=7
065          TOP_CENTER=2
066          TOP_LEFT=1
067          TOP_RIGHT=3
068       */
069    
070      /**
071       * Elements are positioned in the center of the bottom row.
072       */
073      BOTTOM_CENTER(11),
074    
075      /**
076       * Elements are positioned in the bottom left and flow towards the middle. Elements are positioned to the right of the Google logo.
077       */
078      BOTTOM_LEFT(10),
079    
080      /**
081       * Elements are positioned in the bottom right and flow towards the middle. Elements are positioned to the left of the copyrights.
082       */
083      BOTTOM_RIGHT(12),
084    
085      /**
086       * Elements are positioned on the left, above bottom-left elements, and flow upwards.
087       */
088      LEFT_BOTTOM(6),
089    
090      /**
091       * Elements are positioned in the center of the left side.
092       */
093      LEFT_CENTER(4),
094    
095      /**
096       * Elements are positioned on the left, below top-left elements, and flow downwards.
097       */
098      LEFT_TOP(5),
099    
100      /**
101       * Elements are positioned on the right, above bottom-right elements, and flow upwards.
102       */
103      RIGHT_BOTTOM(9),
104    
105      /**
106       * Elements are positioned in the center of the right side.
107       */
108      RIGHT_CENTER(8),
109    
110      /**
111       * Elements are positioned on the right, below top-right elements, and flow downwards.
112       */
113      RIGHT_TOP(7),
114    
115      /**
116       * Elements are positioned in the center of the top row.
117       */
118      TOP_CENTER(2),
119    
120      /**
121       * Elements are positioned in the top left and flow towards the middle.
122       */
123      TOP_LEFT(1),
124    
125      /**
126       * Elements are positioned in the top right and flow towards the middle.
127       */
128      TOP_RIGHT(3);
129    
130      /**
131       * javascript constant value
132       */
133      private int value;
134      
135      /**
136       * Elements in the top or bottom row flow towards the middle. Elements at the left or right sides flow downwards.
137       * @param value javascript constant value
138       */
139      ControlPosition(int value) {
140        this.value = value;
141      }
142      
143      /**
144       * returns enum name
145       */
146      public String getName() {
147        return name();
148      }
149      
150      /**
151       * returns javascript constant value
152       */
153      public int value() {
154        return value;
155      }
156      
157      public String toString() {
158        return name() + "(" + value + ")";
159      }
160      
161      /**
162       * reconstruct from position from javascript constant value
163       * @param value javascript constant value
164       */
165      public static ControlPosition fromValue(int value) {
166        ControlPosition r = null;
167        switch (value) {
168        case 1:
169          r = TOP_LEFT;
170          break;
171        case 2:
172          r = TOP_CENTER;
173          break;
174        case 3:
175          r = TOP_RIGHT;
176          break;
177        case 4:
178          r = LEFT_CENTER;
179          break;
180        case 5:
181          r = LEFT_TOP;
182          break;
183        case 6:
184          r = LEFT_BOTTOM;
185          break;
186        case 7:
187          r = RIGHT_TOP;
188          break;
189        case 8:
190          r = RIGHT_CENTER;
191          break;
192        case 9:
193          r = RIGHT_BOTTOM;
194          break;
195        case 10:
196          r = BOTTOM_LEFT;
197          break;
198        case 11:
199          r = BOTTOM_CENTER;
200          break;
201        case 12:
202          r = BOTTOM_RIGHT;
203          break;
204        }
205        return r;
206      }
207    
208    }
209