亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? optionsdialog.java

?? 用java 編寫的源碼開放的文本編輯器。有很多有用的特性
?? JAVA
字號(hào):
/* * OptionsDialog.java - Tree options dialog * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 1998, 2003 Slava Pestov * Portions copyright (C) 1999 mike dillon * * 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.gui;//{{{ Importsimport javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.tree.*;import java.awt.*;import java.awt.event.*;import java.util.*;import org.gjt.sp.jedit.*;//}}}/** * An abstract tabbed options dialog box. * @author Slava Pestov * @version $Id: OptionsDialog.java,v 1.29 2003/02/05 01:01:52 spestov Exp $ */public abstract class OptionsDialog extends EnhancedDialog	implements ActionListener, TreeSelectionListener{	//{{{ OptionsDialog constructor	public OptionsDialog(Frame frame, String name, String pane)	{		super(frame, jEdit.getProperty(name + ".title"), true);		init(name,pane);	} //}}}	//{{{ OptionsDialog constructor	public OptionsDialog(Dialog dialog, String name, String pane)	{		super(dialog, jEdit.getProperty(name + ".title"), true);		init(name,pane);	} //}}}	//{{{ addOptionGroup() method	public void addOptionGroup(OptionGroup group)	{		addOptionGroup(group, getDefaultGroup());	} //}}}	//{{{ addOptionPane() method	public void addOptionPane(OptionPane pane)	{		addOptionPane(pane, getDefaultGroup());	} //}}}	//{{{ ok() method	public void ok()	{		jEdit.setProperty(name + ".last",currentPane);		ok(true);	} //}}}	//{{{ cancel() method	public void cancel()	{		jEdit.setProperty(name + ".last",currentPane);		dispose();	} //}}}	//{{{ ok() method	public void ok(boolean dispose)	{		OptionTreeModel m = (OptionTreeModel) paneTree			.getModel();		((OptionGroup) m.getRoot()).save();		/* This will fire the PROPERTIES_CHANGED event */		jEdit.propertiesChanged();		// Save settings to disk		jEdit.saveSettings();		// get rid of this dialog if necessary		if(dispose)			dispose();	} //}}}	//{{{ dispose() method	public void dispose()	{		GUIUtilities.saveGeometry(this,name);		jEdit.setIntegerProperty(name + ".splitter",splitter.getDividerLocation());		super.dispose();	} //}}}	//{{{ actionPerformed() method	public void actionPerformed(ActionEvent evt)	{		Object source = evt.getSource();		if(source == ok)		{			ok();		}		else if(source == cancel)		{			cancel();		}		else if(source == apply)		{			ok(false);		}	} //}}}	//{{{ valueChanged() method	public void valueChanged(TreeSelectionEvent evt)	{		TreePath path = evt.getPath();		if (path == null || !(path.getLastPathComponent() instanceof			OptionPane)) return;		Object[] nodes = path.getPath();		StringBuffer buf = new StringBuffer();		OptionPane optionPane = null;		String name = null;		int lastIdx = nodes.length - 1;		for (int i = paneTree.isRootVisible() ? 0 : 1;			i <= lastIdx; i++)		{			if (nodes[i] instanceof OptionPane)			{				optionPane = (OptionPane)nodes[i];				name = optionPane.getName();			}			else if (nodes[i] instanceof OptionGroup)			{				name = ((OptionGroup)nodes[i]).getName();			}			else			{				continue;			}			if (name != null)			{				String label = jEdit.getProperty("options." +					name + ".label");				if (label == null)				{					buf.append(name);				}				else				{					buf.append(label);				}			}			if (i != lastIdx) buf.append(": ");		}		currentLabel.setText(buf.toString());		optionPane.init();		((CardLayout)cardPanel.getLayout()).show(cardPanel, name);		// workaround...		addNotify();		updateSize();		currentPane = name;	} //}}}	//{{{ Protected members	protected abstract OptionTreeModel createOptionTreeModel();	protected abstract OptionGroup getDefaultGroup();	//{{{ addOptionGroup() method	protected void addOptionGroup(OptionGroup child, OptionGroup parent)	{		Enumeration enum = child.getMembers();		while (enum.hasMoreElements())		{			Object elem = enum.nextElement();			if (elem instanceof OptionPane)			{				addOptionPane((OptionPane) elem, child);			}			else if (elem instanceof OptionGroup)			{				addOptionGroup((OptionGroup) elem, child);			}		}		parent.addOptionGroup(child);	} //}}}	//{{{ addOptionPane() method	protected void addOptionPane(OptionPane pane, OptionGroup parent)	{		String name = pane.getName();		if(firstPane == null)			firstPane = name;		cardPanel.add(pane.getComponent(), name);		parent.addOptionPane(pane);	} //}}}	//}}}	//{{{ Private members	//{{{ Instance variables	private String name;	private JSplitPane splitter;	private JTree paneTree;	private JPanel cardPanel;	private JLabel currentLabel;	private JButton ok;	private JButton cancel;	private JButton apply;	private String currentPane;	private String firstPane;	//}}}	//{{{ init() method	private void init(String name, String pane)	{		this.name = name;		JPanel content = new JPanel(new BorderLayout(12,12));		content.setBorder(new EmptyBorder(12,12,12,12));		setContentPane(content);		JPanel stage = new JPanel(new BorderLayout(6,6));		// currentLabel displays the path of the currently selected		// OptionPane at the top of the stage area		currentLabel = new JLabel();		currentLabel.setHorizontalAlignment(JLabel.LEFT);		stage.add(currentLabel, BorderLayout.NORTH);		cardPanel = new JPanel(new CardLayout());		stage.add(cardPanel, BorderLayout.CENTER);		paneTree = new JTree(createOptionTreeModel());		paneTree.setVisibleRowCount(1);		paneTree.setCellRenderer(new PaneNameRenderer());		// looks bad with the OS X L&F, apparently...		if(!OperatingSystem.isMacOSLF())			paneTree.putClientProperty("JTree.lineStyle", "Angled");		paneTree.setShowsRootHandles(true);		paneTree.setRootVisible(false);		JScrollPane scroller = new JScrollPane(paneTree,			JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,			JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);		splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,			scroller,stage);		splitter.setDividerLocation(scroller.getPreferredSize().width);		content.add(splitter, BorderLayout.CENTER);		Box buttons = new Box(BoxLayout.X_AXIS);		buttons.add(Box.createGlue());		ok = new JButton(jEdit.getProperty("common.ok"));		ok.addActionListener(this);		buttons.add(ok);		buttons.add(Box.createHorizontalStrut(6));		getRootPane().setDefaultButton(ok);		cancel = new JButton(jEdit.getProperty("common.cancel"));		cancel.addActionListener(this);		buttons.add(cancel);		buttons.add(Box.createHorizontalStrut(6));		apply = new JButton(jEdit.getProperty("common.apply"));		apply.addActionListener(this);		buttons.add(apply);		buttons.add(Box.createGlue());		content.add(buttons, BorderLayout.SOUTH);		// register the Options dialog as a TreeSelectionListener.		// this is done before the initial selection to ensure that the		// first selected OptionPane is displayed on startup.		paneTree.getSelectionModel().addTreeSelectionListener(this);		OptionGroup rootNode = (OptionGroup)paneTree.getModel().getRoot();		for(int i = 0; i < rootNode.getMemberCount(); i++)		{			paneTree.expandPath(new TreePath(			new Object[] { rootNode, rootNode.getMember(i) }));		}		if(pane == null || !selectPane(rootNode,pane))			selectPane(rootNode,firstPane);		GUIUtilities.loadGeometry(this,name);		int dividerLocation = jEdit.getIntegerProperty(name + ".splitter",-1);		if(dividerLocation != -1)			splitter.setDividerLocation(dividerLocation);		// in case saved geometry is too small		updateSize();		show();	} //}}}	//{{{ selectPane() method	private boolean selectPane(OptionGroup node, String name)	{		return selectPane(node,name,new ArrayList());	} //}}}	//{{{ selectPane() method	private boolean selectPane(OptionGroup node, String name, ArrayList path)	{		path.add(node);		Enumeration enum = node.getMembers();		while(enum.hasMoreElements())		{			Object obj = enum.nextElement();			if(obj instanceof OptionGroup)			{				OptionGroup grp = (OptionGroup)obj;				if(grp.getName().equals(name))				{					path.add(grp);					path.add(grp.getMember(0));					TreePath treePath = new TreePath(						path.toArray());					paneTree.scrollPathToVisible(treePath);					paneTree.setSelectionPath(treePath);					return true;				}				else if(selectPane((OptionGroup)obj,name,path))					return true;			}			else			{				OptionPane pane = (OptionPane)obj;				if(pane.getName().equals(name))				{					path.add(pane);					TreePath treePath = new TreePath(						path.toArray());					paneTree.scrollPathToVisible(treePath);					paneTree.setSelectionPath(treePath);					return true;				}			}		}		path.remove(node);		return false;	} //}}}	//{{{ updateSize() method	private void updateSize()	{		Dimension currentSize = getSize();		Dimension requestedSize = getPreferredSize();		Dimension newSize = new Dimension(			Math.max(currentSize.width,requestedSize.width),			Math.max(currentSize.height,requestedSize.height)		);		if(newSize.width < 300)			newSize.width = 300;		if(newSize.height < 200)			newSize.height = 200;		setSize(newSize);		validate();	} //}}}	//}}}	//{{{ PaneNameRenderer class	class PaneNameRenderer extends DefaultTreeCellRenderer	{		public PaneNameRenderer()		{			paneFont = UIManager.getFont("Tree.font");			groupFont = paneFont.deriveFont(Font.BOLD);		}		public Component getTreeCellRendererComponent(JTree tree,			Object value, boolean selected, boolean expanded,			boolean leaf, int row, boolean hasFocus)		{			super.getTreeCellRendererComponent(tree,value,				selected,expanded,leaf,row,hasFocus);			String name = null;			if (value instanceof OptionGroup)			{				name = ((OptionGroup)value).getName();				this.setFont(groupFont);			}			else if (value instanceof OptionPane)			{				name = ((OptionPane)value).getName();				this.setFont(paneFont);			}			if (name == null)			{				setText(null);			}			else			{				String label = jEdit.getProperty("options." +					name + ".label");				if (label == null)				{					setText("NO LABEL PROPERTY: " + name);				}				else				{					setText(label);				}			}			setIcon(null);			return this;		}		private Font paneFont;		private Font groupFont;	} //}}}	//{{{ OptionTreeModel class	public class OptionTreeModel implements TreeModel	{		public void addTreeModelListener(TreeModelListener l)		{			listenerList.add(TreeModelListener.class, l);		}		public void removeTreeModelListener(TreeModelListener l)		{			listenerList.remove(TreeModelListener.class, l);		}		public Object getChild(Object parent, int index)		{			if (parent instanceof OptionGroup)			{				return ((OptionGroup)parent).getMember(index);			}			else			{				return null;			}		}		public int getChildCount(Object parent)		{			if (parent instanceof OptionGroup)			{				return ((OptionGroup)parent).getMemberCount();			}			else			{				return 0;			}		}		public int getIndexOfChild(Object parent, Object child)		{			if (parent instanceof OptionGroup)			{				return ((OptionGroup)parent)					.getMemberIndex(child);			}			else			{				return -1;			}		}		public Object getRoot()		{			return root;		}		public boolean isLeaf(Object node)		{			return node instanceof OptionPane;		}		public void valueForPathChanged(TreePath path, Object newValue)		{			// this model may not be changed by the TableCellEditor		}		protected void fireNodesChanged(Object source, Object[] path,			int[] childIndices, Object[] children)		{			Object[] listeners = listenerList.getListenerList();			TreeModelEvent modelEvent = null;			for (int i = listeners.length - 2; i >= 0; i -= 2)			{				if (listeners[i] != TreeModelListener.class)					continue;				if (modelEvent == null)				{					modelEvent = new TreeModelEvent(source,						path, childIndices, children);				}				((TreeModelListener)listeners[i + 1])					.treeNodesChanged(modelEvent);			}		}		protected void fireNodesInserted(Object source, Object[] path,			int[] childIndices, Object[] children)		{			Object[] listeners = listenerList.getListenerList();			TreeModelEvent modelEvent = null;			for (int i = listeners.length - 2; i >= 0; i -= 2)			{				if (listeners[i] != TreeModelListener.class)					continue;				if (modelEvent == null)				{					modelEvent = new TreeModelEvent(source,						path, childIndices, children);				}				((TreeModelListener)listeners[i + 1])					.treeNodesInserted(modelEvent);			}		}		protected void fireNodesRemoved(Object source, Object[] path,			int[] childIndices, Object[] children)		{			Object[] listeners = listenerList.getListenerList();			TreeModelEvent modelEvent = null;			for (int i = listeners.length - 2; i >= 0; i -= 2)			{				if (listeners[i] != TreeModelListener.class)					continue;				if (modelEvent == null)				{					modelEvent = new TreeModelEvent(source,						path, childIndices, children);				}				((TreeModelListener)listeners[i + 1])					.treeNodesRemoved(modelEvent);			}		}		protected void fireTreeStructureChanged(Object source,			Object[] path, int[] childIndices, Object[] children)		{			Object[] listeners = listenerList.getListenerList();			TreeModelEvent modelEvent = null;			for (int i = listeners.length - 2; i >= 0; i -= 2)			{				if (listeners[i] != TreeModelListener.class)					continue;				if (modelEvent == null)				{					modelEvent = new TreeModelEvent(source,						path, childIndices, children);				}				((TreeModelListener)listeners[i + 1])					.treeStructureChanged(modelEvent);			}		}		private OptionGroup root = new OptionGroup(null);		private EventListenerList listenerList = new EventListenerList();	} //}}}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区在线视频| 性做久久久久久免费观看| 欧美videossexotv100| 欧美日韩视频在线一区二区| 色国产综合视频| 在线精品国精品国产尤物884a| 一本高清dvd不卡在线观看| 99热在这里有精品免费| 成人福利在线看| 99国产精品国产精品毛片| aaa国产一区| 在线欧美小视频| 欧美色图免费看| 69p69国产精品| 欧美一区二区大片| 亚洲精品一区二区三区蜜桃下载| 久久久久99精品一区| 日本一区二区电影| 亚洲女同女同女同女同女同69| 一区二区三区高清在线| 日韩电影在线一区二区| 精品一区二区三区在线视频| 国产乱人伦偷精品视频不卡| a4yy欧美一区二区三区| 欧美午夜宅男影院| 日韩欧美一区二区免费| 国产肉丝袜一区二区| 亚洲欧美激情小说另类| 视频一区在线播放| 国产精一品亚洲二区在线视频| 丁香激情综合五月| 91黄色免费看| 欧美xxxx老人做受| 成人欧美一区二区三区小说| 午夜精品免费在线观看| 国产在线精品国自产拍免费| 91丨九色porny丨蝌蚪| 6080日韩午夜伦伦午夜伦| 国产亚洲欧美日韩日本| 一区二区三区资源| 精品一区二区三区香蕉蜜桃| www.激情成人| 日韩午夜电影av| 国产精品久久99| 日本欧美肥老太交大片| 成人丝袜18视频在线观看| 欧美男男青年gay1069videost| 国产午夜亚洲精品午夜鲁丝片| 亚洲综合在线免费观看| 狠狠色丁香婷综合久久| 色屁屁一区二区| 久久久综合视频| 亚洲成a人v欧美综合天堂| 丰满白嫩尤物一区二区| 69精品人人人人| 亚洲三级在线播放| 国产一区二区三区在线观看免费 | 国产欧美日韩不卡免费| 亚洲自拍偷拍网站| 国产成人av电影| 日韩亚洲欧美高清| 亚洲一级二级在线| 成人高清在线视频| www国产成人免费观看视频 深夜成人网| 亚洲黄色av一区| 岛国一区二区三区| 精品国产免费久久| 婷婷久久综合九色国产成人 | 日韩欧美在线网站| 一区二区三区av电影 | 国产精品色哟哟| 久久国产人妖系列| 欧美日韩情趣电影| 最近日韩中文字幕| 高清国产午夜精品久久久久久| 欧美一区二区久久| 亚洲一区二区美女| 一本大道av伊人久久综合| 亚洲国产精品高清| 国产成人8x视频一区二区| 日韩精品在线看片z| 日韩有码一区二区三区| 欧美性猛交一区二区三区精品| 亚洲欧洲日韩在线| 粉嫩高潮美女一区二区三区| 久久久亚洲精品一区二区三区| 免费在线成人网| 欧美一区二区三区免费| 天天综合色天天综合| 在线观看免费一区| 亚洲综合在线第一页| 日本高清成人免费播放| 亚洲欧美一区二区三区孕妇| 东方aⅴ免费观看久久av| 国产亚洲欧美色| 风间由美性色一区二区三区| 国产日产欧美一区二区视频| 国产精品影视在线| 国产欧美一区视频| 国产99久久久国产精品潘金网站| 国产丝袜美腿一区二区三区| 国产电影一区二区三区| 国产欧美精品一区| 福利视频网站一区二区三区| 中文字幕av不卡| av不卡一区二区三区| 亚洲精品久久嫩草网站秘色| 91福利国产成人精品照片| 一区二区国产视频| 欧美日韩五月天| 青青草国产成人av片免费| 日韩欧美一级二级三级| 国产一区二区三区国产| 欧美国产日本视频| 成人av电影在线观看| 亚洲精品亚洲人成人网在线播放| 91黄色免费版| 日本aⅴ精品一区二区三区| 日韩精品在线一区| 国产成人免费视频精品含羞草妖精| 国产欧美精品一区二区三区四区 | 久久久www成人免费无遮挡大片| 国产成+人+日韩+欧美+亚洲| 亚洲三级视频在线观看| 欧美亚洲一区二区在线| 免费不卡在线观看| 久久久99精品久久| 91麻豆精品秘密| 丝袜美腿亚洲综合| 亚洲精品一区二区三区蜜桃下载| 成人午夜激情片| 亚洲国产wwwccc36天堂| 日韩欧美电影在线| 99久久久国产精品| 亚洲成人动漫在线免费观看| 欧美精品一区二区三区在线播放| 成人久久视频在线观看| 亚洲一区二区三区影院| 精品久久久久久久久久久久包黑料| 高清不卡一区二区在线| 亚洲444eee在线观看| 亚洲一区二区影院| 欧美午夜精品一区二区三区| 日韩精品资源二区在线| 亚洲乱码中文字幕综合| 欧美日韩中字一区| 国产乱理伦片在线观看夜一区| 最新中文字幕一区二区三区| 欧美日韩成人一区二区| 国产一区亚洲一区| 亚洲一级电影视频| 国产亚洲视频系列| 欧美日本高清视频在线观看| 国产成人福利片| 亚洲成人av电影| 国产精品高潮呻吟久久| 日韩一区二区三区电影在线观看| av亚洲精华国产精华精华| 欧美aaaaaa午夜精品| 亚洲免费大片在线观看| 久久中文字幕电影| 在线观看区一区二| 国产传媒日韩欧美成人| 天堂成人国产精品一区| 亚洲天天做日日做天天谢日日欢 | av在线不卡电影| 美腿丝袜一区二区三区| 一区二区日韩电影| 国产精品青草综合久久久久99| 91精品国产综合久久精品app| 91免费在线看| 成人午夜碰碰视频| 国产一区在线观看视频| 日韩国产欧美在线视频| 亚洲伊人色欲综合网| 国产精品免费久久| 2019国产精品| 日韩一区二区在线观看| 欧美日韩久久不卡| 日本大香伊一区二区三区| 丁香亚洲综合激情啪啪综合| 久久丁香综合五月国产三级网站| 一二三区精品福利视频| 日韩一区在线看| 国产精品黄色在线观看| 久久精品一区四区| 久久色在线视频| 日韩欧美国产成人一区二区| 这里只有精品视频在线观看| 欧美性猛交xxxx乱大交退制版| 一本到三区不卡视频| 成人app软件下载大全免费| 国产寡妇亲子伦一区二区| 精品亚洲成a人| 免费一区二区视频| 奇米亚洲午夜久久精品| 日韩高清一区在线| 婷婷成人综合网| 天堂蜜桃91精品| 青青草国产精品亚洲专区无|