plugin/src/java/org/pm4knime/node/conversion/table2log/Table2XLogConverterNodeDialog.java
@Override
    public void loadAdditionalSettingsFrom(final NodeSettingsRO settings,
            final DataTableSpec[] specs) throws NotConfigurableException {
    	// If at first, we already add the settings here, we need to load the saved value at first, and then check the values there
    	// check if it is after reset, or it is the first time to import into the workflow??
    	try {
			config.getColumnSet().loadSettingsFrom(settings);
    		// when settings loads, it is also limits to the possible items available options.
//			config.loadSettingsFrom(settings);
		} catch (InvalidSettingsException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
    	DataTableSpec spec = (DataTableSpec) specs[0];
    	m_possibleColumns = new ArrayList<String>(Arrays.asList(spec.getColumnNames()));
		m_possibleColumns.add(SMTable2XLogConfig.CFG_NO_OPTION);
		List<String> configColumns = Arrays.asList(config.getColumnSet().getStringArrayValue());
		
    	if(! configColumns.containsAll(m_possibleColumns) 
    		 ||	!m_possibleColumns.containsAll(configColumns)){
    		caseIDComp.replaceListItems(m_possibleColumns, m_possibleColumns.get(0));
        	eventClassComp.replaceListItems(m_possibleColumns,  m_possibleColumns.get(0));
        	timeStampComp.replaceListItems(m_possibleColumns,  m_possibleColumns.get(0));
        	lifecycleNameComp.replaceListItems(m_possibleColumns, m_possibleColumns.get(0));
    		
    		m_traceAttrSet.setIncludeList(spec.getColumnNames());
        	m_eventAttrSet.setIncludeList(spec.getColumnNames());
        	
        	config.setColumnSet(m_possibleColumns.toArray(new String[0]));
        	
    	}else {
    		// if it contains, one is from the reload, change all the possiblecolumns there 
    		// after this, we can reload all the values.. 
    		
    		caseIDComp.replaceListItems(m_possibleColumns, config.getMCaseID().getStringValue());
    		eventClassComp.replaceListItems(m_possibleColumns, config.getMEventClass().getStringValue());
    		
    		timeStampComp.replaceListItems(m_possibleColumns,  config.getMTimeStamp().getStringValue());
        	lifecycleNameComp.replaceListItems(m_possibleColumns, config.getMLifecycle().getStringValue());
        	
        	try {
				config.loadSettingsFrom(settings);
			} catch (InvalidSettingsException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    	}
    		
    	
    	
    	
    	
    	// set the colNumbers here, if it changes, we change them all.
    	// there are some difference, so we need to change them, else no change?? 
    	
    	
    	/*
    	m_possibleColumns.clear();
    	for(String colName : spec.getColumnNames())
    		m_possibleColumns.add(colName) ;
    	
    	// here we can set the values for config from the eventID values there.
    	caseIDComp.replaceListItems(m_possibleColumns, m_caseID.getStringValue());
    	eventClassComp.replaceListItems(m_possibleColumns, m_eventClass.getStringValue());
    	timeStampComp.replaceListItems(m_possibleColumns, m_timeStamp.getStringValue());
    	
    	m_traceAttrSet.setIncludeList(m_possibleColumns);
    	m_eventAttrSet.setIncludeList(m_possibleColumns);
    	
    	
    	// add empty for their choices!!
    	m_possibleColumns.add(Table2XLogConfigModel.CFG_NO_OPTION);
//    	eventIDComp.replaceListItems(m_possibleColumns, m_eventID.getStringValue());
    	lifecycleNameComp.replaceListItems(m_possibleColumns, m_lifecycleName.getStringValue());
    	
		try {
			// separate reason is that I want to simplify the codes for other item;
			// but one thing is that we summary some model values into config
			// make it work at first, then improve it later
			config.loadSettingsFrom(settings);
		} catch (InvalidSettingsException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		*/
    }
/**
     * Override hook to load additional settings when all input ports are
     * data ports.
     * Because in <code>DefaultNodeSettingsPane</code>, it sets the <code>loadSettingsFrom</code>
     * final. Therefore, we can't override this method and can only interact with dialog with 
     * <code>loadAdditionalSettingsFrom</code>. 
     * 
     * Here we get the values of possible columns and then use it to configure the Options.
     * @param settings The settings of the node
     * @param specs The <code>DataTableSpec</code> of the input tables.
     * @throws NotConfigurableException If not configurable
     */
Override hook to load additional settings when all input ports are
data ports.
Because in DefaultNodeSettingsPane, it sets the loadSettingsFrom
final. Therefore, we can't override this method and can only interact with dialog with
loadAdditionalSettingsFrom.

Here we get the values of possible columns and then use it to configure the Options.
@param settings The settings of the node
@param specs The DataTableSpec of the input tables.
@throws NotConfigurableException If not configurable
Override hook to load additional settings when all input ports are data ports . Because in DefaultNodeSettingsPane it sets the loadSettingsFrom final . Therefore we can ' t override this method and can only interact with dialog with loadAdditionalSettingsFrom . Here we get the values of possible columns and then use it to configure the Options . @param settings The settings of the node @param specs The DataTableSpec of the input tables . @throws NotConfigurableException If not configurable
@Override
    public void loadAdditionalSettingsFrom(final NodeSettingsRO settings,
            final DataTableSpec[] specs) throws NotConfigurableException {
    	try {
			config.getColumnSet().loadSettingsFrom(settings);
		} catch (InvalidSettingsException e) {
			e.printStackTrace();
		}
    	DataTableSpec spec = (DataTableSpec) specs[0];
    	m_possibleColumns = new ArrayList<String>(Arrays.asList(spec.getColumnNames()));
		m_possibleColumns.add(SMTable2XLogConfig.CFG_NO_OPTION);
		List<String> configColumns = Arrays.asList(config.getColumnSet().getStringArrayValue());
    	if(! configColumns.containsAll(m_possibleColumns) 
    		 ||	!m_possibleColumns.containsAll(configColumns)){
    		caseIDComp.replaceListItems(m_possibleColumns, m_possibleColumns.get(0));
        	eventClassComp.replaceListItems(m_possibleColumns,  m_possibleColumns.get(0));
        	timeStampComp.replaceListItems(m_possibleColumns,  m_possibleColumns.get(0));
        	lifecycleNameComp.replaceListItems(m_possibleColumns, m_possibleColumns.get(0));
    		m_traceAttrSet.setIncludeList(spec.getColumnNames());
        	m_eventAttrSet.setIncludeList(spec.getColumnNames());
        	config.setColumnSet(m_possibleColumns.toArray(new String[0]));
    	}else {
    		caseIDComp.replaceListItems(m_possibleColumns, config.getMCaseID().getStringValue());
    		eventClassComp.replaceListItems(m_possibleColumns, config.getMEventClass().getStringValue());
    		timeStampComp.replaceListItems(m_possibleColumns,  config.getMTimeStamp().getStringValue());
        	lifecycleNameComp.replaceListItems(m_possibleColumns, config.getMLifecycle().getStringValue());
        	try {
				config.loadSettingsFrom(settings);
			} catch (InvalidSettingsException e) {
				e.printStackTrace();
			}
    	}
    	/*
    	m_possibleColumns.clear();
    	for(String colName : spec.getColumnNames())
    		m_possibleColumns.add(colName) ;
    	// here we can set the values for config from the eventID values there.
    	caseIDComp.replaceListItems(m_possibleColumns, m_caseID.getStringValue());
    	eventClassComp.replaceListItems(m_possibleColumns, m_eventClass.getStringValue());
    	timeStampComp.replaceListItems(m_possibleColumns, m_timeStamp.getStringValue());
    	m_traceAttrSet.setIncludeList(m_possibleColumns);
    	m_eventAttrSet.setIncludeList(m_possibleColumns);
    	// add empty for their choices!!
    	m_possibleColumns.add(Table2XLogConfigModel.CFG_NO_OPTION);
//    	eventIDComp.replaceListItems(m_possibleColumns, m_eventID.getStringValue());
    	lifecycleNameComp.replaceListItems(m_possibleColumns, m_lifecycleName.getStringValue());
		try {
			// separate reason is that I want to simplify the codes for other item;
			// but one thing is that we summary some model values into config
			// make it work at first, then improve it later
			config.loadSettingsFrom(settings);
		} catch (InvalidSettingsException e) {
			e.printStackTrace();
		}
		*/
    }
@ Override public void loadAdditionalSettingsFrom ( final NodeSettingsRO settings , final DataTableSpec [ ] specs ) throws NotConfigurableException { try { config . getColumnSet ( ) . loadSettingsFrom ( settings ) ; } catch ( InvalidSettingsException e ) { e . printStackTrace ( ) ; } DataTableSpec spec = ( DataTableSpec ) specs [ 0 ] ; m_possibleColumns = new ArrayList < String > ( Arrays . asList ( spec . getColumnNames ( ) ) ) ; m_possibleColumns . add ( SMTable2XLogConfig . CFG_NO_OPTION ) ; List < String > configColumns = Arrays . asList ( config . getColumnSet ( ) . getStringArrayValue ( ) ) ; if ( ! configColumns . containsAll ( m_possibleColumns ) || ! m_possibleColumns . containsAll ( configColumns ) ) { caseIDComp . replaceListItems ( m_possibleColumns , m_possibleColumns . get ( 0 ) ) ; eventClassComp . replaceListItems ( m_possibleColumns , m_possibleColumns . get ( 0 ) ) ; timeStampComp . replaceListItems ( m_possibleColumns , m_possibleColumns . get ( 0 ) ) ; lifecycleNameComp . replaceListItems ( m_possibleColumns , m_possibleColumns . get ( 0 ) ) ; m_traceAttrSet . setIncludeList ( spec . getColumnNames ( ) ) ; m_eventAttrSet . setIncludeList ( spec . getColumnNames ( ) ) ; config . setColumnSet ( m_possibleColumns . toArray ( new String [ 0 ] ) ) ; } else { caseIDComp . replaceListItems ( m_possibleColumns , config . getMCaseID ( ) . getStringValue ( ) ) ; eventClassComp . replaceListItems ( m_possibleColumns , config . getMEventClass ( ) . getStringValue ( ) ) ; timeStampComp . replaceListItems ( m_possibleColumns , config . getMTimeStamp ( ) . getStringValue ( ) ) ; lifecycleNameComp . replaceListItems ( m_possibleColumns , config . getMLifecycle ( ) . getStringValue ( ) ) ; try { config . loadSettingsFrom ( settings ) ; } catch ( InvalidSettingsException e ) { e . printStackTrace ( ) ; } } /*
    	m_possibleColumns.clear();
    	for(String colName : spec.getColumnNames())
    		m_possibleColumns.add(colName) ;
    	
    	// here we can set the values for config from the eventID values there.
    	caseIDComp.replaceListItems(m_possibleColumns, m_caseID.getStringValue());
    	eventClassComp.replaceListItems(m_possibleColumns, m_eventClass.getStringValue());
    	timeStampComp.replaceListItems(m_possibleColumns, m_timeStamp.getStringValue());
    	
    	m_traceAttrSet.setIncludeList(m_possibleColumns);
    	m_eventAttrSet.setIncludeList(m_possibleColumns);
    	
    	
    	// add empty for their choices!!
    	m_possibleColumns.add(Table2XLogConfigModel.CFG_NO_OPTION);
//    	eventIDComp.replaceListItems(m_possibleColumns, m_eventID.getStringValue());
    	lifecycleNameComp.replaceListItems(m_possibleColumns, m_lifecycleName.getStringValue());
    	
		try {
			// separate reason is that I want to simplify the codes for other item;
			// but one thing is that we summary some model values into config
			// make it work at first, then improve it later
			config.loadSettingsFrom(settings);
		} catch (InvalidSettingsException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		*/ }
Override hook to load additional settings when all input ports are
 data ports.
Override hook to load additional settings when all input ports are data ports .
// If at first, we already add the settings here, we need to load the saved value at first, and then check the values there // check if it is after reset, or it is the first time to import into the workflow?? // when settings loads, it is also limits to the possible items available options. //			config.loadSettingsFrom(settings); // TODO Auto-generated catch block // if it contains, one is from the reload, change all the possiblecolumns there  // after this, we can reload all the values..  // TODO Auto-generated catch block // set the colNumbers here, if it changes, we change them all. // there are some difference, so we need to change them, else no change?? 