zoukankan      html  css  js  c++  java
  • Spark研究笔记5:重要的工厂类NativeManager(原创) CVT

    NativeManager目前主要是为了闪屏插件(org.jivesoftware.spark.plugin.flashing)服务的,主要是操作NativeHandler列表,而NativeHandler接口的主要实现类是FlashingHandler,FlashingHandler的定义:

    public class FlashingHandler implements NativeHandler {
        private FlashWindow flasher;
    
        public FlashingHandler() {
            flasher = new FlashWindow();
        }
    
        @Override
        public void flashWindow(Window window) {
            FlashingPreference preference = (FlashingPreference) SparkManager.getPreferenceManager().getPreference(FlashingPreference.NAMESPACE);
            if (preference.getPreferences().isFlashingEnabled()) {
                if (preference.getPreferences().getFlashingType().equals(FlashingPreferences.TYPE_CONTINOUS)) {
                    flasher.startFlashing(window);
                }
                else if (preference.getPreferences().getFlashingType().equals(FlashingPreferences.TYPE_TEMPORARY)) {
                    flasher.flash(window, 1500, 5);
                }
            }
        }

    实际上在整个工程NativeManager从未被实例化过,这真是件奇怪的事情,不过这个类不是特别关键。

    /**
     * $RCSfile: ,v $
     * $Revision: $
     * $Date: $
     * 
     * Copyright (C) 2004-2011 Jive Software. All rights reserved.
     *
     * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
     *
     * 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 org.jivesoftware.spark;
    
    import java.awt.Window;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.jivesoftware.spark.util.ModelUtil;
    
    /**
     * The AlertManager handles the delegation of Alerting based.
     *
     * @author Derek DeMoro
     */
    public class NativeManager {
    
        private List<NativeHandler> nativeHandlers = new ArrayList<NativeHandler>();
    
        public NativeManager() {
    
        }
    
        /**
         * Adds an alert.
         *
         * @param nativeHandler the Alerter to add.
         */
        public void addNativeHandler(NativeHandler nativeHandler) {
            nativeHandlers.add(nativeHandler);
        }
    
        /**
         * Removes an alerter.
         *
         * @param nativeHandler the alerter to remove.
         */
        public void removeNativeHandler(NativeHandler nativeHandler) {
            nativeHandlers.remove(nativeHandler);
        }
    
    
        /**
         * Flash the given window.
         *
         * @param window the window to flash.
         */
        public void flashWindow(Window window) {
            final Iterator<NativeHandler> alertNotifier = ModelUtil.reverseListIterator(nativeHandlers.listIterator());
            while (alertNotifier.hasNext()) {
                final NativeHandler alert = alertNotifier.next();
                boolean handle = alert.handleNotification();
                if (handle) {
                    alert.flashWindow(window);
                }
            }
        }
    
        /**
         * Flash the given window, but stop flashing when the window takes focus.
         *
         * @param window the window to start flashing.
         */
        public void flashWindowStopOnFocus(Window window) {
            final Iterator<NativeHandler> alertNotifiers = ModelUtil.reverseListIterator(nativeHandlers.listIterator());
            while (alertNotifiers.hasNext()) {
                final NativeHandler alert = alertNotifiers.next();
                boolean handle = alert.handleNotification();
                if (handle) {
                    alert.flashWindowStopWhenFocused(window);
                }
            }
        }
    
        /**
         * Stop the flashing of the window.
         *
         * @param window the window to stop flashing.
         */
        public void stopFlashing(Window window) {
            final Iterator<NativeHandler> alertNotifiers = ModelUtil.reverseListIterator(nativeHandlers.listIterator());
            while (alertNotifiers.hasNext()) {
                final NativeHandler alert = alertNotifiers.next();
                boolean handle = alert.handleNotification();
                if (handle) {
                    alert.stopFlashing(window);
                }
            }
        }
    
    }
  • 相关阅读:
    MySQL创建用户及用户授权
    kubectl 更新容器镜像
    harbor安装报权限错误问题解决
    docker拉取harbor仓库镜像报x509: certificate signed by unknown authority的解决方案
    pkexec提权(限制条件:用户必须在sudo组里且知道用户密码)
    sudo useradd提权
    Linux下绕过空格的方式总结
    Solved: cannot kill Docker container permission denied
    nginx和Docker的打怪升级
    三种免费Terminal工具推荐
  • 原文地址:https://www.cnblogs.com/openfire/p/3047610.html
Copyright © 2011-2022 走看看