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

📄 qentityreferencecontrollerimpl.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/*
 * 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.controls.entityreference;

import com.google.gwt.user.client.Timer;
import com.queplix.core.client.app.vo.EntityReferenceData;
import com.queplix.core.client.app.vo.EntityReferenceDataRequest;
import com.queplix.core.client.app.vo.SortField;
import com.queplix.core.client.controls.QFormElementControllerImpl;
import com.queplix.core.client.controls.QFormElementModel;
import com.queplix.core.client.controls.QFormElementView;
import com.queplix.core.client.controls.grid.QGridModel;

import java.util.ArrayList;

class QEntityReferenceControllerImpl extends QFormElementControllerImpl
        implements QEntityReferenceController, QEntityReferenceViewImpl.EntityViewListener {

    private final static int DEFAULT_PAGE = 0;
    private final static int DEFAULT_PAGE_SIZE = 20;
    private final static boolean DEFAULT_DOCOUNT = false;

    private QEntityReferenceViewImpl view;
    private QEntityReferenceModelImpl model;

    private EntityReferenceDataRequest requestObject;

    private boolean buttonPressed = false;

    public QEntityReferenceControllerImpl(QEntityReferenceViewImpl view, QEntityReferenceModelImpl model) {
        this.view = view;
        this.model = model;
        view.setSearchListener(this);
    }

    public void needMoreData(String filterString) {
        QGridModel gridModel = view.getGridModel();

        boolean doCount = gridModel.isCounterToggledOn();
        int page = (int) gridModel.getCurrentPage();
        int pageSize = gridModel.getPageSize();
        SortField order = gridModel.getSortField();

        sendRequest(filterString, page, pageSize, doCount, order);
    }

    public void searchButtonClicked(String filterString) {
        buttonPressed = true;
        model.setCanShowDialogOnDataCome(true);
        sendRequest(filterString);
    }

    public void searchTabOut(final String filterString) {
        model.getEntityReferenceData().setSelectedFilter(filterString);
        if(!filterString.equalsIgnoreCase("")) {
            new Timer() {
                public void run() {
                    int mode = view.getViewMode();
                    //send request if control in edit mode. is used, because it can be "clear" button pressed and tab out triggered
                    if ((mode == QFormElementView.MODE_EDIT || mode == QFormElementView.MODE_SEARCH || mode == QFormElementView.MODE_NEW)
                            && !buttonPressed) {
                        model.setCanShowDialogOnDataCome(false);
                        sendRequest(filterString);
                    }
                }
            }.schedule(100);
        }
    }

    private void sendRequest(String filterString) {
        sendRequest(filterString, DEFAULT_PAGE, DEFAULT_PAGE_SIZE, DEFAULT_DOCOUNT, null);
    }

    private void sendRequest(String filterString, long page, int prefferedLenght, boolean counterToggledOn, SortField fieldToSort) {
        if (dataRequestListener != null) {
            if (requestObject == null) {
                requestObject = new EntityReferenceDataRequest(model.getMeta().getFieldID(),
                        filterString,
                        model.getEntityReferenceData().getSelectedRowID(),
                        model.getReferencedEntityName(),
                        page, prefferedLenght, counterToggledOn, fieldToSort, new ArrayList());
            } else {
                //no need to create it every time user click on button.
                // Even if next click rewrite filter value, user will get what his/her want.
                requestObject.init(filterString, model.getEntityReferenceData().getSelectedRowID(),
                        page, prefferedLenght, counterToggledOn, fieldToSort);
            }
            dataRequestListener.needMoreData(requestObject);
        }
    }

    public void entitySelected(Long entityID, String filter) {
        EntityReferenceData entityReferenceData = model.getEntityReferenceData();
        entityReferenceData.setSelectedRowID(entityID);
        entityReferenceData.setSelectedFilter(filter);
        model.fireSelectedEntityChanged();
    }

    public void dialogWasHidden() {
        buttonPressed = false;
        int mode = view.getViewMode();
        if (mode == QFormElementView.MODE_EDIT || mode == QFormElementView.MODE_NEW) {
            EntityReferenceData entityReferenceData = model.getEntityReferenceData();
            if(entityReferenceData.getSelectedRowID() == null) {
                entityReferenceData.setSelectedFilter("");
                model.fireSelectedEntityChanged();
            }
        }
    }
    
    public void onResolveEvent(boolean isStarted) {
        Events.ENTITY_REFERANCE_RESOLVE_EVENT.setData(Boolean.valueOf(isStarted));
        getEventSource().fireEvent(Events.ENTITY_REFERANCE_RESOLVE_EVENT);
    }

    public QFormElementModel getModel() {
        return this.model;
    }

    public QFormElementView getView() {
        return this.view;
    }
}

⌨️ 快捷键说明

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