treepopupmenudemo.java

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

JAVA
123
字号
/* * 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.tree;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;

import demo.DemoNodeFactory;
import demo.DemoPane;
import demo.TPopupMenu;

import twaver.*;
import twaver.tree.*;

public class TreePopupMenuDemo extends DemoPane implements PopupMenuFactory {
    private TTree tree = null;

    public TreePopupMenuDemo() {
        TDataBox box = new TDataBox("Tree Popup Menu Demo");
        DemoNodeFactory.createAll(box);
        tree = new TTree(box);
        tree.setPopupMenuFactory(this);
        this.add(new JScrollPane(tree), BorderLayout.CENTER);
    }

    public JPopupMenu getPopupMenu(final DataBoxSelectionModel selectionModel,Point p) {
    	JPopupMenu popMenu = null;
        if(!tree.isEnabled()){
        	return null;
        }
        if (selectionModel != null){
        	String text = "TWaver" + TWaverUtil.getVersionString();
        	popMenu = new TPopupMenu(text, Color.WHITE, Color.RED, Color.BLUE, 25);
        	JMenuItem item = null;
        	
        	if(tree.getSelectionModel().getSelectionCount() == 1){
        		Object object = tree.getSelectionPath().getLastPathComponent();
        		if(object instanceof ElementNode && object != tree.getRootNode()){
        			final Element element = ((ElementNode)object).getElement();
            		item = new JMenuItem(TWaverUtil.getString("PopMenu.Tree.SetAsRootNode"));
                    item.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                        	tree.setRootElement(element);
                        }
                    });
                    popMenu.add(item);
        		}
        	}
        	
        	if(tree.getRootNode() instanceof ElementNode){
        		item = new JMenuItem(TWaverUtil.getString("PopMenu.Tree.ResetRootNode"));
                item.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    	tree.setRootElement(null);
                    }
                });
                popMenu.add(item);
        	}
            
        	if(popMenu.getComponentCount() > 0){
        		popMenu.addSeparator();
        	}
            
            popMenu.add(createJMenuItem(TTree.DEFAULT_SELECTION, "DefaultSelection"));
            popMenu.add(createJMenuItem(TTree.CHECK_SELECTION, "CheckSelection"));
            popMenu.add(createJMenuItem(TTree.CHECK_CHILDREN_SELECTION, "CheckChildrenSelection"));
            popMenu.add(createJMenuItem(TTree.CHECK_DESCENDANT_SELECTION, "CheckDescendantSelection"));
            popMenu.add(createJMenuItem(TTree.CHECK_DESCENDANT_AND_PARENT_SELECTION, "CheckDescendantAndParentSelection"));
            
            // if the tree can delete element and has element is selected,
            // then add a delete menu item.
            if (tree.isElementDeletable() && selectionModel.size() > 0) {
                if (popMenu.getComponentCount() > 0) {
                    popMenu.addSeparator();
                }
                item = new JMenuItem(TWaverUtil.getString("PopMenu.Tree.Delete"));
                item.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    	tree.getDataBox().removeSelectedElements();
                    }
                });
                popMenu.add(item);
            }
            
        }
        return popMenu;
    }
    
    private JMenuItem createJMenuItem(final int selectionModel, String text){
    	text = TWaverUtil.getString("PopMenu.Tree." + text);
    	JRadioButtonMenuItem item = new JRadioButtonMenuItem(text);
        item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            	tree.setTTreeSelectionMode(selectionModel);
            }
        });
        if(tree.getTTreeSelectionMode() == selectionModel){
        	item.setSelected(true);
        }
        return item;
    }

	public String getTitle() {
		return "Tree Popup Menu Demo";
	}

	public String getHelp() {
		return "This demo create a custom popup menu for tree";
	}
}

⌨️ 快捷键说明

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