/* -*- tab-width: 4 -*-
 *
 * Electric(tm) VLSI Design System
 *
 * File: SunRouterTab.java
 *
 * Copyright (c) 2006, Static Free Software. 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.sun.electric.tool.user.dialogs.options;

import com.sun.electric.database.text.TextUtils;
import com.sun.electric.tool.routing.Routing;
import com.sun.electric.tool.user.dialogs.PreferencesFrame;

import javax.swing.JPanel;

/**
 * Class to handle the "SunRouter" tab of the Preferences dialog.
 */
public class SunRouterTab extends PreferencePanel
{
	/** Creates new form SunRouterTab */
	public SunRouterTab(PreferencesFrame parent, boolean modal)
	{
		super(parent, modal);
		initComponents();
	}

	/** return the panel to use for user preferences. */
	public JPanel getUserPreferencesPanel() { return sunRouter; }

	/** return the name of this preferences tab. */
	public String getName() { return "Sun Router"; }

	/**
	 * Method called at the start of the dialog.
	 * Caches current values and displays them in the Skill tab.
	 */
	public void init()
	{
		if (!Routing.hasSunRouter())
		{
			// global routing
			horizTileSize.setEnabled(false);
			vertTileSize.setEnabled(false);
			horizBitSize.setEnabled(false);
			vertBitSize.setEnabled(false);
			cutLineDeviation.setEnabled(false);
			verbosityCombo.setEnabled(false);

			// capacity
			pinFactor.setEnabled(false);
			oneTileFactor.setEnabled(false);
			windowSize.setEnabled(false);

			// ripup
			delta.setEnabled(false);
			overloadLimit.setEnabled(false);
			costLimit.setEnabled(false);

			// layer assignment
			tilesPerLongNet.setEnabled(false);
			tilesPerMedNet.setEnabled(false);
			layerAssignCapF.setEnabled(false);
			longNetLength.setEnabled(false);
			medNetLength.setEnabled(false);
			unassignedPinDensityF.setEnabled(false);

			// detail routing
			wireOffset.setEnabled(false);
			wireModulo.setEnabled(false);
			wireBlockageFactor.setEnabled(false);
			ripupMaximum.setEnabled(false);
			ripupPenalty.setEnabled(false);
			ripupExpansion.setEnabled(false);
			zRipupExpansion.setEnabled(false);
			ripupSearches.setEnabled(false);
			globalPathExpansion.setEnabled(false);
			sourceAccessExpansion.setEnabled(false);
			sinkAccessExpansion.setEnabled(false);
			denseViaAreaSize.setEnabled(false);
			retryExpandRouting.setEnabled(false);
			retryDenseViaAreaSize.setEnabled(false);
			pathSearchControl.setEnabled(false);
			sparseViaModulo.setEnabled(false);
			lowPathSearchCost.setEnabled(false);
			mediumPathSearchCost.setEnabled(false);
			highPathSearchCost.setEnabled(false);
			takenPathSearchCost.setEnabled(false);
		} else
		{
			// global routing
			horizTileSize.setText("" + Routing.getSunRouterXTileSize());
			vertTileSize.setText("" + Routing.getSunRouterYTileSize());
			horizBitSize.setText("" + Routing.getSunRouterXBitSize());
			vertBitSize.setText("" + Routing.getSunRouterYBitSize());
			cutLineDeviation.setText("" + Routing.getSunRouterCutlineDeviation());
			verbosityCombo.setSelectedIndex(Routing.getSunRouterVerboseLevel());

			// capacity
			pinFactor.setText("" + Routing.getSunRouterPinFactor());
			oneTileFactor.setText("" + Routing.getSunRouterOneTileFactor());
			windowSize.setText("" + Routing.getSunRouterWindow());

			// ripup
			delta.setText(TextUtils.formatDistance(Routing.getSunRouterDelta()));
			overloadLimit.setText("" + Routing.getSunRouterOverloadLimit());
			costLimit.setText("" + Routing.getSunRouterCostLimit());

			// layer assignment
			tilesPerLongNet.setText("" + Routing.getSunRouterTilesPerPinLongNet());
			tilesPerMedNet.setText("" + Routing.getSunRouterTilesPerPinMedNet());
			layerAssignCapF.setText("" + Routing.getSunRouterLayerAssgnCapF());
			longNetLength.setText(TextUtils.formatDistance(Routing.getSunRouterLengthLongNet()));
			medNetLength.setText(TextUtils.formatDistance(Routing.getSunRouterLengthMedNet()));
			unassignedPinDensityF.setText("" + Routing.getSunRouterUPinDensityF());

			// detail routing
			wireOffset.setText("" + Routing.getSunRouterWireOffset());
			wireModulo.setText("" + Routing.getSunRouterWireModulo());
			wireBlockageFactor.setText("" + Routing.getSunRouterWireBlockageFactor());
			ripupMaximum.setText("" + Routing.getSunRouterRipUpMaximum());
			ripupPenalty.setText("" + Routing.getSunRouterRipUpPenalty());
			ripupExpansion.setText("" + Routing.getSunRouterRipUpExpansion());
			zRipupExpansion.setText("" + Routing.getSunRouterZRipUpExpansion());
			ripupSearches.setText("" + Routing.getSunRouterRipUpSearches());
			globalPathExpansion.setText("" + Routing.getSunRouterGlobalPathExpansion());
			sourceAccessExpansion.setText("" + Routing.getSunRouterSourceAccessExpansion());
			sinkAccessExpansion.setText("" + Routing.getSunRouterSinkAccessExpansion());
			denseViaAreaSize.setText("" + Routing.getSunRouterDenseViaAreaSize());
			retryExpandRouting.setText("" + Routing.getSunRouterRetryExpandRouting());
			retryDenseViaAreaSize.setText("" + Routing.getSunRouterRetryDenseViaAreaSize());
			pathSearchControl.setText("" + Routing.getSunRouterPathSearchControl());
			sparseViaModulo.setText("" + Routing.getSunRouterSparseViaModulo());
			lowPathSearchCost.setText("" + Routing.getSunRouterLowPathSearchCost());
			mediumPathSearchCost.setText("" + Routing.getSunRouterMediumPathSearchCost());
			highPathSearchCost.setText("" + Routing.getSunRouterHighPathSearchCost());
			takenPathSearchCost.setText("" + Routing.getSunRouterTakenPathSearchCost());
		}
	}

	/**
	 * Method called when the "OK" panel is hit.
	 * Updates any changed fields in the Skill tab.
	 */
	public void term()
	{
		double newDValue;
		int newIValue;

		// global routing
		newIValue = TextUtils.atoi(horizTileSize.getText());
		if (newIValue != Routing.getSunRouterXTileSize()) Routing.setSunRouterXTileSize(newIValue);
		newIValue = TextUtils.atoi(vertTileSize.getText());
		if (newIValue != Routing.getSunRouterYTileSize()) Routing.setSunRouterYTileSize(newIValue);
		newIValue = TextUtils.atoi(horizBitSize.getText());
		if (newIValue != Routing.getSunRouterXBitSize()) Routing.setSunRouterXBitSize(newIValue);
		newIValue = TextUtils.atoi(vertBitSize.getText());
		if (newIValue != Routing.getSunRouterYBitSize()) Routing.setSunRouterYBitSize(newIValue);
		newDValue = TextUtils.atof(cutLineDeviation.getText());
		if (newDValue != Routing.getSunRouterCutlineDeviation()) Routing.setSunRouterCutlineDeviation(newDValue);
		newIValue = verbosityCombo.getSelectedIndex();
		if (newIValue != Routing.getSunRouterVerboseLevel()) Routing.setSunRouterVerboseLevel(newIValue);

		// capacity
		newIValue = TextUtils.atoi(pinFactor.getText());
		if (newIValue != Routing.getSunRouterPinFactor()) Routing.setSunRouterPinFactor(newIValue);
		newDValue = TextUtils.atof(oneTileFactor.getText());
		if (newDValue != Routing.getSunRouterOneTileFactor()) Routing.setSunRouterOneTileFactor(newDValue);
		newIValue = TextUtils.atoi(windowSize.getText());
		if (newIValue != Routing.getSunRouterWindow()) Routing.setSunRouterWindow(newIValue);

		// ripup
		newDValue = TextUtils.atofDistance(delta.getText());
		if (newDValue != Routing.getSunRouterDelta()) Routing.setSunRouterDelta(newDValue);
		newIValue = TextUtils.atoi(overloadLimit.getText());
		if (newIValue != Routing.getSunRouterOneTileFactor()) Routing.setSunRouterOverloadLimit(newIValue);
		newDValue = TextUtils.atof(costLimit.getText());
		if (newDValue != Routing.getSunRouterCostLimit()) Routing.setSunRouterCostLimit(newDValue);

		// layer assignment
		newDValue = TextUtils.atof(tilesPerLongNet.getText());
		if (newDValue != Routing.getSunRouterTilesPerPinLongNet()) Routing.setSunRouterTilesPerPinLongNet(newDValue);
		newDValue = TextUtils.atof(tilesPerMedNet.getText());
		if (newDValue != Routing.getSunRouterTilesPerPinMedNet()) Routing.setSunRouterTilesPerPinMedNet(newDValue);
		newDValue = TextUtils.atof(layerAssignCapF.getText());
		if (newDValue != Routing.getSunRouterLayerAssgnCapF()) Routing.setSunRouterLayerAssgnCapF(newDValue);
		newDValue = TextUtils.atofDistance(longNetLength.getText());
		if (newDValue != Routing.getSunRouterLengthLongNet()) Routing.setSunRouterLengthLongNet(newDValue);
		newDValue = TextUtils.atofDistance(medNetLength.getText());
		if (newDValue != Routing.getSunRouterLengthMedNet()) Routing.setSunRouterLengthMedNet(newDValue);
		newIValue = TextUtils.atoi(overloadLimit.getText());
		if (newIValue != Routing.getSunRouterOverloadLimit()) Routing.setSunRouterOverloadLimit(newIValue);
		newDValue = TextUtils.atof(unassignedPinDensityF.getText());
		if (newDValue != Routing.getSunRouterUPinDensityF()) Routing.setSunRouterUPinDensityF(newDValue);

		// detail routing
		newIValue = TextUtils.atoi(wireOffset.getText());
		if (newIValue != Routing.getSunRouterWireOffset()) Routing.setSunRouterWireOffset(newIValue);
		newIValue = TextUtils.atoi(wireModulo.getText());
		if (newIValue != Routing.getSunRouterWireModulo()) Routing.setSunRouterWireModulo(newIValue);
		newDValue = TextUtils.atof(wireBlockageFactor.getText());
		if (newDValue != Routing.getSunRouterWireBlockageFactor()) Routing.setSunRouterWireBlockageFactor(newDValue);
		newIValue = TextUtils.atoi(ripupMaximum.getText());
		if (newIValue != Routing.getSunRouterRipUpMaximum()) Routing.setSunRouterRipUpMaximum(newIValue);
		newIValue = TextUtils.atoi(ripupPenalty.getText());
		if (newIValue != Routing.getSunRouterRipUpPenalty()) Routing.setSunRouterRipUpPenalty(newIValue);
		newIValue = TextUtils.atoi(ripupExpansion.getText());
		if (newIValue != Routing.getSunRouterRipUpExpansion()) Routing.setSunRouterRipUpExpansion(newIValue);
		newIValue = TextUtils.atoi(zRipupExpansion.getText());
		if (newIValue != Routing.getSunRouterZRipUpExpansion()) Routing.setSunRouterZRipUpExpansion(newIValue);
		newIValue = TextUtils.atoi(ripupSearches.getText());
		if (newIValue != Routing.getSunRouterRipUpSearches()) Routing.setSunRouterRipUpSearches(newIValue);
		newIValue = TextUtils.atoi(globalPathExpansion.getText());
		if (newIValue != Routing.getSunRouterGlobalPathExpansion()) Routing.setSunRouterGlobalPathExpansion(newIValue);
		newIValue = TextUtils.atoi(sourceAccessExpansion.getText());
		if (newIValue != Routing.getSunRouterSourceAccessExpansion()) Routing.setSunRouterSourceAccessExpansion(newIValue);
		newIValue = TextUtils.atoi(sinkAccessExpansion.getText());
		if (newIValue != Routing.getSunRouterSinkAccessExpansion()) Routing.setSunRouterSinkAccessExpansion(newIValue);
		newIValue = TextUtils.atoi(denseViaAreaSize.getText());
		if (newIValue != Routing.getSunRouterDenseViaAreaSize()) Routing.setSunRouterDenseViaAreaSize(newIValue);
		newIValue = TextUtils.atoi(retryExpandRouting.getText());
		if (newIValue != Routing.getSunRouterRetryExpandRouting()) Routing.setSunRouterRetryExpandRouting(newIValue);
		newIValue = TextUtils.atoi(retryDenseViaAreaSize.getText());
		if (newIValue != Routing.getSunRouterRetryDenseViaAreaSize()) Routing.setSunRouterRetryDenseViaAreaSize(newIValue);
		newIValue = TextUtils.atoi(pathSearchControl.getText());
		if (newIValue != Routing.getSunRouterPathSearchControl()) Routing.setSunRouterPathSearchControl(newIValue);
		newIValue = TextUtils.atoi(sparseViaModulo.getText());
		if (newIValue != Routing.getSunRouterSparseViaModulo()) Routing.setSunRouterSparseViaModulo(newIValue);
		newIValue = TextUtils.atoi(lowPathSearchCost.getText());
		if (newIValue != Routing.getSunRouterLowPathSearchCost()) Routing.setSunRouterLowPathSearchCost(newIValue);
		newIValue = TextUtils.atoi(mediumPathSearchCost.getText());
		if (newIValue != Routing.getSunRouterMediumPathSearchCost()) Routing.setSunRouterMediumPathSearchCost(newIValue);
		newIValue = TextUtils.atoi(highPathSearchCost.getText());
		if (newIValue != Routing.getSunRouterHighPathSearchCost()) Routing.setSunRouterHighPathSearchCost(newIValue);
		newIValue = TextUtils.atoi(takenPathSearchCost.getText());
		if (newIValue != Routing.getSunRouterTakenPathSearchCost()) Routing.setSunRouterTakenPathSearchCost(newIValue);
	}

	/**
	 * Method called when the factory reset is requested.
	 */
	public void reset()
	{
		// global routing
		if (Routing.getFactorySunRouterXTileSize() != Routing.getSunRouterXTileSize())
			Routing.setSunRouterXTileSize(Routing.getFactorySunRouterXTileSize());
		if (Routing.getFactorySunRouterYTileSize() != Routing.getSunRouterYTileSize())
			Routing.setSunRouterYTileSize(Routing.getFactorySunRouterYTileSize());
		if (Routing.getFactorySunRouterXBitSize() != Routing.getSunRouterXBitSize())
			Routing.setSunRouterXBitSize(Routing.getFactorySunRouterXBitSize());
		if (Routing.getFactorySunRouterYBitSize() != Routing.getSunRouterYBitSize())
			Routing.setSunRouterYBitSize(Routing.getFactorySunRouterYBitSize());
		if (Routing.getFactorySunRouterCutlineDeviation() != Routing.getSunRouterCutlineDeviation())
			Routing.setSunRouterCutlineDeviation(Routing.getFactorySunRouterCutlineDeviation());
		if (Routing.getFactorySunRouterVerboseLevel() != Routing.getSunRouterVerboseLevel())
			Routing.setSunRouterVerboseLevel(Routing.getFactorySunRouterVerboseLevel());

		// capacity
		if (Routing.getFactorySunRouterPinFactor() != Routing.getSunRouterPinFactor())
			Routing.setSunRouterPinFactor(Routing.getFactorySunRouterPinFactor());
		if (Routing.getFactorySunRouterOneTileFactor() != Routing.getSunRouterOneTileFactor())
			Routing.setSunRouterOneTileFactor(Routing.getFactorySunRouterOneTileFactor());
		if (Routing.getFactorySunRouterWindow() != Routing.getSunRouterWindow())
			Routing.setSunRouterWindow(Routing.getFactorySunRouterWindow());

		// ripup
		if (Routing.getFactorySunRouterDelta() != Routing.getSunRouterDelta())
			Routing.setSunRouterDelta(Routing.getFactorySunRouterDelta());
		if (Routing.getFactorySunRouterOverloadLimit() != Routing.getSunRouterOverloadLimit())
			Routing.setSunRouterOverloadLimit(Routing.getFactorySunRouterOverloadLimit());
		if (Routing.getFactorySunRouterCostLimit() != Routing.getSunRouterCostLimit())
			Routing.setSunRouterCostLimit(Routing.getFactorySunRouterCostLimit());

		// layer assignment
		if (Routing.getFactorySunRouterTilesPerPinLongNet() != Routing.getSunRouterTilesPerPinLongNet())
			Routing.setSunRouterTilesPerPinLongNet(Routing.getFactorySunRouterTilesPerPinLongNet());
		if (Routing.getFactorySunRouterTilesPerPinMedNet() != Routing.getSunRouterTilesPerPinMedNet())
			Routing.setSunRouterTilesPerPinMedNet(Routing.getFactorySunRouterTilesPerPinMedNet());
		if (Routing.getFactorySunRouterLayerAssgnCapF() != Routing.getSunRouterLayerAssgnCapF())
			Routing.setSunRouterLayerAssgnCapF(Routing.getFactorySunRouterLayerAssgnCapF());
		if (Routing.getFactorySunRouterLengthLongNet() != Routing.getSunRouterLengthLongNet())
			Routing.setSunRouterLengthLongNet(Routing.getFactorySunRouterLengthLongNet());
		if (Routing.getFactorySunRouterLengthMedNet() != Routing.getSunRouterLengthMedNet())
			Routing.setSunRouterLengthMedNet(Routing.getFactorySunRouterLengthMedNet());
		if (Routing.getFactorySunRouterUPinDensityF() != Routing.getSunRouterUPinDensityF())
			Routing.setSunRouterUPinDensityF(Routing.getFactorySunRouterUPinDensityF());

		// detail routing
		if (Routing.getFactorySunRouterWireOffset() != Routing.getSunRouterWireOffset())
			Routing.setSunRouterWireOffset(Routing.getFactorySunRouterWireOffset());
		if (Routing.getFactorySunRouterWireModulo() != Routing.getSunRouterWireModulo())
			Routing.setSunRouterWireModulo(Routing.getFactorySunRouterWireModulo());
		if (Routing.getFactorySunRouterWireBlockageFactor() != Routing.getSunRouterWireBlockageFactor())
			Routing.setSunRouterWireBlockageFactor(Routing.getFactorySunRouterWireBlockageFactor());
		if (Routing.getFactorySunRouterRipUpMaximum() != Routing.getSunRouterRipUpMaximum())
			Routing.setSunRouterRipUpMaximum(Routing.getFactorySunRouterRipUpMaximum());
		if (Routing.getFactorySunRouterRipUpPenalty() != Routing.getSunRouterRipUpPenalty())
			Routing.setSunRouterRipUpPenalty(Routing.getFactorySunRouterRipUpPenalty());
		if (Routing.getFactorySunRouterRipUpExpansion() != Routing.getSunRouterRipUpExpansion())
			Routing.setSunRouterRipUpExpansion(Routing.getFactorySunRouterRipUpExpansion());
		if (Routing.getFactorySunRouterZRipUpExpansion() != Routing.getSunRouterZRipUpExpansion())
			Routing.setSunRouterZRipUpExpansion(Routing.getFactorySunRouterZRipUpExpansion());
		if (Routing.getFactorySunRouterRipUpSearches() != Routing.getSunRouterRipUpSearches())
			Routing.setSunRouterRipUpSearches(Routing.getFactorySunRouterRipUpSearches());
		if (Routing.getFactorySunRouterGlobalPathExpansion() != Routing.getSunRouterGlobalPathExpansion())
			Routing.setSunRouterGlobalPathExpansion(Routing.getFactorySunRouterGlobalPathExpansion());
		if (Routing.getFactorySunRouterSourceAccessExpansion() != Routing.getSunRouterSourceAccessExpansion())
			Routing.setSunRouterSourceAccessExpansion(Routing.getFactorySunRouterSourceAccessExpansion());
		if (Routing.getFactorySunRouterSinkAccessExpansion() != Routing.getSunRouterSinkAccessExpansion())
			Routing.setSunRouterSinkAccessExpansion(Routing.getFactorySunRouterSinkAccessExpansion());
		if (Routing.getFactorySunRouterDenseViaAreaSize() != Routing.getSunRouterDenseViaAreaSize())
			Routing.setSunRouterDenseViaAreaSize(Routing.getFactorySunRouterDenseViaAreaSize());
		if (Routing.getFactorySunRouterRetryExpandRouting() != Routing.getSunRouterRetryExpandRouting())
			Routing.setSunRouterRetryExpandRouting(Routing.getFactorySunRouterRetryExpandRouting());
		if (Routing.getFactorySunRouterRetryDenseViaAreaSize() != Routing.getSunRouterRetryDenseViaAreaSize())
			Routing.setSunRouterRetryDenseViaAreaSize(Routing.getFactorySunRouterRetryDenseViaAreaSize());
		if (Routing.getFactorySunRouterPathSearchControl() != Routing.getSunRouterPathSearchControl())
			Routing.setSunRouterPathSearchControl(Routing.getFactorySunRouterPathSearchControl());
		if (Routing.getFactorySunRouterSparseViaModulo() != Routing.getSunRouterSparseViaModulo())
			Routing.setSunRouterSparseViaModulo(Routing.getFactorySunRouterSparseViaModulo());
		if (Routing.getFactorySunRouterLowPathSearchCost() != Routing.getSunRouterLowPathSearchCost())
			Routing.setSunRouterLowPathSearchCost(Routing.getFactorySunRouterLowPathSearchCost());
		if (Routing.getFactorySunRouterMediumPathSearchCost() != Routing.getSunRouterMediumPathSearchCost())
			Routing.setSunRouterMediumPathSearchCost(Routing.getFactorySunRouterMediumPathSearchCost());
		if (Routing.getFactorySunRouterHighPathSearchCost() != Routing.getSunRouterHighPathSearchCost())
			Routing.setSunRouterHighPathSearchCost(Routing.getFactorySunRouterHighPathSearchCost());
		if (Routing.getFactorySunRouterTakenPathSearchCost() != Routing.getSunRouterTakenPathSearchCost())
			Routing.setSunRouterTakenPathSearchCost(Routing.getFactorySunRouterTakenPathSearchCost());
	}

	/** 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;

        sunRouter = new javax.swing.JPanel();
        globalPanel = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        horizTileSize = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        vertTileSize = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        horizBitSize = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        vertBitSize = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        cutLineDeviation = new javax.swing.JTextField();
        verbosityCombo = new javax.swing.JComboBox();
        jLabel18 = new javax.swing.JLabel();
        capacityPanel = new javax.swing.JPanel();
        jLabel11 = new javax.swing.JLabel();
        pinFactor = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        oneTileFactor = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        windowSize = new javax.swing.JTextField();
        ripUpPanel = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        delta = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        overloadLimit = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        costLimit = new javax.swing.JTextField();
        layerAssignPanel = new javax.swing.JPanel();
        jLabel8 = new javax.swing.JLabel();
        layerAssignCapF = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        unassignedPinDensityF = new javax.swing.JTextField();
        jLabel14 = new javax.swing.JLabel();
        tilesPerLongNet = new javax.swing.JTextField();
        jLabel15 = new javax.swing.JLabel();
        tilesPerMedNet = new javax.swing.JTextField();
        jLabel16 = new javax.swing.JLabel();
        longNetLength = new javax.swing.JTextField();
        jLabel17 = new javax.swing.JLabel();
        medNetLength = new javax.swing.JTextField();
        detailPanel = new javax.swing.JPanel();
        jLabel19 = new javax.swing.JLabel();
        wireOffset = new javax.swing.JTextField();
        jLabel20 = new javax.swing.JLabel();
        wireModulo = new javax.swing.JTextField();
        jLabel21 = new javax.swing.JLabel();
        wireBlockageFactor = new javax.swing.JTextField();
        jLabel22 = new javax.swing.JLabel();
        ripupMaximum = new javax.swing.JTextField();
        jLabel23 = new javax.swing.JLabel();
        ripupPenalty = new javax.swing.JTextField();
        jLabel24 = new javax.swing.JLabel();
        ripupExpansion = new javax.swing.JTextField();
        jLabel25 = new javax.swing.JLabel();
        zRipupExpansion = new javax.swing.JTextField();
        jLabel26 = new javax.swing.JLabel();
        ripupSearches = new javax.swing.JTextField();
        jLabel27 = new javax.swing.JLabel();
        globalPathExpansion = new javax.swing.JTextField();
        jLabel28 = new javax.swing.JLabel();
        sourceAccessExpansion = new javax.swing.JTextField();
        jLabel29 = new javax.swing.JLabel();
        sinkAccessExpansion = new javax.swing.JTextField();
        jLabel30 = new javax.swing.JLabel();
        denseViaAreaSize = new javax.swing.JTextField();
        jLabel31 = new javax.swing.JLabel();
        retryExpandRouting = new javax.swing.JTextField();
        jLabel32 = new javax.swing.JLabel();
        retryDenseViaAreaSize = new javax.swing.JTextField();
        jLabel33 = new javax.swing.JLabel();
        pathSearchControl = new javax.swing.JTextField();
        jLabel34 = new javax.swing.JLabel();
        sparseViaModulo = new javax.swing.JTextField();
        jLabel35 = new javax.swing.JLabel();
        lowPathSearchCost = new javax.swing.JTextField();
        jLabel36 = new javax.swing.JLabel();
        mediumPathSearchCost = new javax.swing.JTextField();
        jLabel37 = new javax.swing.JLabel();
        highPathSearchCost = new javax.swing.JTextField();
        jLabel38 = new javax.swing.JLabel();
        takenPathSearchCost = new javax.swing.JTextField();

        getContentPane().setLayout(new java.awt.GridBagLayout());

        setTitle("IO Options");
        setName("");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        sunRouter.setLayout(new java.awt.GridBagLayout());

        globalPanel.setLayout(new java.awt.GridBagLayout());

        globalPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Global Routing Parameters"));
        jLabel1.setText("Horizontal tile size:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(jLabel1, gridBagConstraints);

        horizTileSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(horizTileSize, gridBagConstraints);

        jLabel2.setText("Vertical tile size:");
        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);
        globalPanel.add(jLabel2, gridBagConstraints);

        vertTileSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(vertTileSize, gridBagConstraints);

        jLabel3.setText("Horizontal bit size:");
        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, 2, 4);
        globalPanel.add(jLabel3, gridBagConstraints);

        horizBitSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(horizBitSize, gridBagConstraints);

        jLabel4.setText("Vertical bit size:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(jLabel4, gridBagConstraints);

        vertBitSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(vertBitSize, gridBagConstraints);

        jLabel13.setText("Cut line deviation:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(jLabel13, gridBagConstraints);

        cutLineDeviation.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(cutLineDeviation, gridBagConstraints);

        verbosityCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Silent", "Quiet", "Normal", "Verbose" }));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(verbosityCombo, gridBagConstraints);

        jLabel18.setText("Verbosity:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        globalPanel.add(jLabel18, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        sunRouter.add(globalPanel, gridBagConstraints);

        capacityPanel.setLayout(new java.awt.GridBagLayout());

        capacityPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Capacity Calculations"));
        jLabel11.setText("Pin Factor");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        capacityPanel.add(jLabel11, gridBagConstraints);

        pinFactor.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        capacityPanel.add(pinFactor, gridBagConstraints);

        jLabel12.setText("One-tile factor:");
        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);
        capacityPanel.add(jLabel12, gridBagConstraints);

        oneTileFactor.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        capacityPanel.add(oneTileFactor, gridBagConstraints);

        jLabel5.setText("Window size:");
        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, 2, 4);
        capacityPanel.add(jLabel5, gridBagConstraints);

        windowSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        capacityPanel.add(windowSize, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        sunRouter.add(capacityPanel, gridBagConstraints);

        ripUpPanel.setLayout(new java.awt.GridBagLayout());

        ripUpPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Rip-Up & Reroute"));
        jLabel6.setText("Delta:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        ripUpPanel.add(jLabel6, gridBagConstraints);

        delta.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        ripUpPanel.add(delta, gridBagConstraints);

        jLabel9.setText("Overload limit:");
        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);
        ripUpPanel.add(jLabel9, gridBagConstraints);

        overloadLimit.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        ripUpPanel.add(overloadLimit, gridBagConstraints);

        jLabel10.setText("Cost limit:");
        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, 2, 4);
        ripUpPanel.add(jLabel10, gridBagConstraints);

        costLimit.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        ripUpPanel.add(costLimit, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        sunRouter.add(ripUpPanel, gridBagConstraints);

        layerAssignPanel.setLayout(new java.awt.GridBagLayout());

        layerAssignPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Layer Assignment"));
        jLabel8.setText("Layer assignment capacity factor:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(jLabel8, gridBagConstraints);

        layerAssignCapF.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(layerAssignCapF, gridBagConstraints);

        jLabel7.setText("Unassigned pin density factor:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(jLabel7, gridBagConstraints);

        unassignedPinDensityF.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(unassignedPinDensityF, gridBagConstraints);

        jLabel14.setText("Tiles per long net:");
        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);
        layerAssignPanel.add(jLabel14, gridBagConstraints);

        tilesPerLongNet.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(tilesPerLongNet, gridBagConstraints);

        jLabel15.setText("Tiles per medium net:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(jLabel15, gridBagConstraints);

        tilesPerMedNet.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(tilesPerMedNet, gridBagConstraints);

        jLabel16.setText("Long net length (nm):");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(jLabel16, gridBagConstraints);

        longNetLength.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(longNetLength, gridBagConstraints);

        jLabel17.setText("Medium net length (nm):");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(jLabel17, gridBagConstraints);

        medNetLength.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        layerAssignPanel.add(medNetLength, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        sunRouter.add(layerAssignPanel, gridBagConstraints);

        detailPanel.setLayout(new java.awt.GridBagLayout());

        detailPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Detail Routing Parameters"));
        jLabel19.setText("Wire Offset:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel19, gridBagConstraints);

        wireOffset.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(wireOffset, gridBagConstraints);

        jLabel20.setText("Wire Modulo:");
        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);
        detailPanel.add(jLabel20, gridBagConstraints);

        wireModulo.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(wireModulo, gridBagConstraints);

        jLabel21.setText("Wire Blockage Factor:");
        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, 2, 4);
        detailPanel.add(jLabel21, gridBagConstraints);

        wireBlockageFactor.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(wireBlockageFactor, gridBagConstraints);

        jLabel22.setText("RipUp Maximum:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel22, gridBagConstraints);

        ripupMaximum.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(ripupMaximum, gridBagConstraints);

        jLabel23.setText("RipUp Penalty:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel23, gridBagConstraints);

        ripupPenalty.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(ripupPenalty, gridBagConstraints);

        jLabel24.setText("RipUp Expansion:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel24, gridBagConstraints);

        ripupExpansion.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(ripupExpansion, gridBagConstraints);

        jLabel25.setText("Z RipUp Expansion:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel25, gridBagConstraints);

        zRipupExpansion.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(zRipupExpansion, gridBagConstraints);

        jLabel26.setText("RipUp Searches:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel26, gridBagConstraints);

        ripupSearches.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(ripupSearches, gridBagConstraints);

        jLabel27.setText("Global Path Expansion:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel27, gridBagConstraints);

        globalPathExpansion.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(globalPathExpansion, gridBagConstraints);

        jLabel28.setText("Source Access Expansion:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel28, gridBagConstraints);

        sourceAccessExpansion.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(sourceAccessExpansion, gridBagConstraints);

        jLabel29.setText("Sink Access Expansion:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel29, gridBagConstraints);

        sinkAccessExpansion.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(sinkAccessExpansion, gridBagConstraints);

        jLabel30.setText("Dense Via Area Size:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 11;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel30, gridBagConstraints);

        denseViaAreaSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 11;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(denseViaAreaSize, gridBagConstraints);

        jLabel31.setText("Retry Expand Routing:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 12;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel31, gridBagConstraints);

        retryExpandRouting.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 12;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(retryExpandRouting, gridBagConstraints);

        jLabel32.setText("Retry Dense Via Area Size:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 13;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel32, gridBagConstraints);

        retryDenseViaAreaSize.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 13;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(retryDenseViaAreaSize, gridBagConstraints);

        jLabel33.setText("Path Search Control:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel33, gridBagConstraints);

        pathSearchControl.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(pathSearchControl, gridBagConstraints);

        jLabel34.setText("Sparse Via Modulo:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 15;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel34, gridBagConstraints);

        sparseViaModulo.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 15;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(sparseViaModulo, gridBagConstraints);

        jLabel35.setText("Low Path Search Cost:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel35, gridBagConstraints);

        lowPathSearchCost.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(lowPathSearchCost, gridBagConstraints);

        jLabel36.setText("Medium Path Search Cost:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 17;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel36, gridBagConstraints);

        mediumPathSearchCost.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 17;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(mediumPathSearchCost, gridBagConstraints);

        jLabel37.setText("High Path Search Cost:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 18;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel37, gridBagConstraints);

        highPathSearchCost.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 18;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(highPathSearchCost, gridBagConstraints);

        jLabel38.setText("Taken Path Search Cost:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 19;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(jLabel38, gridBagConstraints);

        takenPathSearchCost.setColumns(8);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 19;
        gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 4);
        detailPanel.add(takenPathSearchCost, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridheight = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
        sunRouter.add(detailPanel, gridBagConstraints);

        getContentPane().add(sunRouter, new java.awt.GridBagConstraints());

        pack();
    }// </editor-fold>//GEN-END:initComponents

	/** Closes the dialog */
	private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog
	{
		setVisible(false);
		dispose();
	}//GEN-LAST:event_closeDialog

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel capacityPanel;
    private javax.swing.JTextField costLimit;
    private javax.swing.JTextField cutLineDeviation;
    private javax.swing.JTextField delta;
    private javax.swing.JTextField denseViaAreaSize;
    private javax.swing.JPanel detailPanel;
    private javax.swing.JPanel globalPanel;
    private javax.swing.JTextField globalPathExpansion;
    private javax.swing.JTextField highPathSearchCost;
    private javax.swing.JTextField horizBitSize;
    private javax.swing.JTextField horizTileSize;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel30;
    private javax.swing.JLabel jLabel31;
    private javax.swing.JLabel jLabel32;
    private javax.swing.JLabel jLabel33;
    private javax.swing.JLabel jLabel34;
    private javax.swing.JLabel jLabel35;
    private javax.swing.JLabel jLabel36;
    private javax.swing.JLabel jLabel37;
    private javax.swing.JLabel jLabel38;
    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.JTextField layerAssignCapF;
    private javax.swing.JPanel layerAssignPanel;
    private javax.swing.JTextField longNetLength;
    private javax.swing.JTextField lowPathSearchCost;
    private javax.swing.JTextField medNetLength;
    private javax.swing.JTextField mediumPathSearchCost;
    private javax.swing.JTextField oneTileFactor;
    private javax.swing.JTextField overloadLimit;
    private javax.swing.JTextField pathSearchControl;
    private javax.swing.JTextField pinFactor;
    private javax.swing.JTextField retryDenseViaAreaSize;
    private javax.swing.JTextField retryExpandRouting;
    private javax.swing.JPanel ripUpPanel;
    private javax.swing.JTextField ripupExpansion;
    private javax.swing.JTextField ripupMaximum;
    private javax.swing.JTextField ripupPenalty;
    private javax.swing.JTextField ripupSearches;
    private javax.swing.JTextField sinkAccessExpansion;
    private javax.swing.JTextField sourceAccessExpansion;
    private javax.swing.JTextField sparseViaModulo;
    private javax.swing.JPanel sunRouter;
    private javax.swing.JTextField takenPathSearchCost;
    private javax.swing.JTextField tilesPerLongNet;
    private javax.swing.JTextField tilesPerMedNet;
    private javax.swing.JTextField unassignedPinDensityF;
    private javax.swing.JComboBox verbosityCombo;
    private javax.swing.JTextField vertBitSize;
    private javax.swing.JTextField vertTileSize;
    private javax.swing.JTextField windowSize;
    private javax.swing.JTextField wireBlockageFactor;
    private javax.swing.JTextField wireModulo;
    private javax.swing.JTextField wireOffset;
    private javax.swing.JTextField zRipupExpansion;
    // End of variables declaration//GEN-END:variables
}
