popupmenufactory.java

来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 126 行

JAVA
126
字号
/* * This source code is part of TWaver 1.3.1 * * SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * Copyright 2000-2005 SERVA Software, Inc. All rights reserved. */package demo.table;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.lang.reflect.Method;
import java.util.List;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

import demo.TPopupMenu;

import twaver.TWaverUtil;
import twaver.table.TTable;
import twaver.table.TTableColumn;
import twaver.table.TTableModel;
import twaver.table.TTablePopupMenuFactory;

public class PopupMenuFactory {
	final static String text = "TWaver" + TWaverUtil.getVersionString();
	
	public static void initTablePopupMenu(TTable table){
		initTableHeadPopupMenu(table);
		initTableBodyPopupMenu(table);
	}
	
	// init table head popupMenu
	private static void initTableHeadPopupMenu(final TTable table){
		table.setTableHeadPopupMenuFactory(new TTablePopupMenuFactory(){
			public JPopupMenu getPopupMenu(TTable table, MouseEvent e) {
				JPopupMenu popupMenu = new TPopupMenu(text, Color.WHITE, Color.BLACK, 20);
				final List columnList = table.getTableModel().getRawColumn();
				for(int i=0; i<columnList.size(); i++){
					final TTableColumn column = (TTableColumn)columnList.get(i);
					final JCheckBoxMenuItem item = new JCheckBoxMenuItem(column.getDisplayName(), column.isVisible());
					popupMenu.add(item);
					item.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e) {
							column.setVisible(item.isSelected());
						}
					});
					if(i == 1){
						popupMenu.addSeparator();
					}
				}
				popupMenu.addSeparator();
				
				JMenuItem item = new JMenuItem(TWaverUtil.getString("table.column.visibleAll"));
				popupMenu.add(item);
				item.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e) {
						for(int i=0; i<columnList.size(); i++){
							TTableColumn column = (TTableColumn)columnList.get(i);
							column.setVisible(true);
						}
					}
				});
				
				item = new JMenuItem(TWaverUtil.getString("table.column.hideAll"));
				popupMenu.add(item);
				item.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e) {
						for(int i=0; i<columnList.size(); i++){
							TTableColumn column = (TTableColumn)columnList.get(i);
							column.setVisible(false);
						}
					}
				});
				
				return popupMenu;
			}
		});
	}
	
	// init table body popupMenu
	private static void initTableBodyPopupMenu(TTable table){
		JPopupMenu popupMenu = new TPopupMenu(text, Color.WHITE, Color.RED, Color.BLUE, 20);
		
		createJMenuItem(popupMenu, table.getTableModel(), "removeCheckedRows");
		createJMenuItem(popupMenu, table.getTableModel(), "removeSelectedRows");
		popupMenu.addSeparator();
		createJMenuItem(popupMenu, table.getTableModel(), "clearRawData");
		createJMenuItem(popupMenu, table.getTableModel(), "clearPublishedData");
		popupMenu.addSeparator();
		createJMenuItem(popupMenu, table.getTableModel(), "uncheckPublishedRows");
		createJMenuItem(popupMenu, table.getTableModel(), "uncheckCurrentPageRows");
		popupMenu.addSeparator();
		createJMenuItem(popupMenu, table.getTableModel(), "checkSelectedRows");
		createJMenuItem(popupMenu, table.getTableModel(), "checkCurrentPageRows");
		createJMenuItem(popupMenu, table.getTableModel(), "checkPublishedRows");
		
		table.setDefaultTableBodyPopupMenu(popupMenu);
	}

	private static JMenuItem createJMenuItem(JPopupMenu popupMenu, final TTableModel tableModel, final String methodName){
		JMenuItem item = new JMenuItem(TWaverUtil.getString("table." + methodName));
		item.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				try {
					// unlock table model
					if(tableModel.isLocked()){
						tableModel.unlock();
					}
					// invoke method
					Method method = TTableModel.class.getMethod(methodName, null);
					method.invoke(tableModel, null);
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		popupMenu.add(item);
		return item;
	}
	
}

⌨️ 快捷键说明

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