/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: NccMsgsFrame.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.ncc;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import java.util.List;
import javax.swing.*;
import com.sun.electric.Main;
import com.sun.electric.tool.ncc.NccOptions;
import com.sun.electric.tool.user.menus.WindowMenu;
/**
* This is the top-level class of NCC GUI.
* Call display() to display the frame.
*/
public class NccMsgsFrame {
// GUI variables
/** current frame of NCC GUI */ protected static Container frame;
/** first-time placement flag */ private static boolean placed = false;
/** the top-level split-pane */ private ComparisonsPane comparPane;
// data variables
/** list of NccComparisonResult */ private List<NccGuiInfo> mismatches;
/** NCC options */ private NccOptions nccOptions;
public NccMsgsFrame() {
Dimension scrnSize = Main.getScreenSize();
Container contentPane;
//if (TopLevel.isMDIMode()) {
JInternalFrame jInternalFrame = new JInternalFrame("NCC Messages", true, true, true, true);
jInternalFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
frame = jInternalFrame;
contentPane = jInternalFrame.getContentPane();
jInternalFrame.setFrameIcon(Main.getFrameIcon());
//} else {
// JFrame jFrame = new JFrame("NCC Messages");
// jFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
// frame = jFrame;
// contentPane = jFrame.getContentPane();
// jFrame.setIconImage(Main.getFrameIcon().getImage());
//}
comparPane = new ComparisonsPane();
contentPane.add(comparPane);
comparPane.setPreferredSize(new Dimension(scrnSize.width/3*2, scrnSize.height/3*2));
frame.setLocation(scrnSize.width/6, scrnSize.height/6);
frame.addKeyListener(new java.awt.event.KeyListener()
{
public void keyPressed(KeyEvent event)
{
if (WindowMenu.getCloseWindowAccelerator() == KeyStroke.getKeyStrokeForEvent(event))
frame.setVisible(false);
}
public void keyTyped(KeyEvent event) {;}
public void keyReleased(KeyEvent event) {;}
});
}
/**
* Method returns the current Frame of NCC GUI.
* No more than one NCC GUI Frame exists at any time.
* @return current NCC GUI Frame. The retuned frame is an instance
* of either JInternalFrame (if in MDI mode) or of JFrame (otherwise)
*/
public static Container getCurrentFrame() { return frame; }
/**
* Method to update the list of mismatched NCC comparisons
* @param misms list of mismatches
* @param options NCC options
*/
public void setMismatches(List<NccGuiInfo> misms, NccOptions options) {
mismatches = misms;
nccOptions = options;
}
/**
* Display NCC window.
* If no errors were found, only a small message window will appear.
*/
public void display() {
// display small info message if no errors found
if (mismatches.size() == 0) {
frame.setVisible(false);
/* removed as a result of the request Bug #1859
StringBuffer msg = new StringBuffer(100);
msg.append("No errors found\n");
if (nccOptions.checkSizes)
msg.append("Exports, Topology and Sizes checked");
else
msg.append("Exports and Topology checked, Sizes not checked");
JOptionPane.showMessageDialog(TopLevel.getCurrentJFrame(), msg,
"NCC Message", JOptionPane.INFORMATION_MESSAGE);
*/
return;
}
comparPane.setMismatches(mismatches);
//if (TopLevel.isMDIMode()) {
JInternalFrame jif = (JInternalFrame)frame;
if (!placed) {
placed = true;
jif.pack();
Main.addToDesktop(jif);
}
try {
jif.setIcon(false);
jif.setSelected(true);
} catch (PropertyVetoException e) {}
if (!jif.isVisible()) {
jif.setVisible(true);
jif.show();
}
jif.toFront();
jif.requestFocusInWindow();
//} else {
// JFrame jf = (JFrame)frame;
// jf.setState(Frame.NORMAL);
// if (!jf.isVisible()) {
// jf.setVisible(true);
// if (!placed) {
// placed = true;
// jf.pack();
// }
// jf.setVisible(true);
// }
// jf.toFront();
// jf.requestFocus();
//}
}
}