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

📄 contextoptionpane.java

📁 用java 编写的源码开放的文本编辑器。有很多有用的特性
💻 JAVA
字号:
/* * ContextOptionPane.java - Context menu options panel * Copyright (C) 2000, 2001 Slava Pestov * * 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 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */package org.gjt.sp.jedit.options;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.util.*;import org.gjt.sp.jedit.gui.*;import org.gjt.sp.jedit.*;/** * Right-click context menu editor. * @author Slava Pestov * @version $Id: ContextOptionPane.java,v 1.8 2002/12/15 00:23:53 spestov Exp $ */public class ContextOptionPane extends AbstractOptionPane{	public ContextOptionPane()	{		super("context");	}	// protected members	protected void _init()	{		setLayout(new BorderLayout());		JLabel caption = new JLabel(jEdit.getProperty(			"options.context.caption"));		add(BorderLayout.NORTH,caption);		String contextMenu = jEdit.getProperty("view.context");		StringTokenizer st = new StringTokenizer(contextMenu);		listModel = new DefaultListModel();		while(st.hasMoreTokens())		{			String actionName = (String)st.nextToken();			if(actionName.equals("-"))				listModel.addElement(new ContextOptionPane.MenuItem("-","-"));			else			{				EditAction action = jEdit.getAction(actionName);				if(action == null)					continue;				String label = action.getLabel();				if(label == null)					continue;				listModel.addElement(new ContextOptionPane.MenuItem(actionName,label));			}		}		list = new JList(listModel);		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);		list.addListSelectionListener(new ListHandler());		add(BorderLayout.CENTER,new JScrollPane(list));		JPanel buttons = new JPanel();		buttons.setBorder(new EmptyBorder(3,0,0,0));		buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS));		ActionHandler actionHandler = new ActionHandler();		add = new RolloverButton(GUIUtilities.loadIcon("Plus.png"));		add.setToolTipText(jEdit.getProperty("options.context.add"));		add.addActionListener(actionHandler);		buttons.add(add);		buttons.add(Box.createHorizontalStrut(6));		remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png"));		remove.setToolTipText(jEdit.getProperty("options.context.remove"));		remove.addActionListener(actionHandler);		buttons.add(remove);		buttons.add(Box.createHorizontalStrut(6));		moveUp = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png"));		moveUp.setToolTipText(jEdit.getProperty("options.context.moveUp"));		moveUp.addActionListener(actionHandler);		buttons.add(moveUp);		buttons.add(Box.createHorizontalStrut(6));		moveDown = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png"));		moveDown.setToolTipText(jEdit.getProperty("options.context.moveDown"));		moveDown.addActionListener(actionHandler);		buttons.add(moveDown);		buttons.add(Box.createGlue());		updateButtons();		add(BorderLayout.SOUTH,buttons);	}	static class MenuItemCompare implements MiscUtilities.Compare	{		public int compare(Object obj1, Object obj2)		{			return MiscUtilities.compareStrings(				((MenuItem)obj1).label,				((MenuItem)obj2).label,				true);		}	}	protected void _save()	{		StringBuffer buf = new StringBuffer();		for(int i = 0; i < listModel.getSize(); i++)		{			if(i != 0)				buf.append(' ');			buf.append(((MenuItem)listModel.elementAt(i)).actionName);		}		jEdit.setProperty("view.context",buf.toString());	}	// private members	private DefaultListModel listModel;	private JList list;	private JButton add;	private JButton remove;	private JButton moveUp, moveDown;	private void updateButtons()	{		int index = list.getSelectedIndex();		remove.setEnabled(index != -1 && listModel.getSize() != 0);		moveUp.setEnabled(index > 0);		moveDown.setEnabled(index != -1 && index != listModel.getSize() - 1);	}	static class MenuItem	{		String actionName;		String label;		MenuItem(String actionName, String label)		{			this.actionName = actionName;			this.label = GUIUtilities.prettifyMenuLabel(label);		}		public String toString()		{			return label;		}	}	class ActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source == add)			{				ContextAddDialog dialog = new ContextAddDialog(					ContextOptionPane.this);				String selection = dialog.getSelection();				if(selection == null)					return;				int index = list.getSelectedIndex();				if(index == -1)					index = listModel.getSize();				else					index++;				MenuItem menuItem;				if(selection.equals("-"))					menuItem = new ContextOptionPane.MenuItem("-","-");				else				{					menuItem = new ContextOptionPane.MenuItem(selection,						jEdit.getAction(selection)						.getLabel());				}				listModel.insertElementAt(menuItem,index);				list.setSelectedIndex(index);				list.ensureIndexIsVisible(index);			}			else if(source == remove)			{				int index = list.getSelectedIndex();				listModel.removeElementAt(index);				updateButtons();			}			else if(source == moveUp)			{				int index = list.getSelectedIndex();				Object selected = list.getSelectedValue();				listModel.removeElementAt(index);				listModel.insertElementAt(selected,index-1);				list.setSelectedIndex(index-1);				list.ensureIndexIsVisible(index - 1);			}			else if(source == moveDown)			{				int index = list.getSelectedIndex();				Object selected = list.getSelectedValue();				listModel.removeElementAt(index);				listModel.insertElementAt(selected,index+1);				list.setSelectedIndex(index+1);				list.ensureIndexIsVisible(index+1);			}		}	}	class ListHandler implements ListSelectionListener	{		public void valueChanged(ListSelectionEvent evt)		{			updateButtons();		}	}}class ContextAddDialog extends EnhancedDialog{	public ContextAddDialog(Component comp)	{		super(GUIUtilities.getParentDialog(comp),			jEdit.getProperty("options.context.add.title"),			true);		JPanel content = new JPanel(new BorderLayout());		content.setBorder(new EmptyBorder(12,12,12,12));		setContentPane(content);		ActionHandler actionHandler = new ActionHandler();		ButtonGroup grp = new ButtonGroup();		JPanel typePanel = new JPanel(new GridLayout(3,1,6,6));		typePanel.setBorder(new EmptyBorder(0,0,6,0));		typePanel.add(new JLabel(			jEdit.getProperty("options.context.add.caption")));		separator = new JRadioButton(jEdit.getProperty("options.context"			+ ".add.separator"));		separator.addActionListener(actionHandler);		grp.add(separator);		typePanel.add(separator);		action = new JRadioButton(jEdit.getProperty("options.context"			+ ".add.action"));		action.addActionListener(actionHandler);		grp.add(action);		action.setSelected(true);		typePanel.add(action);		content.add(BorderLayout.NORTH,typePanel);		JPanel actionPanel = new JPanel(new BorderLayout(6,6));		ActionSet[] actionsList = jEdit.getActionSets();		Vector vec = new Vector(actionsList.length);		for(int i = 0; i < actionsList.length; i++)		{			ActionSet actionSet = actionsList[i];			if(actionSet.getActionCount() != 0)				vec.addElement(actionSet);		}		combo = new JComboBox(vec);		combo.addActionListener(actionHandler);		actionPanel.add(BorderLayout.NORTH,combo);		list = new JList();		list.setVisibleRowCount(8);		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);		actionPanel.add(BorderLayout.CENTER,new JScrollPane(list));		content.add(BorderLayout.CENTER,actionPanel);		JPanel southPanel = new JPanel();		southPanel.setLayout(new BoxLayout(southPanel,BoxLayout.X_AXIS));		southPanel.setBorder(new EmptyBorder(12,0,0,0));		southPanel.add(Box.createGlue());		ok = new JButton(jEdit.getProperty("common.ok"));		ok.addActionListener(actionHandler);		getRootPane().setDefaultButton(ok);		southPanel.add(ok);		southPanel.add(Box.createHorizontalStrut(6));		cancel = new JButton(jEdit.getProperty("common.cancel"));		cancel.addActionListener(actionHandler);		southPanel.add(cancel);		southPanel.add(Box.createGlue());		content.add(BorderLayout.SOUTH,southPanel);		updateList();		pack();		setLocationRelativeTo(GUIUtilities.getParentDialog(comp));		show();	}	public void ok()	{		isOK = true;		dispose();	}	public void cancel()	{		dispose();	}	public String getSelection()	{		if(!isOK)			return null;		if(separator.isSelected())			return "-";		else if(action.isSelected())		{			return ((ContextOptionPane.MenuItem)list.getSelectedValue())				.actionName;		}		else			throw new InternalError();	}	// private members	private boolean isOK;	private JRadioButton separator, action;	private JComboBox combo;	private JList list;	private JButton ok, cancel;	private void updateList()	{		ActionSet actionSet = (ActionSet)combo.getSelectedItem();		EditAction[] actions = actionSet.getActions();		Vector listModel = new Vector(actions.length);		for(int i = 0; i < actions.length; i++)		{			EditAction action = actions[i];			String label = action.getLabel();			if(label == null)				continue;			listModel.addElement(new ContextOptionPane.MenuItem(				action.getName(),label));		}		MiscUtilities.quicksort(listModel,new ContextOptionPane.MenuItemCompare());		list.setListData(listModel);	}	class ActionHandler implements ActionListener	{		public void actionPerformed(ActionEvent evt)		{			Object source = evt.getSource();			if(source instanceof JRadioButton)			{				combo.setEnabled(action.isSelected());				list.setEnabled(action.isSelected());			}			if(source == ok)				ok();			else if(source == cancel)				cancel();			else if(source == combo)				updateList();		}	}}

⌨️ 快捷键说明

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