📄 preferencesframe.java
字号:
/* -*- 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 + -