/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: GetInfoArc.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.Main;
import com.sun.electric.database.change.DatabaseChangeEvent;
import com.sun.electric.database.change.DatabaseChangeListener;
import com.sun.electric.database.geometry.DBMath;
import com.sun.electric.database.network.Netlist;
import com.sun.electric.database.network.Network;
import com.sun.electric.database.prototype.PortProto;
import com.sun.electric.database.text.Name;
import com.sun.electric.database.text.TextUtils;
import com.sun.electric.database.topology.ArcInst;
import com.sun.electric.database.topology.NodeInst;
import com.sun.electric.database.variable.ElectricObject;
import com.sun.electric.database.variable.Variable;
import com.sun.electric.technology.PrimitivePort;
import com.sun.electric.technology.technologies.Artwork;
import com.sun.electric.tool.Client;
import com.sun.electric.tool.Job;
import com.sun.electric.tool.JobException;
import com.sun.electric.tool.user.Highlight;
import com.sun.electric.tool.user.HighlightListener;
import com.sun.electric.tool.user.Highlighter;
import com.sun.electric.tool.user.User;
import com.sun.electric.tool.user.UserInterfaceMain;
import com.sun.electric.tool.user.ui.EditWindow;
import java.awt.Frame;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.prefs.Preferences;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;
/**
* Class to handle the "Arc Get-Info" dialog.
*/
public class GetInfoArc extends EModelessDialog implements HighlightListener, DatabaseChangeListener
{
private static GetInfoArc theDialog = null;
private static ArcInst shownArc = null;
private static Preferences prefs = Preferences.userNodeForPackage(GetInfoArc.class);
private String initialName;
private double initialWidth;
private boolean initialEasyToSelect;
private boolean initialRigid, initialFixedAngle, initialSlidable;
private int initialExtension, initialDirectional, initialNegated;
private EditWindow wnd;
private AttributesTable attributesTable;
private JList busMembersList;
private DefaultListModel busMembersModel;
private List<AttributesTable.AttValPair> allAttributes;
/** true if need to reload info due to failure to get Examine lock on DB */ private boolean needReload = false;
private boolean bigger;
/**
* Method to show the Arc Get-Info dialog.
*/
public static void showDialog()
{
if (Client.getOperatingSystem() == Client.OS.UNIX) {
// JKG 07Apr2006:
// On Linux, if a dialog is built, closed using setVisible(false),
// and then requested again using setVisible(true), it does
// not appear on top. I've tried using toFront(), requestFocus(),
// but none of that works. Instead, I brute force it and
// rebuild the dialog from scratch each time.
if (theDialog != null) theDialog.dispose();
theDialog = null;
}
if (theDialog == null)
{
JFrame jf = null;
jf = (JFrame) Main.getCurrentJFrame();
theDialog = new GetInfoArc(jf);
}
theDialog.loadInfo();
if (!theDialog.isVisible())
{
theDialog.pack();
theDialog.ensureProperSize();
theDialog.setVisible(true);
}
theDialog.toFront();
}
/**
* Reloads the dialog when Highlights change
*/
public void highlightChanged(Highlighter which)
{
if (!isVisible()) return;
loadInfo();
}
/**
* Called when by a Highlighter when it loses focus. The argument
* is the Highlighter that has gained focus (may be null).
* @param highlighterGainedFocus the highlighter for the current window (may be null).
*/
public void highlighterLostFocus(Highlighter highlighterGainedFocus) {
if (!isVisible()) return;
loadInfo();
}
/**
* Respond to database changes
* @param e database change event
*/
public void databaseChanged(DatabaseChangeEvent e) {
if (!isVisible()) return;
// check if we need to reload because we couldn't
// load before because a Change Job was running
if (needReload) {
needReload = false;
loadInfo();
return;
}
// update dialog if we care about the changes
if (e.objectChanged(shownArc))
loadInfo();
}
// /**
// * Respond to database changes
// * @param batch a batch of changes completed
// */
// public void databaseEndChangeBatch(Undo.ChangeBatch batch) {
// if (!isVisible()) return;
// // check if we need to reload because we couldn't
// // load before because a Change Job was running
// if (needReload) {
// needReload = false;
// loadInfo();
// return;
// }
// // check if we care about the changes
// boolean reload = false;
// for (Iterator it = batch.getChanges(); it.hasNext(); ) {
// Undo.Change change = it.next();
// ElectricObject obj = change.getObject();
// if (obj == shownArc) {
// reload = true;
// break;
// }
// }
// if (reload) {
// // update dialog
// loadInfo();
// }
// }
// /** Don't do anything on little database changes, only after all database changes */
// public void databaseChanged(Undo.Change change) {}
// /** This is a GUI listener */
// public boolean isGUIListener() { return true; }
/** Creates new form Arc Get-Info */
private GetInfoArc(Frame parent)
{
super(parent, false);
initComponents();
getRootPane().setDefaultButton(ok);
UserInterfaceMain.addDatabaseChangeListener(this);
Highlighter.addHighlightListener(this);
// make all text fields select-all when entered
EDialog.makeTextFieldSelectAllOnTab(name);
EDialog.makeTextFieldSelectAllOnTab(width);
bigger = prefs.getBoolean("GetInfoArc-bigger", false);
// start small
if (!bigger)
{
getContentPane().remove(jPanel2);
getContentPane().remove(jPanel3);
getContentPane().remove(attributesPane);
moreLess.setText("More");
pack();
} else
{
moreLess.setText("Less");
}
// initialize the state bit popups
negation.addItem("None");
negation.addItem("Head");
negation.addItem("Tail");
negation.addItem("Both");
extension.addItem("Both ends");
extension.addItem("Neither end");
extension.addItem("Head only");
extension.addItem("Tail only");
directionality.addItem("None");
directionality.addItem("Head and Body");
directionality.addItem("Tail and Body");
directionality.addItem("Body only");
directionality.addItem("Head/Tail/Body");
// make the attributes list
allAttributes = new ArrayList<AttributesTable.AttValPair>();
attributesTable = new AttributesTable(null, true, false, false);
attributesPane.setViewportView(attributesTable);
// make list of bus members
busMembersModel = new DefaultListModel();
busMembersList = new JList(busMembersModel);
finishInitialization();
}
protected void escapePressed() { cancelActionPerformed(null); }
protected void loadInfo()
{
if (!SwingUtilities.isEventDispatchThread())
{
SwingUtilities.invokeLater(new Runnable()
{
public void run() { doLoadInfo(); }
});
return;
}
doLoadInfo();
}
private void doLoadInfo()
{
// update current window
EditWindow curWnd = EditWindow.getCurrent();
if (curWnd != null) wnd = curWnd;
if (wnd == null)
{
disableDialog();
return;
}
// must have a single node selected
ArcInst ai = null;
int arcCount = 0;
for(Highlight h : wnd.getHighlighter().getHighlights())
{
if (h.isHighlightEOBJ())
{
ElectricObject eobj = h.getElectricObject();
if (eobj instanceof ArcInst)
{
ai = (ArcInst)eobj;
arcCount++;
}
}
}
if (arcCount > 1) ai = null;
if (ai == null)
{
if (shownArc != null) disableDialog();
return;
}
// try to get Examine lock. If fails, set needReload to true to
// call loadInfo again when database is done changing
// if (!Job.acquireExamineLock(false))
// {
// needReload = true;
// disableDialog();
// return;
// }
// else: lock acquired
try {
EDialog.focusClearOnTextField(name);
// enable it
name.setEditable(true);
width.setEditable(true);
easyToSelect.setEnabled(true);
rigid.setEnabled(true);
fixedAngle.setEnabled(true);
slidable.setEnabled(true);
directionality.setEnabled(true);
extension.setEnabled(true);
PortProto headPort = ai.getHeadPortInst().getPortProto();
PortProto tailPort = ai.getTailPortInst().getPortProto();
if (headPort instanceof PrimitivePort && ((PrimitivePort)headPort).isNegatable() ||
tailPort instanceof PrimitivePort && ((PrimitivePort)tailPort).isNegatable())
negation.setEnabled(true); else
negation.setEnabled(false);
headSee.setEnabled(true);
tailSee.setEnabled(true);
apply.setEnabled(true);
nameProperties.setEnabled(true);
seeAttributes.setEnabled(true);
seeBusMembers.setEnabled(true);
// get initial values
initialName = ai.getName();
initialWidth = ai.getLambdaBaseWidth();
initialEasyToSelect = !ai.isHardSelect();
initialRigid = ai.isRigid();
initialFixedAngle = ai.isFixedAngle();
initialSlidable = ai.isSlidable();
initialNegated = 0;
if (ai.isHeadNegated())
{
if (ai.isTailNegated()) initialNegated = 3; else
initialNegated = 1;
} else if (ai.isTailNegated()) initialNegated = 2;
initialExtension = 0;
if (!ai.isHeadExtended())
{
if (!ai.isTailExtended()) initialExtension = 1; else
initialExtension = 3;
} else if (!ai.isTailExtended()) initialExtension = 2;
initialDirectional = 0;
if (ai.isBodyArrowed() && ai.isHeadArrowed() && !ai.isTailArrowed()) initialDirectional = 1;
if (ai.isBodyArrowed() && !ai.isHeadArrowed() && ai.isTailArrowed()) initialDirectional = 2;
if (ai.isBodyArrowed() && !ai.isHeadArrowed() && !ai.isTailArrowed()) initialDirectional = 3;
if (ai.isBodyArrowed() && ai.isHeadArrowed() && ai.isTailArrowed()) initialDirectional = 4;
// load the dialog
type.setText(ai.getProto().describe());
Netlist netlist = ai.getParent().getNetlist();
int busWidth = 1;
String netName = "UNKNOWN";
if (netlist != null)
{
busWidth = netlist.getBusWidth(ai);
netName = netlist.getNetworkName(ai);
if (netName != null && netName.length() > 80)
netName = netName.substring(0, 80) + "...";
}
if (busWidth <= 1)
{
seeAttributes.setSelected(true);
seeBusMembers.setEnabled(false);
attributesPane.setViewportView(attributesTable);
} else
{
busMembersModel.clear();
for(int i=0; i<busWidth; i++)
{
Network net = netlist.getNetwork(ai, i);
busMembersModel.addElement(i + ": " + net.describe(false));
}
}
network.setText(netName);
name.setText(initialName);
width.setText(TextUtils.formatDistance(initialWidth, ai.getParent().getTechnology()));
length.setText(TextUtils.formatDistance(ai.getLambdaLength(), ai.getParent().getTechnology()));
busSize.setText(Integer.toString(busWidth));
angle.setText("Angle: " + TextUtils.formatDouble(ai.getAngle() / 10.0));
easyToSelect.setSelected(initialEasyToSelect);
headNode.setText(ai.getHeadPortInst().getNodeInst().describe(true));
Point2D headPt = ai.getHeadLocation();
headLoc.setText("(" + headPt.getX() + "," + headPt.getY() + ")");
tailNode.setText(ai.getTailPortInst().getNodeInst().describe(true));
Point2D tailPt = ai.getTailLocation();
tailLoc.setText("(" + tailPt.getX() + "," + tailPt.getY() + ")");
rigid.setSelected(initialRigid);
fixedAngle.setSelected(initialFixedAngle);
slidable.setSelected(initialSlidable);
negation.setSelectedIndex(initialNegated);
extension.setSelectedIndex(initialExtension);
directionality.setSelectedIndex(initialDirectional);
// arc color
colorAndPattern.setEnabled(ai.getProto().getTechnology() == Artwork.tech());
// grab all attributes and parameters
allAttributes.clear();
for(Iterator<Variable> it = ai.getVariables(); it.hasNext(); )
{
Variable aVar = it.next();
String name = aVar.getKey().getName();
if (!name.startsWith("ATTR_")) continue;
// found an attribute
AttributesTable.AttValPair avp = new AttributesTable.AttValPair();
avp.key = aVar.getKey();
avp.trueName = aVar.getTrueName();
avp.value = aVar.getObject().toString();
avp.code = aVar.isCode();
allAttributes.add(avp);
}
attributesTable.setEnabled(allAttributes.size() != 0);
attributesTable.setElectricObject(ai);
pack();
// Job.releaseExamineLock();
} catch (Error e) {
// Job.releaseExamineLock();
throw e;
}
shownArc = ai;
EDialog.focusOnTextField(name);
}
private void disableDialog() {
// no arc selected, disable the dialog
type.setText("");
network.setText("");
name.setEditable(false);
name.setText("");
width.setEditable(false);
width.setText("");
length.setText("");
busSize.setText("");
angle.setText("Angle:");
easyToSelect.setEnabled(false);
headNode.setText("");
headLoc.setText("");
headSee.setEnabled(false);
tailNode.setText("");
tailLoc.setText("");
tailSee.setEnabled(false);
rigid.setEnabled(false);
rigid.setSelected(false);
fixedAngle.setEnabled(false);
fixedAngle.setSelected(false);
slidable.setEnabled(false);
slidable.setSelected(false);
negation.setEnabled(false);
extension.setEnabled(false);
directionality.setEnabled(false);
apply.setEnabled(false);
nameProperties.setEnabled(false);
colorAndPattern.setEnabled(false);
attributesTable.setElectricObject(null);
attributesTable.setEnabled(false);
seeAttributes.setEnabled(false);
seeBusMembers.setEnabled(false);
shownArc = 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.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
buttonGroup1 = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
type = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
network = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
name = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
width = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
busSize = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
angle = new javax.swing.JLabel();
easyToSelect = new javax.swing.JCheckBox();
jLabel11 = new javax.swing.JLabel();
headNode = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
headLoc = new javax.swing.JLabel();
headSee = new javax.swing.JButton();
jLabel15 = new javax.swing.JLabel();
tailNode = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
tailLoc = new javax.swing.JLabel();
tailSee = new javax.swing.JButton();
nameProperties = new javax.swing.JButton();
length = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
rigid = new javax.swing.JCheckBox();
slidable = new javax.swing.JCheckBox();
fixedAngle = new javax.swing.JCheckBox();
jLabel4 = new javax.swing.JLabel();
extension = new javax.swing.JComboBox();
jLabel8 = new javax.swing.JLabel();
directionality = new javax.swing.JComboBox();
jLabel10 = new javax.swing.JLabel();
negation = new javax.swing.JComboBox();
jPanel3 = new javax.swing.JPanel();
colorAndPattern = new javax.swing.JButton();
seeAttributes = new javax.swing.JRadioButton();
seeBusMembers = new javax.swing.JRadioButton();
jLabel2 = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
ok = new javax.swing.JButton();
cancel = new javax.swing.JButton();
apply = new javax.swing.JButton();
moreLess = new javax.swing.JButton();
attributesPane = new javax.swing.JScrollPane();
getContentPane().setLayout(new java.awt.GridBagLayout());
setTitle("Arc Properties");
setName("");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
jPanel1.setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Type:");
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);
jPanel1.add(jLabel1, gridBagConstraints);
type.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(type, gridBagConstraints);
jLabel3.setText("Network:");
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);
jPanel1.add(jLabel3, gridBagConstraints);
network.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(network, gridBagConstraints);
jLabel5.setDisplayedMnemonic('n');
jLabel5.setLabelFor(name);
jLabel5.setText("Name:");
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);
jPanel1.add(jLabel5, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
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);
jPanel1.add(name, gridBagConstraints);
jLabel6.setDisplayedMnemonic('w');
jLabel6.setLabelFor(width);
jLabel6.setText("Width:");
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);
jPanel1.add(jLabel6, gridBagConstraints);
width.setColumns(8);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(width, gridBagConstraints);
jLabel7.setText("Bus size:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(jLabel7, gridBagConstraints);
busSize.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(busSize, gridBagConstraints);
jLabel9.setText("Length:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(jLabel9, gridBagConstraints);
angle.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(angle, gridBagConstraints);
easyToSelect.setText("Easy to Select");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(easyToSelect, gridBagConstraints);
jLabel11.setText("Head:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(jLabel11, gridBagConstraints);
headNode.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(headNode, gridBagConstraints);
jLabel13.setText("At:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 20, 4, 4);
jPanel1.add(jLabel13, gridBagConstraints);
headLoc.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(headLoc, gridBagConstraints);
headSee.setText("See");
headSee.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
headSeeActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridheight = 2;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(headSee, gridBagConstraints);
jLabel15.setText("Tail:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 7;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(jLabel15, gridBagConstraints);
tailNode.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 7;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(tailNode, gridBagConstraints);
jLabel17.setText("At:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 8;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 20, 4, 4);
jPanel1.add(jLabel17, gridBagConstraints);
tailLoc.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 8;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(tailLoc, gridBagConstraints);
tailSee.setText("See");
tailSee.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tailSeeActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 7;
gridBagConstraints.gridheight = 2;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(tailSee, gridBagConstraints);
nameProperties.setText("Props.");
nameProperties.setMinimumSize(new java.awt.Dimension(71, 20));
nameProperties.setPreferredSize(new java.awt.Dimension(71, 20));
nameProperties.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
namePropertiesActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(nameProperties, gridBagConstraints);
length.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(length, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel1, gridBagConstraints);
jPanel2.setLayout(new java.awt.GridBagLayout());
rigid.setText("Rigid");
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, 2, 4);
jPanel2.add(rigid, gridBagConstraints);
slidable.setText("Slidable");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 4, 4);
jPanel2.add(slidable, gridBagConstraints);
fixedAngle.setText("Fixed-angle");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
jPanel2.add(fixedAngle, gridBagConstraints);
jLabel4.setText("End Extension:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 2, 4);
jPanel2.add(jLabel4, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 2, 4);
jPanel2.add(extension, gridBagConstraints);
jLabel8.setText("Directionality:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
jPanel2.add(jLabel8, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
jPanel2.add(directionality, gridBagConstraints);
jLabel10.setText("Negation:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 4, 4);
jPanel2.add(jLabel10, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(2, 4, 4, 4);
jPanel2.add(negation, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel2, gridBagConstraints);
jPanel3.setLayout(new java.awt.GridBagLayout());
colorAndPattern.setText("Color and Pattern...");
colorAndPattern.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
colorAndPatternActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
jPanel3.add(colorAndPattern, gridBagConstraints);
buttonGroup1.add(seeAttributes);
seeAttributes.setText("List Shows Attributes");
seeAttributes.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
seeAttributes.setMargin(new java.awt.Insets(0, 0, 0, 0));
seeAttributes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
seeAttributesActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
jPanel3.add(seeAttributes, gridBagConstraints);
buttonGroup1.add(seeBusMembers);
seeBusMembers.setText("List Shows Bus Members");
seeBusMembers.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
seeBusMembers.setMargin(new java.awt.Insets(0, 0, 0, 0));
seeBusMembers.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
seeBusMembersActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
jPanel3.add(seeBusMembers, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
jPanel3.add(jLabel2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel3, gridBagConstraints);
jPanel4.setLayout(new java.awt.GridBagLayout());
ok.setText("OK");
ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel4.add(ok, gridBagConstraints);
cancel.setText("Cancel");
cancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel4.add(cancel, gridBagConstraints);
apply.setText("Apply");
apply.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
applyActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel4.add(apply, gridBagConstraints);
moreLess.setText("More");
moreLess.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
moreLessActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
jPanel4.add(moreLess, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel4, gridBagConstraints);
attributesPane.setMinimumSize(new java.awt.Dimension(22, 100));
attributesPane.setPreferredSize(new java.awt.Dimension(22, 100));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
getContentPane().add(attributesPane, gridBagConstraints);
pack();
}// </editor-fold>//GEN-END:initComponents
private void seeBusMembersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_seeBusMembersActionPerformed
attributesPane.setViewportView(busMembersList);
}//GEN-LAST:event_seeBusMembersActionPerformed
private void seeAttributesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_seeAttributesActionPerformed
attributesPane.setViewportView(attributesTable);
}//GEN-LAST:event_seeAttributesActionPerformed
private void colorAndPatternActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_colorAndPatternActionPerformed
{//GEN-HEADEREND:event_colorAndPatternActionPerformed
ArtworkLook.showArtworkLookDialog();
}//GEN-LAST:event_colorAndPatternActionPerformed
private void namePropertiesActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_namePropertiesActionPerformed
{//GEN-HEADEREND:event_namePropertiesActionPerformed
if (shownArc == null) return;
ArcInst ai = shownArc;
Name arcName = ai.getNameKey();
if (!arcName.isTempname() && wnd != null)
{
Highlighter highlighter = wnd.getHighlighter();
highlighter.clear();
highlighter.addText(ai, ai.getParent(), ArcInst.ARC_NAME);
highlighter.addElectricObject(ai, ai.getParent());
highlighter.finished();
GetInfoText.showDialog();
}
}//GEN-LAST:event_namePropertiesActionPerformed
private void moreLessActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_moreLessActionPerformed
{//GEN-HEADEREND:event_moreLessActionPerformed
bigger = !bigger;
if (bigger)
{
java.awt.GridBagConstraints gridBagConstraints;
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
getContentPane().add(jPanel3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = gridBagConstraints.weighty = 1.0;
getContentPane().add(attributesPane, gridBagConstraints);
moreLess.setText("Less");
} else
{
getContentPane().remove(jPanel2);
getContentPane().remove(jPanel3);
getContentPane().remove(attributesPane);
moreLess.setText("More");
}
pack();
}//GEN-LAST:event_moreLessActionPerformed
private void tailSeeActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_tailSeeActionPerformed
{//GEN-HEADEREND:event_tailSeeActionPerformed
if (shownArc == null) return;
ArcInst ai = shownArc;
NodeInst ni = shownArc.getTailPortInst().getNodeInst();
if (wnd != null) {
Highlighter highlighter = wnd.getHighlighter();
highlighter.clear();
highlighter.addElectricObject(ni, ni.getParent());
highlighter.addElectricObject(ai, ai.getParent());
highlighter.finished();
}
}//GEN-LAST:event_tailSeeActionPerformed
private void headSeeActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_headSeeActionPerformed
{//GEN-HEADEREND:event_headSeeActionPerformed
if (shownArc == null) return;
ArcInst ai = shownArc;
NodeInst ni = shownArc.getHeadPortInst().getNodeInst();
if (wnd != null) {
Highlighter highlighter = wnd.getHighlighter();
highlighter.clear();
highlighter.addElectricObject(ni, ni.getParent());
highlighter.addElectricObject(ai, ai.getParent());
highlighter.finished();
}
}//GEN-LAST:event_headSeeActionPerformed
private void applyActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_applyActionPerformed
{//GEN-HEADEREND:event_applyActionPerformed
if (shownArc == null) return;
String newName = name.getText().trim();
if (newName.equals(initialName)) newName = null; else
{
initialName = new String(newName);
}
Boolean newEasyToSelect = null;
boolean currentEasyToSelect = easyToSelect.isSelected();
if (currentEasyToSelect != initialEasyToSelect)
{
newEasyToSelect = Boolean.valueOf(currentEasyToSelect);
initialEasyToSelect = currentEasyToSelect;
}
Boolean newRigid = null;
boolean currentRigid = rigid.isSelected();
if (currentRigid != initialRigid)
{
newRigid = Boolean.valueOf(currentRigid);
initialRigid = currentRigid;
}
Boolean newFixedAngle = null;
boolean currentFixedAngle = fixedAngle.isSelected();
if (currentFixedAngle != initialFixedAngle)
{
newFixedAngle = Boolean.valueOf(currentFixedAngle);
initialFixedAngle = currentFixedAngle;
}
Boolean newSlidable = null;
boolean currentSlidable = slidable.isSelected();
if (currentSlidable != initialSlidable)
{
newSlidable = Boolean.valueOf(currentSlidable);
initialSlidable = currentSlidable;
}
Integer newDirectional = null;
int currentDirectional = directionality.getSelectedIndex();
if (currentDirectional != initialDirectional)
{
newDirectional = new Integer(currentDirectional);
initialDirectional = currentDirectional;
}
Integer newExtended = null;
int currentExtend = extension.getSelectedIndex();
if (currentExtend != initialExtension)
{
newExtended = new Integer(currentExtend);
initialExtension = currentExtend;
}
Integer newNegated = null;
int currentNegated = negation.getSelectedIndex();
if (currentNegated != initialNegated)
{
newNegated = new Integer(currentNegated);
initialNegated = currentNegated;
}
Double newDWidth = null;
double currentWidth = TextUtils.atofDistance(width.getText(), shownArc.getParent().getTechnology());
if (!DBMath.doublesEqual(currentWidth, initialWidth))
{
newDWidth = new Double(currentWidth - initialWidth);
initialWidth = currentWidth;
}
new ChangeArc(shownArc, newName, newEasyToSelect, newRigid, newFixedAngle,
newSlidable, newDirectional, newExtended, newNegated, newDWidth);
attributesTable.applyChanges();
}//GEN-LAST:event_applyActionPerformed
private void okActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_okActionPerformed
{//GEN-HEADEREND:event_okActionPerformed
applyActionPerformed(evt);
closeDialog(null);
}//GEN-LAST:event_okActionPerformed
private void cancelActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelActionPerformed
{//GEN-HEADEREND:event_cancelActionPerformed
closeDialog(null);
}//GEN-LAST:event_cancelActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog
{
prefs.putBoolean("GetInfoArc-bigger", bigger);
super.closeDialog();
}//GEN-LAST:event_closeDialog
private static class ChangeArc extends Job
{
private ArcInst ai;
private String newName;
private Boolean newEasyToSelect, newRigid, newFixedAngle, newSlidable;
private Integer newDirectional, newExtended, newNegated;
private Double newDWidth;
protected ChangeArc(ArcInst ai, String newName, Boolean newEasyToSelect, Boolean newRigid, Boolean newFixedAngle,
Boolean newSlidable, Integer newDirectional, Integer newExtended, Integer newNegated, Double newDWidth)
{
super("Modify Arc", User.getUserTool(), Job.Type.CHANGE, null, null, Job.Priority.USER);
this.ai = ai;
this.newName = newName;
this.newEasyToSelect = newEasyToSelect;
this.newRigid = newRigid;
this.newFixedAngle = newFixedAngle;
this.newSlidable = newSlidable;
this.newDirectional = newDirectional;
this.newExtended = newExtended;
this.newNegated = newNegated;
this.newDWidth = newDWidth;
startJob();
}
public boolean doIt() throws JobException
{
boolean changed = false;
if (newName != null)
{
if (newName.length() == 0) newName = null;
ai.setName(newName);
changed = true;
}
if (newEasyToSelect != null)
{
ai.setHardSelect(!newEasyToSelect.booleanValue());
}
if (newRigid != null)
{
ai.setRigid(newRigid.booleanValue());
changed = true;
}
if (newFixedAngle != null)
{
ai.setFixedAngle(newFixedAngle.booleanValue());
changed = true;
}
if (newSlidable != null)
{
ai.setSlidable(newSlidable.booleanValue());
changed = true;
}
if (newDirectional != null)
{
switch (newDirectional.intValue())
{
case 0: ai.setBodyArrowed(false); ai.setHeadArrowed(false); ai.setTailArrowed(false); break;
case 1: ai.setBodyArrowed(true); ai.setHeadArrowed(true); ai.setTailArrowed(false); break;
case 2: ai.setBodyArrowed(true); ai.setHeadArrowed(false); ai.setTailArrowed(true); break;
case 3: ai.setBodyArrowed(true); ai.setHeadArrowed(false); ai.setTailArrowed(false); break;
case 4: ai.setBodyArrowed(true); ai.setHeadArrowed(true); ai.setTailArrowed(true); break;
}
changed = true;
}
if (newExtended != null)
{
switch (newExtended.intValue())
{
case 0: ai.setHeadExtended(true); ai.setTailExtended(true); break;
case 1: ai.setHeadExtended(false); ai.setTailExtended(false); break;
case 2: ai.setHeadExtended(true); ai.setTailExtended(false); break;
case 3: ai.setHeadExtended(false); ai.setTailExtended(true); break;
}
changed = true;
}
if (newNegated != null)
{
switch (newNegated.intValue())
{
case 0:
ai.setHeadNegated(false);
ai.setTailNegated(false);
break;
case 1:
ai.setHeadNegated(true);
ai.setTailNegated(false);
break;
case 2:
ai.setHeadNegated(false);
ai.setTailNegated(true);
break;
case 3:
ai.setHeadNegated(true);
ai.setTailNegated(true);
break;
}
changed = true;
}
if (newDWidth != null || changed)
{
if (newDWidth == null) newDWidth = new Double(0);
ai.setLambdaBaseWidth(ai.getLambdaBaseWidth() + newDWidth.doubleValue());
}
return true;
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel angle;
private javax.swing.JButton apply;
private javax.swing.JScrollPane attributesPane;
private javax.swing.JLabel busSize;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton cancel;
private javax.swing.JButton colorAndPattern;
private javax.swing.JComboBox directionality;
private javax.swing.JCheckBox easyToSelect;
private javax.swing.JComboBox extension;
private javax.swing.JCheckBox fixedAngle;
private javax.swing.JLabel headLoc;
private javax.swing.JLabel headNode;
private javax.swing.JButton headSee;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JLabel length;
private javax.swing.JButton moreLess;
private javax.swing.JTextField name;
private javax.swing.JButton nameProperties;
private javax.swing.JComboBox negation;
private javax.swing.JLabel network;
private javax.swing.JButton ok;
private javax.swing.JCheckBox rigid;
private javax.swing.JRadioButton seeAttributes;
private javax.swing.JRadioButton seeBusMembers;
private javax.swing.JCheckBox slidable;
private javax.swing.JLabel tailLoc;
private javax.swing.JLabel tailNode;
private javax.swing.JButton tailSee;
private javax.swing.JLabel type;
private javax.swing.JTextField width;
// End of variables declaration//GEN-END:variables
}