Package org.dmd.mvw.tools.mvwgenerator.util

Source Code of org.dmd.mvw.tools.mvwgenerator.util.MenuBuilderFormatter

//  ---------------------------------------------------------------------------
//  dark-matter-mvw
//  Copyright (c) 2012 dark-matter-mvw committers
//  ---------------------------------------------------------------------------
//  This program is free software; you can redistribute it and/or modify it
//  under the terms of the GNU Lesser General Public License as published by the
//  Free Software Foundation; either version 3 of the License, or (at your
//  option) any later version.
//  This program 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 Lesser General Public License for
//  more details.
//  You should have received a copy of the GNU Lesser General Public License along
//  with this program; if not, see <http://www.gnu.org/licenses/lgpl.html>.
//  ---------------------------------------------------------------------------
package org.dmd.mvw.tools.mvwgenerator.util;

import java.io.BufferedWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;

import org.dmd.dms.util.GenUtility;
import org.dmd.mvw.tools.mvwgenerator.extended.RunContextItem;
import org.dmd.mvw.tools.mvwgenerator.extended.menus.MenuBar;
import org.dmd.mvw.tools.mvwgenerator.extended.menus.MenuImplementationConfig;
import org.dmd.mvw.tools.mvwgenerator.extended.menus.MenuItem;
import org.dmd.mvw.tools.mvwgenerator.extended.menus.Separator;
import org.dmd.mvw.tools.mvwgenerator.extended.menus.SubMenu;
import org.dmd.util.FileUpdateManager;
import org.dmd.util.codegen.ImportManager;
import org.dmd.util.exceptions.DebugInfo;

public class MenuBuilderFormatter {

  static public void formatMenuBuilder(String outdir, MvwDefinitionManager manager) throws IOException {
    String genPackage = manager.getApplication().getDefinedInModule().getGenPackage();
   
    String name = GenUtility.capTheName(manager.getApplication().getAppName().getNameString()) + "MenuBuilder";
        BufferedWriter   out = FileUpdateManager.instance().getWriter(outdir, name + ".java");
       
        ImportManager  imports = new ImportManager();
        imports.addImport("org.dmd.mvw.client.mvw.generated.mvw.MvwRunContextIF", "Base run context");
        imports.addImport("org.dmd.mvw.client.mvwmenus.generated.mvw.MvwmenusRunContextIF", "Mvwmenus run context");
        imports.addImport("org.dmd.mvw.client.mvwmenus.base.MvwMenuFactory", "Base menu factory");
        imports.addImport("org.dmd.mvw.client.mvwmenus.extended.controllers.MenuController", "Menu controller to be populated");
       
        if (manager.getMenuBars().size() > 0)
          imports.addImport("org.dmd.mvw.client.mvwmenus.base.MvwMenu", "Menus are defined");
       
        HashMap<String,RunContextItem>    rcis = new HashMap<String, RunContextItem>();
       
        if (manager.getSubMenus().size() > 0){
          // Check to see if we need any message constants
          for(SubMenu submenu: manager.getSubMenus().values()){
            if (submenu.getRCI() != null){
              submenu.getRCI().addUsageImplImports(imports);
              rcis.put(submenu.getRCI().getObjectName().getNameString(), submenu.getRCI());
            }
          }
        }
       
        if (manager.getMenuItems().size() > 0){
          imports.addImport("org.dmd.mvw.client.mvwmenus.base.MvwMenuItem", "Menu items are defined");
         
          // Check to see if we need any message constants
          for(MenuItem mi: manager.getMenuItems().values()){
            if (mi.getRCI() != null){
              mi.getRCI().addUsageImplImports(imports);
              rcis.put(mi.getRCI().getObjectName().getNameString(), mi.getRCI());
            }
          }
        }
       
        if (manager.getSeparators().size() > 0)
          imports.addImport("org.dmd.mvw.client.mvwmenus.base.MvwSeparators", "Separators are defined");

       
        RunContextItem  menuFactoryRCI = null;
       
        MenuImplementationConfig config = manager.getMenuImplementation();
        Iterator<RunContextItem> items = config.getDefinedInModule().getItems();
        while(items.hasNext()){
          RunContextItem rci = items.next();
          if (rci.getItemName().getNameString().equals("menuFactory")){
            menuFactoryRCI = rci;
            break;
          }
        }
       
        menuFactoryRCI.addUsageImplImports(imports);
       
        out.write("package " + genPackage + ".generated.mvw;\n\n");
       
        out.write(imports.getFormattedImports());
       
        out.write("\n");
       
        out.write("public class " + name + " {\n\n");
       
        out.write("    final MenuController MenuControllerRCI;\n");
        out.write(menuFactoryRCI.getImplVariable() + "\n\n");

        for(RunContextItem rci: rcis.values()){
          out.write(rci.getImplVariable() + "\n");
        }
             
      ///////////////////////////////////////////////////////////////////////
      // Constructor
     
        out.write("// Generated from: " + DebugInfo.getWhereWeAreNow() + "\n");
      out.write("    public " + name + "(MvwRunContextIF rc){\n\n");
     
        out.write("        MenuControllerRCI = ((MvwmenusRunContextIF)rc).getMenuControllerRCI();\n\n");
        out.write(menuFactoryRCI.getImplVariableAssignment() + "\n");
        for(RunContextItem rci: rcis.values()){
          out.write(rci.getImplVariableAssignment() + "\n");
        }
       
        if (manager.getMenuBars().size() > 0)
          out.write("        MvwMenu      menu      = null;\n");
       
        if (manager.getMenuItems().size() > 0)
          out.write("        MvwMenuItem  menuitem  = null;\n");
       
        if (manager.getSeparators().size() > 0)
          out.write("        MvwSeparator separator = null;\n");
       
        out.write("\n");
       
        for(MenuItem mi: manager.getMenuItems().values()){
          out.write("        menuitem = menuFactory.createMenuItem(");
          out.write("\"" + mi.getUseImpl() + "\",");
          out.write("\"" + mi.getElementName() + "\",");
          out.write("\"" + mi.getMenuOrder() + "\",");
          out.write("\"" + mi.getAddToMenu().getElementName() + "\",");
          out.write("false,");
          out.write("\"" + mi.getTriggersAction().getActionBindingName() + "\",");
          out.write(mi.getLabelForCreation() + ",");
          out.write("null");
          out.write(");\n");
          out.write("        MenuControllerRCI.addMenuItem(menuitem);\n\n");
        }
       
        for(Separator sep: manager.getSeparators().values()){
          out.write("        separator = menuFactory.createSeparator(");
          out.write("\"" + sep.getUseImpl() + "\",");
          out.write("\"" + sep.getElementName() + "\",");
          out.write("\"" + sep.getMenuOrder() + "\",");
          out.write("\"" + sep.getAddToMenu().getElementName() + "\",");
          out.write("false");
          out.write(");\n");
          out.write("        MenuControllerRCI.addSeparator(separator);\n\n");
        }
       
        for(SubMenu sub: manager.getSubMenus().values()){
          out.write("        menu = menuFactory.createSubMenu(");
          out.write("\"" + sub.getUseImpl() + "\",");
          out.write("\"" + sub.getElementName() + "\",");
          out.write("\"" + sub.getMenuOrder() + "\",");
          out.write("\"" + sub.getAddToMenu().getElementName() + "\",");
          out.write("false,");
          out.write(sub.getLabelForCreation() + ",");
          out.write("null");
          out.write(");\n");
          out.write("        MenuControllerRCI.addMenu(menu);\n\n");
        }
       
        for(MenuBar mb: manager.getMenuBars().values()){
          out.write("        menu = menuFactory.createMenu(");
          out.write("\"" + mb.getUseImpl() + "\",");
          out.write("\"" + mb.getElementName() + "\"");
          out.write(");\n");
          out.write("        MenuControllerRCI.addMenu(menu);\n\n");
        }
       
        out.write("        MenuControllerRCI.initializeMenus();\n");
        out.write("    }\n\n");
               
        out.write("}\n\n");
        out.close();
  }

}
TOP

Related Classes of org.dmd.mvw.tools.mvwgenerator.util.MenuBuilderFormatter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.