private void jbInit() throws Exception {
		this.contentPane = (JPanel) this.getContentPane();
		this.contentPane.setLayout(this.gridBagLayout2);

		this.setDefaultCloseOperation(0);
		this.setJMenuBar(this.menuBar);

		this.setSize(new Dimension(759, 548));
		this.setTitle("State Table Editor");

		JComboBox<String> inPinBox = new JComboBox<String>();
		inPinBox.addItem("0");
		JComboBox<String> outPinBox = new JComboBox<String>();
		JComboBox<String> stateBox = new JComboBox<String>();
		for (int i = 0; i < OUT_STATE_MAX; i++) {
			if (i < IN_MAX) {
				inPinBox.addItem(String.valueOf(i + 1));
			}
			outPinBox.addItem(String.valueOf(i + 1));
			stateBox.addItem(String.valueOf(i + 1));
		}

		JOptionPane.showOptionDialog(this, "Please state the number of input pins, output pins\nand states required\n ", "State Table Editor", 2, 3, null, new Object[] { new JLabel("Input Pins"), inPinBox, new JLabel("OutputPins"), outPinBox, new JLabel("States"), stateBox, "Continue" }, "1");

		this.inPinNumber = Integer.parseInt((String) inPinBox.getSelectedItem());
		this.outPinNumber = Integer.parseInt((String) outPinBox.getSelectedItem());
		this.stateNumber = Integer.parseInt((String) stateBox.getSelectedItem());

		this.stateTable = new StateTable(this.inPinNumber, this.outPinNumber, this.stateNumber);

		String[] states = new String[this.stateNumber];
		for (int i = 0; i < this.stateNumber; i++) {
			states[i] = Integer.toString(i);
		}
		this.lstStarting.setListData(states);
		this.lstStarting.setBorder(null);
		this.lstStarting.setSelectedIndex(0);
		this.lstStarting.setSelectionMode(0);

		this.tableFrame.setBorder(BorderFactory.createLoweredBevelBorder());
		this.statusBar.setBorder(BorderFactory.createLoweredBevelBorder());
		this.statusBar.setLayout(this.borderLayout1);
		this.lblStatusBar.setText("Click on output pin cells to toggle values. Double-click column headers to change pin labels.");

		this.jPanel1.setBorder(BorderFactory.createLoweredBevelBorder());
		this.jPanel1.setLayout(this.gridBagLayout1);
		this.lblStarting.setHorizontalAlignment(0);
		this.lblStarting.setText("Starting State");
		this.lblStarting2.setFont(new Font("Dialog", 0, 12));
		this.lblStarting2.setText("Please select the");
		this.lblStarting3.setText("initial state in");
		this.lblStarting3.setFont(new Font("Dialog", 0, 12));
		this.lblStarting4.setText("which the chip will");
		this.lblStarting4.setFont(new Font("Dialog", 0, 12));
		this.lblStarting4.setToolTipText("");
		this.lblStarting5.setText("start on power-up");
		this.lblStarting5.setFont(new Font("Dialog", 0, 12));
		this.scrStarting.setBorder(BorderFactory.createLoweredBevelBorder());
		this.contentPane.add(this.tableFrame, new GridBagConstraints(0, 0, 1, 1, 1.0D, 1.0D, 10, 1, new Insets(8, 5, 0, 0), 563, 371));

		this.tableFrame.getViewport().add(this.stateTable, null);
		this.contentPane.add(this.propertiesPanel, new GridBagConstraints(0, 1, 2, 1, 1.0D, 0.0D, 10, 1, new Insets(6, 5, 0, 12), 741, 99));

		this.contentPane.add(this.statusBar, new GridBagConstraints(0, 2, 2, 1, 1.0D, 0.0D, 10, 1, new Insets(0, 5, 11, 12), 156, 2));

		this.statusBar.add(this.lblStatusBar, "Center");
		this.contentPane.add(this.jPanel1, new GridBagConstraints(1, 0, 1, 1, 0.0D, 1.0D, 10, 1, new Insets(8, 9, 0, 12), 3, 7));

		this.jPanel1.add(this.lblStarting3, new GridBagConstraints(0, 2, 1, 1, 0.0D, 0.0D, 17, 0, new Insets(0, 11, 0, 25), 20, 0));

		this.jPanel1.add(this.lblStarting5, new GridBagConstraints(0, 4, 1, 1, 0.0D, 0.0D, 17, 0, new Insets(0, 11, 0, 9), 6, 0));

		this.jPanel1.add(this.lblStarting2, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 17, 0, new Insets(23, 11, 0, 16), 9, 0));

		this.jPanel1.add(this.lblStarting4, new GridBagConstraints(0, 3, 1, 1, 0.0D, 0.0D, 17, 0, new Insets(0, 11, 0, 9), 4, 0));

		this.jPanel1.add(this.lblStarting, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 17, 0, new Insets(16, 11, 0, 9), 27, 0));

		this.jPanel1.add(this.scrStarting, new GridBagConstraints(0, 5, 1, 1, 1.0D, 1.0D, 10, 1, new Insets(19, 11, 108, 15), -155, 18));

		this.scrStarting.getViewport().add(this.lstStarting, null);

		this.jMenuBar1.getSaveMenuItem().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent event) {
				StateTableFrame.this.createChipFile();
			}
		});
		this.jMenuBar1.getExitMenuItem().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent event) {
				StateTableFrame.this.exitAction();
			}
		});
		this.jMenuBar1.getNewMenuItem().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent event) {
				try {
					if (JOptionPane.showConfirmDialog(null, "Are you sure you want to close this table?\nAll unsaved work will be lost", "New Table", 0, 1) == 0) {
						StateTableFrame.this.closeWindow();
						StateTableFrame newFrame = new StateTableFrame(StateTableFrame.this.inApplet);

						Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
						Dimension frameSize = newFrame.getSize();
						if (frameSize.height > screenSize.height) {
							frameSize.height = screenSize.height;
						}
						if (frameSize.width > screenSize.width) {
							frameSize.width = screenSize.width;
						}
						newFrame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
						newFrame.setVisible(true);
					}
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
	}