001package org.vishia.gral.ifc; 002 003import org.vishia.gral.base.GralMenu; 004import org.vishia.gral.base.GralWidget; 005import org.vishia.gral.base.GralWindow_setifc; 006 007 008/**Interface to a Gral Window. In SWT ist is named as 'shell'. An application can have more as one window. 009 * The base classes {@link org.vishia.gral.base.GralWindow} is the base of implementation. 010 * This interface contains the get and set access-interfaces (the base ones) 011 * and contains the build-method-definition for windows. 012 */ 013public interface GralWindow_ifc extends GralWindow_getifc, GralWindow_setifc, GralWidget_ifc 014{ 015 /**Version, history and license. 016 * <ul> 017 * <li>2016-09-18 Hartmut chg: renaming {@link #specifyActionOnCloseWindow(GralUserAction)} instead 'setActionOnSettingInvisible', more expressive name. 018 * <li>2015-04-27 Hartmut new {@link #windRemoveOnClose} 019 * <li>2012-03-16 Hartmut new: {@value #windResizeable} defined and supported in SWT-implementation. 020 * <li>2012-03-13 Hartmut chg: This interface should be used for building the window. Therefore 021 * all building methods should be contained here. Gotten from implementors. 022 * <li>2011-06-00 Hartmut created 023 * </ul> 024 * <br><br> 025 * <b>Copyright/Copyleft</b>:<br> 026 * For this source the LGPL Lesser General Public License, 027 * published by the Free Software Foundation is valid. 028 * It means: 029 * <ol> 030 * <li> You can use this source without any restriction for any desired purpose. 031 * <li> You can redistribute copies of this source to everybody. 032 * <li> Every user of this source, also the user of redistribute copies 033 * with or without payment, must accept this license for further using. 034 * <li> But the LPGL is not appropriate for a whole software product, 035 * if this source is only a part of them. It means, the user 036 * must publish this part of source, 037 * but doesn't need to publish the whole source of the own product. 038 * <li> You can study and modify (improve) this source 039 * for own using or for redistribution, but you have to license the 040 * modified sources likewise under this LGPL Lesser General Public License. 041 * You mustn't delete this Copyright/Copyleft inscription in this source file. 042 * </ol> 043 * If you intent to use this source without publishing its usage, you can get 044 * a second license subscribing a special contract with the author. 045 * 046 * @author Hartmut Schorrig = hartmut.schorrig@vishia.de 047 */ 048 public static final int version = 20120317; 049 050 051 052 053 /**Property defines that the window should be removed on closing. 054 * If this is not set the window is set to invisible but remain. It can be set to visible 055 * with its given content anytime again. 056 */ 057 public static final int windRemoveOnClose = 1<<5; 058 059 /**Property defines that the window is able to resize 060 */ 061 public static final int windResizeable = 1<<4; 062 063 /**Property defines that the window is opened exclusive for the application. 064 * It means that the primary window is not accessible if this window is opened. 065 * It is 'application modal'. 066 */ 067 public static final int windExclusive = 1<<16; 068 069 /**Property defines that the window is opened concurrently together with other windows 070 * of the application, especially concurrently to the primary window. This property should be set 071 * if the {@link #windExclusive} property is not set. 072 * It is 'application non-modal'. 073 */ 074 public static final int windConcurrently = 1<<30; 075 076 public static final int windOnTop = 1 << 14; 077 078 public static final int windHasMenu = 1 << 31; 079 080 static final int windIsMain = 1 ; 081 082 083 /**Sets an action which is invoked if the whole window is resized by user handling on the window borders. 084 * @param action The {@link GralUserAction#userActionGui(int, GralWidget, Object...)} will be called 085 * without parameter. 086 */ 087 public abstract void setResizeAction(GralUserAction action); 088 089 /**Sets an action which is invoked if any mouse button is pressed in the windows area on the screen. 090 * @param action The {@link GralUserAction#userActionGui(int, GralWidget, Object...)} will be called 091 * with parameter key: The mouse key. params[0]: Instance of {@link GralRectangle} with mouse coordinates. 092 */ 093 abstract public void setMouseAction(GralUserAction action); 094 095 /**Adds any menu item 096 * @param name name of the menu, it is used as widget name. 097 * @param sMenuPath Menu position. Use slash as separator, use & for hot key. 098 * For example "&edit/&search/co&ntinue" creates a menu 'edit' or uses the existing one in the top level (menu bar), 099 * then creates the search menu item as pull down in menu bar, and then 'continue' with 'n' as hot key as sub-menu. 100 * It is stored in {@link GralWidget#sDataPath} 101 * @param action called on menu activation. 102 * @deprecated use {@link #getMenuBar()} and then {@link GralMenu#addMenuItem(String, String, GralUserAction)} 103 */ 104 @Deprecated abstract public void addMenuBarItemGThread(String nameWidg, String sMenuPath, GralUserAction action); 105 106 107 /**Gets the menu bar to add a menu item. If this window hasn't a gral menu bar, then the menu bar 108 * is created by calling {@link GralMng#createMenuBar(GralWindow)}. 109 * If the window has a menu bar already, it is stored in the reference {@link #menuBarGral}. 110 * @return the menu root for this window. 111 */ 112 GralMenu getMenuBar(); 113 114 /**Sets an action which is invoked if the window is set invisible or it is disposed. 115 * Note that depending of the property {@link #windRemoveOnClose} the window is disposed or it is set invisible without disposing 116 * if the close action is done by the user. In both cases this action will be invoked. 117 * @since 2015-09 renamed, old identifier is 'setActionOnSettingInvisible' 118 * @param action The {@link GralUserAction#userActionGui(int, GralWidget, Object...)} will be called 119 * without parameter. 120 */ 121 public abstract void specifyActionOnCloseWindow(GralUserAction action); 122 123 void setFullScreen(boolean full); 124 125 126 127 public abstract void setTitle(String sTitle); 128 129 130}