@FXML
    void initialize() 
    {
    	assert btnAdd != null : "fx:id=\"btnAdd\" was not injected: check your FXML file 'Project.fxml'.";
        assert btnApply != null : "fx:id=\"btnApply\" was not injected: check your FXML file 'Project.fxml'.";
        assert btnClear != null : "fx:id=\"btnClear\" was not injected: check your FXML file 'Project.fxml'.";
        assert btnDelete != null : "fx:id=\"btnDelete\" was not injected: check your FXML file 'Project.fxml'.";
        assert cbTransMethodsClicked != null : "fx:id=\"cbTransMethodsClicked\" was not injected: check your FXML file 'Project.fxml'.";
        assert tblFiles != null : "fx:id=\"tblFiles\" was not injected: check your FXML file 'Project.fxml'.";
        assert tblcolDestinationFile != null : "fx:id=\"tblcolDestinationFile\" was not injected: check your FXML file 'Project.fxml'.";
        assert tblcolSourceFile != null : "fx:id=\"tblcolSourceFile\" was not injected: check your FXML file 'Project.fxml'.";
        assert tblcolTransMethods != null : "fx:id=\"tblcolTransMethods\" was not injected: check your FXML file 'Project.fxml'.";
        
        tblcolSourceFile.setCellValueFactory(new PropertyValueFactory<ConvertMediaInfo, String>("sourceMediaName"));
        tblcolDestinationFile.setCellValueFactory(new PropertyValueFactory<ConvertMediaInfo, String>("destinationMediaName"));
        tblcolTransMethods.setCellValueFactory(new PropertyValueFactory<ConvertMediaInfo, String>("method"));
//        tblcolTransMethods.setCellFactory(ComboBoxTableCell.<ConvertMediaInfo, String>forTableColumn(methodsNameList));
        
        tblcolTransMethods.setCellFactory(new Callback<TableColumn<ConvertMediaInfo,String>, TableCell<ConvertMediaInfo,String>>() {
			
			@Override
			public TableCell<ConvertMediaInfo, String> call(
					TableColumn<ConvertMediaInfo, String> param)
			{
				ComboBoxTableCell<ConvertMediaInfo, String> cell = new ComboBoxTableCell<ConvertMediaInfo, String>() {
					ComboBox<String> cb = null;
					
					@Override
					public void updateItem(String item, boolean empty)
					{
						// TODO Auto-generated method stub
//						super.updateItem(item, empty);
						if (empty || !(this.isVisible()))
							return;
						final int index = this.getIndex();
						if (cb == null) {
							cb = new ComboBox<String>();
							cb.setItems(methodsNameList);
							cb.valueProperty().addListener(new ChangeListener<String>() {

								@Override
								public void changed(
										ObservableValue<? extends String> observable,
										String oldValue, String newValue)
								{
									if (newValue == null)
										return;
									
									FFmpegArguments arguments = argumentList.get(methodsNameList.indexOf(newValue));
									
									ConvertMediaInfo info = infoList.get(index);
									info.setCommandLine(arguments.getArguments());
									info.setMethod(arguments.getName());
									info.setDestinationMediaName(changeExtension(info.getSourceMediaName(), arguments.getFileExtension()));
//									tblcolDestinationFile.setVisible(false);
//									tblcolDestinationFile.setVisible(true);
								}
							});
							setGraphic(cb);
							setAlignment(Pos.CENTER);
						}
						String selectItem = cb.getSelectionModel().getSelectedItem();
						if (selectItem == null || !item.equals(selectItem))
							cb.getSelectionModel().select(methodsNameList.indexOf(item));
						
					}
				};
				return cell;
			}
		});
        
        tblFiles.setItems(infoList);
        tblFiles.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        
        btnAdd.setPrefSize(30, 30);
        btnAdd.setGraphic(ImageResources.getImage(Type.AddMovie));
        
        btnDelete.setPrefSize(30, 30);
        btnDelete.setGraphic(ImageResources.getImage(Type.Delete));
        
        btnClear.setPrefSize(30, 30);
        btnClear.setGraphic(ImageResources.getImage(Type.Clear));
        
        btnApply.setPrefSize(30, 30);
        btnApply.setGraphic(ImageResources.getImage(Type.Apply));
        
        cbTransMethodsClicked.setItems(methodsNameList);
        cbTransMethodsClicked.getSelectionModel().select(0);
        
        chooser = new FileChooser();
		FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("All Moive Files (*.mp4;*.mov;*.flv;*.ts)", "*.mp4", "*.mov", "*.flv", "*.ts");
		chooser.getExtensionFilters().add(filter);
		filter = new FileChooser.ExtensionFilter("MPEG-4 Moive File (*.mp4)", "*.mp4");
		chooser.getExtensionFilters().add(filter);
		filter = new FileChooser.ExtensionFilter("Adobe Flash Video File (*.flv)", "*.flv");
		chooser.getExtensionFilters().add(filter);
		filter = new FileChooser.ExtensionFilter("Apple QuickTime Video File (*.mov)", "*.mov");
		chooser.getExtensionFilters().add(filter);
		filter = new FileChooser.ExtensionFilter("MPEGTS Video File (*.ts)", "*.ts");
		chooser.getExtensionFilters().add(filter);
    }