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

📄 projectsettingsframe.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: ProjectSettingsFrame.java * * Copyright (c) 2006 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.hierarchy.Library;import com.sun.electric.database.text.Setting;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.user.CircuitChangeJobs;import com.sun.electric.tool.user.CircuitChanges;import com.sun.electric.tool.user.User;import com.sun.electric.tool.user.dialogs.projsettings.AddedTechnologiesTab;import com.sun.electric.tool.user.dialogs.projsettings.CIFTab;import com.sun.electric.tool.user.dialogs.projsettings.DXFTab;import com.sun.electric.tool.user.dialogs.projsettings.GDSTab;import com.sun.electric.tool.user.dialogs.projsettings.LogicalEffortTab;import com.sun.electric.tool.user.dialogs.projsettings.NetlistsTab;import com.sun.electric.tool.user.dialogs.projsettings.ParasiticTab;import com.sun.electric.tool.user.dialogs.projsettings.ProjSettingsPanel;import com.sun.electric.tool.user.dialogs.projsettings.ScaleTab;import com.sun.electric.tool.user.dialogs.projsettings.SkillTab;import com.sun.electric.tool.user.dialogs.projsettings.TechnologyTab;import com.sun.electric.tool.user.dialogs.projsettings.VerilogTab;import com.sun.electric.tool.user.help.ManualViewer;import com.sun.electric.tool.user.projectSettings.ProjSettings;import com.sun.electric.tool.user.ui.TopLevel;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.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.swing.JButton;import javax.swing.JOptionPane;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 "Project Settings" dialog. */public class ProjectSettingsFrame extends EDialog{	private JSplitPane splitPane;	private JTree optionTree;    private HashMap<Setting,Object> originalContext = new HashMap<Setting,Object>();    private HashMap<Setting,Object> currentContext = new HashMap<Setting,Object>();    private JButton cancel;    private JButton ok;    private ProjSettingsPanel currentOptionPanel;	private DefaultMutableTreeNode currentDMTN;	/** The name of the current tab in this dialog. */		private static String currentTabName = "Netlists";    private static String staClass = "com.sun.electric.plugins.sctiming.STAOptionsDialog";    /**	 * This method implements the command to show the Project Settings dialog.	 */	public static void projectSettingsCommand()	{		ProjectSettingsFrame dialog = new ProjectSettingsFrame(TopLevel.getCurrentJFrame());		dialog.setVisible(true);	}	/** Creates new form ProjectSettingsFrame */	public ProjectSettingsFrame(Frame parent)	{		super(parent, true);        for (Setting setting: Setting.getSettings()) {            originalContext.put(setting, setting.getValue());            currentContext.put(setting, setting.getValue());        }		getContentPane().setLayout(new GridBagLayout());		setTitle("Project Settings");		setName("");		addWindowListener(new WindowAdapter()		{			public void windowClosing(WindowEvent evt) { closeDialog(evt); }		});		DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Project Settings");		DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);		optionTree = new JTree(treeModel);		TreeHandler handler = new TreeHandler(this);		optionTree.addMouseListener(handler);		optionTree.addTreeExpansionListener(handler);		addTreeNode(rootNode, "Added Technologies");		addTreeNode(rootNode, "CIF");		addTreeNode(rootNode, "GDS");		addTreeNode(rootNode, "DXF");//		addTreeNode(rootNode, "Gate Layout Generator");		addTreeNode(rootNode, "Logical Effort");		addTreeNode(rootNode, "Netlists");		addTreeNode(rootNode, "Parasitic");		addTreeNode(rootNode, "Scale");		if (IOTool.hasSkill())			addTreeNode(rootNode, "Skill");		addTreeNode(rootNode, "Technology");		addTreeNode(rootNode, "Verilog");        if (getPluginPanel(staClass, this, true) != null)            addTreeNode(rootNode, "Static Timing Analysis");        // pre-expand the tree		TreePath topPath = optionTree.getPathForRow(0);		optionTree.expandPath(topPath);		topPath = optionTree.getPathForRow(1);		optionTree.expandPath(topPath);        // searching for selected node        openSelectedPath(rootNode);		// the left side of the Project Settings 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 help = new JButton("Help");		help.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { helpActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 2;		gbc.gridwidth = 2;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(help, gbc);		cancel = new JButton("Cancel");		cancel.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { cancelActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 3;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(cancel, gbc);		ok = new JButton("OK");		ok.addActionListener(new ActionListener()		{			public void actionPerformed(ActionEvent evt) { okActionPerformed(); }		});		gbc = new GridBagConstraints();		gbc.gridx = 1;   gbc.gridy = 3;		gbc.insets = new Insets(4, 4, 4, 4);		leftPanel.add(ok, gbc);		getRootPane().setDefaultButton(ok);		getRootPane().setDefaultButton(ok);        // build Project Settings framework		splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);		loadOptionPanel();		recursivelyHighlight(optionTree, rootNode, currentDMTN, optionTree.getPathForRow(0));		splitPane.setLeftComponent(leftPanel);		gbc = new GridBagConstraints();		gbc.gridx = 0;   gbc.gridy = 0;		gbc.gridwidth = 1;		gbc.fill = GridBagConstraints.BOTH;		gbc.weightx = 1.0;   gbc.weighty = 1.0;		getContentPane().add(splitPane, gbc);		pack();		finishInitialization();	}	private void addTreeNode(DefaultMutableTreeNode rootNode, String name)	{		DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(name);		rootNode.add(dmtn);		if (name.equals(currentTabName))			currentDMTN = dmtn;	}    public Map<Setting,Object> getContext() { return currentContext; }    private boolean openSelectedPath(DefaultMutableTreeNode rootNode)    {        for (int i = 0; i < rootNode.getChildCount(); i++)        {            DefaultMutableTreeNode node = (DefaultMutableTreeNode)rootNode.getChildAt(i);            Object o = node.getUserObject();            if (o.toString().equals(currentTabName))//indexOf(currentTabName) != -1)            {                optionTree.scrollPathToVisible(new TreePath(node.getPath()));                return true;            }            if (openSelectedPath(node)) return true;        }        return false;    }	private void cancelActionPerformed()	{		closeDialog(null);	}	private void okActionPerformed()	{        Setting.SettingChangeBatch changeBatch = new Setting.SettingChangeBatch();

⌨️ 快捷键说明

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