#include <CtrlLib/CtrlLib.h>

using namespace Upp;

class LineEditExtended : public LineEdit{
	public:
		virtual void NewScrollPos(){ WhenScrollChange();}
		Callback WhenScrollChange;
		
};



class MainWindowDlg : public TopWindow {

	typedef MainWindowDlg CLASSNAME;
	
	public:
		MainWindowDlg(){
            
            SetRect(0,0,600,400);
            tx1.VSizePos(10,10).LeftPos(10,290);
            tx2.VSizePos(10,10).RightPos(10, 290);
            
            this<<tx1<<tx2;
            
            String tmp;
            
            for(int i=0; i<100; i++) tmp<<i<<"\n";
            
            tx1.Set(tmp);
            tx2.Set(tmp);
            
            tx2.WhenScrollChange=THISBACK(tx1Totx2SyncScrol);
	        tx1.WhenScrollChange=THISBACK(tx2Totx1SyncScrol);
            		
		}
	
	private: 
		void tx2Totx1SyncScrol(){ 
			tx2.SetScrollPos(tx1.GetScrollPos()); 
		}
		
		void tx1Totx2SyncScrol(){ 
			tx1.SetScrollPos(tx2.GetScrollPos()); 
		}

		LineEditExtended tx1, tx2;
		

};

GUI_APP_MAIN
{
    MainWindowDlg w;
    
    w.Run();

}
