def __init__(self, *args):
        QtGui.QMainWindow.__init__(self, *args)

        # internal data structure
        self.companys = None
        self.selectedCompany = None
        self.loadCompanyListData()
        
        self.mainWidget = QtGui.QWidget(self)
        self.setCentralWidget(self.mainWidget)
        
        # build main container
        self.mainLayout = QtGui.QVBoxLayout(self.mainWidget)


        # build company list
        self.companyList = GraphicsCompanyList()
        self.companyList.AddSelectionChangeHandler(self.SelectionChangedHandler)
        self.companyList.SetSource(CompanyListSource(self.companys.values()))

        # build company data view
        self.buildCompanyView()
        self.mainLayout.addWidget(self.companyView)
        print 'Build main data view success.'

        # build menu
        self.menu = QtGui.QWidget()
        self.buildMenu()
        self.mainLayout.addWidget(self.menu)
        print 'Build menu success.'