function sys_visualFeedback(winObj, design, target, fillColor, frameColor, fontColor, fb_seq, copy_seq)
% Make a visual feedback for an online BCI system
%
% In:
%   WINOBJ      : Window objects
%
%   DESIGN      : Stimulation design
%
%   TARGET      : Target stimulus which you want to change status
%
%   FILLCOLOR   : Stimulus color
%
%   FRAMECOLOR  : Stimulus frame color
%
%   FONTCOLOR   : Font color
%
%   FB_SEQ      : Feedback sequence
%
%   COPY_SEQ    : Sequence for 'copy-spelling' mode
%
% See also:
%   Screen.m    : http://psychtoolbox.org/
%
% Masaki Nakanishi, Swartz Center for Computational Neuroscience, Institute
% for Neural Computation, University of California, San Diego
% Date: Aug-05-2014, Update: Aug-05-2014.

if nargin > 7 && ~isempty(copy_seq)
    
    Screen('FillRect', winObj, fillColor, design.StimLoc{target});
    Screen('FrameRect', winObj, frameColor, design.StimLoc{target});
    Screen('DrawText', winObj, design.Symbol{target}, design.TextLocX{target}, design.TextLocY{target}, fontColor);
    Screen('FillRect', winObj, [255, 255, 255], design.TxtFldLoc);
    Screen('DrawText', winObj, ['>>' copy_seq], design.TxtLocX, design.TxtLocY-diff(design.TxtFldLoc([2,4]))/4, [0, 0, 0]);
    Screen('DrawText', winObj, ['>>' fb_seq], design.TxtLocX, design.TxtLocY+diff(design.TxtFldLoc([2,4]))/4, [0, 0, 0]);

else
    
    Screen('FillRect', winObj, fillColor, design.StimLoc{target});
    Screen('FrameRect', winObj, frameColor, design.StimLoc{target});
    Screen('DrawText', winObj, design.Symbol{target}, design.TextLocX{target}, design.TextLocY{target}, fontColor);
    Screen('FillRect', winObj, [255, 255, 255], design.TxtFldLoc);
    Screen('DrawText', winObj, ['>>' fb_seq], design.TxtLocX, design.TxtLocY, [0, 0, 0]);

end