001package org.vishia.gral.ifc; 002 003import java.io.Closeable; 004import java.util.Map; 005 006import org.vishia.gral.area9.GuiCallingArgs; 007import org.vishia.gral.base.GralMng; 008import org.vishia.gral.cfg.GralCfgData; 009import org.vishia.msgDispatch.LogMessage; 010 011 012 013/**This interface plugs an user application to the basic GUI application. 014 * <br><br> 015 * <br>Superinterface Closeable</b>: On close of the application some threads should be finished 016 * or channels should be closed. 017 * */ 018public interface GralPlugUser_ifc extends Closeable 019{ 020 021 /**Version, history and license. 022 * <ul> 023 * <li>2011-06-00 Hartmut created 024 * </ul> 025 * 026 * <b>Copyright/Copyleft</b>:<br> 027 * For this source the LGPL Lesser General Public License, 028 * published by the Free Software Foundation is valid. 029 * It means: 030 * <ol> 031 * <li> You can use this source without any restriction for any desired purpose. 032 * <li> You can redistribute copies of this source to everybody. 033 * <li> Every user of this source, also the user of redistribute copies 034 * with or without payment, must accept this license for further using. 035 * <li> But the LPGL is not appropriate for a whole software product, 036 * if this source is only a part of them. It means, the user 037 * must publish this part of source, 038 * but doesn't need to publish the whole source of the own product. 039 * <li> You can study and modify (improve) this source 040 * for own using or for redistribution, but you have to license the 041 * modified sources likewise under this LGPL Lesser General Public License. 042 * You mustn't delete this Copyright/Copyleft inscription in this source file. 043 * </ol> 044 * If you intent to use this source without publishing its usage, you can get 045 * a second license subscribing a special contract with the author. 046 * 047 * @author Hartmut Schorrig = hartmut.schorrig@vishia.de 048 */ 049 public static final int version = 20120303; 050 051 //void init(LogMessage log); 052 053 /**This is the first routine that will be called for the plugin. 054 * Note that the constructor is parameterless because the plugin may be instantiated by reflection access 055 * This routine will be called by {@link org.vishia.gral.area9.GuiCfg#userInit()} or any of its derivation 056 * in the constructor of {@link org.vishia.gral.area9.GuiCfg#GuiCfg(org.vishia.gral.area9.GuiCallingArgs, org.vishia.gral.area9.GralArea9MainCmd, GralPlugUser2Gral_ifc)} 057 * in the main thread, not in the graphic thread. 058 * @param plugUser2Gui Access from the plugin to the Gui main implementation. It is offer to use. 059 * @param gralMng 060 * @param dataReplacement info about alias for some data paths, application-specific. See {@link GralCfgData#dataReplace} 061 * @param log 062 */ 063 void init(GralPlugUser2Gral_ifc plugUser2Gui, GralMng gralMng, Map<String, String> dataReplacement, GuiCallingArgs args, LogMessage log); 064 065 066 void registerMethods(org.vishia.gral.ifc.GralMngBuild_ifc guiMng); 067 068 /**This method is called if the view is changed. 069 * @param sTitle title of a window or panel. 070 * @param cmd any command. TODO what. 071 */ 072 void changedView(String sTitle, int cmd); 073 074 075 /**This routine can be implemented to add some graphic elements to the gui, including special windows. 076 * @param gralMng 077 */ 078 void initGui(GralMng gralMng); 079 080 /**This routine can be implemented to add some specific menu entries. 081 * @param wind The main window access 082 */ 083 void addGuiMenu(GralWindow_ifc wind); 084 085 086}