1 package cz
.cvut
.promod
.services
.menuService
.utils
;
3 import org
.apache
.log4j
.Logger
;
6 * ProMod, master thesis project
7 * User: Petr Zverina, petr.zverina@gmail.com
8 * Date: 1:46:34, 2.2.2010
12 * Specifies the menu item hierarchical and relative or absolute position in menu.
14 public final class MenuItemPosition
{
16 private static final Logger LOG
= Logger
.getLogger(MenuItemPosition
.class);
19 * Specifies relative menu item position
21 public static enum PlacementStyle
{
22 /** First item in menu. */
25 /** Last item in menu. */
28 /** Group menu item having the same text. Last if there is no name duplicity. */
32 private final PositionInfo positionInfo
;
33 private final String hierarchicalPlacement
;
36 * Constructs new MenuItemPosition holding hierarchical placement information.
38 * @param hierarchicalPlacement is the info about hierarchical position for new menu item
40 public MenuItemPosition(final String hierarchicalPlacement
){
41 positionInfo
= new PositionInfo();
42 this.hierarchicalPlacement
= hierarchicalPlacement
;
46 * Constructs new MenuItemPosition holding hierarchical placement information and relative position.
48 * @param hierarchicalPlacement is the info about hierarchical position for new menu item
50 * @param placementStyle defines relative menu item position in the menu
52 public MenuItemPosition(final String hierarchicalPlacement
, final PlacementStyle placementStyle
){
53 this(hierarchicalPlacement
);
55 positionInfo
.setRelativePosition(placementStyle
);
59 * Constructs new MenuItemPosition holding hierarchical placement information and absolute position.
61 * @param hierarchicalPlacement is the info about hierarchical position for new menu item
63 * @param position defines absolute menu item position in the menu
65 public MenuItemPosition(final String hierarchicalPlacement
, final int position
){
66 this(hierarchicalPlacement
);
69 LOG
.error("Wrong menu position for menu item. Position has been set to zero.");
70 positionInfo
.setPosition(0);
72 positionInfo
.setPosition(position
);
77 * Returns required hierarchical placement information.
79 * @return hierarchical placement information
81 public String
getHierarchicalPlacement() {
82 return hierarchicalPlacement
;
86 * Returns absolute position for menu item.
88 * @return absolute position
90 public int getPosition() {
91 return positionInfo
.getAbsolutePosition();
95 * Returns relative position for menu item.
97 * @return relative position
99 public PlacementStyle
getPlacementStyle() {
100 return positionInfo
.getRelativePosition();
104 * Returns information about relative and/or absolute position.
106 * @return information about relative and/or absolute position
108 public PositionInfo
getPositionInfo() {
113 * Holds the absolute and/or relative position information.
115 public static final class PositionInfo
{
118 * If position > 0 -> then use position (absolute positioning), else use placementStyle (relative positioning)
120 private int position
= -1;
123 * Relative positioning.
125 private PlacementStyle placementStyle
= PlacementStyle
.LAST
;
128 * Returns absolute positioning information.
130 * @return absolute positioning information
132 public int getAbsolutePosition() {
137 * Returns relative positioning information.
139 * @return relative positioning information
141 public PlacementStyle
getRelativePosition() {
142 return placementStyle
;
146 * Sets absolute positioning information.
148 * @param position is the new absolute position
150 public void setPosition(final int position
) {
151 this.position
= position
;
155 * Sets relative positioning information.
157 * @param placementStyle is the new relative position
159 public void setRelativePosition(final PlacementStyle placementStyle
) {
160 this.placementStyle
= placementStyle
;