private void intializeGrammarTableSetting()
	{
		grammarTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		grammarTable.addKeyListener(new KeyListener(){

			public void keyPressed(KeyEvent e) {
			}			
			// when user realease a key that means user might or might not selected an item from the list
			public void keyReleased(KeyEvent e) {
				mySelectedProductionIndex=grammarTable.getSelectedRow();
				if (mySelectedProductionIndex>-1 && mySelectedProductionIndex<grammarTable.getRowCount()-1 && myTarget!=null)
					stepAction.setEnabled(true);
				else
					stepAction.setEnabled(false);
			}
			public void keyTyped(KeyEvent e) {
			}
		});
		
		grammarTable.addMouseListener(new MouseListener(){

			public void mouseClicked(MouseEvent e) {
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			// selection will only occur when user releases the button.
			public void mouseReleased(MouseEvent e) {
				mySelectedProductionIndex=grammarTable.getSelectedRow();
				if (mySelectedProductionIndex>-1  && mySelectedProductionIndex<grammarTable.getRowCount()-1 && myTarget!=null)
					stepAction.setEnabled(true);
				else
					stepAction.setEnabled(false);
			}
		});
	}