package org.openswing.swing.util.client; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.openswing.swing.domains.java.*; import org.openswing.swing.export.java.*; import org.openswing.swing.internationalization.java.*; import org.openswing.swing.lookup.client.*; import org.openswing.swing.mdi.client.*; import org.openswing.swing.permissions.java.*; import org.openswing.swing.table.profiles.java.*; import org.openswing.swing.util.java.*; import org.openswing.swing.table.permissions.java.*; import javax.swing.border.Border; import javax.swing.border.BevelBorder; import org.openswing.swing.export.java.ExportToPDFCallbacks; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Client settings, used to initialize MDI Frame.</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * * <p> This file is part of OpenSwing Framework. * This library is free software; you can redistribute it and/or * modify it under the terms of the (LGPL) Lesser General Public * License as published by the Free Software Foundation; * * GNU LESSER GENERAL PUBLIC LICENSE * Version 2.1, February 1999 * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * The author may be contacted at: * maurocarniel@tin.it</p> * * @author Mauro Carniel * @version 1.0 */ public class ClientSettings { /** image name for insert button */ public static String BUTTON_INSERT_IMAGE_NAME = "new.gif"; /** image name for insert button */ public static String BUTTON_EDIT_IMAGE_NAME = "edit.gif"; /** image name for insert button */ public static String BUTTON_COPY_IMAGE_NAME = "copy.gif"; /** image name for insert button */ public static String BUTTON_SAVE_IMAGE_NAME = "save.gif"; /** image name for insert button */ public static String BUTTON_RELOAD_IMAGE_NAME = "reload.gif"; /** image name for insert button */ public static String BUTTON_IMPORT_IMAGE_NAME = "import.gif"; /** image name for insert button */ public static String BUTTON_EXPORT_IMAGE_NAME = "export.gif"; /** image name for insert button */ public static String BUTTON_FILTER_IMAGE_NAME = "filter.gif"; /** image name for insert button */ public static String BUTTON_DELETE_IMAGE_NAME = "del.gif"; /** image name for the MDI Frame */ public static String ICON_FILENAME = "appicon.gif"; /** image name for tree menu background */ public static String TREE_BACK = "treeback.jpg"; /** image name for opened padlock icon in tree menu */ public static String LOCK_ON = "lock_on.gif"; /** image name for closed padlock icon in tree menu */ public static String LOCK_OFF = "lock_off.gif"; /** show "Window" menu items in the menubar of MDI Frame */ public static boolean SHOW_WINDOW_MENU = true; /** show root node in the tree menu of MDI Frame */ public static boolean SHOW_TREE_MENU_ROOT = true; /** image name for "find function" icon in tree menu (optional); default value: null, i.e. do not show any icon */ public static String FIND_FUNCTION_ICON = null; /** show "find function" label at the left of the search input field of the tree menu */ public static boolean SHOW_FIND_FUNCTION_LABEL = true; /** fill search input field of the tree menu til the right margin of the panel */ public static boolean FILL_FIND_FUNCTION_FIELD = false; /** show "functions" label at the bottom of the search input field of the tree menu */ public static boolean SHOW_FUNCTIONS_LABEL = true; /** flag used to show/hide a padlock in the tree menu panel; default value: <code>true</code> */ public static boolean SHOW_PADLOCK_IN_TREE_MENU = true; /** define if tree menu must by automatically expanded; default value: <code>false</code> */ public static boolean AUTO_EXPAND_TREE_MENU = false; /** define if a subtree of the tree menu must by automatically expanded; subtree root is identified as the node having a description whose entry (not yet translated) is defined thourgh this global property */ public static String AUTO_EXPAND_SUBTREE_MENU = null; /** image name for opened padlock icon in filter panel */ public static String FILTER_PANEL_LOCK_ON = "lock.gif"; /** image name for closed padlock icon in filter panel */ public static String FILTER_PANEL_LOCK_OFF = "unlock.gif"; /** image name for close button in filter panel */ public static String CLOSE_BUTTON_ON_FILTER_PANEL = "cancel.gif"; /** image name for tree menu icons */ public static String PERC_TREE_NODE = "node.gif"; /** image name for tree menu icons */ public static String PERC_TREE_FOLDER = "folder.gif"; /** image name for MDI background; may be null */ public static String BACKGROUND = "background.jpg"; /** set how background image in MDI must be drawed: centered, repeated, streched; allowed values: Consts.BACK_IMAGE_xxx; defalut value: Consts.BACK_IMAGE_REPEATED */ public static int BACK_IMAGE_DISPOSITION = Consts.BACK_IMAGE_REPEATED; /** optional property used within the DekstopPane of the MDI frame to draw background content; default value: null */ public static BackgroundPainter BACKGROUND_PAINTER = null; /** flag used to show define if look 'n feel in MDI frame must be decorated; default value: <code>true</code> */ public static boolean MDI_FRAME_DECORATED = true; /** image name for calendar button in date input control */ public static String CALENDAR = "calendar.gif"; /** divider width of MDI Frame splitter */ public static int DIVIDER_WIDTH = 15; /** width of MDI Frame menu window */ public static int MENU_WIDTH = 250; /** minimum width of MDI Frame menu window */ public static int MIN_MENU_WIDTH = 0; /** maximum width of MDI Frame menu window */ public static int MAX_MENU_WIDTH = 300; /** foreground color of grid active cell */ public static Color GRID_ACTIVE_CELL_BACKGROUND = new Color(195,229,254); /** background color of grid selected row */ public static Color GRID_SELECTION_BACKGROUND = new Color(185,219,243); /** foreground color of grid selected row; this value will be ignored if <code>IGNORE_GRID_SELECTION_FOREGROUND</code> flag is set to true */ public static Color GRID_SELECTION_FOREGROUND = Color.black; /** if set to true, the GRID_SELECTUON_FOREGROUND setting will be ignored and the already cell's defined foreground color will be used instead */ public static boolean IGNORE_GRID_SELECTION_FOREGROUND = false; /** background color of grid cell */ public static Color GRID_CELL_BACKGROUND = new Color(238,238,238); /** foreground color of grid cell */ public static Color GRID_CELL_FOREGROUND = Color.black; /** border color of a grid cell that is mandatory */ public static Color GRID_REQUIRED_CELL_BORDER = Color.red; /** border color of an editable grid cell */ public static Color GRID_EDITABLE_CELL_BACKGROUND = Color.white; /** border color of a not editable grid cell */ public static Color GRID_NOT_EDITABLE_CELL_BACKGROUND = GRID_CELL_BACKGROUND; /** border color of the grid that currently has the focus */ public static Color GRID_FOCUS_BORDER = Color.black; /** border color of the grid that currently doesn't has the focus */ public static Color GRID_NO_FOCUS_BORDER = Color.lightGray; /** flag used to show current page number in grid; default value: <code>true</code> */ public static boolean SHOW_PAGE_NUMBER_IN_GRID = true; /** increment to use for grid scrolling; default value: Consts.GRID_SCROLL_BLOCK_INCREMENT_PAGE; possible values: Consts.GRID_SCROLL_BLOCK_INCREMENT_ROW,Consts.GRID_SCROLL_BLOCK_INCREMENT_PAGE */ public static int GRID_SCROLL_BLOCK_INCREMENT = Consts.GRID_SCROLL_BLOCK_INCREMENT_PAGE; /** define where new rows must be added: <code>true</code> at the top of the grid or <code>false</code> at the bottom; default value: <code>true</code> */ public static boolean INSERT_ROWS_ON_TOP = true; /** border color of the form currently has the focus */ public static Color FORM_FOCUS_BORDER = Color.gray; /** image name of ascending order versus icon */ public static String SORT_UP = "sortup.gif"; /** image name of descending order versus icon */ public static String SORT_DOWN = "sortdown.gif"; /** image name of filter button in column header */ public static String LIST_FILTER_BUTTON = "filterbutton.gif"; /** image name of filter symbol in column header */ public static String FILTER_SYMBOL = "filter.gif"; /** define whether showing filtering symbol in column header which is currently filtered */ public static boolean SHOW_FILTER_SYMBOL = false; /** height of grid rows */ public static int CELL_HEIGHT = 20; /** height of grid headers */ public static int HEADER_HEIGHT = 24; /** header text vertical alignment; possible values: SwingConstants.CENTER, SwingConstants.TOP, SwingConstants.BOTTOM; default value: SwingConstants.CENTER */ public static int HEADER_TEXT_VERTICAL_ALIGNMENT = SwingConstants.CENTER; /** progress bar color (inside the status panel of the MDI frame) */ public static Color PROGRESS_BAR_COLOR = new Color(185,219,243); /** progress bar delay (in milliseconds) */ public static int PROGRESS_BAR_DELAY = 100; /** masimum number of exportable rows */ public static int MAX_EXPORTABLE_ROWS = 10000; /** adapter used when exporting grid data in PDF format: it provides some overridable methods */ public static ExportToPDFCallbacks EXPORT_TO_PDF_ADAPTER = new ExportToPDFCallbacks14Impl(); /** adapter used when exporting grid data in RTF format: it provides some overridable methods */ public static ExportToRTFCallbacks EXPORT_TO_RTF_ADAPTER = new ExportToRTFCallbacks14Impl(); /** flag used to add a filter panel on top of the exported grid, in order to show filtering conditions; this pane is visibile only whether there is at least one filtering condition applied; default value: <code>false</code> */ public static boolean SHOW_FILTERING_CONDITIONS_IN_EXPORT = false; /** flag used to show the title of the frame that contains the grid component currently exported; title is showed on top of the exported grid, in order to show filtering conditions; default value: <code>false</code> */ public static boolean SHOW_FRAME_TITLE_IN_EXPORT = false; /** default document formats when exporting the grid content */ public static String[] EXPORTING_FORMATS = new String[]{ ExportOptions.XLS_FORMAT, ExportOptions.CSV_FORMAT1, ExportOptions.CSV_FORMAT2, ExportOptions.XML_FORMAT, ExportOptions.XML_FORMAT_FAT, ExportOptions.HTML_FORMAT, ExportOptions.PDF_FORMAT, ExportOptions.RTF_FORMAT }; /** define if must be show the mandatory symbol "*" in mandatory input controls */ public static boolean VIEW_MANDATORY_SYMBOL = false; /** define if must be set a background color on focusing an input control */ public static boolean VIEW_BACKGROUND_SEL_COLOR = false; /** color to set as background in the focused input control (only if VIEW_BACKGROUND_SEL_COLOR is set to <code>true</code>) */ public static Color BACKGROUND_SEL_COLOR = GRID_ACTIVE_CELL_BACKGROUND; /** factory class used to retrieve internationalization settings */ private ResourcesFactory resourceFactory = null; /** collection of domains, i.e. associations (domainId, Domain object) */ private Hashtable domains = null; /** the single instance of that class */ private static ClientSettings instance = null; /** buttons authorizations */ private ButtonsAuthorizations buttonsAuthorizations = null; /** look 'n feel to use for the MDI frame; default value: UIManager.getSystemLookAndFeelClassName() */ public static String LOOK_AND_FEEL_CLASS_NAME = UIManager.getSystemLookAndFeelClassName(); /** <code>true</code> to automatically show a filter panel when moving mouse at right of the grid; <code>false</code> to do not show it */ public static boolean FILTER_PANEL_ON_GRID = false; /** used as default value in "filterPanelOnGridPolicy" property of GridControl: it used only when "showFilterPanelOnGrid" property is set to <code>true</code>; define filter panel policy for hiding it; allowed values: Consts.FILTER_PANEL_ON_GRID_xxx; default value: Consts.FILTER_PANEL_ON_GRID_USE_PADLOCK_UNPRESSED */ public static int FILTER_PANEL_ON_GRID_POLICY = Consts.FILTER_PANEL_ON_GRID_USE_PADLOCK_UNPRESSED; /** default value that could be set in the quick filter criteria; values allowed: Consts.EQUALS,Consts.CONTAINS,Consts.STARTS_WITH,Consts.ENDS_WITH */ public static int DEFAULT_QUICK_FILTER_CRITERIA = Consts.EQUALS; /** define if IN/NOT IN operator must be included in quick filter and filter panel; default value: <code>true</code> */ public static boolean INCLUDE_IN_OPERATOR = true; /** define if OR logical connector is allowable for operators different from IS NULL, IN NOT NULL and IN, within the filter panel; default value: <code>true</code> */ public static boolean ALLOW_OR_OPERATOR = true; /** SQL operator to use for "like"; for instance in PosgreSQL database this can be replaced with case insensitive "ilke"; default value: "like" */ public static String LIKE = "like"; /** <code>true</code> to show pagination buttons in vertical scrollbar of grid; <code>false</code> to do not show them; default value: <code>true</code> */ public static boolean SHOW_PAGINATION_BUTTONS_ON_GRID = true; /** <code>true</code> to show pagination buttons in navigator bar; <code>false</code> to do not show them; default value: <code>true</code> */ public static boolean SHOW_PAGINATION_BUTTONS_ON_NAVBAR = true; /** <code>true</code> to show sorting order (number) in the column header of the grid; <code>false</code> to do not show it; default value: <code>false</code> */ public static boolean SHOW_SORTING_ORDER = false; /** default font to use in column headers of grid; default value: null (i.e. use default JLabel font) */ public static Font HEADER_FONT = null; /** default intercell spacing between cells in grid; default value: 1,1 */ public static Dimension INTERCELL_SPACING = new Dimension(1,1); /** default margin between two rows in grid; default value: 1 */ public static int ROW_MARGIN = 1; /** grid profile manager: it manages grid profile storing and fetching */ public static GridProfileManager GRID_PROFILE_MANAGER = null; /** grid permission manager: it manages grid permission storing and fetching */ public static GridPermissionsManager GRID_PERMISSION_MANAGER = null; /** <code>true</code> to show a border around a Form panel when it has focus; <code>false</code> to do not show it; default value: <code>true</code> */ public static boolean SHOW_FOCUS_BORDER_ON_FORM = true; /** <code>true</code> to reload last object show already loaded in the past, when pressing reload button in INSERT mode; <code>false</code> to clear all input controls when pressing reload button in INSERT mode; default value: <code>false</code> */ public static boolean RELOAD_LAST_VO_ON_FORM = false; /** define what a lookup has to do when an invalid code has been setted; possible values: LookupController.ON_INVALID_CODE_xxx; default value: LookupController.ON_INVALID_CODE_CLEAR_CODE */ public static int ON_INVALID_CODE = LookupController.ON_INVALID_CODE_CLEAR_CODE; /** define if, in case of a validation task which returns an ErrorResponse within a lookup, the error message must be showed instead of the standard behavior: do nothing and log error; default value: <code>false</code>, i.e. do not show a custom error message */ public static boolean SHOW_CUSTOM_ERROR_MESSAGE_IN_LOOKUP = false; /** define if showing the status panel on bottom of the lookup grid; default value: <code>false</code> */ public static boolean VISIBLE_STATUS_PANEL = false; /** define if the navigator bar must be showed on top of the lookup grid frame; default value: <code>false</code> i.e. the navigator is not showed in the grid lookup frame */ public static boolean SHOW_NAVIGATOR_BAR_IN_LOOKUP = false; /** background color of tree selected row */ public static Color TREE_SELECTION_BACKGROUND = new Color(185,219,243); /** foreground color of tree selected row */ public static Color TREE_SELECTION_FOREGROUND = Color.black; /** shortcut key used to open the calendar popup in date control and date column; default value: KeyStroke.getKeyStroke(KeyEvent.VK_F2,0) */ public static KeyStroke CALENDAR_OPEN_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F2,0); /** shortcut key used to set current date in date control and date column; default value: KeyStroke.getKeyStroke(KeyEvent.VK_F1,0) */ public static KeyStroke CALENDAR_CURRENT_DATE_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F1,0); /** shortcut key used to open lookup grid in lookup control and lookup column; default value: KeyEvent.VK_F1 */ public static KeyStroke LOOKUP_OPEN_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F1,0); /** shortcut key used to open lookup controller frame in lookup control and lookup column; default value: KeyEvent.VK_F2 */ public static KeyStroke LOOKUP_CONTROLLER_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F2,0); /** shortcut key used for insert button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_I,KeyEvent.CTRL_MASK) */ public static KeyStroke INSERT_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_I,KeyEvent.CTRL_MASK); /** shortcut key used for edit button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_E,KeyEvent.CTRL_MASK) */ public static KeyStroke EDIT_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_E,KeyEvent.CTRL_MASK); /** shortcut key used for copy button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK) */ public static KeyStroke COPY_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK); /** shortcut key used for save button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK) */ public static KeyStroke SAVE_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK); /** shortcut key used for reload button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_Z,KeyEvent.CTRL_MASK) */ public static KeyStroke RELOAD_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_Z,KeyEvent.CTRL_MASK); /** shortcut key used for delete button, within a form or a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_D,KeyEvent.CTRL_MASK) */ public static KeyStroke DELETE_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_D,KeyEvent.CTRL_MASK); /** shortcut key used for export button within a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_MASK) */ public static KeyStroke EXPORT_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_MASK); /** shortcut key used for import button within a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_M,KeyEvent.CTRL_MASK) */ public static KeyStroke IMPORT_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_M,KeyEvent.CTRL_MASK); /** shortcut key used for filter button, within a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_F,KeyEvent.CTRL_MASK) */ public static KeyStroke FILTER_BUTTON_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F,KeyEvent.CTRL_MASK); /** shortcut key used to show popup menu within a grid control; default value: KeyStroke.getKeyStroke(KeyEvent.VK_Q,KeyEvent.CTRL_MASK) */ public static KeyStroke GRID_POPUP_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_Q,KeyEvent.CTRL_MASK); /** shortcut key used to set focus in tree menu; default value: KeyStroke.getKeyStroke(KeyEvent.VK_F3,0) */ public static KeyStroke TREE_MENU_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_F3,0); /** shortcut key used to remove a filter in quick filter panel; default value: KeyStroke.getKeyStroke(KeyEvent.VK_R,KeyEvent.CTRL_MASK) */ public static KeyStroke REMOVE_FILTER_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_R,KeyEvent.CTRL_MASK); /** shortcut key used to expand a row in grid; default value: KeyStroke.getKeyStroke(KeyEvent.VK_P,KeyEvent.CTRL_MASK) */ public static KeyStroke EXPAND_CELL_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_P,KeyEvent.CTRL_MASK); /** shortcut key used to collable an already expanded row in grid; default value: KeyStroke.getKeyStroke(KeyEvent.VK_L,KeyEvent.CTRL_MASK) */ public static KeyStroke COLLAPSE_CELL_KEY = KeyStroke.getKeyStroke(KeyEvent.VK_L,KeyEvent.CTRL_MASK); /** shortcut key used to add new row in grid, in insert mode (or edit mode) */ public static KeyStroke ADD_ROW_IN_GRID = KeyStroke.getKeyStroke(KeyEvent.VK_DOWN,0); /** shortcut key used to remove an already added row in grid, in insert mode (or edit mode) */ public static KeyStroke REMOVE_ROW_FROM_GRID = KeyStroke.getKeyStroke(KeyEvent.VK_UP,0); /** define if a warning dialog must be showed when closing an internal frame that contains a Form/GridControl in edit/insert mode */ public static boolean ASK_BEFORE_CLOSE = false; /** define whether showing image/text on default buttons (insert, edit, ...); allowed values: Consts.BUTTON_IMAGE_ONLY, Consts.BUTTON_TEXT_ONLY, Consts.BUTTON_IMAGE_AND_TEXT; default value: Consts.BUTTON_IMAGE_ONLY */ public static int BUTTON_BEHAVIOR = Consts.BUTTON_IMAGE_ONLY; /** define default content for lookup frame; allowed values are: GRID_FRAME, TREE_FRAME, TREE_GRID_FRAME, GRID_AND_FILTER_FRAME, TREE_GRID_AND_FILTER_FRAME, GRID_AND_PANEL_FRAME, TREE_GRID_AND_PANEL_FRAME; default value: LookupController.GRID_FRAME */ public static int LOOKUP_FRAME_CONTENT = LookupController.GRID_FRAME; /** define if a lookup control must set focus over lookup button when pressing TAB on code field and field is correctly filled; default value: <code>false</code> */ public static boolean FORCE_FOCUS_ON_LOOKUP_CONTROL = false; /** wait time (expressed in ms) before showing code auto completition feature for lookup controls; default value: <code>-1</code>, i.e. do not enable auto completition */ public static long LOOKUP_AUTO_COMPLETITION_WAIT_TIME = -1; /** <code>true</code> to enable focus on disabled input controls: this allows to select disabled content of input control for copy & paste; <code>false</code> to do not allow focus setting on disabled input controls; default value: <code>false</code> */ public static boolean DISABLED_INPUT_CONTROLS_FOCUSABLE = false; /** collection of pairs <functionId of grid,HashMap with pairs <id,associated GridProfile object> */ private HashMap userGridProfiles = new HashMap(); /** collection of pairs <functionId of grid,associated digest> */ private HashMap lastUserGridDigests = new HashMap(); /** collection of pairs <functionId of grid,profile id> */ private HashMap lastUserGridProfileIds = new HashMap(); /** collection of pairs <functionId of grid,ArrayList of GridProfileDescription objects> */ private HashMap gridProfileDescriptions = new HashMap(); /** collection of pairs <functionId of grid,GridPermissions object> */ private HashMap gridPermissions = new HashMap(); /** collection of pairs <functionId of grid,associated digest> */ private HashMap lastGridPermissionsDigests = new HashMap(); /** define if a tooltip text must be showed for menu and menu items in menu bar; default value: <code>true</code> */ public static boolean SHOW_TOOLTIP_IN_MENUBAR = true; /** define if a tooltip text must be showed for folders and function nodes in tree menu; default value: <code>true</code> */ public static boolean SHOW_TOOLTIP_IN_TREEMENU = true; /** define if the tooltip text associated to application functions must be showed in the status bar of MDI frame (on the bottom); default value: <code>true</code> */ public static boolean SHOW_TOOLTIP_IN_MDISTATUSBAR = true; /** ejb remote session bean to invoke for processing all export tasks; default name: "EJBExportBean/remote" */ public static String EJB_EXPORT_BEAN_NAME = "EJBExportBean/remote"; /** add a toolbar to MDIFrame; default value: null, i.e. do not add any toolbar; possible value: org.openswing.swing.mdi.client.DefaultToolBar */ public static ToolBar MDI_TOOLBAR = null; /** flag used to auto fit column sizes, according to text headers; default value: <code>false</code> */ public static boolean AUTO_FIT_COLUMNS = false; /** show scrollbars within MDI desktop pane; default value: <code>false</code> */ public static boolean SHOW_SCROLLBARS_IN_MDI = false; /** define the behavior of numeric components in case of zero decimal digits: show or hide zeros; default value: <code>false</code>, i.e. shows zero digits */ public static boolean HIDE_ZERO_DIGITS = false; /** flag used to define the default position of currency symbol in currency control/column: on the left or on the right of the numeric value; default value: <code>true</code> i.e. on the left of the numeric value */ public static boolean CURRENCY_SYMBOL_ON_LEFT = true; /** flag used in grid to enable the retrieval of additional rows in fast search, when search criteria fails; default value: <code>false</code> i.e. do not retrieve additional rows */ public static boolean SEARCH_ADDITIONAL_ROWS = false; /** foreground color for header columns of all grids; default value: null, i.e. default JLabel foreground color */ public static Color HEADER_FOREGROUND_COLOR = null; /** flag used in grid to automatically select data in cell when editing cell; default value: <code>false</code> i.e. do not select data stored cell; <code>true</code> to automatically select data already stored in cell */ public static boolean SELECT_DATA_IN_EDITABLE_GRID = false; /** flag used in grid to automatically select data in input controls when the controls gains focus; default value: <code>false</code> i.e. do not select data stored in input control; <code>true</code> to automatically select data already stored in input controls */ public static boolean SELECT_DATA_IN_EDITABLE_FORM = false; /** flag used to show the preview of the image in ImageControl and Image Column components; default value: <code>true</code> */ public static boolean SHOW_PREVIEW_OF_IMAGE = true; /** flag used to define the maximum number of nested loops to execute on the same value objects, when analyzing v.o. structure; default value: <code>10</code> */ public static int MAX_NR_OF_LOOPS_IN_ANALYZE_VO = 10; /** component orientation of all text based input controls and grid columns; default value: <code>null</code>, i.e. use the default component orientation defined by Swing toolkit */ public static ComponentOrientation TEXT_ORIENTATION = null; /** shortcut key used to fire a TAB key event, in order to move focus to next component; default value: null; it can be used, for instance, to define that the ENTER key move focus to next component */ public static KeyStroke AS_TAB = null; /** define if shortcut key used to fire a TAB key event must be used for TextAreaControl too; default value: <code>true</code> */ public static boolean USE_AS_TAB_IN_TEXTAREA = true; /** define the default horizontal text position for buttons hinerited from GenericButton class; allowed values: <code>SwingConstants.RIGHT,SwingConstants.LEFT,SwingConstants.CENTER,SwingConstants.LEADING,SwingConstants.TRAILING (the default)</code> */ public static int BUTTON_HORIZONTAL_TEXT_POSITION = SwingConstants.CENTER; /** define the default vertical text position for buttons hinerited from GenericButton class; allowed values: <code>SwingConstants.CENTER (the default),SwingConstants.TOP,SwingConstants.BOTTOM */ public static int BUTTON_VERTICAL_TEXT_POSITION = SwingConstants.BOTTOM; /** column header border for all grids; default value: <code>new BevelBorder(BevelBorder.RAISED)</code> */ public static Border COLUMN_HEADER_BORDER = new BevelBorder(BevelBorder.RAISED); /** flag used in GridControl in order to set the focus in INSERT/EDIT mode: <code>true</code> the first cell will receive focus, <code>false</code> the last cell will receive focus; default value: <code>true</code> the first cell will receive focus */ public static boolean FIRST_CELL_RECEIVE_FOCUS = true; /** flag used to enable the storing of frame location and size to the local file system; default value: <code>false</code> */ public static boolean STORE_INTERNAL_FRAME_PROFILE = false; /** flag used to set visible for menu item related to "Tile horizontally" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_TILE_H = true; /** flag used to set visible for menu item related to "Tile vertically" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_TILE_V = true; /** flag used to set visible for menu item related to "Close all opened windows" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_CLOSE_ALL = true; /** flag used to set visible for menu item related to "Switch between opened windows" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_SWITCH = true; /** flag used to set visible for menu item related to "Window minimization" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_MINIMIZE = true; /** flag used to set visible for menu item related to "All windows minimization" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_MINIMIZE_ALL = true; /** flag used to set visible for menu item related to "Cascade windows" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_CASCADE = true; /** flag used to set visible for menu item related to "Close windows" in Window Menu; default value: <code>true</code> */ public static boolean SHOW_MENU_WINDOW_CLOSE = true; /** flag used to set visible for menu item to "Reduce window to icon" in Window Panel; default value: <code>true</code> */ public static boolean SHOW_ICON_POPUP_MENU_REDUCE_ICON = true; /** flag used to set visible for menu item to "Close Window" in popup menu; default value: <code>true</code> */ public static boolean SHOW_POPUP_MENU_CLOSE = true; /** image name to show in the menu item related to "Tile horizontally" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_TILE_H = null; /** image name to show in the menu item related to "Tile vertically" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_TILE_V = null; /** image name to show in the menu item related to "Close all opened windows" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_CLOSE_ALL = null; /** image name to show in the menu item related to "Wwitch between opened windows" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_SWITCH = null; /** image name to show in the menu item related to "Window minimization" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_MINIMIZE = null; /** image name to show in the menu item related to "All windows minimization" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_MINIMIZE_ALL = null; /** image name to show in the menu item related to "Cascade windows" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_CASCADE = null; /** image name to show in the menu item related to "Close windows" in Window Menu; default value: <code>null</code> */ public static String ICON_MENU_WINDOW_CLOSE = null; /** image name to show in the menu item "Exit application" in File Menu; default value: <code>null</code> */ public static String ICON_MENU_FILE_EXIT = null; /** image name to show in the menu item "Change user" in File Menu; default value: <code>null</code> */ public static String ICON_MENU_FILE_CHANGE_USER = null; /** image name to show in the menu item "Change language" in File Menu; default value: <code>null</code> */ public static String ICON_MENU_FILE_CHANGE_LANGUAGE = null; /** image name to show in the menu item to About in Help Menu; default value: <code>null</code> */ public static String ICON_MENU_HELP_ABOUT = null; /** image name to show in the menu item "Reduce Window to Icon" in Window Icon Panel; default value: <code>null</code> */ public static String ICON_POPUP_MENU_REDUCE_ICON = null; /** image name to show for all the menu items of Windows menu, except for current selected frame; default value: <code>empty.gif</code> */ public static String ICON_DISABLE_FRAME = "empty.gif"; /** image name to show in the menu item of Windows menu, related to current selected frame; default value: <code>ok.gif</code> */ public static String ICON_ENABLE_FRAME = "ok.gif"; /** image name for button in WinIconPanel, when mouse is over the button; default value: <code>iconclosesel.gif</code>*/ public static String ICON_CLOSE_FRAME_SELECTED = "iconclosesel.gif"; /** image name for button in WinIconPanel, when mouse is not over the button; default value: <code>iconclose.gif</code>*/ public static String ICON_CLOSE_FRAME = "iconclose.gif"; /** define how a date control/column must behave when an invalid date has been specified within it: clean up the content (stricy usage) or trying to correct it; default value: <code>false</code>, i.e. try to correct the date */ public static boolean DATE_COMPONENT_STRICT_USAGE; /** define if GenericButton instances are focusable; default value: <code>false</code> */ public static boolean GENERIC_BUTTON_FOCUSABLE = false; /** flag used to set the last selected item in combo column; default value: <code>false</code>, i.e. the selecteed item is the first item */ public static boolean PRESET_LAST_VALUE_IN_COMBO_COLUMN = false; /** flag used to set the last selected item in combo control; default value: <code>false</code>, i.e. the selecteed item is the first item */ public static boolean PRESET_LAST_VALUE_IN_COMBO_CONTROL = false; /** <code>true</code> to execute ActionEvent event fired by GenericButtons in a sepated thread; default value: <code>false</code> */ public static boolean BUTTONS_EXECUTE_AS_THREAD = false; /** <code>true</code> to show ApplicationEventQueue exceptions; default value: <code>false</code> */ public static boolean SHOW_EVENT_QUEUE_EXCEPTIONS = false; /** * Contains application settings. * Buttons permission manager not defined: buttons are always enabled (as default). * @param resourceFactory factory class used to retrieve internationalization settings * @param domains collection of domains, i.e. associations (domainId, Domain object) * @param controller Server Controller (Java Servlet) to contact (optional) */ public ClientSettings( ResourcesFactory resourceFactory, Hashtable domains ) { this(resourceFactory,domains,new ButtonsAuthorizations()); } /** * Contains application settings. * Font size is small. * @param resourceFactory factory class used to retrieve internationalization settings * @param domains collection of domains, i.e. associations (domainId, Domain object) * @param buttonsAuthorizations buttons authorizations * @param useSystemFontSettings <code>true</code> font in java 1.4. is small; <code>false</code> font size is higher */ public ClientSettings( ResourcesFactory resourceFactory, Hashtable domains, ButtonsAuthorizations buttonsAuthorizations ) { this(resourceFactory,domains,buttonsAuthorizations,true); } /** * Contains application settings. * @param resourceFactory factory class used to retrieve internationalization settings * @param domains collection of domains, i.e. associations (domainId, Domain object) * @param buttonsAuthorizations buttons authorizations * @param useSystemFontSettings <code>true</code> font in java 1.4. is small; <code>false</code> font size is higher */ public ClientSettings( ResourcesFactory resourceFactory, Hashtable domains, ButtonsAuthorizations buttonsAuthorizations, boolean useSystemFontSettings ) { try { UIManager.setLookAndFeel(ClientSettings.LOOK_AND_FEEL_CLASS_NAME); } catch (Exception ex) { ex.printStackTrace(); } this.resourceFactory = resourceFactory; this.domains = domains; this.buttonsAuthorizations = buttonsAuthorizations; instance = this; try { if (!useSystemFontSettings) { System.class.getMethod("setProperty", new Class[] {String.class, String.class}). invoke(null, new Object[] {"swing.useSystemFontSettings", "false"}); } } catch (Throwable ex1) { ex1.printStackTrace(); } } /** * @return the single instance of that class */ public static final ClientSettings getInstance() { if (instance==null) { //System.err.println("You must set ClientSettings object"); instance = new ClientSettings(new EnglishOnlyResourceFactory("E",new Properties(),true),new Hashtable()); } return instance; } /** * @return dictionary used to internalization settings */ public final Resources getResources() { if (resourceFactory==null) { System.err.println("You must set ResourcesFactory object."); resourceFactory = new EnglishOnlyResourceFactory("Euro",new Properties(),true); } return resourceFactory.getResources(); } /** * Load internalization settings according with the specified languageId. */ public final void setLanguage(String languageId) { resourceFactory.setLanguage(languageId); } /** * @param domainId domain identifier * @return Domain object, identified by domainId */ public final Domain getDomain(String domainId) { return (Domain)domains.get(domainId); } /** * @return buttons authorizations */ public final ButtonsAuthorizations getButtonsAuthorizations() { return buttonsAuthorizations; } /** * @return collection of pairs <functionId of grid,associated GridProfile object> */ public final HashMap getUserGridProfiles() { return userGridProfiles; } /** * @return collection of pairs <functionId of grid,associated GridProfile object> */ public final HashMap getUserGridProfiles(String functionId) { HashMap map = (HashMap)userGridProfiles.get(functionId); if (map==null) { map = new HashMap(); userGridProfiles.put(functionId,map); } return map; } /** * @return collection of pairs <functionId of grid,associated digest> */ public final HashMap getLastUserGridDigests() { return lastUserGridDigests; } /** * @return collection of pairs <functionId of grid,profile id> */ public final HashMap getLastUserGridProfileIds() { return lastUserGridProfileIds; } /** * @return collection of pairs <functionId of grid,List of GridProfileDescription objects> */ public final HashMap getGridProfileDescriptions() { return gridProfileDescriptions; } /** * @return collection of pairs <functionId of grid,List of GridProfileDescription objects> */ public final ArrayList getGridProfileDescriptions(String functionId) { ArrayList list = (ArrayList)gridProfileDescriptions.get(functionId); if (list==null) { list = new ArrayList(); gridProfileDescriptions.put(functionId,list); } return list; } /** * @return collection of pairs <functionId of grid,GridPermissions object> */ public final HashMap getGridPermissions() { return gridPermissions; } /** * @return collection of pairs <functionId of grid,associated digest> */ public final HashMap getLastGridPermissionsDigests() { return lastGridPermissionsDigests; } }