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

📄 applicationworkbenchwindowadvisor.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
字号:
/* * Copyright (c) 2004-2006 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     Marco Maccaferri - initial API and implementation */package net.sourceforge.eclipsetrader;import org.eclipse.core.runtime.IProduct;import org.eclipse.core.runtime.Platform;import org.eclipse.jface.dialogs.IDialogConstants;import org.eclipse.jface.dialogs.MessageDialogWithToggle;import org.eclipse.jface.preference.IPreferenceStore;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.ShellAdapter;import org.eclipse.swt.events.ShellEvent;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Event;import org.eclipse.swt.widgets.Listener;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.MenuItem;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.TrayItem;import org.eclipse.ui.IPageListener;import org.eclipse.ui.IPerspectiveDescriptor;import org.eclipse.ui.IWorkbenchPage;import org.eclipse.ui.PerspectiveAdapter;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.application.ActionBarAdvisor;import org.eclipse.ui.application.IActionBarConfigurer;import org.eclipse.ui.application.IWorkbenchWindowConfigurer;import org.eclipse.ui.application.WorkbenchWindowAdvisor;public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor{    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer)    {        super(configurer);    }    /* (non-Javadoc)     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#createActionBarAdvisor(org.eclipse.ui.application.IActionBarConfigurer)     */    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer)    {        return new ApplicationActionBarAdvisor(configurer);    }    /* (non-Javadoc)     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#preWindowOpen()     */    public void preWindowOpen()    {        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();        configurer.setShowMenuBar(true);        configurer.setShowCoolBar(true);        configurer.setShowPerspectiveBar(true);        configurer.setShowStatusLine(true);        configurer.setShowProgressIndicator(true);        configurer.getWindow().addPageListener(new IPageListener() {            public void pageActivated(IWorkbenchPage page)            {                updateTitle();            }            public void pageClosed(IWorkbenchPage page)            {                updateTitle();            }            public void pageOpened(IWorkbenchPage page)            {            }        });        configurer.getWindow().addPerspectiveListener(new PerspectiveAdapter() {            public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective)            {                updateTitle();            }                        public void perspectiveSavedAs(IWorkbenchPage page,IPerspectiveDescriptor oldPerspective,IPerspectiveDescriptor newPerspective)            {                updateTitle();            }            public void perspectiveDeactivated(IWorkbenchPage page, IPerspectiveDescriptor perspective)            {                updateTitle();            }        });    }    /* (non-Javadoc)     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#postWindowOpen()     */    public void postWindowOpen()    {        final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();        shell.addShellListener(new ShellAdapter() {            public void shellIconified(ShellEvent e)            {                Display display = PlatformUI.getWorkbench().getDisplay();                if (display.getSystemTray() != null && EclipseTraderPlugin.getDefault().getPreferenceStore().getBoolean(EclipseTraderPlugin.MINIMIZE_TO_TRAY))                {                    shell.setVisible(false);                    final TrayItem trayItem = new TrayItem(display.getSystemTray(), SWT.NONE);                    final Image image = EclipseTraderPlugin.getImageDescriptor("eclipse.gif").createImage();                    trayItem.setImage(image);                    trayItem.setToolTipText(getWindowConfigurer().getTitle());                    trayItem.addListener(SWT.MenuDetect, new Listener() {                        Menu menu = new Menu(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.POP_UP);                                                public void handleEvent(Event event)                        {                            MenuItem[] items = menu.getItems();                            for (int i = 0; i < items.length; i++)                                items[i].dispose();                                                        MenuItem item = new MenuItem(menu, SWT.NONE);                            item.setText("Restore Window");                            item.addSelectionListener(new SelectionAdapter() {                                public void widgetSelected(SelectionEvent e)                                {                                    Shell workbenchWindowShell = getWindowConfigurer().getWindow().getShell();                                    workbenchWindowShell.setVisible(true);                                    workbenchWindowShell.setActive();                                    workbenchWindowShell.setFocus();                                    workbenchWindowShell.setMinimized(false);                                    trayItem.dispose();                                    image.dispose();                                }                            });                                                        menu.setVisible(true);                        }                    });                }            }        });        super.postWindowOpen();    }    /* (non-Javadoc)     * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#preWindowShellClose()     */    public boolean preWindowShellClose()    {        IPreferenceStore preferenceStore = EclipseTraderPlugin.getDefault().getPreferenceStore();        boolean promptOnExit = preferenceStore.getBoolean(EclipseTraderPlugin.PROMPT_ON_EXIT);        if (promptOnExit)        {            MessageDialogWithToggle dlg = MessageDialogWithToggle.openOkCancelConfirm(getWindowConfigurer().getWindow().getShell(), "Confirm Exit", "Exit EclipseTrader ?", "Always exit without prompt", false, null, null);            if (dlg.getReturnCode() != IDialogConstants.OK_ID)                return false;            EclipseTraderPlugin.getDefault().getPreferenceStore().setValue(EclipseTraderPlugin.PROMPT_ON_EXIT, !dlg.getToggleState());            EclipseTraderPlugin.getDefault().savePluginPreferences();        }        return super.preWindowShellClose();    }    private String computeTitle()     {        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();        IWorkbenchPage currentPage = configurer.getWindow().getActivePage();        String title = null;        IProduct product = Platform.getProduct();        if (product != null)            title = product.getName();        if (title == null)            title = ""; //$NON-NLS-1$        if (currentPage != null)        {            IPerspectiveDescriptor persp = currentPage.getPerspective();            if (persp != null)            {                if (!persp.getLabel().equals("") && !persp.getLabel().equals(title))                    title += " - " + persp.getLabel();            }        }        return title;    }        private void updateTitle()     {        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();        String oldTitle = configurer.getTitle();        String newTitle = computeTitle();        if (!newTitle.equals(oldTitle))            configurer.setTitle(newTitle);    }}

⌨️ 快捷键说明

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