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

📄 newcell.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: NewCell.java * * Copyright (c) 2003 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.Cell;import com.sun.electric.database.hierarchy.Library;import com.sun.electric.database.hierarchy.View;import com.sun.electric.technology.Technology;import com.sun.electric.technology.technologies.Artwork;import com.sun.electric.technology.technologies.Schematics;import com.sun.electric.tool.Job;import com.sun.electric.tool.JobException;import com.sun.electric.tool.user.User;import com.sun.electric.tool.user.ui.WindowFrame;import java.awt.Frame;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.Iterator;import java.util.List;import javax.swing.DefaultListModel;import javax.swing.JList;import javax.swing.ListSelectionModel;/** * Class to handle the "New Cell" dialog. */public class NewCell extends EDialog{	private JList viewList;	private DefaultListModel viewModel;	private static boolean makeWindow = false;	/**	 * Inner class to control options based on views and technologies.	 * This is done to access View or Tech without calling toString()	 */	private static class ViewTechOption	{		View view;		Technology tech;		ViewTechOption(View v, Technology t)		{			this.view = v;			this.tech = t;		}		public String toString()		{			if (view != null)				return view.getFullName();			return tech.getTechName();		}	}	/** Creates new form New Cell */	public NewCell(Frame parent)	{		super(parent, true);		initComponents();		getRootPane().setDefaultButton(ok);		// make a list of views		viewModel = new DefaultListModel();		viewList = new JList(viewModel);		viewList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);		view.setViewportView(viewList);		Technology curTech = Technology.getCurrent();		Technology defTech = Technology.findTechnology(User.getDefaultTechnology());		ViewTechOption theViewOption = null;		View defaultView = View.LAYOUT;		if (curTech == Schematics.tech()) defaultView = View.SCHEMATIC;		else if (curTech == Artwork.tech()) defaultView = View.ICON;		for (View v : View.getOrderedViews())		{			ViewTechOption option = new ViewTechOption(v, null);			viewModel.addElement(option);			if (v == defaultView) theViewOption = option;		}		viewList.setSelectedValue(theViewOption, true);        viewList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {            public void valueChanged(javax.swing.event.ListSelectionEvent evt)            {                techComboBoxItemStateChanged(null);            }        });        viewList.addMouseListener(new MouseAdapter()		{			public void mouseClicked(MouseEvent e)			{				techComboBoxItemStateChanged(null);				if (e.getClickCount() == 2) ok(null);			}		});		// Choosen appropiate technology		for (Iterator<Technology> it = Technology.getTechnologies(); it.hasNext();)		{			Technology tech = it.next();			if (tech != Schematics.tech() && tech != Artwork.tech())			{				ViewTechOption option = new ViewTechOption(null, tech);				techComboBox.addItem(option);				if ((defaultView == View.LAYOUT && tech == curTech) ||					(tech == defTech)) techComboBox.setSelectedItem(option);			}		}		// Only capable to switch technology if they are layout-based		techComboBoxItemStateChanged(null);		// make a popup of libraries		List<Library> libList = Library.getVisibleLibraries();		for (Library lib : libList)		{			library.addItem(lib.getName());		}		int curIndex = libList.indexOf(Library.getCurrent());		if (curIndex >= 0) library.setSelectedIndex(curIndex);		newWindow.setSelected(makeWindow);		cellName.grabFocus();		finishInitialization();	}	protected void escapePressed() { cancel(null); }	/** This method is called from within the constructor to	 * initialize the form.	 * WARNING: Do NOT modify this code. The content of this method is	 * always regenerated by the Form Editor.	 */    private void initComponents() {//GEN-BEGIN:initComponents        java.awt.GridBagConstraints gridBagConstraints;        cancel = new javax.swing.JButton();        ok = new javax.swing.JButton();        cellName = new javax.swing.JTextField();        jLabel4 = new javax.swing.JLabel();        library = new javax.swing.JComboBox();        jLabel1 = new javax.swing.JLabel();        jLabel2 = new javax.swing.JLabel();        newWindow = new javax.swing.JCheckBox();        view = new javax.swing.JScrollPane();        techLabel = new javax.swing.JLabel();        techComboBox = new javax.swing.JComboBox();        getContentPane().setLayout(new java.awt.GridBagLayout());        setTitle("New Cell");        setName("");        addWindowListener(new java.awt.event.WindowAdapter() {            public void windowClosing(java.awt.event.WindowEvent evt) {                closeDialog(evt);            }        });        cancel.setText("Cancel");        cancel.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                cancel(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 4;        gridBagConstraints.weightx = 0.5;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(cancel, gridBagConstraints);        ok.setText("OK");        ok.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                ok(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 3;        gridBagConstraints.gridy = 4;        gridBagConstraints.weightx = 0.5;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(ok, gridBagConstraints);        cellName.setColumns(20);        cellName.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                cellNameActionPerformed(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 1;        gridBagConstraints.gridwidth = 3;        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.weightx = 1.0;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(cellName, gridBagConstraints);        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);        jLabel4.setText("Library:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 0;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(jLabel4, gridBagConstraints);        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 0;        gridBagConstraints.gridwidth = 3;        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.weightx = 1.0;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(library, gridBagConstraints);        jLabel1.setText("Name:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 1;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(jLabel1, gridBagConstraints);        jLabel2.setText("View:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 2;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(jLabel2, gridBagConstraints);        newWindow.setText("Make new window");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 2;        gridBagConstraints.gridy = 4;        getContentPane().add(newWindow, gridBagConstraints);        view.setMinimumSize(new java.awt.Dimension(200, 150));        view.setPreferredSize(new java.awt.Dimension(200, 150));        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 2;        gridBagConstraints.gridwidth = 3;        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;        gridBagConstraints.weightx = 1.0;        gridBagConstraints.weighty = 1.0;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(view, gridBagConstraints);        techLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);        techLabel.setText("Technology:");        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 0;        gridBagConstraints.gridy = 3;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(techLabel, gridBagConstraints);        techComboBox.addItemListener(new java.awt.event.ItemListener() {            public void itemStateChanged(java.awt.event.ItemEvent evt) {                techComboBoxItemStateChanged(evt);            }        });        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.gridx = 1;        gridBagConstraints.gridy = 3;        gridBagConstraints.gridwidth = 3;        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;        gridBagConstraints.weightx = 1.0;        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);        getContentPane().add(techComboBox, gridBagConstraints);        pack();    }//GEN-END:initComponents    private void techComboBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_techComboBoxItemStateChanged		ViewTechOption view = (ViewTechOption)viewList.getSelectedValue();		if (view != null)			techComboBox.setEnabled(view.view == View.LAYOUT);    }//GEN-LAST:event_techComboBoxItemStateChanged	private void cellNameActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cellNameActionPerformed	{//GEN-HEADEREND:event_cellNameActionPerformed		ok(evt);	}//GEN-LAST:event_cellNameActionPerformed	private void cancel(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancel	{//GEN-HEADEREND:event_cancel		closeDialog(null);	}//GEN-LAST:event_cancel	private void ok(java.awt.event.ActionEvent evt)//GEN-FIRST:event_ok	{//GEN-HEADEREND:event_ok		String name = cellName.getText().trim();		if (name.length() == 0)		{			Job.getUserInterface().showErrorMessage("Must type a cell name", "Invalid cell name");			return;		}		String viewName = ((ViewTechOption)viewList.getSelectedValue()).view.getFullName();		View v = View.findView(viewName);		if (v != View.UNKNOWN)  name += v.getAbbreviationExtension();		String libName = (String)library.getSelectedItem();		Library lib = Library.findLibrary(libName);		if (lib == null)		{			Job.getUserInterface().showErrorMessage("No library exists.  Create one first.", "No Library");			return;		}		makeWindow = newWindow.isSelected();		// create the cell		Technology tech = null;		if (techComboBox.isEnabled()) tech = ((ViewTechOption)techComboBox.getSelectedItem()).tech;		new CreateCell(lib, name, tech, makeWindow);		closeDialog(null);	}//GEN-LAST:event_ok	/** Closes the dialog */	private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog	{		makeWindow = newWindow.isSelected();		setVisible(false);		dispose();	}//GEN-LAST:event_closeDialog	/**	 * Class to create a cell in a new thread.	 */	private static class CreateCell extends Job	{		private Library lib;		private String cellName;		private boolean newWindow;		private Technology tech;		private Cell newCell;		protected CreateCell(Library l, String c, Technology t, boolean w)		{			super("Create Cell " + c, User.getUserTool(), Job.Type.CHANGE, null, null, Job.Priority.USER);			this.lib = l;			this.cellName = c;			this.newWindow = w;			this.tech = t;			startJob();		}		public boolean doIt() throws JobException		{			// should ensure that the name is valid			newCell = Cell.makeInstance(lib, cellName);			if (newCell == null)				throw new JobException("Unable to create cell " + cellName);			newCell.setTechnology(tech);			fieldVariableChanged("newCell");			return true;		}		public void terminateOK()		{			if (newWindow)			{				WindowFrame.createEditWindow(newCell);			} else			{				WindowFrame wf = WindowFrame.getCurrentWindowFrame();				wf.setCellWindow(newCell, null);			}		}	}    // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JButton cancel;    private javax.swing.JTextField cellName;    private javax.swing.JLabel jLabel1;    private javax.swing.JLabel jLabel2;    private javax.swing.JLabel jLabel4;    private javax.swing.JComboBox library;    private javax.swing.JCheckBox newWindow;    private javax.swing.JButton ok;    private javax.swing.JComboBox techComboBox;    private javax.swing.JLabel techLabel;    private javax.swing.JScrollPane view;    // End of variables declaration//GEN-END:variables}

⌨️ 快捷键说明

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