📄 filemenu.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: FileMenu.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.IdMapper;import com.sun.electric.database.Snapshot;import com.sun.electric.database.geometry.PolyBase;import com.sun.electric.database.hierarchy.Cell;import com.sun.electric.database.hierarchy.EDatabase;import com.sun.electric.database.hierarchy.Library;import com.sun.electric.database.hierarchy.View;import com.sun.electric.database.text.Setting;import com.sun.electric.database.text.TextUtils;import com.sun.electric.database.variable.EditWindow_;import com.sun.electric.database.variable.VarContext;import com.sun.electric.technology.Layer;import com.sun.electric.tool.Client;import com.sun.electric.tool.Job;import com.sun.electric.tool.JobException;import com.sun.electric.tool.JobManager;import com.sun.electric.tool.cvspm.CVS;import com.sun.electric.tool.cvspm.Commit;import com.sun.electric.tool.cvspm.Edit;import com.sun.electric.tool.cvspm.Update;import com.sun.electric.tool.io.FileType;import com.sun.electric.tool.io.IOTool;import com.sun.electric.tool.io.input.GDSMap;import com.sun.electric.tool.io.input.Input;import com.sun.electric.tool.io.input.LibraryFiles;import com.sun.electric.tool.io.output.Output;import com.sun.electric.tool.io.output.PostScript;import com.sun.electric.tool.project.AddCellJob;import com.sun.electric.tool.project.AddLibraryJob;import com.sun.electric.tool.project.CancelCheckOutJob;import com.sun.electric.tool.project.CheckInJob;import com.sun.electric.tool.project.CheckOutJob;import com.sun.electric.tool.project.DeleteCellJob;import com.sun.electric.tool.project.HistoryDialog;import com.sun.electric.tool.project.LibraryDialog;import com.sun.electric.tool.project.UpdateJob;import com.sun.electric.tool.simulation.Simulation;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.User;import com.sun.electric.tool.user.dialogs.ChangeCurrentLib;import com.sun.electric.tool.user.dialogs.OpenFile;import com.sun.electric.tool.user.dialogs.OptionReconcile;import com.sun.electric.tool.user.dialogs.ProjectSettingsFrame;import com.sun.electric.tool.user.projectSettings.ProjSettings;import com.sun.electric.tool.user.ui.EditWindow;import com.sun.electric.tool.user.ui.ElectricPrinter;import com.sun.electric.tool.user.ui.ErrorLoggerTree;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.WindowContent;import com.sun.electric.tool.user.ui.WindowFrame;import com.sun.electric.tool.user.waveform.WaveformWindow;import java.awt.Component;import java.awt.Dimension;import java.awt.HeadlessException;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.awt.geom.Rectangle2D;import java.awt.print.PageFormat;import java.awt.print.PrinterException;import java.awt.print.PrinterJob;import java.io.File;import java.io.Serializable;import java.net.URL;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.prefs.BackingStoreException;import javax.print.PrintService;import javax.print.PrintServiceLookup;import javax.print.attribute.HashPrintRequestAttributeSet;import javax.print.attribute.PrintRequestAttributeSet;import javax.swing.Icon;import javax.swing.JDialog;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.RepaintManager;import javax.swing.SwingUtilities;/** * Class to handle the commands in the "File" pulldown menu. */public class FileMenu { public static final EMenu openRecentLibs = new EMenu("Open Recent Library", new ArrayList<EMenuItem>()); static EMenu makeMenu() { /****************************** THE FILE MENU ******************************/ // mnemonic keys available: D T WXYZ return new EMenu("_File", new EMenuItem("_New Library...") { public void run() { newLibraryCommand(); }}, ToolBar.openLibraryCommand, // O openRecentLibs, // mnemonic keys available: F HIJK NO QR VW YZ new EMenu("_Import", new EMenuItem("_CIF (Caltech Intermediate Format)...") { public void run() { importLibraryCommand(FileType.CIF); }}, new EMenuItem("_GDS II (Stream)...") { public void run() { importLibraryCommand(FileType.GDS); }}, new EMenuItem("GDS _Map File...") { public void run() { GDSMap.importMapFile(); }}, new EMenuItem("_EDIF (Electronic Design Interchange Format)...") { public void run() { importLibraryCommand(FileType.EDIF); }}, new EMenuItem("_LEF (Library Exchange Format)...") { public void run() { importLibraryCommand(FileType.LEF); }}, new EMenuItem("_DEF (Design Exchange Format)...") { public void run() { importLibraryCommand(FileType.DEF); }}, new EMenuItem("_DEF (Design Exchange Format) to current cell...") { public void run() { importToCurrentCellCommand(FileType.DEF); }}, new EMenuItem("D_XF (AutoCAD)...") { public void run() { importLibraryCommand(FileType.DXF); }}, new EMenuItem("S_UE (Schematic User Environment)...") { public void run() { importLibraryCommand(FileType.SUE); }}, new EMenuItem("_Verilog...") { public void run() { importLibraryCommand(FileType.VERILOG); }}, new EMenuItem("_Applicon 860...") { public void run() { importLibraryCommand(FileType.APPLICON860); }}, IOTool.hasDais() ? new EMenuItem("Dais (_Sun CAD)...") { public void run() { importLibraryCommand(FileType.DAIS); }} : null, IOTool.hasDais() ? new EMenuItem("Dais (_Sun CAD) to current library...") { public void run() { importToCurrentCellCommand(FileType.DAIS); }} : null, SEPARATOR, new EMenuItem("ELI_B...") { public void run() { importLibraryCommand(FileType.ELIB); }}, new EMenuItem("_Readable Dump...") { public void run() { importLibraryCommand(FileType.READABLEDUMP); }}, new EMenuItem("_Text Cell Contents...") { public void run() { TextWindow.readTextCell(); }}, new EMenuItem("_Preferences...") { public void run() { Job.getUserInterface().importPrefs(); }}, new EMenuItem("Project Settings...") { public void run() { ProjSettings.importSettings(); }}, new EMenuItem("XML Error Logger...") { public void run() { ErrorLoggerTree.importLogger(); }} ), SEPARATOR, new EMenuItem("_Close Library") { public void run() { closeLibraryCommand(Library.getCurrent()); }}, ToolBar.saveLibraryCommand, // V new EMenuItem("Save Library _As...") { public void run() { if (checkInvariants()) saveAsLibraryCommand(Library.getCurrent()); }}, new EMenuItem("_Save All Libraries", 'S') { public void run() { if (checkInvariants()) saveAllLibrariesCommand(); }}, new EMenuItem("Save All Libraries in _Format...") { public void run() { if (checkInvariants()) saveAllLibrariesInFormatCommand(); }}, // mnemonic keys available: D J M Q UVWVYZ new EMenu("_Export", new EMenuItem("_CIF (Caltech Intermediate Format)...") { public void run() { exportCommand(FileType.CIF, false); }}, new EMenuItem("_GDS II (Stream)...") { public void run() { exportCommand(FileType.GDS, false); }}, new EMenuItem("ED_IF (Electronic Design Interchange Format)...") { public void run() { exportCommand(FileType.EDIF, false); }}, new EMenuItem("LE_F (Library Exchange Format)...") { public void run() { exportCommand(FileType.LEF, false); }}, new EMenuItem("_L...") { public void run() { exportCommand(FileType.L, false); }}, IOTool.hasSkill() ? new EMenuItem("S_kill (Cadence Commands)...") { public void run() { exportCommand(FileType.SKILL, false); }} : null, IOTool.hasSkill() ? new EMenuItem("Skill Exports _Only (Cadence Commands)...") { public void run() { exportCommand(FileType.SKILLEXPORTSONLY, false); }} : null, SEPARATOR, new EMenuItem("_Eagle...") { public void run() { exportCommand(FileType.EAGLE, false); }}, new EMenuItem("EC_AD...") { public void run() { exportCommand(FileType.ECAD, false); }}, new EMenuItem("Pad_s...") { public void run() { exportCommand(FileType.PADS, false); }}, SEPARATOR, new EMenuItem("_Text Cell Contents...") { public void run() { TextWindow.writeTextCell(); }}, new EMenuItem("_PostScript...") { public void run() { exportCommand(FileType.POSTSCRIPT, false); }}, new EMenuItem("P_NG (Portable Network Graphics)...") { public void run() { exportCommand(FileType.PNG, false); }}, new EMenuItem("_HPGL...") { public void run() { exportCommand(FileType.HPGL, false); }}, new EMenuItem("D_XF (AutoCAD)...") { public void run() { exportCommand(FileType.DXF, false); }}, SEPARATOR, new EMenuItem("ELI_B (Version 6)...") { public void run() { saveLibraryCommand(Library.getCurrent(), FileType.ELIB, true, false, false); }}, new EMenuItem("_JELIB (Version 8.03)...") { public void run() { // really since 8.04k saveOldJelib(); }}, new EMenuItem("P_references...") { public void run() { Job.getUserInterface().exportPrefs(); }}, new EMenuItem("Project Settings...") { public void run() { ProjSettings.exportSettings(); }} ), SEPARATOR, new EMenuItem("Change Current _Library...") { public void run() { ChangeCurrentLib.showDialog(); }}, new EMenuItem("List Li_braries") { public void run() { CircuitChanges.listLibrariesCommand(); }}, new EMenuItem("Rena_me Library...") { public void run() { CircuitChanges.renameLibrary(Library.getCurrent()); }}, new EMenuItem("Mar_k All Libraries for Saving") { public void run() { CircuitChangeJobs.markAllLibrariesForSavingCommand(); }}, // mnemonic keys available: AB DEFGHIJKLMNOPQ STUVWXYZ new EMenu("C_heck Libraries", new EMenuItem("_Check") { public void run() { CircuitChanges.checkAndRepairCommand(false); }}, new EMenuItem("_Repair") { public void run() { CircuitChanges.checkAndRepairCommand(true); }}), SEPARATOR, // mnemonic keys available: C EFG JK MN PQ ST VWXYZ new EMenu("P_roject Management", new EMenuItem("_Update") { public void run() { UpdateJob.updateProject(); }}, new EMenuItem("Check _Out This Cell") { public void run() { CheckOutJob.checkOutThisCell(); }}, new EMenuItem("Check _In This Cell...") { public void run() { CheckInJob.checkInThisCell(); }}, SEPARATOR, new EMenuItem("Roll_back and Release Check-Out") { public void run() { CancelCheckOutJob.cancelCheckOutThisCell(); }}, new EMenuItem("_Add This Cell") { public void run() { AddCellJob.addThisCell(); }}, new EMenuItem("_Remove This Cell") { public void run() { DeleteCellJob.removeThisCell(); }}, new EMenuItem("Show _History of This Cell...") { public void run() { HistoryDialog.examineThisHistory(); }}, SEPARATOR, new EMenuItem("Get Library From Repository...") { public void run() { LibraryDialog.getALibrary(); }}, new EMenuItem("Add Current _Library To Repository") { public void run() { AddLibraryJob.addThisLibrary(); }}, new EMenuItem("Ad_d All Libraries To Repository") { public void run() { AddLibraryJob.addAllLibraries(); }}), // mnemonic keys available: ABCDEFGHIJKLMNOPQRSTUVWXYZ new EMenu("C_VS", new EMenuItem("Commit All Open Libraries") { public void run() { Commit.commitAllLibraries(); }}, new EMenuItem("Update Open Libraries") { public void run() { Update.updateOpenLibraries(Update.UpdateEnum.UPDATE); }}, new EMenuItem("Get Status Open Libraries") { public void run() { Update.updateOpenLibraries(Update.UpdateEnum.STATUS); }}, new EMenuItem("List Editors Open Libraries") { public void run() { Edit.listEditorsOpenLibraries(); }}, SEPARATOR, new EMenuItem("Update Project Libraries") { public void run() { Update.updateProject(Update.UpdateEnum.UPDATE); }}, new EMenuItem("Get Status Project Libraries") { public void run() { Update.updateProject(Update.UpdateEnum.STATUS); }}, new EMenuItem("List Editors Project Libraries") { public void run() { Edit.listEditorsProject(); }}, SEPARATOR, new EMenuItem("Checkout From Repository") { public void run() { CVS.checkoutFromRepository(); }}) { @Override public boolean isEnabled() { return CVS.isEnabled(); } @Override protected void registerItem() { super.registerItem(); registerUpdatable(); } }, SEPARATOR, new EMenuItem("Pa_ge Setup...") { public void run() { pageSetupCommand(); }}, new EMenuItem("_Print...") { public void run() { printCommand(); }}, SEPARATOR, ToolBar.preferencesCommand, // R new EMenuItem("Pro_ject Settings...") { public void run() { ProjectSettingsFrame.projectSettingsCommand(); }}, SEPARATOR, !Client.isOSMac() ? new EMenuItem("_Quit", 'Q') { public void run() { quitCommand(); }} : null, new EMenuItem("Force Q_uit (and Save)") { public void run() { forceQuit(); }}); } // ------------------------------ File Menu ----------------------------------- public static void newLibraryCommand() { String newLibName = JOptionPane.showInputDialog("New Library Name", ""); if (newLibName == null) return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -