/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: GenericPanel.java * * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. * * 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.tecEditWizard2; import com.sun.electric.tool.user.Resources; import com.sun.electric.util.TextUtils; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.ArrayList; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** * */ class GenericPanel extends TechEditWizardPanel { private final String name; private final String title; private final List<String> labels; private final List<WizardField> fields; private JPanel panel; private JLabel image; private List<JTextField> ruleValues = new ArrayList<JTextField>(); private List<JTextField> ruleNames = new ArrayList<JTextField>(); GenericPanel(TechEditWizard parent, String name, String title, List<String> labels, List<WizardField> fields) { super(parent, parent.isModal()); this.name = name; this.title = title; this.labels = labels; this.fields = fields; initComponents(); String imageFileName = name + ".png"; image.setIcon(Resources.getResource(getClass(), imageFileName)); pack(); } /** return the panel to use for this Numeric Technology Editor tab. */ @Override public Component getComponent() { return panel; } /** return the name of this Numeric Technology Editor tab. */ @Override public String getName() { return name; } /** * Method called at the start of the dialog. * Caches current values and displays them in the Active tab. */ @Override public void init() { for (int i = 0; i < fields.size(); i++) { WizardField field = fields.get(i); JTextField ruleValue = ruleValues.get(i); JTextField ruleName = ruleNames.get(i); ruleValue.setText(TextUtils.formatDouble(field.value)); ruleName.setText(field.rule); } } /** * Method called when the "OK" panel is hit. * Updates any changed fields in the Active tab. */ @Override public void term() { for (int i = 0; i < fields.size(); i++) { WizardField field = fields.get(i); JTextField ruleValue = ruleValues.get(i); JTextField ruleName = ruleNames.get(i); field.rule = ruleName.getText(); field.value = TextUtils.atof(ruleValue.getText()); } } /** This method is called from within the constructor to * initialize the form. */ private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; getContentPane().setLayout(new java.awt.GridBagLayout()); setTitle(getName()); setName(""); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); panel = new javax.swing.JPanel(); panel.setLayout(new GridBagLayout()); for (int i = 0; i < fields.size(); i++) { // WizardField field = fields.get(i); JLabel jLabel = new JLabel(); jLabel.setText(labels.get(i)); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = i + 3; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(1, 4, 1, 0); panel.add(jLabel, gridBagConstraints); JTextField ruleValue = new JTextField(); ruleValues.add(ruleValue); ruleValue.setColumns(8); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = i + 3; gridBagConstraints.insets = new java.awt.Insets(1, 0, 1, 2); panel.add(ruleValue, gridBagConstraints); } image = new JLabel(); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); panel.add(image, gridBagConstraints); JLabel jLabel5 = new JLabel(); jLabel5.setText("Distances are in nanometers"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = fields.size() + 3; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 1, 0); panel.add(jLabel5, gridBagConstraints); JLabel jLabel6 = new JLabel(); jLabel6.setText(title); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(4, 0, 4, 0); panel.add(jLabel6, gridBagConstraints); for (int i = 0; i < fields.size(); i++) { // WizardField field = fields.get(i); JTextField ruleName = new JTextField(); ruleNames.add(ruleName); ruleName.setColumns(8); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = i + 3; gridBagConstraints.insets = new java.awt.Insets(1, 2, 1, 2); panel.add(ruleName, gridBagConstraints); } JLabel jLabel7 = new JLabel(); jLabel7.setText("Rule Name"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; panel.add(jLabel7, gridBagConstraints); JLabel jLabel8 = new JLabel(); jLabel8.setText("Distance"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; panel.add(jLabel8, gridBagConstraints); getContentPane().add(panel, new java.awt.GridBagConstraints()); pack(); }// </editor-fold> /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) { setVisible(false); dispose(); } }