};
}
	private void createTableViewer(Composite composite){		createTableComposite(composite);				/*		 * Feature of CellEditors - double click is ignored.		 * The workaround is to register my own listener and force the desired 		 * behavior.		 */		fViewer= new TableViewer(fTable){				protected void hookControl(Control control) {					super.hookControl(control);					((Table) control).addMouseListener(new MouseAdapter() {						public void mouseDoubleClick(MouseEvent e) {							if (getTable().getSelection().length == 0)								return;							TableItem item= getTable().getSelection()[0];							if (item.getBounds(TASK_PROP).contains(e.x, e.y)){								List widgetSel= getSelectionFromWidget();								if (widgetSel == null || widgetSel.size() != 1)									return;								NLSSubstitution s= (NLSSubstitution)widgetSel.get(0);								Integer value= (Integer)getCellModifier().getValue(s, PROPERTIES[TASK_PROP]);								int newValue= MultiStateCellEditor.getNextValue(NLSSubstitution.STATE_COUNT, value.intValue());								getCellModifier().modify(item, PROPERTIES[TASK_PROP], new Integer(newValue));							}							}					});				}		};		fViewer.setUseHashlookup(true);				final CellEditor editors[]= new CellEditor[SIZE];		editors[TASK_PROP]= new MultiStateCellEditor(fTable, NLSSubstitution.STATE_COUNT, NLSSubstitution.DEFAULT);		editors[VAL_PROP]= new TextCellEditor(fTable);				class AutoApplyTextCellEditor extends TextCellEditor {			public AutoApplyTextCellEditor(Composite parent) {				super(parent);			}			public void fireApplyEditorValue() {				super.fireApplyEditorValue();			}		};		editors[KEY_PROP]= new AutoApplyTextCellEditor(fTable);		editors[KEY_PROP].getControl().addFocusListener(new FocusAdapter() {			public void focusLost(FocusEvent e) {				((AutoApplyTextCellEditor)editors[KEY_PROP]).fireApplyEditorValue();			}		});		fViewer.setCellEditors(editors);				fViewer.setColumnProperties(PROPERTIES);		fViewer.setCellModifier(new CellModifier());		fViewer.setContentProvider(new NLSSubstitutionContentProvider());		fViewer.setLabelProvider(new NlsSubstitutionLabelProvider());				fViewer.setInput(getCu());				fViewer.addDoubleClickListener(new IDoubleClickListener(){			public void doubleClick(DoubleClickEvent event) {				Set selected= getSelectedTableEntries();				if (selected.size() != 1)					return;				NLSSubstitution nls= (NLSSubstitution)selected.iterator().next();				if (nls.task == NLSSubstitution.TRANSLATE)					openEditButton(event.getSelection());			}		});		fViewer.addSelectionChangedListener(new ISelectionChangedListener() {			public void selectionChanged(SelectionChangedEvent event) {				ExternalizeWizardPage.this.selectionChanged(event);			}		});				fViewer.getControl().addFocusListener(new FocusAdapter(){			public void focusLost(FocusEvent e) {				fPreviewLabel.setText(""); //$NON-NLS-1$			}		});	}