Package com.nexirius.theteam

Source Code of com.nexirius.theteam.TheTeam$HelpCommand

package com.nexirius.theteam;

import com.nexirius.framework.application.Application;
import com.nexirius.framework.application.DialogManager;
import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.datamodel.DataModelCommand;
import com.nexirius.framework.datamodel.DefaultDataModelCommand;
import com.nexirius.framework.datamodel.StringModel;
import com.nexirius.framework.dataviewer.HTMLViewerCreator;
import com.nexirius.framework.dataviewer.ViewerCreatorMap;
import com.nexirius.framework.onlinehelp.HTMLHelpDialog;
import com.nexirius.framework.onlinehelp.OnlineHelp;
import com.nexirius.framework.onlinehelp.OnlineHelpManager;
import com.nexirius.framework.swing.SwingViewerCreator;
import com.nexirius.theteam.datacontroller.MainController;
import com.nexirius.theteam.dataeditor.*;
import com.nexirius.theteam.datamodel.*;
import com.nexirius.theteam.dataviewer.AddressViewer;
import com.nexirius.theteam.dataviewer.PersonViewer;
import com.nexirius.theteam.dataviewer.HelpViewer;
import com.nexirius.theteam.layout.AddressArrayLayout;
import com.nexirius.theteam.layout.MemberArrayLayout;
import com.nexirius.theteam.layout.PhoneArrayLayout;
import com.nexirius.theteam.persistence.FileBasedTeamPersistence;
import com.nexirius.theteam.persistence.TeamPersistenceManager;
import com.nexirius.util.XFile;
import com.nexirius.util.XString;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.net.URL;

public class TheTeam extends Application {
    static TheTeam onlyInstance = null;
    StringModel statusLineModel = new StringModel("", "StatusLine");
    MainModel mainModel = null;
    MainController mainController;
    HTMLHelpDialog helpDialog = null;
    String installDir;

    DataModelCommand exitMethod;

    public TheTeam(String argv[])
            throws Exception {
        super(argv);
        onlyInstance = this;
    }

    public static TheTeam getApplication() {
        return onlyInstance;
    }

    public class MyOnlineHelpManager implements OnlineHelpManager {
        public String getHelpString(String resourceKey) {
            return getClientResource().getHelpString(resourceKey);
        }

        public void help(String text) {
            showHelp(getText(text));
        }
    }

    public void preInit() {
        OnlineHelp.init(new MyOnlineHelpManager());
        DialogManager.setErrorAdaptor(this);
        DialogManager.setPopupEditorAdaptor(this);

        ViewerCreatorMap map = getFactory().getViewerCreatorMap();

        map.register(MainModel.class, new SwingViewerCreator(MainEditor.class));
        map.register(MemberModel.class, new SwingViewerCreator(MemberEditor.class));
        map.register(AddressModel.class, new SwingViewerCreator(AddressEditor.class));
        map.register(AddressModel.class, new SwingViewerCreator(AddressViewer.class));
        map.register(PersonModel.class, new SwingViewerCreator(PersonEditor.class));
        map.register(PersonModel.class, new SwingViewerCreator(PersonViewer.class));
        map.register(PhoneModel.class, new SwingViewerCreator(PhoneEditor.class));
        map.register(MemberArrayModel.class, new MemberArrayLayout(400), false);
        map.register(AddressArrayModel.class, new AddressArrayLayout(400), false);
        map.register(PhoneArrayModel.class, new PhoneArrayLayout(400), false);
        map.register(EditListModel.class, new SwingViewerCreator(EditListEditor.class));

        try {
            mainController = new MainController(getFactory());
        } catch (Exception e) {
            e.printStackTrace();
        }

        mainModel = mainController.getMainModel();
        mainModel.appendMethod(exitMethod = new ExitMethod());
        mainModel.appendMethod(new HelpCommand("About", "about.help"));
    }

    public void init() {
        TeamPersistenceManager.setPersistence(new FileBasedTeamPersistence());
        getMainPanel().setLayout(new BorderLayout());
        getMainPanel().add(mainController.createJComponent(), BorderLayout.CENTER);
        getMainFrame().pack();
        DialogManager.center(getMainFrame(), true);
    }

    public void postInit() {
        mainModel.getMemberList().load();
    }

    public String getApplicationName() {
        return "TheTeam";
    }

    public DataModel getStatusLineModel() {
        return statusLineModel;
    }

    public DataModel getApplicationModel() {
        return mainModel;
    }

    public void setStatusText(String text) {
        statusLineModel.setText(text);
    }

    public void info(String text) {
        setStatusText(text);
    }

    public void clear() {
        mainModel.clear();
    }

    public String getHelpBase() {
        return getInstallURL() + "help/";
    }

    public String getInstallDir() {
        if (installDir == null) {
            String prop = "InstallDir";
            installDir = System.getProperty(prop);

            if (installDir == null) {
                System.err.println(prop + " is not set!");

                return "";
            }
        }

        return installDir;
    }

    public String getInstallURL() {
        String s = getInstallDir();

        if (s == null) {

            return "";
        }

        XString xs = new XString(s);

        xs.replace(File.separator, "/");

        String path = xs.toString();

        if (!path.startsWith("/")) {
            path = "/" + path;
        }

        if (!path.endsWith("/")) {
            path = path + "/";
        }

        try {
            URL url = new URL("file", "", path);

            return url.toString();
        } catch (Exception ex) {
            ex.printStackTrace();
            System.err.println("Can't translate directory into URL:'" + path + "'");
        }

        return "";
    }

    public String getApplicationTitle() {
        String ret = getClientResource().getText("ApplicationTitle");

        return ret;
    }

    public void showHelp(String text) {
        StringModel about = new StringModel("");
        try {
            XFile aboutFile = new XFile(text);

            about.setText(new String(aboutFile.getBytes()));
        } catch (Exception ex) {
            about.setText(ex.getClass().getName());
            ex.printStackTrace();
        }

        DialogManager.getPopupEditorAdaptor().noDuplicatePopupEdit(about, new SwingViewerCreator(HelpViewer.class), null);
    }

    public static void main(String argv[]) {
        String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";

        try {
            javax.swing.UIManager.setLookAndFeel(plaf);
        } catch (Exception e) {
            System.out.println("Can't set '" + plaf + "' look and feel");
        }
        try {
            new TheTeam(argv).run();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    class ExitMethod extends DefaultDataModelCommand {
        ExitMethod() {
            super("Exit");
        }

        public void doAction() {
            exit();
        }
    }

    class HelpCommand extends DefaultDataModelCommand {
        String _help;

        HelpCommand(String name, String help) {
            super(name);
            _help = help;
        }

        public void doAction() {
            OnlineHelp.help(_help);
        }
    }

    public JFrame getMainFrame() {
        return super.getMainFrame();    //TODO
    }
}

TOP

Related Classes of com.nexirius.theteam.TheTeam$HelpCommand

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.