001package org.vishia.gral.area9;
002
003import java.io.File;
004import java.util.ArrayList;
005import java.util.List;
006
007import org.vishia.gral.ifc.GralFactory;
008
009/**The standard command-line-arguments for a graphic application are stored in an extra class. 
010 * This class should be the base class for users command line argument storage.
011 * In Generally the separation of command line argument helps to invoke the functionality with different calls, 
012 * for example calling in a GUI, calling in a command-line-batch-process or calling from ANT.
013 * This class should be the super class of an derived application's CallingArguments class. 
014 */
015public class GuiCallingArgs
016{
017  /**Version, history and licence
018   * <ul>
019   * <li>2015-05-16 Hartmut new "-help:" for help base dir in argument check, "-msgcfg:" in argument check. 
020   *   It is moved from Fcmd to this base class of Fcmd, available generally.  
021   * <li>2013-11-22 Hartmut new {@link #sTitle}
022   * <li>2012-04-22 Hartmut chg {@link #sizeShow} instead sSize, new {@link #xLeftPixelWindow} etc.
023   * <li>2011-06-00 Hartmut creation, commonly arguments for each GUI application.
024   * </ul>
025   * 
026   * <b>Copyright/Copyleft</b>:
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 ist 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 don'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 are intent to use this sources 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   * 
050   */
051  public final static int version = 20131122;
052
053  
054  
055  /**String for title bar. */
056  String sTitle;
057  
058  /**The graphic base factory can be detected from command line arguments
059   * or set directly from the calling level. */
060  GralFactory graphicFactory;
061  
062  /**Name of the config-file for the Gui-appearance. */
063  //String sFileGui;
064  
065  /**The configuration file. It is created while parsing arguments.
066   * The file is opened and closed while the configuration is used to build the GUI.
067   * The file is used to write on menu-save action.
068   */
069  protected File fileGuiCfg;
070  
071  public String sPathZbnf = "GUI";
072  
073  /**The time zone to present all time informations. */
074  public String sTimeZone = "GMT";
075  
076  /**Size, either A,B or F for 800x600, 1024x768 or full screen. */
077  public char sizeShow = 'C';
078  
079  /**The position in grid units related to the whole display. */
080  public String positionWindow = "0+60, 0+90";
081  //public int xLeftPixelWindow = 50, yTopPixelWindow = 50, dxPixelWindow = 930, dyPixelWindow = 520;
082  
083  /**The own ipc-address for Interprocess-Communication with the target.
084   * It is a string, which determines the kind of communication.
085   * For example "UDP:0.0.0.0:60099" to create a socket port for UDP-communication.
086   */
087  public String sOwnIpcAddr;
088  
089  public List<String> cfgConditions = new ArrayList<String>();
090  
091  
092  
093  /**A class which is used as plugin for user specifies. It is of interface {@link PlugUser_ifc}. */
094  String sPluginClass;
095  
096  /**A plugin specific confic string. */
097  public String sPluginCfg;
098  
099
100  
101  /**The own ipc-address for inspector-Communication with this application.
102   * It is a string, which determines the kind of communication.
103   * For example "UDP:0.0.0.0:60099" to create a socket port for UDP-communication.
104   */
105  String sInspectorOwnPort;
106
107  public File dirHtmlHelp;
108  
109  public File msgConfig;
110
111  
112  /**Returns that directory where the configuration file is found. That directory may contain some more files
113   * for the application. */
114  public File getDirCfg(){ return fileGuiCfg.getAbsoluteFile().getParentFile(); }
115  
116}