function eval(h)

import javax.swing.*; 

%% Get recorder handle
recorder = tsguis.recorder;

%% Find the selected time series and columm after finishing editing
celleditor = h.Handles.tsTable.getTable.getCellEditor;
if ~isempty(celleditor)
    awtinvoke(celleditor,'stopCellEditing');
    drawnow expose
end
tableData = cell(h.Handles.tsTable.Data);
if isempty(tableData) % No timeseries
    return
end
I = ~cellfun('isempty',tableData(:,2)) & cell2mat(tableData(:,1));
tsSelected = tableData(I,2);
colSelected = tableData(I,3);
if isempty(tsSelected)
    return
end

%% Create transaction
T = tsguis.transaction;

%% Parse the cols column
cols = cell(length(tsSelected),1);
errorincol = '';
nonuniform = false;
for k=1:length(tsSelected)
    try
        cols{k} = eval(colSelected{k},'[]');
    end
    ts = h.viewnode.Plot.getTimeSeries(tsSelected{k});
    if isempty(cols{k}) || any(floor(cols{k})<1) || max(cols{k})>size(ts.Data,2) || ...
            ~isequal(floor(unique(cols{k})),cols{k})
        errordlg(sprintf('Invalid vector of selected columns in row %d.',...
            k),'Time Series Tool','modal')
        return
    end
    if isnan(ts.TimeInfo.Increment)
        nonuniform = true;
    end
end
if ~isempty(errorincol)
    errordlg(sprintf('Cannot parse columns defined for time series %s', ...
        errorincol),'Time Series Tools','modal')
    return
end
if nonuniform && strcmp(h.Filteractive,'on')  && ...
        (strcmp(h.Filter,'firstord') || strcmp(h.Filter,'ideal'))
    ButtonName = questdlg('One or more selected time series with non-uniform time vectors will be resampled to uniform in order to perform the selected filtering operation', ...
                       'Time Series Tool', ...
                       'Continue','Abort','Continue');
   if strcmp(ButtonName,'Abort')
       return
   end
end

%% Process each time series in turn
for k=1:length(tsSelected)
    ts = h.viewnode.Plot.getTimeSeries(tsSelected{k});
    
    % Apply interpolation and filtering rules if they are active
    h.interp(ts,cols{k},T); 
    h.filt(ts,cols{k},T);
end

%% Store transaction
T.commit;
recorder.pushundo(T);

%% Reset the GUI
h.reset