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

📄 mainmenubarhandler.java

📁 为了下东西 随便发了个 datamining 的源代码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/*
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
/*
 * $Author$
 * $Date$
 * $Revision$
 * 
 * This is the handler of the Menu bar of Main Application Windows.
 */
package eti.bi.alphaminer.ui.menu;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.util.Enumeration;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
import eti.bi.alphaminer.Locale.LocalesManager;
import eti.bi.alphaminer.core.Plugin.PluginFactory;
import eti.bi.alphaminer.core.handler.AccessController;
import eti.bi.alphaminer.core.handler.CaseHandler;
import eti.bi.alphaminer.core.handler.CaseInfoListHandler;
import eti.bi.alphaminer.core.observer.Observer;
import eti.bi.alphaminer.core.observer.HelpObserver;
import eti.bi.alphaminer.core.observer.HelpObserveSubject;
import eti.bi.alphaminer.core.workspace.WorkspacesManager;
import eti.bi.alphaminer.core.help.AlphaminerHelpHandler;
import eti.bi.alphaminer.jhelpcomponent.HelpCursor;
import eti.bi.common.Constants;
import eti.bi.common.ImageLocation;
import eti.bi.common.Locale.Resource;
import eti.bi.common.System.SysConfig;
import eti.bi.common.System.SystemNet;
import eti.bi.alphaminer.ui.ApplicationWindow;
import eti.bi.alphaminer.ui.Dialog.MessageDialog;
import eti.bi.alphaminer.vo.BICase;
import eti.bi.alphaminer.vo.CaseInfoList;
import eti.bi.alphaminer.vo.CaseInformation;
import eti.bi.exception.BaseException;
import eti.bi.exception.SysException;
import eti.bi.util.ResourceLoader;

/**
 * MenuBarHandler is responsible for creating and managing the menu bar of the
 * KBBI-client Applciation.
 */
public class MainMenuBarHandler extends MouseAdapter implements Observer, ActionListener, ItemListener {
	/* ApplicationWindow containing the tool bar */
	private ApplicationWindow m_Container;
	/* Tool bar handled by this handler */
	// private JMenuBar m_MenuBar;
	private JHelpMenuBar m_MenuBar; // <<27/07/2005 Kenneth Lai: Modify for
									// JHelp>>
	private JMenu m_MenuCase;
	private JMenu m_MenuEdit;
	// <<17/02/2005 Mark Li: Remove Configuration from menu
	// private JMenu m_MenuConfiguration;
	// 17/02/2005 Mark Li: Remove Configuration from menu>>
	private JMenu m_MenuWindow;
	private JMenu m_MenuAdvance;
	private JMenu m_MenuHelp;
	private JMenu m_MenuCaseRecentCases;
	private ButtonGroup m_CaseWindowGroup;
	private JCheckBoxMenuItem m_Emtpy;
	private JMenu m_MenuWorkSpace;
	private JMenu m_MenuLocale;
	private JMenuItem pluginItem;
	private static String ACTION_WINDOWS_CASCADE = "ACTION_WINDOWS_CASCADE";
	private static String ACTION_WINDOWS_VERTICAL = "ACTION_WINDOWS_VERTICAL";
	private static String ACTION_WINDOWS_HORIZONTAL = "ACTION_WINDOWS_HORIZONTAL";
	private static String ACTION_WINDOWS_MINIMIZE = "ACTION_WINDOWS_MINIMIZE";
	private static String ACTION_WINDOWS_MANAGEMENT = "ACTION_WINDOWS_MANAGEMENT";
	private static String ACTION_HELP_ABOUT = "ACTION_HELP_ABOUT";
	private static String ACTION_SENDMAIL = "ACTION_SENDMAIL";
	private static String ACTION_CHECKUPDATE = "ACTION_CHECKUPDATE";
	private static int INDEX_CONNECT = 0;
	private static int INDEX_DISCONNECT = 1;
	private static int INDEX_NEW = 2;
	private static int INDEX_COPY_CASE = 3;
	private static int INDEX_SAVE = 4;
	private static int INDEX_SAVE_ALL = 5;
	private static int INDEX_CLOSE = 6;
	private static int INDEX_CLOSE_ALL = 7;
	private static int INDEX_DELETE = 8;
	private static int INDEX_VIEW = 9;
	private static int INDEX_EDIT = 10;
	private static int INDEX_EXIT = 11;
	private static int INDEX_SEARCH = 12;
	private static int INDEX_IMPORTCASE = 13;
	private static int INDEX_RECENT = 14;
	// private static int INDEX_OPTION = 0;
	private static int INDEX_WORKSPACES = 0;
	private static int INDEX_LOCALE = 1;
	
	/**
	 * Constructs a MenuBarHandler.
	 * 
	 * @param a_Window
	 *            the ApplicationWindow containing menu bar handled by this
	 *            MenuBarHandler.
	 * @throws SysException
	 */
	public MainMenuBarHandler(ApplicationWindow a_Window) throws SysException {
		AccessController.getInstance().registerInterest(this);
		m_Container = a_Window;
		m_CaseWindowGroup = new ButtonGroup();
		m_Emtpy = new JCheckBoxMenuItem();
		m_CaseWindowGroup.add(m_Emtpy);
		createMenuBar();
		logoffState();
	}

	/**
	 * Updates recent file sub-menu. Insert the specific Case Name to the top of
	 * the list.
	 */
	public void updateRecentFileList(String caseName, String a_CaseID) {
		// update file m_FileName
		// update m_RecentlyOpenedCase
		updateRecentFileSubMenu(caseName, a_CaseID);
	}

	/**
	 * Updates Window Menu.
	 * 
	 * @param a_CaseID
	 *            ID of the Case to be inserted into or removed from the Window
	 *            Menu.
	 * @param a_isOpen
	 *            true to insert the specific entry into Window Menu; false to
	 *            remove the specific entry from the Window Menu.
	 */
	public void updateWindowMenu(String a_CaseName, String a_CaseID, boolean a_IsOpen) {

		boolean found = false;
		JCheckBoxMenuItem removeCaseWindow = null;
		for (Enumeration em = m_CaseWindowGroup.getElements(); em.hasMoreElements();) {
			JCheckBoxMenuItem caseItem = (JCheckBoxMenuItem) em.nextElement();
			if (found&&!a_IsOpen) {
				String text = caseItem.getText();
				int num = Integer.parseInt(text.substring(0, text.indexOf(".")));
				String caseID = text.substring(text.indexOf(". "));
				text = String.valueOf(num - 1) + caseID;
				caseItem.setText(text);
			}
			if (caseItem.getActionCommand().equals("switch|" + a_CaseID)) {
				if(!a_IsOpen) {
					m_MenuWindow.remove(caseItem);	
					removeCaseWindow = caseItem;
				}
				found = true;
			}
		}
		
		if(found) {
			m_CaseWindowGroup.remove(removeCaseWindow);
		}
		else {
			if (a_IsOpen) {
				JCheckBoxMenuItem caseitem = new JCheckBoxMenuItem(m_CaseWindowGroup.getButtonCount() + ". " + a_CaseName);
				caseitem.setActionCommand("switch|" + a_CaseID);
				caseitem.addActionListener(this);
				m_CaseWindowGroup.add(caseitem);
				m_MenuWindow.add(caseitem);
			}
		}
		
	}

	/**
	 * Selects entry of the specific CaseWindow in the Window Menu.
	 * 
	 * @param a_CaseID
	 *            ID of the Case whose CaseWindow is to be selected.
	 */
	public void selectCaseWindow(String a_CaseID) {
		JCheckBoxMenuItem selectCaseWindow = null;
		if (a_CaseID == null)
			m_Emtpy.setSelected(true);
		else {
			for (Enumeration em = m_CaseWindowGroup.getElements(); em.hasMoreElements();) {
				selectCaseWindow = (JCheckBoxMenuItem) em.nextElement();
				if (selectCaseWindow.getActionCommand().equals("switch|" + a_CaseID)) {
					selectCaseWindow.setSelected(true);
					break;
				}
			}
		}
	}

	/**
	 * Update a specific CaseWindow item in the Window Menu.
	 * 
	 * @param a_OldCaseID
	 *            original ID of the Case indicated in the menu item.
	 * @param a_NewCaseID
	 *            new ID to be sed to indicated the Case.
	 */
	public void updateWindowMenuItem(String a_OldCaseID, String a_NewCaseID) {
		JCheckBoxMenuItem selectCaseWindow = null;
		for (Enumeration em = m_CaseWindowGroup.getElements(); em.hasMoreElements();) {
			selectCaseWindow = (JCheckBoxMenuItem) em.nextElement();
			if (selectCaseWindow.getActionCommand().equals("switch|" + a_OldCaseID)) {
				String text = selectCaseWindow.getText();
				text = text.substring(0, text.indexOf(a_OldCaseID)) + a_NewCaseID;
				selectCaseWindow.setText(text);
				selectCaseWindow.setActionCommand("switch|" + a_NewCaseID);
				break;
			}
		}
	}

	/**
	 * Enables/disables File->Connect item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledConnect(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_CONNECT).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Connect item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledConnect() {
		return m_MenuCase.getItem(INDEX_CONNECT).isEnabled();
	}

	/**
	 * Enables/disables File->Disconnect item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledDisconnect(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_DISCONNECT).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Disconnect item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledDisconnect() {
		return m_MenuCase.getItem(INDEX_DISCONNECT).isEnabled();
	}

	/**
	 * Enables/disables File->New item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledNew(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_NEW).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->New item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledNew() {
		return m_MenuCase.getItem(INDEX_NEW).isEnabled();
	}

	/**
	 * Enables/disables File->Copy Case item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledCopyCase(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_COPY_CASE).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Copy Case item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledCopyCase() {
		return m_MenuCase.getItem(INDEX_COPY_CASE).isEnabled();
	}

	/**
	 * Enables/disables File->Save item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledSave(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_SAVE).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Save item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledSave() {
		return m_MenuCase.getItem(INDEX_SAVE).isEnabled();
	}

	/**
	 * Enables/disables File->Save All item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledSaveAll(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_SAVE_ALL).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Save All item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledSaveAll() {
		return m_MenuCase.getItem(INDEX_SAVE_ALL).isEnabled();
	}

	/**
	 * Enables/disables File->Close item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledClose(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_CLOSE).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Close item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledClose() {
		return m_MenuCase.getItem(INDEX_CLOSE).isEnabled();
	}

	/**
	 * Enables/disables File->Close All item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledCloseAll(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_CLOSE_ALL).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Close All item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledCloseAll() {
		return m_MenuCase.getItem(INDEX_CLOSE_ALL).isEnabled();
	}

	/**
	 * Enables/disables File->Delete item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledDelete(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_DELETE).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Delete item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledDelete() {
		return m_MenuCase.getItem(INDEX_DELETE).isEnabled();
	}

	/**
	 * Enables/disables File->View item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledView(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_VIEW).setEnabled(a_IsEnabled);
	}
	
	/**
	 * Returns <code>true<code> if File->View item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledView() {
		return m_MenuCase.getItem(INDEX_VIEW).isEnabled();
	}

	/**
	 * Enables/disables File->Edit item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledEdit(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_EDIT).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Edit item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledEdit() {
		return m_MenuCase.getItem(INDEX_EDIT).isEnabled();
	}

	/**
	 * Enables/disables File->Search item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledSearch(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_SEARCH).setEnabled(a_IsEnabled);
	}

	/**
	 * Returns if File->Search item is enabled.
	 * 
	 * @return true if it is enabled; false otherwise.
	 */
	public boolean isEnabledSearch() {
		return m_MenuCase.getItem(INDEX_SEARCH).isEnabled();
	}

	/**
	 * Enables/disables File->Recent Cases item.
	 * 
	 * @param a_IsEnabled
	 *            true to enable; false to disable.
	 */
	public void setEnabledRecentCase(boolean a_IsEnabled) {
		m_MenuCase.getItem(INDEX_RECENT).setEnabled(a_IsEnabled);

⌨️ 快捷键说明

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