maincontroller.java

来自「android_UPNP_DLNA_控制点」· Java 代码 · 共 150 行

JAVA
150
字号
/* * Copyright (C) 2011 Teleal GmbH, Switzerland * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. */package org.teleal.cling.support.shared;import org.teleal.cling.UpnpService;import org.teleal.common.logging.LoggingUtil;import org.teleal.common.swingfwk.AbstractController;import org.teleal.common.swingfwk.Application;import org.teleal.common.swingfwk.logging.LogCategory;import org.teleal.common.swingfwk.logging.LogController;import org.teleal.common.swingfwk.logging.LogMessage;import org.teleal.common.swingfwk.logging.LoggingHandler;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JWindow;import javax.swing.UIManager;import java.awt.Dimension;import java.awt.Frame;import java.util.List;import java.util.logging.Handler;import java.util.logging.Level;import java.util.logging.LogManager;/** * @author Christian Bauer */public abstract class MainController extends AbstractController<JFrame> {    // Dependencies    final private LogController logController;    // View    final private JPanel logPanel;    public MainController(JFrame view, List<LogCategory> logCategories) {        super(view);        // Some UI stuff (of course, why would the OS L&F be the default -- too easy?!)        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        } catch (Exception ex) {            System.out.println("Unable to load native look and feel: " + ex.toString());        }        // Exception handler        System.setProperty("sun.awt.exception.handler", AWTExceptionHandler.class.getName());        // Shutdown behavior        Runtime.getRuntime().addShutdownHook(new Thread() {            @Override            public void run() {                if (getUpnpService() != null)                    getUpnpService().shutdown();            }        });        // Logging UI        logController = new LogController(this, logCategories) {            @Override            protected void expand(LogMessage logMessage) {                fireEventGlobal(                        new TextExpandEvent(logMessage.getMessage())                );            }            @Override            protected Frame getParentWindow() {                return MainController.this.getView();            }        };        logPanel = logController.getView();        logPanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));        // Wire UI into JUL        // Don't reset JUL root logger but add if there is a JUL config file)        Handler handler = new LoggingHandler() {            protected void log(LogMessage msg) {                logController.pushMessage(msg);            }        };        if (System.getProperty("java.util.logging.config.file") == null) {            LoggingUtil.resetRootHandler(handler);        } else {            LogManager.getLogManager().getLogger("").addHandler(handler);        }    }    public LogController getLogController() {        return logController;    }    public JPanel getLogPanel() {        return logPanel;    }    public void log(Level level, String msg) {        log(new LogMessage(level, msg));    }    public void log(LogMessage message) {        getLogController().pushMessage(message);    }    @Override    public void dispose() {        super.dispose();        ShutdownWindow.INSTANCE.setVisible(true);        new Thread() {            @Override            public void run() {                System.exit(0);            }        }.start();    }    public static class ShutdownWindow extends JWindow {        final public static JWindow INSTANCE = new ShutdownWindow();        protected ShutdownWindow() {            JLabel shutdownLabel = new JLabel("Shutting down, please wait...");            shutdownLabel.setHorizontalAlignment(JLabel.CENTER);            getContentPane().add(shutdownLabel);            setPreferredSize(new Dimension(300, 30));            pack();            Application.center(this);        }    }    public abstract UpnpService getUpnpService();}

⌨️ 快捷键说明

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