argscelleditor.java

来自「UCS (Ultra Corba Simulator) is one more 」· Java 代码 · 共 151 行

JAVA
151
字号
package com.corba.mnq.ui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.util.EventObject;
import java.util.logging.Logger;

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.event.CellEditorListener;
import javax.swing.tree.TreeCellEditor;

import com.corba.mnq.main.MNQmainFrame;
import com.corba.mnq.tool.Warehouse;
import com.corba.mnq.tool.idl.Args;
import com.corba.mnq.tool.idl.type.CTArray;
import com.corba.mnq.tool.idl.type.CTDeclaration;
import com.corba.mnq.tool.idl.type.CTExcept;
import com.corba.mnq.tool.idl.type.CTSequence;
import com.corba.mnq.tool.idl.type.CTStruct;
import com.corba.mnq.tool.idl.type.TypeBase;
import com.corba.mnq.xls.OpFlowNode;

public class ArgsCellEditor implements TreeCellEditor {

	public ArgsCellEditor() {
		super();
		// TODO Auto-generated constructor stub
	}

	/** used for java.util.logging */
	private static final Logger LOG = Logger.getLogger(ArgsCellEditor.class
			.getName());

	public Component getTreeCellEditorComponent(JTree tree, Object value,
			boolean arg2, boolean arg3, boolean arg4, int arg5) {
		MNQMutableTreeNode node = (MNQMutableTreeNode) value;

		Component com = (Component) Warehouse.node2table.get(node);

		if (com instanceof ArgsTable) {
			com = ((ArgsTable) com).getComp();
		}
		if (com == null) {
			com = createTreeCellEditorComponent(node, tree);
		}

		return com;
	}

	public static Component createTreeCellEditorComponent(
			MNQMutableTreeNode node, JTree tree) {

		Component com = null;
		JLabel label = new JLabel();

		Object o = node.getUserObject();

		ArgsTableModel ptm = new ArgsTableModel();
		ptm.setName(o.toString() + ":");

		TypeBase tn = null;

		if (o instanceof TypeBase) {
			tn = (TypeBase) o;
			if (checkEnableEditTalble(tn, label)) {
				com = label;
			} else {
				com = new ArgsTable(ptm, tn, tree);
			}
		} else if (o instanceof Args) {
			tn = ((Args) o).pt;
			if (checkEnableEditTalble(tn, label)) {
				com = label;
			} else {
				com = new ArgsTable(ptm, tn, tree);
			}
		} else if (o instanceof OpFlowNode) {
			label.setText(o.toString());
			com = label;
		} else {
			label.setText(o.toString());
			com = label;
			LOG.severe("Wrong UserObject for " + o.getClass().toString());
		}

//		if (tree == MNQmainFrame.resultTree) {
//			JPanel panel = new JPanel(new BorderLayout());
//			JCheckBox cb = new JCheckBox();
//			cb.setSelected(true);
//			panel.add(cb, BorderLayout.WEST);
//			panel.add(com, BorderLayout.EAST);
//			panel.setBackground(Color.WHITE);
//
//			if (com instanceof ArgsTable) {
//				((ArgsTable) com).setComp(panel);
//				cb.addChangeListener((ArgsTable) com);
//			} else if (tn != null) {
//				com = new ArgsTable(tn);
//				((ArgsTable) com).setComp(panel);
//				cb.addChangeListener((ArgsTable) com);
//			}
//		}

		Warehouse.node2table.put(node, com);

		return com;
	}

	private static boolean checkEnableEditTalble(TypeBase t, JLabel label) {
		if (t instanceof CTSequence || t instanceof CTDeclaration
				|| t instanceof CTStruct || t instanceof CTExcept
				|| t instanceof CTArray) {
			label.setText(t.dmtn.getUserObject().toString());
			return true;
		}

		return false;
	}

	public void cancelCellEditing() {
	}

	public boolean stopCellEditing() {
		return false;
	}

	public Object getCellEditorValue() {
		return null;
	}

	public boolean isCellEditable(EventObject arg0) {
		return true;
	}

	public boolean shouldSelectCell(EventObject arg0) {
		return true;
	}

	public void addCellEditorListener(CellEditorListener celleditorlistener) {
	}

	public void removeCellEditorListener(CellEditorListener celleditorlistener) {
	}

}
/* EOF */

⌨️ 快捷键说明

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