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

📄 subfocusfa.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.frames.mainframe.impl;

import com.google.gwt.user.client.ui.SourcesTabEvents;
import com.google.gwt.user.client.ui.TabListener;
import com.google.gwt.user.client.ui.Widget;
import com.queplix.core.client.app.Application;
import com.queplix.core.client.app.vo.FamgMeta;
import com.queplix.core.client.app.vo.FamgMeta.Index;
import com.queplix.core.client.app.vo.SubFocusMeta;
import com.queplix.core.client.app.vo.TabMeta;
import com.queplix.core.client.common.event.EventSource;
import com.queplix.core.client.common.event.Event;
import com.queplix.core.client.common.ui.QTabPanel;
import com.queplix.core.client.common.ui.WindowHelper;
import com.queplix.core.client.common.ui.resizable.ResizableLazyDeckPanel;
import com.queplix.core.client.controls.form.QForm;

/**
 * Postfix FA - Form Area.
 * On tab(Focus->Sub Focus->Tab not QTabPanel tab) change you should select
 * corresponding TabFA in this class to show correct contents.
 * On tab(of QTabPanel) change you should do
 * tabsFA[selected Tab].activateTab(selected QTabPanel);
 * Class MainFrameFA contains array of FocusFA.
 * Class class FocusFA contains array of SubFocusFA.
 * This SubFocusFA contains array of TabFA.
 * Class TabFA contains array of QForm.
 * @author Aliaksandr Melnik
 * @since 19 Oct 2006
 */
class SubFocusFA extends QTabPanel {
    // -------------------- public events ------------------------
    public static interface Events extends TabFA.Events {
        Event TAB_SELECTED_EVENT = new Event();
    }
    
    private EventSource eventSource = new EventSource(this);
    
    private boolean isSelectedByCode = false;
    
    public EventSource getEventSource() {
        return eventSource;
    }
    // ----------------- end of public events --------------------
    
    private TabFA[] tabsFA;
    private TabMeta[] tabsMeta;
    
    private int activeTab = -1;
    
    private String status;
    
    private boolean fireInitialization;
    
    private FamgMeta.Index indexToActivate;
    
    public SubFocusFA(final SubFocusMeta subFocusMeta, boolean fireInitialization, FamgMeta.Index indexToActivate) {
        super(TAB_LAYOUT_VERTICAL);
        this.indexToActivate = indexToActivate == null ? ResizableLazyDeckPanel.DEFAULT_INDEX_TO_ACTIVATE : indexToActivate; 
        WindowHelper.disableSelection(getTabBar().getElement());
        this.fireInitialization = fireInitialization;
        this.addStyleName("white_bg");
        
        status = Application.getStatus();
        
        tabsMeta = subFocusMeta.getTabs();
        tabsFA = new TabFA[tabsMeta.length];
        
        for(int i=0; i<tabsMeta.length; i++) {
            addCard(tabsMeta[i].getCaption());
        }
        if(tabsMeta.length > 0) {
            selectTab(indexToActivate.tab);
        }
        
        addTabListener(new TabListener() {
            public boolean onBeforeTabSelected(SourcesTabEvents sender, int index) {
                if (! isSelectedByCode) { // user click
                    TabMeta.Index tabIndex = new TabMeta.Index();
                    tabIndex.init(subFocusMeta.getIndex(), index);
                    Events.TAB_SELECTED_EVENT.setData(tabIndex);
                    eventSource.fireEventGeneratedByUser(Events.TAB_SELECTED_EVENT);
                    return false; // postpone switching tab
                } else {
                    return true; // switch tab
                }
            }
            public void onTabSelected(SourcesTabEvents sender, int index) {
            }
        });
    }
    
    public void setFormsState(int formState) {
        for (int i=0; i<tabsFA.length; i++) {
            if (tabsFA[i] != null) {
                tabsFA[i].setFormsState(formState);
            }
        }
    }
    
    public QForm getForm(FamgMeta.Index index) {
        QForm ret = null;
        TabFA tabFA = tabsFA[index.tab];
        if (tabFA != null) {
            ret = tabFA.getForm(index);
        }
        return ret;
    }
    
    public TabFA getTab(TabMeta.Index index) {
        return tabsFA[index.tab];
    }
    
    public QForm getActiveForm() {
        return tabsFA[activeTab].getActiveForm();
    }
    
    public void activateForm(FamgMeta.Index index) {
        activateTab(index);
        tabsFA[activeTab].activateForm(index);
    }
    
    public void activateTab(TabMeta.Index index) {
        if(index.tab != activeTab) {
            selectTab(index.tab);
        }
    }
    
    public void selectTab(int index) {
        activateTab(index);
        isSelectedByCode = true;
        super.selectTab(index);
        isSelectedByCode = false;
    }
    
    private void activateTab(int index) {
        if(activeTab != index) {
            activeTab = index;
            init(index);
        }
    }
    
    private void init(int index) {
        TabFA tabFA = tabsFA[index];
        if (tabFA == null) {
            if(index == 0) {
                Application.setStatus(status + " -> tab: " + tabsMeta[index].getCaption());
            }
            tabFA = new TabFA(tabsMeta[index]);
            tabsFA[index] = tabFA;
            tabFA.getEventSource().addEventListener(eventSource); // retranslate events
            remove(index);
            insert(tabFA, tabsMeta[index].getCaption(), index);
            if(fireInitialization) {
                initialized();
            }
            fireInitialization = true;
        }
        tabFA.onActivated();
    }
    
    public TabMeta.Index getSelectedTabIndex() {
        return tabsMeta[activeTab].getIndex();
    }
    
    public FamgMeta.Index getSelectedFormIndex() {
        return tabsFA[activeTab].getSelectedFormIndex();
    }
    
    public boolean performCommand(FormCommand command, FamgMeta.Index formIndex) {
        return tabsFA[formIndex.tab].performCommand(command, formIndex);
    }
    
    void initialized() {
        tabsFA[activeTab].initialized();
    }
    
    public void onScroll(Widget widget, int scrollLeft, int scrollTop) {
        tabsFA[activeTab].whenScrolling();
    }
    
    public void ensureVisibility(FamgMeta.Index index) {
        getResizableScrollPanel(index.tab).ensureVisible(getActiveForm().getView());
    }
    
    boolean isInEditMode() {
        for (int i = 0; i < tabsFA.length; i++) {
            if (tabsFA[i] != null) {
                if (tabsFA[i].isInEditMode()) {
                    return true;
                }
            }
        }
        return false;
    }
    
    void collectUISettings() {
        for (int i = 0; i < tabsFA.length; i++) {
            if (tabsFA[i] != null) {
                tabsFA[i].collectUISettings();
            }
        }
    }

    public FamgMeta.Index getNextExistingFormIndex(int tab, int famg) {
        FamgMeta.Index ret = null;
        for (int i=tab; i < tabsFA.length; i++) {
            if(tabsFA[i] != null) {
                FamgMeta.Index nextIndex = tabsFA[i].getNextExistingFormIndex(famg);
                if(nextIndex != null) {
                    ret = nextIndex;
                    break;
                }
            }
            famg = -1;//it will be incremented on tab level
        }
        return ret;
    }
}

⌨️ 快捷键说明

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