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

📄 preferencesframe.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: PreferencesFrame.java * * Copyright (c) 2004 Sun Microsystems and Static Free Software * * Electric(tm) 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 3 of the License, or * (at your option) any later version. * * Electric(tm) 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 Electric(tm); see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.tool.user.dialogs;import com.sun.electric.database.text.Pref;import com.sun.electric.technology.Technology;import com.sun.electric.tool.Job;import com.sun.electric.tool.JobException;import com.sun.electric.tool.io.IOTool;import com.sun.electric.tool.io.output.CellModelPrefs;import com.sun.electric.tool.ncc.Pie;import com.sun.electric.tool.routing.Routing;import com.sun.electric.tool.user.User;import com.sun.electric.tool.user.dialogs.options.AntennaRulesTab;import com.sun.electric.tool.user.dialogs.options.CDLTab;import com.sun.electric.tool.user.dialogs.options.CIFTab;import com.sun.electric.tool.user.dialogs.options.CVSTab;import com.sun.electric.tool.user.dialogs.options.CellModelTab;import com.sun.electric.tool.user.dialogs.options.CompactionTab;import com.sun.electric.tool.user.dialogs.options.ComponentMenuTab;import com.sun.electric.tool.user.dialogs.options.CoverageTab;import com.sun.electric.tool.user.dialogs.options.DEFTab;import com.sun.electric.tool.user.dialogs.options.DRCTab;import com.sun.electric.tool.user.dialogs.options.DXFTab;import com.sun.electric.tool.user.dialogs.options.DaisTab;import com.sun.electric.tool.user.dialogs.options.DesignRulesTab;import com.sun.electric.tool.user.dialogs.options.DisplayControlTab;import com.sun.electric.tool.user.dialogs.options.EDIFTab;import com.sun.electric.tool.user.dialogs.options.FastHenryTab;import com.sun.electric.tool.user.dialogs.options.FrameTab;import com.sun.electric.tool.user.dialogs.options.GDSTab;import com.sun.electric.tool.user.dialogs.options.GeneralTab;import com.sun.electric.tool.user.dialogs.options.GridAndAlignmentTab;import com.sun.electric.tool.user.dialogs.options.IconTab;import com.sun.electric.tool.user.dialogs.options.LayersTab;import com.sun.electric.tool.user.dialogs.options.LibraryTab;import com.sun.electric.tool.user.dialogs.options.NCCTab;import com.sun.electric.tool.user.dialogs.options.NetworkTab;import com.sun.electric.tool.user.dialogs.options.NewArcsTab;import com.sun.electric.tool.user.dialogs.options.NewNodesTab;import com.sun.electric.tool.user.dialogs.options.ParasiticTab;import com.sun.electric.tool.user.dialogs.options.PortsAndExportsTab;import com.sun.electric.tool.user.dialogs.options.PreferencePanel;import com.sun.electric.tool.user.dialogs.options.PrintingTab;import com.sun.electric.tool.user.dialogs.options.ProjectManagementTab;import com.sun.electric.tool.user.dialogs.options.RoutingTab;import com.sun.electric.tool.user.dialogs.options.SUETab;import com.sun.electric.tool.user.dialogs.options.SelectionTab;import com.sun.electric.tool.user.dialogs.options.SiliconCompilerTab;import com.sun.electric.tool.user.dialogs.options.SimulatorsTab;import com.sun.electric.tool.user.dialogs.options.SkillTab;import com.sun.electric.tool.user.dialogs.options.SmartTextTab;import com.sun.electric.tool.user.dialogs.options.SpiceTab;import com.sun.electric.tool.user.dialogs.options.SunRouterTab;import com.sun.electric.tool.user.dialogs.options.TechnologyTab;import com.sun.electric.tool.user.dialogs.options.TextTab;import com.sun.electric.tool.user.dialogs.options.ThreeDTab;import com.sun.electric.tool.user.dialogs.options.ToolbarTab;import com.sun.electric.tool.user.dialogs.options.UnitsTab;import com.sun.electric.tool.user.dialogs.options.VerilogTab;import com.sun.electric.tool.user.dialogs.options.WellCheckTab;import com.sun.electric.tool.user.help.ManualViewer;import com.sun.electric.tool.user.ui.EditWindow;import com.sun.electric.tool.user.ui.TopLevel;import com.sun.electric.tool.user.ui.WindowFrame;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTree;import javax.swing.event.TreeExpansionEvent;import javax.swing.event.TreeExpansionListener;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreePath;/** * Class to handle the "PreferencesFrame" dialog. */public class PreferencesFrame extends EDialog{	private JSplitPane splitPane;	private JTree optionTree;	private JButton cancel, ok;	private List<PreferencePanel> optionPanes = new ArrayList<PreferencePanel>();	/** The name of the current tab in this dialog. */		private static String currentTabName = "General";	/** The name of the current section in this dialog. */	private static String currentSectionName = "General ";	private DefaultMutableTreeNode initialDMTN;	/**	 * This method implements the command to show the PreferencesFrame dialog.	 */	public static void preferencesCommand()	{		PreferencesFrame dialog = new PreferencesFrame(TopLevel.getCurrentJFrame());		dialog.setVisible(true);	}	/**	 * This method implements the command to show the PreferencesFrame dialog,	 * and chooses a panel.	 * @param tabName the name of the panel ("Grid", for example).	 * @param sectionName the name of the section in which the panel lives ("Display", for example).	 */	public static void preferencesCommand(String tabName, String sectionName)	{		currentTabName = tabName;		currentSectionName = sectionName + " ";		PreferencesFrame dialog = new PreferencesFrame(TopLevel.getCurrentJFrame());		dialog.setVisible(true);	}	/** Creates new form PreferencesFrame */	public PreferencesFrame(Frame parent)	{		super(parent, false);		getContentPane().setLayout(new GridBagLayout());		setTitle("Preferences");		setName("");		addWindowListener(new WindowAdapter()		{			public void windowClosing(WindowEvent evt) { closeDialog(evt); }		});		DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Preferences");		DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);		optionTree = new JTree(treeModel);		TreeHandler handler = new TreeHandler(this);		optionTree.addMouseListener(handler);		optionTree.addTreeExpansionListener(handler);		// the "General" section of the Preferences		DefaultMutableTreeNode generalSet = new DefaultMutableTreeNode("General ");		rootNode.add(generalSet);		addTreeNode(new GeneralTab(parent, true), generalSet);		addTreeNode(new SelectionTab(parent, true), generalSet);		TopLevel top = TopLevel.getCurrentJFrame();		if (top != null && top.getEMenuBar() != null)			addTreeNode(new EditKeyBindings(top.getEMenuBar(), parent, true), generalSet);		addTreeNode(new NewNodesTab(parent, true), generalSet);		addTreeNode(new NewArcsTab(parent, true), generalSet);		addTreeNode(new ProjectManagementTab(parent, true), generalSet);		addTreeNode(new CVSTab(parent, true), generalSet);		addTreeNode(new PrintingTab(parent, true), generalSet);		if (Job.getDebug())		{			// Open test tab only if plugin is available and in debug mode			try			{				Class<?> testTab = Class.forName("com.sun.electric.plugins.tests.TestTab");				Constructor tab = testTab.getDeclaredConstructor(new Class[]{Frame.class, Boolean.class});				addTreeNode((PreferencePanel)tab.newInstance(new Object[] {parent, Boolean.TRUE}), generalSet);			}			catch (Exception ex) { /* do nothing */ };		}		// the "Display" section of the Preferences		DefaultMutableTreeNode displaySet = new DefaultMutableTreeNode("Display ");		rootNode.add(displaySet);		addTreeNode(new DisplayControlTab(parent, true), displaySet);		addTreeNode(new ComponentMenuTab(parent, true), displaySet);		addTreeNode(new LayersTab(parent, true), displaySet);		addTreeNode(new ToolbarTab(parent, true, this), displaySet);		addTreeNode(new TextTab(parent, true), displaySet);		addTreeNode(new SmartTextTab(parent, true), displaySet);		addTreeNode(new GridAndAlignmentTab(parent, true), displaySet);		addTreeNode(new PortsAndExportsTab(parent, true), displaySet);		addTreeNode(new FrameTab(parent, true), displaySet);		addTreeNode(ThreeDTab.create3DTab(parent, true), displaySet);		// the "I/O" section of the Preferences		DefaultMutableTreeNode ioSet = new DefaultMutableTreeNode("I/O ");		rootNode.add(ioSet);		addTreeNode(new CIFTab(parent, true), ioSet);		addTreeNode(new GDSTab(parent, true), ioSet);		addTreeNode(new EDIFTab(parent, true), ioSet);		addTreeNode(new DEFTab(parent, true), ioSet);		addTreeNode(new CDLTab(parent, true), ioSet);		addTreeNode(new DXFTab(parent, true), ioSet);		addTreeNode(new SUETab(parent, true), ioSet);		if (IOTool.hasDais())			addTreeNode(new DaisTab(parent, true), ioSet);		if (IOTool.hasSkill())			addTreeNode(new SkillTab(parent, true), ioSet);		addTreeNode(new LibraryTab(parent, true), ioSet);		// the "Tools" section of the Preferences		DefaultMutableTreeNode toolSet = new DefaultMutableTreeNode("Tools ");		rootNode.add(toolSet);		addTreeNode(new AntennaRulesTab(parent, true), toolSet);		addTreeNode(new CompactionTab(parent, true), toolSet);		addTreeNode(new CoverageTab(parent, true), toolSet);		addTreeNode(new DRCTab(parent, true), toolSet);		addTreeNode(new FastHenryTab(parent, true), toolSet);		addTreeNode(new NCCTab(parent, true), toolSet);		if (Pie.hasPie())		{			try			{				Class pTab = Class.forName("com.sun.electric.plugins.pie.ui.PIETab");				Constructor tab = pTab.getDeclaredConstructor(new Class[]{Frame.class, boolean.class});				addTreeNode((PreferencePanel)tab.newInstance(new Object[] {parent, Boolean.TRUE}), toolSet);			}			catch (Exception ex) { /* do nothing */ };		}		addTreeNode(new NetworkTab(parent, true), toolSet);		addTreeNode(new ParasiticTab(parent, true), toolSet);		addTreeNode(new RoutingTab(parent, true), toolSet);		addTreeNode(new SiliconCompilerTab(parent, true), toolSet);		addTreeNode(new SimulatorsTab(parent, true), toolSet);		addTreeNode(new SpiceTab(parent, true), toolSet);		addTreeNode(new CellModelTab(parent, true, CellModelPrefs.spiceModelPrefs), toolSet);		if (Routing.hasSunRouter())			addTreeNode(new SunRouterTab(parent, true), toolSet);		addTreeNode(new VerilogTab(parent, true), toolSet);		addTreeNode(new CellModelTab(parent, true, CellModelPrefs.verilogModelPrefs), toolSet);		addTreeNode(new WellCheckTab(parent, true), toolSet);		// the "Technology" section of the Preferences		DefaultMutableTreeNode techSet = new DefaultMutableTreeNode("Technology ");		rootNode.add(techSet);		addTreeNode(new TechnologyTab(parent, true), techSet);		addTreeNode(new DesignRulesTab(parent, true), techSet);		addTreeNode(new UnitsTab(parent, true), techSet);		addTreeNode(new IconTab(parent, true), techSet);		// pre-expand the tree		TreePath topPath = optionTree.getPathForRow(0);		optionTree.expandPath(topPath);		topPath = optionTree.getPathForRow(1);		optionTree.expandPath(topPath);		topPath = optionTree.getNextMatch(currentSectionName, 0, null);		optionTree.expandPath(topPath);		// searching for selected node		openSelectedPath(rootNode);		// the left side of the preferences dialog: a tree		JPanel leftPanel = new JPanel();		leftPanel.setLayout(new GridBagLayout());		JScrollPane scrolledTree = new JScrollPane(optionTree);		GridBagConstraints gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 0;		gbc.gridwidth = 2;		gbc.fill = GridBagConstraints.BOTH;		gbc.weightx = 1.0;   gbc.weighty = 1.0;		leftPanel.add(scrolledTree, gbc);		JButton save = new JButton("Export");		save.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { exportActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 1;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(save, gbc);		JButton restore = new JButton("Import");		restore.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { importActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 1;   gbc.gridy = 1;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(restore, gbc);		JButton reset = new JButton("Reset");		reset.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { resetActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 2;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(reset, gbc);

⌨️ 快捷键说明

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