def __init__(self, parent, queue, endCommand, canvas):
        self.parent = parent
        Pmw.initialise()
        self.balloon = Pmw.Balloon(parent)
        self.queue = queue
        self.canvas = canvas

        if self.canvas != "":
            # Instantiate GraphPositions class to display graphical view of wireless devices found.
            self.pos = GraphPositions(canvas)

        # Creating main container for all widgets
        container = Frame(parent,
                          highlightbackground="black",
                          highlightthickness=3)

        # Creating vertical scrollbar on the right side
        vscrollbar = Scrollbar(container, orient=VERTICAL)

        # Creating canvas in order to make the widgets be scrollable.
        self.canvas = Canvas(container, yscrollcommand=vscrollbar.set)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)

        # Creating table using Frame
        self.table = Frame(container)

        # Creating a actionbar
        bar = Frame(parent, bd=1)
        bar.pack(side=TOP, fill=X)

        def endsniff():
            endCommand()
            scan = "Scan: Stopped"
            scan_display['text'] = scan
            scan_display['foreground'] = "red"

        # Adding Stop Scan button to bar
        self.stop_img = PhotoImage(file='gui/images/stop.gif')
        stop_btn = Button(bar, image=self.stop_img, command=endsniff)
        stop_btn.pack(side=LEFT, padx=2)
        self.balloon.bind(stop_btn, 'Stop Scanning')

        # Adding Interface display to bar
        self.iface_display = Label(bar,
                                   text="Interface: ",
                                   highlightbackground="black",
                                   highlightthickness=1)
        self.iface_display.pack(side=LEFT, padx=20)

        # Adding Scan Mode display to bar
        scan = "Scan: Running"
        scan_display = Label(bar,
                             text=scan,
                             highlightbackground="black",
                             highlightthickness=1,
                             foreground='green')
        scan_display.pack(side=RIGHT)

        # Creating color definitions
        self.bg = "#009900"
        self.fg = "#ffffff"
        # Creating Title
        title = Label(self.table,
                      font="verdana 16 bold",
                      text="Scan Results",
                      bg=self.bg,
                      fg=self.fg).pack(fill=X)
        #Button(self.table, text='Done', command=endCommand).pack()

        # Creating Table header
        table_head = Frame(self.table)
        col0 = Label(table_head,
                     width=2,
                     text="SN",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthickness=1).pack(side=LEFT)
        col1 = Label(table_head,
                     width=7,
                     text="Channel",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthicknes=1).pack(side=LEFT)
        col2 = Label(table_head,
                     width=25,
                     text="SSID",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthickness=1).pack(side=LEFT)
        col3 = Label(table_head,
                     width=18,
                     text="BSSID",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthicknes=1).pack(side=LEFT)
        col4 = Label(table_head,
                     width=8,
                     text="Signal",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthicknes=1).pack(side=LEFT)
        col5 = Label(table_head,
                     width=16,
                     text="Encryption",
                     background=self.bg,
                     foreground=self.fg,
                     highlightbackground=self.fg,
                     highlightthicknes=1).pack(side=LEFT)
        self.sn = 0

        # Packing table header and table into the GUI layout
        table_head.pack(side=TOP)

        # Packing canvas widget into the window
        self.canvas.pack(expand=Y, padx=2)

        vscrollbar.configure(command=self.canvas.yview)
        self.cw = self.canvas.create_window(0,
                                            0,
                                            window=self.table,
                                            anchor=NW,
                                            tags="table")

        # track changes to the canvas and frame width and sync them also updating the scrollbar
        self.table.bind('<Configure>', self._configure_table)
        self.canvas.bind('<Configure>', self._configure_canvas)

        # Binding mousewheel move event to the canvas.
        self.canvas.bind("<MouseWheel>",
                         lambda event: self.canvas.yview('scroll', 1, 'units'))
        self.canvas.bind(
            '<4>', lambda event: self.canvas.yview('scroll', -1, 'units'))
        self.canvas.bind('<5>',
                         lambda event: self.canvas.yview('scroll', 1, 'units'))

        container.pack(expand=YES, fill=BOTH, padx=5, pady=5)