001package org.vishia.gral.ifc;
002
003import java.util.List;
004
005import org.vishia.util.KeyCode;
006
007/**This class contains Strings and keys for functions of an application
008 * in a common way to build menus, buttons etc.
009 * @author Hartmut Schorrig
010 *
011 */
012public class GralButtonKeyMenu
013{
014  /**Version, history and copyright/copyleft.
015   * <ul>
016   * <li>2013-03-30 created. Situation before: discrete variables in {@link org.vishia.commander.FcmdIdents} 
017   * </ul>
018   * 
019   * <b>Copyright/Copyleft</b>:<br>
020   * For this source the LGPL Lesser General Public License,
021   * published by the Free Software Foundation is valid.
022   * It means:
023   * <ol>
024   * <li> You can use this source without any restriction for any desired purpose.
025   * <li> You can redistribute copies of this source to everybody.
026   * <li> Every user of this source, also the user of redistribute copies
027   *    with or without payment, must accept this license for further using.
028   * <li> But the LPGL is not appropriate for a whole software product,
029   *    if this source is only a part of them. It means, the user
030   *    must publish this part of source,
031   *    but doesn't need to publish the whole source of the own product.
032   * <li> You can study and modify (improve) this source
033   *    for own using or for redistribution, but you have to license the
034   *    modified sources likewise under this LGPL Lesser General Public License.
035   *    You mustn't delete this Copyright/Copyleft inscription in this source file.
036   * </ol>
037   * If you intent to use this source without publishing its usage, you can get
038   * a second license subscribing a special contract with the author. 
039   * 
040   * @author Hartmut Schorrig = hartmut.schorrig@vishia.de
041   */
042  public static final int version = 20130330;
043
044  
045  /**Menu bar string.
046   * Use for example  = "&Help/&Settings [cP]".
047   */
048  public String menu;
049  
050  /**Context menu string. */
051  public String menuContext = "Settings [cP]";
052  
053  /**Identification for the button to present. 
054   * 3 chars: gF1
055   */
056  public String buttonId;
057  
058  /**Text for the button*/
059  public String buttontext;
060  
061  /**One of two possible {@link KeyCode} for this functionality. */
062  public int key1, key2;
063
064  /**The action which is associated to all the functions. */
065  public GralUserAction action;
066
067
068
069  /**Constructs and adds the instance to a given list.
070   * @param action
071   * @param menu
072   * @param menuContext
073   * @param buttonId
074   * @param buttontext
075   * @param key1
076   * @param key2
077   * @param addToList add to this list if not null.
078   */
079  public GralButtonKeyMenu(GralUserAction action, String menu, String menuContext
080      , String buttonId, String buttontext, int key1, int key2
081      , List<GralButtonKeyMenu> addToList
082      ){
083    this.action = action;
084    this.menu = menu;
085    this.menuContext = menuContext;
086    this.buttonId = buttonId;
087    this.buttontext = buttontext;
088    this.key1 = key1;
089    this.key2 = key2;
090    if(addToList !=null) {
091      addToList.add(this);
092    }
093  }
094
095  
096  public GralButtonKeyMenu(GralUserAction action, String menu, String menuContext
097      , String buttonId, String buttontext, int key1, int key2
098      ){
099    this(action, menu, menuContext, buttonId, buttontext, key1, key2, null);
100  }
101  
102  
103}