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

📄 editmenu.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: EditMenu.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.menus;import static com.sun.electric.tool.user.menus.EMenuItem.SEPARATOR;import com.sun.electric.database.change.Undo;import com.sun.electric.database.geometry.DBMath;import com.sun.electric.database.geometry.EPoint;import com.sun.electric.database.hierarchy.Cell;import com.sun.electric.database.hierarchy.Export;import com.sun.electric.database.hierarchy.Library;import com.sun.electric.database.network.Network;import com.sun.electric.database.prototype.NodeProto;import com.sun.electric.database.prototype.PortCharacteristic;import com.sun.electric.database.topology.ArcInst;import com.sun.electric.database.topology.Geometric;import com.sun.electric.database.topology.NodeInst;import com.sun.electric.database.topology.PortInst;import com.sun.electric.database.variable.ElectricObject;import com.sun.electric.database.variable.TextDescriptor;import com.sun.electric.database.variable.Variable;import com.sun.electric.database.variable.Variable.Key;import com.sun.electric.technology.ArcProto;import com.sun.electric.technology.PrimitiveNode;import com.sun.electric.technology.Technology;import com.sun.electric.technology.Xml;import com.sun.electric.technology.technologies.FPGA;import com.sun.electric.technology.technologies.Generic;import com.sun.electric.tool.Client;import com.sun.electric.tool.Job;import com.sun.electric.tool.JobException;import com.sun.electric.tool.io.FileType;import com.sun.electric.tool.sandbox.TechExplorerDriver;import com.sun.electric.tool.user.ActivityLogger;import com.sun.electric.tool.user.CircuitChangeJobs;import com.sun.electric.tool.user.CircuitChanges;import com.sun.electric.tool.user.Clipboard;import com.sun.electric.tool.user.Highlight2;import com.sun.electric.tool.user.Highlighter;import com.sun.electric.tool.user.User;import com.sun.electric.tool.user.dialogs.Array;import com.sun.electric.tool.user.dialogs.ArtworkLook;import com.sun.electric.tool.user.dialogs.Attributes;import com.sun.electric.tool.user.dialogs.BusParameters;import com.sun.electric.tool.user.dialogs.Change;import com.sun.electric.tool.user.dialogs.ChangeText;import com.sun.electric.tool.user.dialogs.EditKeyBindings;import com.sun.electric.tool.user.dialogs.FindText;import com.sun.electric.tool.user.dialogs.GetInfoArc;import com.sun.electric.tool.user.dialogs.GetInfoExport;import com.sun.electric.tool.user.dialogs.GetInfoMulti;import com.sun.electric.tool.user.dialogs.GetInfoNode;import com.sun.electric.tool.user.dialogs.GetInfoOutline;import com.sun.electric.tool.user.dialogs.GetInfoText;import com.sun.electric.tool.user.dialogs.MoveBy;import com.sun.electric.tool.user.dialogs.OpenFile;import com.sun.electric.tool.user.dialogs.SelectObject;import com.sun.electric.tool.user.dialogs.SpecialProperties;import com.sun.electric.tool.user.dialogs.Spread;import com.sun.electric.tool.user.tecEdit.LibToTech;import com.sun.electric.tool.user.tecEdit.Manipulate;import com.sun.electric.tool.user.tecEdit.TechToLib;import com.sun.electric.tool.user.tecEditWizard.TechEditWizard;import com.sun.electric.tool.user.ui.CurveListener;import com.sun.electric.tool.user.ui.EditWindow;import com.sun.electric.tool.user.ui.ErrorLoggerTree;import com.sun.electric.tool.user.ui.OutlineListener;import com.sun.electric.tool.user.ui.PaletteFrame;import com.sun.electric.tool.user.ui.SizeListener;import com.sun.electric.tool.user.ui.TextWindow;import com.sun.electric.tool.user.ui.ToolBar;import com.sun.electric.tool.user.ui.TopLevel;import com.sun.electric.tool.user.ui.WindowFrame;import com.sun.electric.tool.user.waveform.WaveformWindow;import java.awt.Dimension;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.EventListener;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import javax.swing.JOptionPane;import javax.swing.KeyStroke;/** * Class to handle the commands in the "Edit" pulldown menu. */public class EditMenu {    static EMenu makeMenu() {//    	int ctrl = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();//    	int ctrlShift = ctrl | InputEvent.SHIFT_DOWN_MASK;    	/****************************** THE EDIT MENU ******************************/		// mnemonic keys available:  B       JK     Q		// still don't have mnemonic for "Repeat Last Action"		return new EMenu("_Edit",			new EMenuItem("Cu_t", 'X') { public void run() {				Clipboard.cut(); }},			new EMenuItem("Cop_y", 'C') { public void run() {				Clipboard.copy(); }},			new EMenuItem("_Paste", 'V') { public void run() {				Clipboard.paste(); }},			new EMenuItem("Dup_licate", 'M') { public void run() {				Clipboard.duplicate(); }},			SEPARATOR,		// TODO: figure out how to remove this property change listener for correct garbage collection			ToolBar.undoCommand, // U			ToolBar.redoCommand, // D			new EMenuItem("Sho_w Undo List") { public void run() {				showUndoListCommand(); }},			new EMenuItem("Repeat Last Action", KeyStroke.getKeyStroke('&')) { public void run() {				EMenuItem.repeatLastCommand(); }},			SEPARATOR,		// mnemonic keys available: AB  EFGHIJKLMN PQRSTUV XYZ			new EMenu("_Rotate",				new EMenuItem("90 Degrees Clock_wise") { public void run() {					CircuitChanges.rotateObjects(2700); }},				new EMenuItem("90 Degrees _Counterclockwise", 'J') { public void run() {					CircuitChanges.rotateObjects(900); }},				new EMenuItem("180 _Degrees") { public void run() {					CircuitChanges.rotateObjects(1800); }},				new EMenuItem("_Other...") { public void run() {					CircuitChanges.rotateObjects(0); }}),		// mnemonic keys available: ABCDEFGHIJK MNOPQRST VWXYZ			new EMenu("_Mirror",				new EMenuItem("_Up <-> Down") { public void run() {					CircuitChanges.mirrorObjects(true); }},				new EMenuItem("_Left <-> Right") { public void run() {					CircuitChanges.mirrorObjects(false); }}),		// mnemonic keys available:  BCDEFGH JKLM OPQRSTUVWXYZ			new EMenu("Si_ze",				new EMenuItem("_Interactively", 'B') { public void run() {					SizeListener.sizeObjects(); }},				new EMenuItem("All Selected _Nodes...") { public void run() {					SizeListener.sizeAllNodes(); }},				new EMenuItem("All Selected _Arcs...") { public void run() {					SizeListener.sizeAllArcs(); }}),		// mnemonic keys available:    DEFGHIJK  NOPQ   U WXYZ			new EMenu("Mo_ve",				new EMenuItem("_Spread...") { public void run() {					Spread.showSpreadDialog(); }},				new EMenuItem("_Move Objects By...") { public void run() {					MoveBy.showMoveByDialog(); }},				new EMenuItem("_Align to Grid") { public void run() {					CircuitChanges.alignToGrid(); }},//				SEPARATOR,//				new EMenuItem("Move Objects Left", KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)) { public void run() {//					moveSelected(-1, 0, false, false); }},//				new EMenuItem("Move Objects Right", KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0)) { public void run() {//					moveSelected(1, 0, false, false); }},//				new EMenuItem("Move Objects Up", KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)) { public void run() {//					moveSelected(0, 1, false, false); }},//				new EMenuItem("Move Objects Down", KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)) { public void run() {//					moveSelected(0, -1, false, false); }},//				SEPARATOR,//				new EMenuItem("Move Objects More Left", new KeyStroke [] { KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.SHIFT_DOWN_MASK),//		    		KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, ctrl)}) { public void run() {//					moveSelected(-1, 0, false, false); }},//				new EMenuItem("Move Objects More Right", new KeyStroke [] { KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, InputEvent.SHIFT_DOWN_MASK),//		    		KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, ctrl)}) { public void run() {//					moveSelected(1, 0, false, false); }},//				new EMenuItem("Move Objects More Up", new KeyStroke [] { KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.SHIFT_DOWN_MASK),//		    		KeyStroke.getKeyStroke(KeyEvent.VK_UP, ctrl)}) { public void run() {//					moveSelected(0, 1, false, false); }},//				new EMenuItem("Move Objects More Down", new KeyStroke [] { KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.SHIFT_DOWN_MASK),//		    		KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, ctrl)}) { public void run() {//					moveSelected(0, -1, false, false); }},//				SEPARATOR,//				new EMenuItem("Move Objects Most Left", KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, ctrlShift)) { public void run() {//					moveSelected(-1, 0, false, false); }},//				new EMenuItem("Move Objects Most Right", KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, ctrlShift)) { public void run() {//					moveSelected(1, 0, false, false); }},//				new EMenuItem("Move Objects Most Up", KeyStroke.getKeyStroke(KeyEvent.VK_UP, ctrlShift)) { public void run() {//					moveSelected(0, 1, false, false); }},//				new EMenuItem("Move Objects Most Down", KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, ctrlShift)) { public void run() {//					moveSelected(0, -1, false, false); }},				SEPARATOR,				new EMenuItem("Align Horizontally to _Left") { public void run() {					CircuitChanges.alignNodes(true, 0); }},				new EMenuItem("Align Horizontally to _Right") { public void run() {					CircuitChanges.alignNodes(true, 1); }},				new EMenuItem("Align Horizontally to _Center") { public void run() {					CircuitChanges.alignNodes(true, 2); }},				SEPARATOR,				new EMenuItem("Align Vertically to _Top") { public void run() {					CircuitChanges.alignNodes(false, 0); }},				new EMenuItem("Align Vertically to _Bottom") { public void run() {					CircuitChanges.alignNodes(false, 1); }},				new EMenuItem("Align _Vertically to Center") { public void run() {					CircuitChanges.alignNodes(false, 2); }}),			SEPARATOR,		// mnemonic keys available:   CDEFGHIJKLMNOPQR TUVWXYZ			new EMenu("_Erase",				new EMenuItem("_Selected", KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0)) {					public void run() {						CircuitChanges.deleteSelected(); }},				new EMenuItem("_Arcs Connected to Selected Nodes") { public void run() {					CircuitChanges.deleteArcsOnSelected(false); }},				new EMenuItem("Arcs Connected _Between Selected Nodes") { public void run() {					CircuitChanges.deleteArcsOnSelected(true); }}),			new EMenuItem("_Array...", KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0)) { public void run() {				Array.showArrayDialog(); }},			new EMenuItem("C_hange...", KeyStroke.getKeyStroke('C', 0)) { public void run() {				Change.showChangeDialog(); }},			SEPARATOR,		// mnemonic keys available: A CD FGHIJK M   QRSTUVWXYZ			new EMenu("Propert_ies",				new EMenuItem("_Object Properties...", 'I') { public void run() {					getInfoCommand(false); }},				SEPARATOR,				new EMenuItem("Cell _Parameters...") { public void run() {					Attributes.showDialog(); }},				new EMenuItem("Update Parameters on _Node") { public void run() {					updateParameters(false); }},				new EMenuItem("Update Parameters all _Libraries") { public void run() {					updateParameters(true); }},				SEPARATOR,				new EMenuItem("Parameterize _Bus Name") { public void run() {					BusParameters.makeBusParameter(); }},				new EMenuItem("_Edit Bus Parameters...") { public void run() {					BusParameters.showBusParametersDialog(); }}),		// mnemonic keys available:     E G I KL   PQ S  VWXYZ			new EMenu("Ar_c",				new EMenuItem("_Rigid") { public void run() {					CircuitChanges.arcRigidCommand(); }},				new EMenuItem("_Not Rigid") { public void run() {					CircuitChanges.arcNotRigidCommand(); }},				new EMenuItem("_Fixed Angle") { public void run() {					CircuitChanges.arcFixedAngleCommand(); }},				new EMenuItem("Not Fixed _Angle") { public void run() {					CircuitChanges.arcNotFixedAngleCommand(); }},				SEPARATOR,				new EMenuItem("Toggle _Directionality") { public void run() {					CircuitChanges.arcDirectionalCommand(); }},				new EMenuItem("Toggle End Extension _of Both Head/Tail") { public void run() {					CircuitChanges.arcHeadExtendCommand(); CircuitChanges.arcTailExtendCommand();}},				new EMenuItem("Toggle End Extension of _Head") { public void run() {					CircuitChanges.arcHeadExtendCommand(); }},				new EMenuItem("Toggle End Extension of _Tail") { public void run() {					CircuitChanges.arcTailExtendCommand(); }},				SEPARATOR,				new EMenuItem("Insert _Jog In Arc") { public void run() {					insertJogInArcCommand(); }},				new EMenuItem("Rip _Bus") { public void run() {					CircuitChanges.ripBus(); }},				SEPARATOR,				new EMenuItem("_Curve through Cursor") { public void run() {					CurveListener.setCurvature(true); }},				new EMenuItem("Curve abo_ut Cursor") { public void run() {					CurveListener.setCurvature(false); }},				new EMenuItem("Re_move Curvature") { public void run() {					CurveListener.removeCurvature(); }}),			ToolBar.modesSubMenu, // O		// mnemonic keys available: AB    GH JKLMNOPQRS UVWXYZ			new EMenu("Te_xt",				new EMenuItem("_Find Text...", 'L') { public void run() {					FindText.findTextDialog(); }},				new EMenuItem("_Change Text Size...") { public void run() {					ChangeText.changeTextDialog(); }},				new EMenuItem("_Increase All Text Size", '=') { public void run() {					changeGlobalTextSize(1.25); }},				new EMenuItem("_Decrease All Text Size", '-') { public void run() {					changeGlobalTextSize(0.8); }},				new EMenuItem("Add _Text Annotation", KeyStroke.getKeyStroke('T', 0)) { public void run() {					PaletteFrame.placeInstance("ART_message", null, false); }},				new EMenuItem("Edit Text Cell _Externally...") { public void run() {					editExternally(); }}),		// mnemonic keys available: ABCD FGHIJK M O Q  TUVWXYZ			new EMenu("Clea_nup Cell",				new EMenuItem("Cleanup _Pins") { public void run() {					CircuitChanges.cleanupPinsCommand(false); }},				new EMenuItem("Cleanup Pins _Everywhere") { public void run() {					CircuitChanges.cleanupPinsCommand(true); }},				new EMenuItem("Show _Nonmanhattan") { public void run() {					CircuitChanges.showNonmanhattanCommand(); }},				new EMenuItem("Show Pure _Layer Nodes") { public void run() {					CircuitChanges.showPureLayerCommand(); }},				new EMenuItem("_Shorten Selected Arcs") { public void run() {					CircuitChanges.shortenArcsCommand(); }},				new EMenuItem("Show _Redundant Pure-Layer Nodes") { public void run() {					CircuitChanges.showRedundantPureLayerNodes(); }}),		// mnemonic keys available:    DE GHIJKLM OPQRSTUVWXYZ			new EMenu("Technology Speci_fic",				new EMenuItem("Toggle Port _Negation", 'T') { public void run() {					CircuitChanges.toggleNegatedCommand(); }},				new EMenuItem("_Artwork Color and Pattern...") { public void run() {					ArtworkLook.showArtworkLookDialog(); }},				SEPARATOR,				new EMenuItem("Descri_be this Technology") { public void run() {					describeTechnologyCommand(); }},				new EMenuItem("Do_cument Current Technology") { public void run() {					Manipulate.describeTechnology(Technology.getCurrent()); }},				new EMenuItem("Write XML of Current Technology...") { public void run()				{					Technology tech = Technology.getCurrent();					Xml.Technology xmlTech = tech.getXmlTech();					if (xmlTech == null)						xmlTech = tech.makeXml();					String fileName = tech.getTechName() + ".xml";					fileName = OpenFile.chooseOutputFile(FileType.XML, "Technology XML File", fileName);

⌨️ 快捷键说明

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