⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.queplix.core.client.frames.mainframe.impl;import com.google.gwt.core.client.GWT;import com.google.gwt.core.client.JavaScriptObject;import com.google.gwt.user.client.History;import com.google.gwt.user.client.HistoryListener;import com.google.gwt.user.client.Timer;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.rpc.SerializableException;import com.google.gwt.user.client.ui.Composite;import com.google.gwt.user.client.ui.Widget;import com.queplix.core.client.app.LengthyTaskManager;import com.queplix.core.client.app.rpc.RPC;import com.queplix.core.client.app.vo.AccumulatedEntitiesRequestObject;import com.queplix.core.client.app.vo.AccumulatedEntityDataResponse;import com.queplix.core.client.app.vo.ClearEntityRequestObject;import com.queplix.core.client.app.vo.ContextMenuMeta;import com.queplix.core.client.app.vo.CustomizeGridRequestObject;import com.queplix.core.client.app.vo.EntityData;import com.queplix.core.client.app.vo.EntityIDRequestObject;import com.queplix.core.client.app.vo.FamgMeta;import com.queplix.core.client.app.vo.FamgMeta.Index;import com.queplix.core.client.app.vo.FieldData;import com.queplix.core.client.app.vo.FieldDataRequest;import com.queplix.core.client.app.vo.FieldMeta;import com.queplix.core.client.app.vo.FieldOnDemandData;import com.queplix.core.client.app.vo.FocusMeta;import com.queplix.core.client.app.vo.GridData;import com.queplix.core.client.app.vo.GridSearchProperties;import com.queplix.core.client.app.vo.MetaData;import com.queplix.core.client.app.vo.PrintFormRequestObject;import com.queplix.core.client.app.vo.PrintGridRequestObject;import com.queplix.core.client.app.vo.RowData;import com.queplix.core.client.app.vo.SavedSearchDeleteRequestObject;import com.queplix.core.client.app.vo.SavedSearchObject;import com.queplix.core.client.app.vo.SubFocusMeta;import com.queplix.core.client.app.vo.SubsetData;import com.queplix.core.client.app.vo.TabMeta;import com.queplix.core.client.app.vo.chart.ChartRequestObject;import com.queplix.core.client.app.vo.chart.ChartResponseObject;import com.queplix.core.client.common.CollectionsHelper;import com.queplix.core.client.common.crossframes.AdhocData;import com.queplix.core.client.common.event.Event;import com.queplix.core.client.common.event.EventListener;import com.queplix.core.client.common.event.EventSource;import com.queplix.core.client.common.ui.DialogHelper;import com.queplix.core.client.common.ui.WindowHelper;import com.queplix.core.client.controls.QButton;import com.queplix.core.client.controls.QFormElementModel;import com.queplix.core.client.controls.QFormElementView;import com.queplix.core.client.controls.chart.QChartController;import com.queplix.core.client.controls.chart.QChartModel;import com.queplix.core.client.controls.form.QForm;import com.queplix.core.client.controls.form.QFormController;import com.queplix.core.client.controls.form.QFormModel;import com.queplix.core.client.controls.grid.QGrid;import com.queplix.core.client.controls.grid.QGridController;import com.queplix.core.client.controls.grid.QGridModel;import com.queplix.core.client.frames.AboutFrame;import com.queplix.core.client.frames.email.EmailComposeDialog;import com.queplix.core.client.frames.mainframe.AdhocOperations;import com.queplix.core.client.frames.mainframe.BusinessOperationStrategy;import com.queplix.core.client.frames.mainframe.FormOperations;import com.queplix.core.client.frames.mainframe.FormState;import com.queplix.core.client.frames.mainframe.GridOperations;import com.queplix.core.client.frames.mainframe.IMainFrame;import com.queplix.core.client.frames.mainframe.OperationContext;import com.queplix.core.client.frames.mainframe.OperationTypes;import com.queplix.core.client.frames.mainframe.StrategiesFactory;import com.queplix.core.client.i18n.I18N;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;/** * Application main window contents. * @author Sultan Tezadov, Aliaksandr Melnik * @since 23 Oct 2006 */// TODO: once generics enabled, remove all occurences of '/*]' and '[*/'class MainFrame extends Composite implements        RPC.RequestListener,        HistoryListener,        LengthyTaskManager.LengthyTaskListener,        EventListener,        OperationContext,        FormOperations,        GridOperations,        AdhocOperations,        IMainFrame{    private final static String DEFAULT_HELP_PAGE = "HTML/index.html";    private static final List EMPTY_LIST = new ArrayList();    // -------------------- public events ------------------------    private EventSource eventSource = new EventSource(this);    private StrategiesFactory factory;    public EventSource getEventSource() {        return eventSource;    }    // ----------------- end of public events --------------------    private AboutFrame aboutFrame;    private MetaData appMetaData;    private MainFrameSA mainFrameSA; // SA -- Static Area    private MainFrameFA mainFrameFA; // FA -- Forms Area    private MainFrameGA mainFrameGA; // GA -- Grids Area    private FormsDataInjector dataInjector = new FormsDataInjector();    private FamgMeta.Index lastSearchFormIndex;    private FieldData[] lastSearchFieldData;    //form to print request data todo this object is re-creating each time user select record, or perform search, remove!!    private PrintFormRequestObject printFormRequest;    private PrintGridRequestObject printGridRequest;    private boolean ignoreGridRecordHistory;    private GridHistoryRecord gridHistoryRecord;    //state of MainToolBar Ad Hoc button    //true - all forms on MainToolBar Ad Hoc button event will be in Report Design state on report design button click    //false - all forms on MainToolBar Ad Hoc button event will be in state that was before Report Design state on report design button click    private boolean isReportDesignState = false;    /**     * used for ad hoc report     */    private FamgMeta.Index initialAdhocFormIndex;    /**     * Here we store last form searches and when we change some grid props it takes search params from here.     * When user do "clean" action map to be cleaned.     * Map stores {@link com.queplix.core.client.app.vo.AccumulatedEntitiesRequestObject} objects. The keys is form ids.     */    private Map lastFormSearches = new HashMap();    /**     * This object is to be sent when report event is occured. Browser has pseudo-single model hence don't need to re-create this event.     */    private AdhocData adhocEvent;    /**     *this list is used for grid pager     */    private Collection gridPagerSearchFilters;    /**     * init is for MetaData-dependent loading     * Call when MetaData is received     *     * @param appMetaData application metadata     */    public void init(MetaData appMetaData) {        this.appMetaData = appMetaData;        RPC.addRequestListener(this);        LengthyTaskManager.addLengthyTaskListener(this);        mainFrameFA = new MainFrameFA(appMetaData);        mainFrameGA = new MainFrameGA(appMetaData);        mainFrameSA = new MainFrameSA(appMetaData, mainFrameFA, mainFrameGA);        dataInjector.initialize(mainFrameFA, mainFrameGA);        dataInjector.onVisualAreaChanged(appMetaData.getTabMeta(mainFrameFA.getActiveFormIndex()));        mainFrameGA.getEventSource().addEventListener(this); // listen to events        mainFrameFA.getEventSource().addEventListener(this); // listen to events        mainFrameSA.getEventSource().addEventListener(this); // listen to events        History.addHistoryListener(this);        FocusMeta.Index defaultFocusIndex = appMetaData.getDefaultFocusIndex();        if (defaultFocusIndex != null) {            selectFocus(defaultFocusIndex);        }        selectForm(mainFrameFA.getActiveFormIndex(), true);        initWidget(mainFrameSA);    }    protected void performDeleteSavedSearchRequest(Long[] rowIDs){        SavedSearchDeleteRequestObject request = new SavedSearchDeleteRequestObject(rowIDs);        RPC.QAsyncCallback callback = new SavedSearchDeleteAsyncCallback();        RPC.getRPC().deleteSavedSearch(request, callback);    }    private void performUnlockAfterEditRequest(FamgMeta.Index formIndex, Long rowID, String formID, boolean updateAfterUnlock) {        RPC.QAsyncCallback callback = new UnlockAterEditAsyncCallback(formIndex, rowID, updateAfterUnlock);        EntityIDRequestObject request = new EntityIDRequestObject(formID, rowID);        RPC.getRPC().unlockAfterEditRecord(request, callback);    }    public void initMainFrame(StrategiesFactory factory) {        this.factory = factory;    }    private String performHelpCallEvent() {        String link = mainFrameFA.getTab(mainFrameFA.getActiveFormIndex()).getHelpLink();        if(link != null && !link.equals("")) {            return link;        }        else {            return DEFAULT_HELP_PAGE;        }    }     protected void performSearchRecordsRequest(FamgMeta.Index famgIndex, boolean localSearch) {        GridSearchProperties props = getGridSearchProperties(famgIndex);        FamgMeta baseFormMeta = appMetaData.getFamgMeta(famgIndex);        ArrayList filterEntities = getFormsFilters(baseFormMeta, localSearch);        lastFormSearches.put(appMetaData.getFormID(famgIndex), filterEntities);        BusinessOperationStrategy strategy = factory.createStrategy(appMetaData.getFormID(famgIndex));        strategy.searchRecords(filterEntities, props, localSearch);    }    private void performCustomizeGridRequest(final FamgMeta.Index gridIndex, final SubsetData data) {        String formID = appMetaData.getFormID(gridIndex);        CustomizeGridRequestObject request = new CustomizeGridRequestObject(formID, data);        RPC.QAsyncCallback callback = new RPC.QAsyncCallback() {            public void onRequestEnded(boolean success, Object result) {                if (success) {                    QGrid grid = mainFrameGA.getGrid(gridIndex);                    grid.getModel().customizeGrid(data);                    performGridDrivenRequest(gridIndex);                }            }        };        RPC.getRPC().customizeGrid(request, callback);    }    private void performGridDrivenRequest(FamgMeta.Index gridIndex) {        String formID = appMetaData.getFormID(gridIndex);        List filterEntities =                (List) lastFormSearches.get(formID);        if(filterEntities != null) {//otherwise do nothing, because grid is empty            //get grid data            GridSearchProperties props = getGridSearchProperties(gridIndex);            //do the request            BusinessOperationStrategy strategy = factory.createStrategy(appMetaData.getFormID(gridIndex));            strategy.searchRecords(filterEntities, props, false);        }    }    /**     * Set filters for forms.     * @param filters list of the {@link com.queplix.core.client.app.vo.EntityData} objects     * @param clearFormsBefore should forms be cleaned before data updated     */    public void setFormsFilters(Collection filters, boolean clearFormsBefore) {        if(clearFormsBefore) {            clearAll(getClearingFormState());        }        EntityData[] data = new EntityData[filters.size()];        CollectionsHelper.copyToArray(filters, data);        dataInjector.onFormsDataUpdated(null, data, null);    }    public Collection getDirectFormFilters(Index index) {        Collection ret = null;        QForm form = mainFrameFA.getForm(index);        FamgMeta famgMeta = appMetaData.getFamgMeta(index);        String entityName = famgMeta.getEntityName();        if (form != null) {            ret = form.getModel().getNonEmptyFilters();        } else {            EntityData entityData = dataInjector.getEntityData(entityName);            if(entityData != null && entityData.countNotEmptyFields() > 0) {                FieldData[] filters = entityData.getNotEmptyFields();                ret = new ArrayList();                CollectionsHelper.copyArrayToCollection(filters, ret);            }        }        return ret;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -