001    /*
002     * MenuWrapper
003     * 
004     * Copyright (c) 2001, 2002, 2003, 2004 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.apps;
009    
010    /**
011     * Abstract menu wrapper.
012     * A menu consists of a number of menu elements, each of which have a text,
013     * an enabled status and an int constant from MenuIndexConstants associated with it.
014     * @author Marco Schmidt
015     */
016    public abstract class MenuWrapper
017    {
018            /**
019             * Attempts to find the index of a given object that represents a menu element.
020             * @param o some object representing part of the menu
021             * @return corresponding index value from {@link MenuIndexConstants} on success
022             *  or -1 on failure
023             */
024            public abstract int findIndex(Object o);
025    
026            /**
027             * For one of the values in {@link MenuIndexConstants}, returns the corresponding 
028             * constant in {@link StringIndexConstants}.
029             * @param menuIndex int value from the MenuIndexConstants interface
030             * @return int value from the StringIndexConstants interface
031             */
032            public int getStringIndex(int menuIndex)
033            {
034                    switch(menuIndex)
035                    {
036                            case(MenuIndexConstants.FILE): return StringIndexConstants.FILE;
037                            case(MenuIndexConstants.FILE_OPEN): return StringIndexConstants.OPEN;
038                            case(MenuIndexConstants.FILE_SAVEAS): return StringIndexConstants.SAVE_AS;
039                            case(MenuIndexConstants.FILE_SAVEAS_GIF): return StringIndexConstants.GIF;
040                            case(MenuIndexConstants.FILE_SAVEAS_PALM): return StringIndexConstants.PALM;
041                            case(MenuIndexConstants.FILE_SAVEAS_PBM): return StringIndexConstants.PORTABLE_BITMAP;
042                            case(MenuIndexConstants.FILE_SAVEAS_PGM): return StringIndexConstants.PORTABLE_GRAYMAP;
043                            case(MenuIndexConstants.FILE_SAVEAS_PNG): return StringIndexConstants.PORTABLE_NETWORK_GRAPHICS;
044                            case(MenuIndexConstants.FILE_SAVEAS_PPM): return StringIndexConstants.PORTABLE_PIXMAP;
045                            case(MenuIndexConstants.FILE_SAVEAS_SUNRASTER): return StringIndexConstants.SUN_RASTER;
046                            case(MenuIndexConstants.FILE_SAVEAS_WINDOWSBMP): return StringIndexConstants.WINDOWS_BITMAP;
047                            case(MenuIndexConstants.FILE_CLOSE): return StringIndexConstants.CLOSE;
048                            case(MenuIndexConstants.FILE_EXIT): return StringIndexConstants.EXIT;
049                            case(MenuIndexConstants.EDIT): return StringIndexConstants.EDIT;
050                            case(MenuIndexConstants.EDIT_UNDO): return StringIndexConstants.EDIT_UNDO;
051                            case(MenuIndexConstants.EDIT_REDO): return StringIndexConstants.EDIT_REDO;
052                            case(MenuIndexConstants.COLOR): return StringIndexConstants.COLOR;
053                            case(MenuIndexConstants.COLOR_ADJUST): return StringIndexConstants.ADJUST;
054                            case(MenuIndexConstants.COLOR_ADJUST_BRIGHTNESS): return StringIndexConstants.BRIGHTNESS_MENU_ITEM;
055                            case(MenuIndexConstants.COLOR_ADJUST_CONTRAST): return StringIndexConstants.CONTRAST_MENU_ITEM;
056                            case(MenuIndexConstants.COLOR_ADJUST_GAMMA): return StringIndexConstants.GAMMA_MENU_ITEM;
057                            case(MenuIndexConstants.COLOR_ADJUST_HUESATURATIONVALUE): return StringIndexConstants.HUE_SATURATION_VALUE_MENU_ITEM;
058                            case(MenuIndexConstants.COLOR_HISTOGRAM): return StringIndexConstants.HISTOGRAM;
059                            case(MenuIndexConstants.COLOR_HISTOGRAM_COUNTCOLORSUSED): return StringIndexConstants.COUNT_COLORS_USED;
060                            case(MenuIndexConstants.COLOR_HISTOGRAM_EQUALIZE): return StringIndexConstants.EQUALIZE_HISTOGRAM_MENU_ITEM;
061                            case(MenuIndexConstants.COLOR_HISTOGRAM_NORMALIZE): return StringIndexConstants.NORMALIZE_HISTOGRAM_MENU_ITEM;
062                            case(MenuIndexConstants.COLOR_HISTOGRAM_TEXTUREPROPERTIES): return StringIndexConstants.TEXTURE_PROPERTIES_MENU_ITEM;
063                            case(MenuIndexConstants.COLOR_HISTOGRAM_SAVEHISTOGRAMAS): return StringIndexConstants.SAVE_HISTOGRAM_AS_MENU_ITEM;
064                            case(MenuIndexConstants.COLOR_HISTOGRAM_SAVECOOCCURRENCEMATRIXAS): return StringIndexConstants.SAVE_COOCCURRENCE_MATRIX_MENU_ITEM;
065                            case(MenuIndexConstants.COLOR_HISTOGRAM_SAVECOOCCURRENCEFREQUENCYMATRIXAS): return StringIndexConstants.SAVE_COOCCURRENCE_FREQUENCY_MATRIX_MENU_ITEM;
066                            case(MenuIndexConstants.COLOR_PALETTE): return StringIndexConstants.PALETTE_MENU_ITEM;
067                            case(MenuIndexConstants.COLOR_PALETTE_SAVEAS): return StringIndexConstants.PALETTE_SAVE_AS_MENU_ITEM;
068                            case(MenuIndexConstants.COLOR_PROMOTE): return StringIndexConstants.PROMOTE;
069                            case(MenuIndexConstants.COLOR_PROMOTE_PROMOTETOPALETTED): return StringIndexConstants.PROMOTE_TO_PALETTED;
070                            case(MenuIndexConstants.COLOR_PROMOTE_PROMOTETOGRAY8): return StringIndexConstants.PROMOTE_TO_GRAY8;
071                            case(MenuIndexConstants.COLOR_PROMOTE_PROMOTETOGRAY16): return StringIndexConstants.PROMOTE_TO_GRAY16;
072                            case(MenuIndexConstants.COLOR_PROMOTE_PROMOTETORGB24): return StringIndexConstants.PROMOTE_TO_RGB24;
073                            case(MenuIndexConstants.COLOR_PROMOTE_PROMOTETORGB48): return StringIndexConstants.PROMOTE_TO_RGB48;
074                            case(MenuIndexConstants.COLOR_REDUCE): return StringIndexConstants.REDUCE;
075                            case(MenuIndexConstants.COLOR_REDUCE_REDUCETOBILEVELTHRESHOLD): return StringIndexConstants.REDUCE_TO_BILEVEL_THRESHOLD_MENU_ITEM;
076                            case(MenuIndexConstants.COLOR_REDUCE_REDUCENUMBEROFSHADESOFGRAY): return StringIndexConstants.REDUCE_NUMBER_OF_SHADES_OF_GRAY_MENU_ITEM;
077                            case(MenuIndexConstants.COLOR_REDUCE_CONVERTTOGRAYSCALE): return StringIndexConstants.CONVERT_TO_GRAYSCALE;
078                            case(MenuIndexConstants.COLOR_REDUCE_MEDIANCUT): return StringIndexConstants.MEDIAN_CUT;
079                            case(MenuIndexConstants.COLOR_REDUCE_OCTREE): return StringIndexConstants.OCTREE_COLOR_QUANTIZATION_MENU_ITEM;
080                            case(MenuIndexConstants.COLOR_REDUCE_UNIFORMPALETTE): return StringIndexConstants.UNIFORM_PALETTE_COLOR_QUANTIZATION_MENU_ITEM;
081                            case(MenuIndexConstants.COLOR_REDUCE_MAPTOARBITRARYPALETTE): return StringIndexConstants.MAP_TO_ARBITRARY_PALETTE_MENU_ITEM;
082                            case(MenuIndexConstants.COLOR_INVERT): return StringIndexConstants.INVERT;
083                            case(MenuIndexConstants.COLOR_CONVERTTOMINIMUMCOLORTYPE): return StringIndexConstants.CONVERT_TO_MINIMUM_COLOR_TYPE_MENU_ITEM;
084                            case(MenuIndexConstants.TRANSFORMATIONS): return StringIndexConstants.TRANSFORMATIONS;
085                            case(MenuIndexConstants.TRANSFORMATIONS_FLIP): return StringIndexConstants.FLIP;
086                            case(MenuIndexConstants.TRANSFORMATIONS_MIRROR): return StringIndexConstants.MIRROR;
087                            case(MenuIndexConstants.TRANSFORMATIONS_ROTATELEFT90): return StringIndexConstants.ROTATE_90_LEFT;
088                            case(MenuIndexConstants.TRANSFORMATIONS_ROTATERIGHT90): return StringIndexConstants.ROTATE_90_RIGHT;
089                            case(MenuIndexConstants.TRANSFORMATIONS_ROTATE180): return StringIndexConstants.ROTATE_180;
090                            case(MenuIndexConstants.TRANSFORMATIONS_CROP): return StringIndexConstants.CROP_MENU_ITEM;
091                            case(MenuIndexConstants.TRANSFORMATIONS_SHEAR): return StringIndexConstants.SHEAR_MENU_ITEM;
092                            case(MenuIndexConstants.TRANSFORMATIONS_SCALE): return StringIndexConstants.SCALE;
093                            case(MenuIndexConstants.FILTERS): return StringIndexConstants.FILTERS;
094                            case(MenuIndexConstants.FILTERS_BLUR): return StringIndexConstants.BLUR;
095                            case(MenuIndexConstants.FILTERS_SHARPEN): return StringIndexConstants.SHARPEN;
096                            case(MenuIndexConstants.FILTERS_EDGEDETECTION): return StringIndexConstants.EDGE_DETECTION;
097                            case(MenuIndexConstants.FILTERS_EMBOSS): return StringIndexConstants.EMBOSS;
098                            case(MenuIndexConstants.FILTERS_PSYCHEDELICDISTILLATION): return StringIndexConstants.PSYCHEDELIC_DISTILLATION;
099                            case(MenuIndexConstants.FILTERS_LITHOGRAPH): return StringIndexConstants.LITHOGRAPH;
100                            case(MenuIndexConstants.FILTERS_HORIZONTALSOBEL): return StringIndexConstants.HORIZONTAL_SOBEL;
101                            case(MenuIndexConstants.FILTERS_VERTICALSOBEL): return StringIndexConstants.VERTICAL_SOBEL;
102                            case(MenuIndexConstants.FILTERS_HORIZONTALPREWITT): return StringIndexConstants.HORIZONTAL_PREWITT;
103                            case(MenuIndexConstants.FILTERS_VERTICALPREWITT): return StringIndexConstants.VERTICAL_PREWITT;
104                            case(MenuIndexConstants.FILTERS_MINIMUM): return StringIndexConstants.MINIMUM_FILTER_MENU_ITEM;
105                            case(MenuIndexConstants.FILTERS_MAXIMUM): return StringIndexConstants.MAXIMUM_FILTER_MENU_ITEM;
106                            case(MenuIndexConstants.FILTERS_MEDIAN): return StringIndexConstants.MEDIAN_FILTER_MENU_ITEM;
107                            case(MenuIndexConstants.FILTERS_MEAN): return StringIndexConstants.MEAN_FILTER_MENU_ITEM;
108                            case(MenuIndexConstants.FILTERS_OIL): return StringIndexConstants.OIL_FILTER_MENU_ITEM;
109                            case(MenuIndexConstants.VIEW): return StringIndexConstants.VIEW;
110                            case(MenuIndexConstants.VIEW_ZOOMIN): return StringIndexConstants.VIEW_ZOOMIN;
111                            case(MenuIndexConstants.VIEW_ZOOMOUT): return StringIndexConstants.VIEW_ZOOMOUT;
112                            case(MenuIndexConstants.VIEW_SETORIGINALSIZE): return StringIndexConstants.VIEW_SETORIGINALSIZE;
113                            case(MenuIndexConstants.VIEW_INTERPOLATIONTYPE): return StringIndexConstants.VIEW_INTERPOLATIONTYPE;
114                            case(MenuIndexConstants.VIEW_INTERPOLATIONTYPE_NEARESTNEIGHBOR): return StringIndexConstants.VIEW_INTERPOLATIONTYPE_NEARESTNEIGHBOR;
115                            case(MenuIndexConstants.VIEW_INTERPOLATIONTYPE_BILINEAR): return StringIndexConstants.VIEW_INTERPOLATIONTYPE_BILINEAR;
116                            case(MenuIndexConstants.VIEW_INTERPOLATIONTYPE_BICUBIC): return StringIndexConstants.VIEW_INTERPOLATIONTYPE_BICUBIC;
117                            case(MenuIndexConstants.HELP): return StringIndexConstants.HELP;
118                            case(MenuIndexConstants.HELP_ABOUT): return StringIndexConstants.ABOUT;
119                            case(MenuIndexConstants.HELP_SYSTEMINFORMATION): return StringIndexConstants.SYSTEM_INFORMATION;
120                            default: return -1;
121                    }
122            }
123    
124            /**
125             * Sets the enabled status of one of the menu items to either
126             * <code>true</code> or <code>false</code>.
127             * @param index menu index of the component whose status is to be reset
128             * @param enabled boolean with the new value
129             */
130            public abstract void setEnabled(int index, boolean enabled);
131    
132            /**
133             * Sets the text of one of the menu elements to a new value.
134             * This method is usually called when the language settings have changed and
135             * new words have to be assigned.
136             * @param index integer index of the menu element
137             * @param text new text value to be used for this element
138             */
139            public abstract void setLabel(int index, String text);
140    }