Ejemplo n.º 1
0
    def showMismatchTable(self):

        jf = swing.JFrame()

        jf.setDefaultCloseOperation(jf.DISPOSE_ON_CLOSE)
        cp = jf.getContentPane()
        cp.setLayout(awt.BorderLayout())
        jt = swing.JTable(self._dtm)
        jt.setAutoResizeMode(jt.AUTO_RESIZE_ALL_COLUMNS)
        drend = self._dftcr()
        jt.setDefaultRenderer(java.lang.Object, drend)
        count = self._dtm.getRowCount()
        tmp_label = swing.JLabel(java.lang.String.valueOf(count))
        psize = tmp_label.getPreferredSize()
        column = jt.getColumn("")
        column.setPreferredWidth(psize.width + 10)
        column.setMaxWidth(psize.width + 10)
        sp = swing.JScrollPane(jt)
        sp.addComponentListener(drend)
        cp.add(sp, awt.BorderLayout.CENTER)
        jb = swing.JButton("Close")
        jb.actionPerformed = lambda event: jf.dispose()
        cp.add(jb, awt.BorderLayout.SOUTH)
        jf.pack()
        g.app.gui.center_dialog(jf)
        jf.visible = 1
Ejemplo n.º 2
0
    def buildContentPane(self, localVars, globalVars):

        # TODO
        # replace varVal.__class__.__name__ with something more meaningful
        # and scan for things without "__class__" or "__name__" fields
        # some swing components don't have them

        localVarsDict = self.__buildVarDict__(localVars)
        globalVarsDict = self.__buildVarDict__(globalVars)

        localVarsDict = self.filterVars(localVarsDict)
        globalVarsDict = self.filterVars(globalVarsDict)

        localVarsDict = self.sortVars(localVarsDict)
        globalVarsDict = self.sortVars(globalVarsDict)

        localVarsDict = self.improveTypeNames(localVarsDict)
        globalVarsDict = self.improveTypeNames(globalVarsDict)

        #Create the TableModel and JTable components
        localTableModel = swing.table.DefaultTableModel(
            localVarsDict, [
                VAR_L_NAME_COL_CAPTION, VAR_TYPE_COL_CAPTION,
                VAR_VALUE_COL_CAPTION
            ])

        globalTableModel = swing.table.DefaultTableModel(
            globalVarsDict, [
                VAR_G_NAME_COL_CAPTION, VAR_TYPE_COL_CAPTION,
                VAR_VALUE_COL_CAPTION
            ])

        localVarTable = swing.JTable(localTableModel)
        localVarTable.getColumnModel().getColumn(0).setPreferredWidth(1)

        globalVarTable = swing.JTable(globalTableModel)
        globalVarTable.getColumnModel().getColumn(0).setPreferredWidth(1)

        topPane = swing.JScrollPane(localVarTable)
        bottomPane = swing.JScrollPane(globalVarTable)
        return (topPane, bottomPane)
 def __init__(self, debugger):
     swing.JFrame.__init__(self, title='JESDB Variable Watcher')
     # variables correspond to columns on the right
     self.history = ExecHistory(debugger)
     self.controlPanel = DBControlPanel(debugger)
     self.table = swing.JTable(self.history)
     scrollPane = swing.JScrollPane(self.table)
     self.contentPane.setLayout(awt.BorderLayout())
     scrollPane.preferredSize = (200, 400)
     self.contentPane.add(scrollPane, awt.BorderLayout.CENTER)
     self.contentPane.add(self.controlPanel, awt.BorderLayout.EAST)
     self.pack()
Ejemplo n.º 4
0
    def __init__(self):
        swing.JFrame.__init__(self)
        self.title='Network Application Organizer'
        self.windowClosing=lambda x: sys.exit()

        self.namePane=swing.JPanel(layout=java.awt.BorderLayout())
        self.namePane.add(swing.JLabel('Name:'),'West')
        self.nameText=swing.JTextField(actionPerformed=self.onTrySetName)
        self.namePane.add(self.nameText)
        self.contentPane.add(self.namePane,'North')

        self.tab=swing.JTabbedPane()
        
        self.runningAppData=RunningAppTableModel()
        self.table=swing.JTable(self.runningAppData)
        self.table.selectionMode=swing.ListSelectionModel.SINGLE_SELECTION
        self.table.preferredScrollableViewportSize=300,50
        self.table.mouseClicked=self.onTableClicked

        self.appTypeList=swing.JList(mouseClicked=self.onTypeListClicked,valueChanged=self.onTypeListSelectionChanged)
        createPane=swing.JPanel(layout=java.awt.BorderLayout())
        createPane.add(swing.JScrollPane(self.appTypeList),'West')
        self.startAppButton=swing.JButton('Start',actionPerformed=self.onStartApp)
        createPane.add(self.startAppButton,'East')

        self.optionPanelLayout=java.awt.CardLayout()
        self.optionPanel=swing.JPanel(layout=self.optionPanelLayout)
        self.optionEditor=swing.JComboBox(font=swing.JTable().font)
        createPane.add(self.optionPanel)

        self.tab.addTab('Start New App',createPane)
        self.tab.addTab('Running Apps',swing.JScrollPane(self.table))

        self.contentPane.add(self.tab)
        
        self.pack()
        self.show()
Ejemplo n.º 5
0
 def __init__( self, name ):
     self.jf = swing.JFrame()
     self.jf.title = "status for %s" % name
     self.jta = swing.JTable()
     self.tmodel = swing.table.DefaultTableModel( 
         [ "path", "status", "revision"],
         0
     )
     self.jta.setModel( self.tmodel )
     jsp = swing.JScrollPane( self.jta)
     self.jf.add( jsp)
     #self.jf.pack()
     #self.jf.visible = 1
     jb = swing.JButton( "Close")
     jb.actionPerformed = lambda event: self.jf.dispose()
     jp = swing.JPanel()
     jp.add( jb )
     self.jf.add( jp, java.awt.BorderLayout.SOUTH)
Ejemplo n.º 6
0
 def create_table(self, opt, panel):
     self._select_table = {"row": -1, "col": -1}
     table_name = opt['funcopt']['tableName']
     coloNames = opt['funcopt']['coloName']
     ContentData.content_data[table_name] = DefaultTableModel(coloNames, 0)
     self._content_table = swing.JTable(
         ContentData.content_data[table_name])
     self._content_table.setAutoCreateRowSorter(True)
     self._content_table.addMouseListener(
         AddAction(self, opt['type'], opt['funcopt']))
     column_model = self._content_table.getColumnModel()
     for i in xrange(column_model.getColumnCount()):
         column = column_model.getColumn(i)
         if '#' == self._content_table.getColumnName(i):
             column.setPreferredWidth(3)
         else:
             column.setPreferredWidth(200)
     self._content_table.fillsViewportHeight = True
     dtcr = self._content_table.getTableHeader().getDefaultRenderer()
     dtcr.setHorizontalAlignment(swing.SwingConstants.CENTER)
     return swing.JScrollPane(self._content_table)
Ejemplo n.º 7
0
    def buildTablePane(self, caption, varDict):
        # Create the list.
        varList = [[name, self.getTypeName(value), value]
                   for name, value in varDict.items()
                   if name not in self.varsToFilter]

        # Sort them all.
        varList.sort(key=self.orderRow)

        # Fix the type names.
        for row in varList:
            if row[TYPE_COL] in IMPROVED_TYPE_NAMES:
                row[TYPE_COL] = IMPROVED_TYPE_NAMES[row[TYPE_COL]]

        # Create a table model.
        headers = [caption, VAR_TYPE_COL_CAPTION, VAR_VALUE_COL_CAPTION]
        tableModel = swing.table.DefaultTableModel(varList, headers)

        # Create the actual table.
        table = swing.JTable(tableModel)
        table.getColumnModel().getColumn(0).setPreferredWidth(1)

        # Wrap it in a ScrollPane.
        return swing.JScrollPane(table)
Ejemplo n.º 8
0
    def registerExtenderCallbacks(self, callbacks):
        # Print information about the plugin, set extension name, setup basic stuff
        self.printHeader()
        callbacks.setExtensionName("BurpHelper")
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.registerContextMenuFactory(self)
        # Create main panel with Components
        self._jTitleFont = Font("", Font.BOLD, 15)

        ##Current IP
        self._jLabelCurrentIPMainText = swing.JLabel()
        self._jLabelCurrentIPDesText = swing.JLabel()
        self._jLabelCurrentWanIpDes = swing.JLabel()
        self._jLabelCurrentLanIpDes = swing.JLabel()
        self._jLabelCurrentWanIp = swing.JLabel()
        self._jLabelCurrentLanIp = swing.JLabel()
        self._jCheckIPButton = swing.JButton("Check IP",
                                             actionPerformed=self.CheckIP)

        ##Proxy Setting

        self._jPAddButton = swing.JButton("Add", actionPerformed=self.PitemAdd)
        self._jPEditButton = swing.JButton("Edit",
                                           actionPerformed=self.PitemEdit)
        self._jPRemoveButton = swing.JButton("Remove",
                                             actionPerformed=self.PitemRemove)
        self._jLabelMainText = swing.JLabel()
        self._jLabelScanIPListen = swing.JLabel()

        self._jScanPanel = swing.JPanel()
        self._jScanPanel.setLayout(None)
        self._jTabledata = MappingTableModel(callbacks, self._jScanPanel)
        self._jTable = swing.JTable(self._jTabledata)
        self._jTablecont = swing.JScrollPane(self._jTable)
        self._jSeparator_first = swing.JSeparator(swing.JSeparator.HORIZONTAL)
        self._jSeparator_second = swing.JSeparator(swing.JSeparator.HORIZONTAL)

        ##Dashboard
        self._jLabelDashboardText = swing.JLabel()
        self._jLabelDashboardDesText = swing.JLabel()
        self._jDTabledata = DashboardTableModel(callbacks, self._jScanPanel)
        self._jDTable = swing.JTable(self._jDTabledata)
        self._jDTablecont = swing.JScrollPane(self._jDTable)

        # Configure GUI
        self._jLabelCurrentIPMainText.setText('Check Current IP ')
        self._jLabelCurrentIPMainText.setForeground(Color(228, 127, 0))
        self._jLabelCurrentIPMainText.setFont(self._jTitleFont)
        self._jLabelCurrentIPDesText.setText('You can check your current IP')
        self._jLabelCurrentWanIpDes.setText("Wan IP : ")
        self._jLabelCurrentLanIpDes.setText("Lan IP : ")

        self._jLabelMainText.setText('Proxy Server Setting')
        self._jLabelMainText.setForeground(Color(228, 127, 0))
        self._jLabelMainText.setFont(self._jTitleFont)
        self._jLabelScanIPListen.setText(
            'You can set the proxy server, When the plugin is loading, Proxy Setting is initialized'
        )
        self._jTable.getColumn("Name").setPreferredWidth(200)
        self._jTable.getColumn("IP").setPreferredWidth(150)
        self._jTable.getColumn("Port").setPreferredWidth(100)
        self._jTable.getColumn("Enabled").setPreferredWidth(50)

        self._jDTable.getColumn("URL").setPreferredWidth(180)
        self._jDTable.getColumn("Privilege").setPreferredWidth(130)
        self._jDTable.getColumn("ID").setPreferredWidth(100)
        self._jDTable.getColumn("Password").setPreferredWidth(100)
        self._jDTable.getColumn("Comment").setPreferredWidth(200)

        self._jScanPanel.setPreferredSize(awt.Dimension(1010, 1010))

        self._jLabelDashboardText.setText('Target Site List')
        self._jLabelDashboardText.setForeground(Color(228, 127, 0))
        self._jLabelDashboardText.setFont(self._jTitleFont)
        self._jLabelDashboardDesText.setText(
            'You can save the account list per site.')
        self._jDAddButton = swing.JButton("Add", actionPerformed=self.DitemAdd)
        self._jDEditButton = swing.JButton("Edit",
                                           actionPerformed=self.DitemEdit)
        self._jDRemoveButton = swing.JButton("Remove",
                                             actionPerformed=self.DitemRemove)
        self._jDIDCopyButton = swing.JButton("ID Copy",
                                             actionPerformed=self.DIDCopy)
        self._jDPwCopyButton = swing.JButton("PW Copy",
                                             actionPerformed=self.DPwCopy)
        self._jDitemsDelete = swing.JButton("Clear",
                                            actionPerformed=self.DitemsDelete)
        self._jDURLConButton = swing.JButton("Open URL",
                                             actionPerformed=self.DOpenURL)

        # Configure locations
        self._jLabelCurrentIPMainText.setBounds(15, 10, 300, 20)
        self._jLabelCurrentIPDesText.setBounds(15, 32, 300, 20)
        self._jLabelCurrentWanIpDes.setBounds(15, 60, 60, 15)
        self._jLabelCurrentLanIpDes.setBounds(15, 80, 60, 15)
        self._jLabelCurrentWanIp.setBounds(80, 60, 100, 15)
        self._jLabelCurrentLanIp.setBounds(80, 80, 100, 15)
        self._jCheckIPButton.setBounds(190, 57, 90, 40)

        self._jSeparator_first.setBounds(15, 110, 900, 15)

        self._jLabelMainText.setBounds(15, 120, 300, 20)
        self._jLabelScanIPListen.setBounds(15, 142, 500, 20)
        self._jPAddButton.setBounds(15, 170, 100, 30)
        self._jPEditButton.setBounds(15, 205, 100, 30)
        self._jPRemoveButton.setBounds(15, 240, 100, 30)
        self._jTablecont.setBounds(120, 170, 600, 150)
        self._jSeparator_second.setBounds(15, 335, 900, 15)

        self._jLabelDashboardText.setBounds(15, 350, 300, 20)
        self._jLabelDashboardDesText.setBounds(15, 372, 300, 20)
        self._jDAddButton.setBounds(15, 400, 100, 30)
        self._jDEditButton.setBounds(15, 435, 100, 30)
        self._jDRemoveButton.setBounds(15, 470, 100, 30)
        self._jDURLConButton.setBounds(15, 505, 100, 30)
        self._jDIDCopyButton.setBounds(15, 540, 100, 30)
        self._jDPwCopyButton.setBounds(15, 575, 100, 30)
        self._jDTablecont.setBounds(120, 400, 750, 205)
        self._jDitemsDelete.setBounds(810, 375, 60, 25)

        # Component ADD
        self._jScanPanel.add(self._jLabelCurrentIPMainText)
        self._jScanPanel.add(self._jLabelCurrentIPDesText)
        self._jScanPanel.add(self._jLabelCurrentWanIp)
        self._jScanPanel.add(self._jLabelCurrentLanIp)
        self._jScanPanel.add(self._jLabelCurrentWanIpDes)
        self._jScanPanel.add(self._jLabelCurrentLanIpDes)
        self._jScanPanel.add(self._jCheckIPButton)
        self._jScanPanel.add(self._jLabelMainText)
        self._jScanPanel.add(self._jLabelScanIPListen)
        self._jScanPanel.add(self._jPAddButton)
        self._jScanPanel.add(self._jPEditButton)
        self._jScanPanel.add(self._jPRemoveButton)
        self._jScanPanel.add(self._jSeparator_first)
        self._jScanPanel.add(self._jTablecont)
        self._jScanPanel.add(self._jSeparator_second)
        self._jScanPanel.add(self._jLabelDashboardText)
        self._jScanPanel.add(self._jLabelDashboardDesText)
        self._jScanPanel.add(self._jDAddButton)
        self._jScanPanel.add(self._jDEditButton)
        self._jScanPanel.add(self._jDRemoveButton)
        self._jScanPanel.add(self._jDIDCopyButton)
        self._jScanPanel.add(self._jDPwCopyButton)
        self._jScanPanel.add(self._jDTablecont)
        self._jScanPanel.add(self._jDitemsDelete)
        self._jScanPanel.add(self._jDURLConButton)

        # ADD/EDIT Dialog Create Component
        ## PROXY

        self.panel = swing.JPanel()
        self.panel.setLayout(None)
        self.panel.setPreferredSize(awt.Dimension(200, 140))
        self.DescriptionLabel = swing.JLabel()
        self.NameLabel = swing.JLabel()
        self.IPLabel = swing.JLabel()
        self.PortLabel = swing.JLabel()
        self.Nametext = swing.JTextField(50)
        self.IPtext = swing.JTextField(50)
        self.Porttext = swing.JTextField(50)

        ## ACOUNT
        self.Dpanel = swing.JPanel()
        self.Dpanel.setLayout(None)
        self.Dpanel.setPreferredSize(awt.Dimension(260, 210))
        self.DDescriptionLabel = swing.JLabel()
        self.DURLLabel = swing.JLabel()
        self.DURLText = swing.JTextField(50)
        self.DPrivLabel = swing.JLabel()
        self.DPrivCombo = swing.JComboBox()
        self.DIDLabel = swing.JLabel()
        self.DIDText = swing.JTextField(50)
        self.DPassLabel = swing.JLabel()
        self.DPassText = swing.JTextField(50)
        self.DCommentLabel = swing.JLabel()
        self.DCommentText = swing.JTextField(50)
        self.DSubCommentLabel = swing.JLabel()

        # ADD/EDIT Dialog Configure locations
        ## PROXY

        self.DescriptionLabel.setBounds(0, 0, 190, 15)
        self.NameLabel.setBounds(5, 35, 50, 30)
        self.IPLabel.setBounds(5, 70, 50, 30)
        self.PortLabel.setBounds(5, 105, 50, 30)
        self.Nametext.setBounds(60, 35, 150, 30)
        self.IPtext.setBounds(60, 70, 150, 30)
        self.Porttext.setBounds(60, 105, 150, 30)

        ## ACCOUNT
        self.DDescriptionLabel.setBounds(0, 0, 200, 10)

        self.DURLLabel.setBounds(5, 35, 70, 30)
        self.DURLText.setBounds(80, 35, 180, 30)
        self.DPrivLabel.setBounds(5, 70, 70, 30)
        self.DPrivCombo.setBounds(80, 70, 180, 30)
        self.DIDLabel.setBounds(5, 105, 70, 30)
        self.DIDText.setBounds(80, 105, 180, 30)
        self.DPassLabel.setBounds(5, 140, 70, 30)
        self.DPassText.setBounds(80, 140, 180, 30)
        self.DCommentLabel.setBounds(5, 175, 70, 15)
        self.DCommentText.setBounds(80, 175, 180, 30)
        self.DSubCommentLabel.setBounds(0, 190, 80, 15)

        # ADD/EDIT Dialog Configure GUI
        ## PROXY

        self.DescriptionLabel.setText("Input your proxy server details.")
        self.NameLabel.setText("NAME : ")
        self.IPLabel.setText("IP : ")
        self.PortLabel.setText("PORT : ")

        ## ACCOUNT
        self.DDescriptionLabel.setText("Input your account details")
        self.DURLLabel.setText("URL : ")
        self.DPrivLabel.setText("Privilege : ")
        self.DIDLabel.setText("ID : ")
        self.DPassLabel.setText("Password : "******"Comment : ")
        self.DSubCommentLabel.setText("(Unique Text)")
        self.DPrivCombo.addItem("System Administrator")
        self.DPrivCombo.addItem("Staff Administrator")
        self.DPrivCombo.addItem("Internal Staff")
        self.DPrivCombo.addItem("Customer")
        self.DPrivCombo.addItem("The Lowest Privilege")
        self.DPrivCombo.addItem("ETC")
        self.DPrivCombo.setEditable(False)

        # ADD/EDIT Dialog Component ADD
        ## PROXY
        self.panel.add(self.DescriptionLabel)
        self.panel.add(self.NameLabel)
        self.panel.add(self.IPLabel)
        self.panel.add(self.PortLabel)
        self.panel.add(self.Nametext)
        self.panel.add(self.IPtext)
        self.panel.add(self.Porttext)

        ## ACCOUNT
        self.Dpanel.add(self.DDescriptionLabel)
        self.Dpanel.add(self.DURLLabel)
        self.Dpanel.add(self.DURLText)
        self.Dpanel.add(self.DIDLabel)
        self.Dpanel.add(self.DIDText)
        self.Dpanel.add(self.DPassLabel)
        self.Dpanel.add(self.DPassText)
        self.Dpanel.add(self.DPrivLabel)
        self.Dpanel.add(self.DPrivCombo)
        self.Dpanel.add(self.DCommentLabel)
        self.Dpanel.add(self.DCommentText)
        self.Dpanel.add(self.DSubCommentLabel)

        # Setup Tabs
        self._jConfigTab = swing.JTabbedPane()
        self._jConfigTab.addTab("Smart Settings", self._jScanPanel)
        callbacks.addSuiteTab(self)
        return
Ejemplo n.º 9
0
    def createGui(self):

        mpanel = swing.JPanel(java.awt.BorderLayout())
        self.available = jlist = swing.JList()
        jlist.setVisibleRowCount(5)
        jlsp = swing.JScrollPane(jlist)
        self.addTitledBorder(jlsp, "Members")

        #jlist.setListData( ("catssssssssss", "rats" ))
        mpanel.add(jlsp, java.awt.BorderLayout.WEST)
        jtp = swing.JTabbedPane()
        mpanel.add(jtp, java.awt.BorderLayout.CENTER)

        tpanel = swing.JPanel()
        slayout = swing.SpringLayout()
        tpanel.setLayout(slayout)
        jtp.addTab("Messages", tpanel)
        self.jta = jta = swing.JTextArea()
        jsp = swing.JScrollPane(jta)
        self.addTitledBorder(jsp, "Instant Messages")
        jsp.setPreferredSize(java.awt.Dimension(500, 200))
        tpanel.add(jsp)
        slayout.putConstraint(slayout.NORTH, jsp, 5, slayout.NORTH, tpanel)
        slayout.putConstraint(slayout.EAST, tpanel, 5, slayout.EAST, jsp)
        self.sendmessage = jta2 = swing.JTextArea()
        jsp2 = swing.JScrollPane(jta2)
        self.addTitledBorder(jsp2, "Compose Message")
        jsp2.setPreferredSize(java.awt.Dimension(250, 200))
        tpanel.add(jsp2)
        slayout.putConstraint(slayout.NORTH, jsp2, 5, slayout.SOUTH, jsp)
        jb = swing.JButton("Send Message")
        jb.actionPerformed = lambda event: self.sendMessage()
        tpanel.add(jb)
        slayout.putConstraint(slayout.NORTH, jb, 0, slayout.NORTH, jsp2)
        slayout.putConstraint(slayout.WEST, jb, 5, slayout.EAST, jsp2)
        jb2 = swing.JButton("Clear")
        jb2.actionPerformed = lambda event: self.sendmessage.setText("")
        tpanel.add(jb2)
        slayout.putConstraint(slayout.NORTH, jb2, 5, slayout.SOUTH, jb)
        slayout.putConstraint(slayout.WEST, jb2, 5, slayout.EAST, jsp2)
        slayout.putConstraint(slayout.SOUTH, tpanel, 5, slayout.SOUTH, jsp2)

        npanel = swing.JPanel()
        slayout = swing.SpringLayout()
        npanel.setLayout(slayout)
        jtp.addTab("Nodes", npanel)
        self.table = jtable = swing.JTable()

        self.dtm = dtm = swing.table.DefaultTableModel()
        dtm.addColumn("From")
        dtm.addColumn("Node Name")
        jtable.setModel(dtm)
        jsp3 = swing.JScrollPane(jtable)
        jsp3.setPreferredSize(java.awt.Dimension(500, 200))
        npanel.add(jsp3)
        slayout.putConstraint(slayout.NORTH, jsp3, 5, slayout.NORTH, npanel)
        slayout.putConstraint(slayout.EAST, npanel, 5, slayout.EAST, jsp3)
        jb3 = swing.JButton("Send Current Node To")
        jb3.actionPerformed = lambda event: self.sendNode()
        npanel.add(jb3)
        slayout.putConstraint(slayout.NORTH, jb3, 5, slayout.SOUTH, jsp3)
        slayout.putConstraint(slayout.SOUTH, npanel, 5, slayout.SOUTH, jb3)
        jb4 = swing.JButton("Insert Selected Row")
        jb4.actionPerformed = lambda event: self.insertNode()
        npanel.add(jb4)
        slayout.putConstraint(slayout.NORTH, jb4, 0, slayout.NORTH, jb3)
        slayout.putConstraint(slayout.EAST, jb4, 0, slayout.EAST, jsp3)
        jf = swing.JFrame()
        jf.add(mpanel)
        jf.pack()
        jf.visible = 1
Ejemplo n.º 10
0
    def exportCodes(self, e):
        self.blankLog()
        self.siteMapData = self._callbacks.getSiteMap(None)
        # response codes to be included
        self.rcodes = []
        if self.uiRcode1xx.isSelected():
            self.rcodes += '1'
        if self.uiRcode2xx.isSelected():
            self.rcodes += '2'
        if self.uiRcode3xx.isSelected():
            self.rcodes += '3'
        if self.uiRcode4xx.isSelected():
            self.rcodes += '4'
        if self.uiRcode5xx.isSelected():
            self.rcodes += '5'

        if '3' in self.rcodes:
            self.colNames = ('Request', 'Referer', 'Response Code',
                             'Redirects To')
        else:
            self.colNames = ('Request', 'Referer', 'Response Code')
        self.tableData = []

        for i in self.siteMapData:
            self.requestInfo = self._helpers.analyzeRequest(i)
            self.url = self.requestInfo.getUrl()
            if self.scopeOnly() and not (self._callbacks.isInScope(self.url)):
                continue

            self.urlDecode = self._helpers.urlDecode(str(self.url))
            self.response = i.getResponse()
            if self.response == None:
                continue
            # Get referer if there is one
            self.requestHeaders = self.requestInfo.getHeaders()
            self.referer = ''
            for j in self.requestHeaders:
                if j.startswith('Referer:'):
                    self.fullReferer = j.split(' ')[1]
                    # drop the querystring parameter
                    self.referer = self.fullReferer.split('?')[0]
            # Get response code
            self.responseInfo = self._helpers.analyzeResponse(self.response)
            self.responseCode = self.responseInfo.getStatusCode()
            self.firstDigit = str(self.responseCode)[0]
            if self.firstDigit not in self.rcodes:
                continue
            if self.firstDigit in ['1', '2', '4',
                                   '5']:  # Return codes 1xx, 2xx, 4xx, 5xx
                self.tableData.append([
                    self.stripURLPort(self.urlDecode),
                    str(self.referer),
                    str(self.responseCode)
                ])
            elif self.firstDigit == '3':  # Return code 3xx Redirection
                self.requestHeaders = self.requestInfo.getHeaders()
                self.responseHeaders = self.responseInfo.getHeaders()
                for j in self.responseHeaders:
                    if j.startswith('Location:'):
                        self.location = j.split(' ')[1]
                self.tableData.append([
                    self.stripURLPort(self.urlDecode),
                    str(self.referer),
                    str(self.responseCode), self.location
                ])

        dataModel = DefaultTableModel(self.tableData, self.colNames)
        self.uiLogTable = swing.JTable(dataModel)
        self.uiLogTable.setAutoCreateRowSorter(True)
        self.uiLogPane.setViewportView(self.uiLogTable)
Ejemplo n.º 11
0
    def extractLinks(self, e):
        self.blankLog()

        #siteMapData only contains first requested entry of a page. Removing that page entry from burp target > site map > content will allow update.
        self.siteMapData = self._callbacks.getSiteMap(None)
        # What links should be extracted? absolute links, relative links, or both?
        self.destAbs = self.destRel = False
        if self.uiLinksAbs.isSelected():
            self.destAbs = True
        if self.uiLinksRel.isSelected():
            self.destRel = True

        # Start building JTable to contain the extracted data
        self.colNames = ('Page', 'HTTPS?', 'Link', 'Description', 'Target',
                         'Rel=', 'Possible vulnerabilities')
        self.tableData = []
        for i in self.siteMapData:
            try:
                self.requestInfo = self._helpers.analyzeRequest(i)
                self.url = self.requestInfo.getUrl()

                if self.scopeOnly() and not (self._callbacks.isInScope(
                        self.url)):
                    continue

                self.urlDecode = self._helpers.urlDecode(str(self.url))

                self.response = i.getResponse()
                if self.response == None:  # if there's no response, there won't be any links :-)
                    continue

                self.responseInfo = self._helpers.analyzeResponse(
                    self.response)
                self.responseOffset = self.responseInfo.getBodyOffset()
                self.responseBody = self._helpers.bytesToString(
                    self.response)[self.responseOffset:]

                keep_looking = True
                while keep_looking:  # there may be multiple links in the response
                    #TODO: known issue: if link does not start with <a href= it won't be detected
                    i = self.responseBody.lower().find('<a href=')

                    #define some variables
                    self.isHttps = None
                    self.Vulnerabilities = ""

                    if i == -1:  # no more <a href's found
                        break
                    self.responseBody = self.responseBody[i + 8:]
                    isAbsLink = isRelLink = False
                    # Looking for either " or ' around links which can be either absolute or relative
                    # This assumes that for a link, quoting is consistent at front and back
                    if self.responseBody[0:8].lower() == '"http://':
                        myOffset = 8
                        isAbsLink = True
                        endQuote = '"'
                        self.isHttps = False
                        self.Vulnerabilities = "Unencrypted transport"
                    elif self.responseBody[0:8].lower() == "'http://":
                        myOffset = 8
                        isAbsLink = True
                        endQuote = "'"
                        self.isHttps = False
                        self.Vulnerabilities = "Unencrypted transport"
                    elif self.responseBody[0:8].lower() == '"mailto:':
                        myOffset = 0
                        isAbsLink = True
                        endQuote = '"'
                        self.isHttps = "(mailto)"
                    elif self.responseBody[0:8].lower() == "'mailto:":
                        myOffset = 0
                        isAbsLink = True
                        endQuote = "'"
                        self.isHttps = "(mailto)"
                    elif self.responseBody[0:7].lower() == "mailto:":
                        myOffset = 0
                        isAbsLink = True
                        endQuote = ">"  #might have space, but might not have space. Assume end will be there for sure.
                        self.isHttps = "(mailto)"
                    elif self.responseBody[0:9].lower() == '"https://':
                        myOffset = 9
                        isAbsLink = True
                        endQuote = '"'
                        self.isHttps = True
                    elif self.responseBody[0:9].lower() == "'https://":
                        myOffset = 9
                        isAbsLink = True
                        endQuote = "'"
                        self.isHttps = True
                    elif self.responseBody[0:1] == '"':
                        myOffset = 1
                        isRelLink = True
                        endQuote = '"'
                        self.isHttps = "(Relative)"
                    else:
                        myOffset = 1
                        isRelLink = True
                        endQuote = "'"
                        self.isHttps = "(Relative)"

                    self.responseBody = self.responseBody[myOffset:]
                    pos = self.responseBody.find(endQuote)
                    self.link = self.responseBody[0:pos]

                    # Looking for </a> end tag
                    # This assumes that the link is correctly ended
                    posEndTag = self.responseBody.lower().find("</a>")
                    self.fullLink = self.responseBody[0:posEndTag]

                    # Looking for > at the end of the <a  tag
                    # This again assumes that the link is correctly ended
                    posEndA = self.responseBody.lower().find(">")
                    self.description = self.responseBody[posEndA + 1:posEndTag]

                    # Looking for a possible target that is described
                    self.target = ""
                    if self.responseBody.lower().find("target") < posEndA:
                        posTarget = self.responseBody.lower().find("target")
                        #search the end of this parameter - might be ' or " or even a space, but it should be directly after the target

                        if self.responseBody[posTarget + 7:posTarget +
                                             8] == '"':
                            endQuote = '"'
                        elif self.responseBody[posTarget + 7:posTarget +
                                               8] == "'":
                            endQuote = "'"
                        else:
                            endQuote = ">"

                        posTargetEnd = self.responseBody[posTarget +
                                                         8:posEndA].lower(
                                                         ).find(endQuote)
                        #TODO rework needed
                        self.target = self.responseBody[posTarget +
                                                        8:posTarget + 8 +
                                                        posTargetEnd]

                    self.rel = ""
                    if self.responseBody.lower().find("rel") < posEndA:
                        posRel = self.responseBody.lower().find("rel")
                        #search the end of this parameter - might be ' or " or even a space, but it should be directly after the target
                        if self.responseBody[posRel + 4:posRel + 5] == '"':
                            endQuote = '"'
                        elif self.responseBody[posRel + 4:posRel + 5] == "'":
                            endQuote = "'"
                        else:
                            endQuote = ">"

                        posRelEnd = self.responseBody[posRel +
                                                      5:posEndA].lower().find(
                                                          endQuote)

                        self.rel = self.responseBody[posRel + 5:posRel + 5 +
                                                     posRelEnd]

                        #Is this link vulnerable to Tabnabbing?
                        if self.target != "" and not isRelLink:
                            if self.rel.lower().find("noopener") == -1:
                                self.Vulnerabilities = self.Vulnerabilities + " Tabnabbing"
                    #if rel= is not defined, but target is, the link is still vulnerable for tabnabbing
                    elif self.target != "" and not isRelLink:
                        self.Vulnerabilities = self.Vulnerabilities + " Tabnabbing"

                    if (isAbsLink and self.destAbs) or (isRelLink
                                                        and self.destRel):
                        # remove white space and extra CR/LF characters
                        self.tableData.append([
                            self.stripURLPort(self.urlDecode),
                            str(self.isHttps),
                            self.lstripWS(self.stripCRLF(self.link)),
                            self.lstripWS(self.stripCRLF(self.description)),
                            self.lstripWS(self.stripCRLF(self.target)),
                            self.lstripWS(self.stripCRLF(self.rel)),
                            self.lstripWS(self.stripCRLF(self.Vulnerabilities))
                        ])

            except:
                print('An error occured during processing of a link [ ' +
                      str(i) + ' ] ignored it and continued with the next.')

        dataModel = DefaultTableModel(self.tableData, self.colNames)
        self.uiLogTable = swing.JTable(dataModel)
        self.uiLogTable.setAutoCreateRowSorter(True)

        self.uiLogPane.setViewportView(self.uiLogTable)
def generateUI(file_list):
    # window
    frame = swing.JFrame("Marcksl1 prescreen tool")
    frame.setDefaultCloseOperation(swing.JFrame.DISPOSE_ON_CLOSE)
    frame.setPreferredSize(Dimension(700, 500))
    frame.setSize(Dimension(700, 500))
    frame.setLocationByPlatform(True)

    layout = GridBagLayout()
    frame.setLayout(layout)

    # image list
    lst_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 0,
                                                 0.5, 0.33)
    lst_constraints.fill = GridBagConstraints.BOTH
    lst = swing.JList(file_list)
    lst_scrollpane = swing.JScrollPane(lst)
    layout.setConstraints(lst_scrollpane, lst_constraints)
    frame.add(lst_scrollpane)

    # radio buttons
    radio_panel_constraints = quickSetGridBagConstraints(
        GridBagConstraints(), 1, 0, 0.25, 0.33)
    radio_panel_constraints.fill = GridBagConstraints.HORIZONTAL

    isvButton = swing.JRadioButton("ISV", True)
    dlavButton = swing.JRadioButton("DLAV")

    radio_group = swing.ButtonGroup()
    radio_group.add(isvButton)
    radio_group.add(dlavButton)

    radio_panel = swing.JPanel()
    radio_panel_layout = GridLayout(2, 1)
    radio_panel.setLayout(radio_panel_layout)
    radio_panel.add(isvButton)
    radio_panel.add(dlavButton)
    radio_panel.setBorder(
        swing.BorderFactory.createTitledBorder(
            swing.BorderFactory.createEtchedBorder(), "Vessel type"))
    layout.setConstraints(radio_panel, radio_panel_constraints)
    frame.add(radio_panel)

    # checkboxes
    chk_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2, 0,
                                                 0.25, 0.33)
    chk_constraints.fill = GridBagConstraints.HORIZONTAL
    chkbox = swing.JCheckBox("Is lumenised?", True)
    layout.setConstraints(chkbox, chk_constraints)
    frame.add(chkbox)

    # add ROI button
    roi_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0,
                                                     1, 1, 0.16)
    roi_but_constraints.gridwidth = 3
    roi_but_constraints.fill = GridBagConstraints.BOTH
    roi_but = swing.JButton("Add current ROI")
    layout.setConstraints(roi_but, roi_but_constraints)
    frame.add(roi_but)

    # metadata display table
    mdtbl_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 2,
                                                   1, 0.33)
    mdtbl_constraints.gridwidth = 3
    mdtbl_constraints.fill = GridBagConstraints.BOTH

    mdtbl_colnames = [
        'Experiment', 'Embryo', 'Imaged region index', 'ROI index',
        'Vessel type', 'Lumenised?'
    ]
    mdtbl_model = swing.table.DefaultTableModel(mdtbl_colnames, 10)
    mdtbl = swing.JTable()

    mdtbl_scrollpane = swing.JScrollPane(mdtbl)
    layout.setConstraints(mdtbl_scrollpane, mdtbl_constraints)
    frame.add(mdtbl_scrollpane)

    # buttons
    del_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 1,
                                                     3, 0.25, 0.16)
    del_but_constraints.fill = GridBagConstraints.BOTH
    del_but = swing.JButton("Delete selected ROI")
    layout.setConstraints(del_but, del_but_constraints)
    frame.add(del_but)

    save_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2,
                                                      3, 0.25, 0.16)
    save_but_constraints.fill = GridBagConstraints.BOTH
    save_but = swing.JButton("Save...")
    layout.setConstraints(save_but, save_but_constraints)
    frame.add(save_but)

    # show window
    frame.setVisible(True)
    frame.pack()
Ejemplo n.º 13
0
    def visualiseUndoStack(self):

        umanager = self.umanager
        table = swing.JTable(self.UneditableTableModel(
        ))  #( data, util.Vector( [ 'spot', 'data', 'action', 'redo/undo' ] ) )
        table.setSelectionMode(swing.ListSelectionModel.SINGLE_SELECTION)
        self.setDataForTable(table)

        jd = swing.JDialog()
        jd.setTitle("Undo Stack")
        cp = jd.getContentPane()
        cp.add(swing.JScrollPane(table))
        bholder = swing.JPanel()
        cp.add(bholder, java.awt.BorderLayout.SOUTH)
        uto = swing.JButton("Undo To")
        bholder.add(uto)

        #@    <<_undoTo>>
        #@+node:zorcanda!.20050906183758:<<_undoTo>>
        def _undoTo(event):
            sr = table.getSelectedRow()
            if sr == -1:
                swing.JOptionPane.showMessageDialog(
                    None, "No Selected Row", "Select A Row Please",
                    swing.JOptionPane.INFORMATION_MESSAGE)
                return
            edits = umanager.getEdits()
            undo = edits.get(sr)
            if not undo.canUndo():
                swing.JOptionPane.showMessageDialog(
                    None, "Cant Undo To This Point", "Illegal Undo Selection",
                    swing.JOptionPane.WARNING_MESSAGE)
                return
            self.ignore = 1
            umanager.undoTo(undo)
            self.ignore = 0
            self.setDataForTable(table)

        #@-node:zorcanda!.20050906183758:<<_undoTo>>
        #@nl
        uto.actionPerformed = _undoTo

        rto = swing.JButton("Redo To")
        bholder.add(rto)

        #@    <<_redoTo>>
        #@+node:zorcanda!.20050906183938:<<_redoTo>>
        def _redoTo(event):
            sr = table.getSelectedRow()
            if sr == -1:
                swing.JOptionPane.showMessageDialog(
                    None, "No Selected Row", "Select A Row Please",
                    swing.JOptionPane.INFORMATION_MESSAGE)
                return
            edits = umanager.getEdits()
            undo = edits.get(sr)
            if not undo.canRedo():
                swing.JOptionPane.showMessageDialog(
                    None, "Cant Redo To This Point", "Illegal Redo Selection",
                    swing.JOptionPane.WARNING_MESSAGE)
                return

            self.ignore = 1
            umanager.redoTo(undo)
            self.ignore = 0
            self.setDataForTable(table)

        #@-node:zorcanda!.20050906183938:<<_redoTo>>
        #@nl
        rto.actionPerformed = _redoTo

        jb = swing.JButton("Close")
        jb.actionPerformed = lambda event: jd.dispose()
        bholder.add(jb)
        jd.pack()
        g.app.gui.center_dialog(jd)
        jd.setModal(1)
        jd.show()
Ejemplo n.º 14
0
    def registerExtenderCallbacks(self, callbacks):
        # for error handling
        sys.stdout = callbacks.getStdout()
        sys.stderr = callbacks.getStderr()

        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()

        jsonFilter = FileNameExtensionFilter("JSON files", ['json'])

        basePath = self._callbacks.loadExtensionSetting(SETTING_LAST_PATH)
        # print("got last path {}".format(basePath))

        self._collectionChooser = swing.JFileChooser(basePath)
        self._collectionChooser.setFileFilter(jsonFilter)

        self._environmentChooser = swing.JFileChooser(basePath)
        self._environmentChooser.setFileFilter(jsonFilter)

        # ### Top "buttons" pane
        controlPane = swing.JPanel()
        controlPane.setBorder(EmptyBorder(10, 20, 0, 10))
        controlPane.setLayout(
            swing.BoxLayout(controlPane, swing.BoxLayout.PAGE_AXIS))
        controlPane.setAlignmentX(swing.Box.LEFT_ALIGNMENT)

        box1 = swing.Box.createHorizontalBox()
        box1.setAlignmentX(swing.Box.LEFT_ALIGNMENT)
        box1.add(
            swing.JButton('Load Collection',
                          actionPerformed=self.loadCollection))
        self._collectionLabel = swing.JLabel("Choose a collection file")
        box1.add(self._collectionLabel)
        controlPane.add(box1)

        box2 = swing.Box.createHorizontalBox()
        box2.setAlignmentX(swing.Box.LEFT_ALIGNMENT)
        box2.add(
            swing.JButton('Load Environment',
                          actionPerformed=self.loadEnvironment))
        self._environmentLabel = swing.JLabel("Choose an environment file")
        box2.add(self._environmentLabel)
        controlPane.add(box2)

        # ### end Top "controls" pane

        # ### instructions
        instructionsPane = swing.JPanel(BorderLayout())
        instructions = swing.JLabel()
        instructions.setText("""<html><body>
<h3>Usage:</h3>
<ol>
<li>Select the Collection Postman JSON file. This should extract all discovered environment variables.</li>
<li>(Optional) Select an Environment Postman JSON file. This can be the same as the Collection file.</li>
<li>Set environment variables below.</li>
<li>Choose 'Create Requests' to create Repeater tabs.</li>
</ol>
</body></html>""")
        instructionsPane.add(instructions, BorderLayout.NORTH)
        # ### end instructions

        # ### environment variables
        envTablePane = swing.JPanel(BorderLayout())
        envLabel = swing.JLabel("Environment Variables")
        envLabel.setBorder(EmptyBorder(5, 5, 5, 5))
        envLabel.setFont(
            Font(envLabel.getFont().getName(), Font.BOLD,
                 envLabel.getFont().getSize() + 2))
        envTablePane.add(envLabel, BorderLayout.NORTH)

        self._envTable = swing.JTable(DefaultTableModel([], self._envCols))
        self._envTable.setAutoCreateRowSorter(True)
        self._envTable.getTableHeader().setReorderingAllowed(False)
        tableMenu = swing.JPopupMenu()
        tableMenu.add(swing.JMenuItem("Add New", actionPerformed=self._addEnv))
        tableMenu.add(
            swing.JMenuItem("Clear All", actionPerformed=self._clearEnv))
        deleteMenuItem = swing.JMenuItem("Delete Row",
                                         actionPerformed=self._deleteEnv)
        deleteMenuItem.setEnabled(False)
        tableMenu.add(deleteMenuItem)
        self._envTable.setComponentPopupMenu(tableMenu)
        listener = self._envTableListener(self)
        self._envTable.addMouseListener(listener)
        renderer = self._envTableRenderer()
        self._envTable.setDefaultRenderer(Class.forName('java.lang.Object'),
                                          renderer)

        envTablePaneMenu = swing.JPopupMenu()
        envTablePaneMenu.add(
            swing.JMenuItem("Add New", actionPerformed=self._addEnv))
        envTablePaneMenu.add(
            swing.JMenuItem("Clear All", actionPerformed=self._clearEnv))
        scrl = swing.JScrollPane(self._envTable)
        scrl.setComponentPopupMenu(envTablePaneMenu)
        envTablePane.add(scrl)
        # ### end environment variables

        # ### requests
        reqTablePane = swing.JPanel(BorderLayout())
        reqLabel = swing.JLabel("Requests")
        reqLabel.setBorder(EmptyBorder(5, 5, 5, 5))
        reqLabel.setFont(envLabel.getFont())
        reqTablePane.add(reqLabel, BorderLayout.NORTH)

        self._reqTable = self._reqTableClass(
            DefaultTableModel([], self._reqCols))
        self._reqTable.setAutoCreateRowSorter(True)
        self._reqTable.getTableHeader().setReorderingAllowed(False)
        self._reqTable.setAutoResizeMode(swing.JTable.AUTO_RESIZE_LAST_COLUMN)
        self._reqTable.getTableHeader().setReorderingAllowed(False)
        self._reqTable.getColumnModel().getColumn(0).setMaxWidth(150)
        self._reqTable.getColumnModel().getColumn(0).setMinWidth(150)
        self._reqTable.getColumnModel().getColumn(2).setMaxWidth(150)
        self._reqTable.getColumnModel().getColumn(2).setMinWidth(150)
        scrl2 = swing.JScrollPane(self._reqTable)
        reqTablePane.add(scrl2)
        # ### end requests

        # ### Logs
        logPane = swing.JPanel(BorderLayout())

        buttonBox = swing.JPanel(FlowLayout(FlowLayout.LEFT, 20, 0))
        requestButtonBox = swing.Box.createHorizontalBox()
        self._selectButtons = [
            swing.JButton('Select All', actionPerformed=self.selectAll),
            swing.JButton('Select None', actionPerformed=self.selectNone),
            swing.JButton('Invert Selection',
                          actionPerformed=self.selectInvert)
        ]
        for btn in self._selectButtons:
            requestButtonBox.add(btn)
            btn.setEnabled(False)

        buttonBox.add(requestButtonBox)

        self._createRequestsButton = swing.JButton(
            'Create Requests', actionPerformed=self.createRequests)
        self._createRequestsButton.setEnabled(False)
        requestButtonBox.add(self._createRequestsButton)

        buttonBox.add(self._createRequestsButton)

        self._logButton = swing.JButton('Clear Log',
                                        actionPerformed=self.clearLog)
        self._logButton.setEnabled(False)
        buttonBox.add(self._logButton)

        logPane.add(buttonBox, BorderLayout.NORTH)

        self._log = swing.JTextPane()
        self._log.setEditable(False)
        self._log.setFont(Font("monospaced", Font.PLAIN, 12))
        logPane.add(swing.JScrollPane(self._log))
        # ### end Logs

        # ### add panels
        self._topControlsPane = swing.JSplitPane(
            swing.JSplitPane.HORIZONTAL_SPLIT, controlPane, instructionsPane)
        p1 = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT,
                              self._topControlsPane, envTablePane)
        p2 = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT, p1,
                              reqTablePane)
        p2.setResizeWeight(0.5)
        self._panel = swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT, p2,
                                       logPane)
        self._panel.setResizeWeight(0.6)
        # ### end add panels

        callbacks.setExtensionName(NAME)
        callbacks.addSuiteTab(self)
Ejemplo n.º 15
0
 def createNodeSearchFrame( self, clnpanel ):
     
     clnpanel.setLayout( awt.BorderLayout() )
     oclnpanel = clnpanel
     clnpanel = swing.Box.createHorizontalBox()
     oclnpanel.add( clnpanel, awt.BorderLayout.CENTER )
     
     
     jta = swing.JTextArea()
     self.CutCopyPaste( jta )
     tp = swing.JPanel( awt.GridLayout( 1, 1 ))
     self.nstext = jta
     sp = swing.JScrollPane( jta )
 
     border = sp.getBorder()
     tborder = sborder.TitledBorder( border )
     tborder.setTitle( "Base Text" )
     sp.setBorder( tborder )
     tp.add( sp )
     clnpanel.add( tp )
     
     
     bpanel = swing.JPanel()
     spl = swing.SpringLayout()
     bpanel.setLayout( spl )  
     executebox = swing.Box.createHorizontalBox()
     border = executebox.getBorder()
     tborder = sborder.TitledBorder( border )
     tborder.setTitle( "Searching" )
     executebox.setBorder( tborder )
     bpanel.add( executebox )
     spl.putConstraint( spl.NORTH, executebox, 5, spl.NORTH, bpanel )
     clnsearch = swing.JButton( "Clone Search" )
     clnsearch.actionPerformed = self.nodeSearch
     executebox.add( clnsearch )
     #spl.putConstraint( spl.NORTH, clnsearch, 5, spl.NORTH, bpanel )
     cpysearch = swing.JButton( "Copy Search" )
     cpysearch.actionPerformed = lambda event: self.nodeSearch( event, type='copy' ) 
     #bpanel.add( cpysearch )
     #spl.putConstraint( spl.NORTH, cpysearch, 5, spl.SOUTH, clnsearch )
     executebox.add( cpysearch )
     
     self.all_searches = rb1 = swing.JCheckBox( "Match Searches" )
     mtext = """Selecting causes the search system to only recognize a node if all searches match"""
     rb1.setToolTipText( mtext ) 
     bpanel.add( rb1 )
     spl.putConstraint( spl.NORTH, rb1, 5, spl.NORTH, bpanel )
     spl.putConstraint( spl.WEST, rb1, 5, spl.EAST, executebox )
     
     
     self.all_filters = rb2 = swing.JCheckBox( "Match Filters" )
     mtext = """Selecting causes the filter system to only filter out a node if all searches match"""
     rb2.setToolTipText( mtext )
     bpanel.add( rb2 )
     spl.putConstraint( spl.NORTH, rb2, 5, spl.SOUTH, rb1 )
     spl.putConstraint( spl.WEST, rb2, 5, spl.EAST, executebox )
     
     spl2 = swing.SpringLayout()
     sandf = swing.JPanel( spl2 )
     sandf.setPreferredSize( awt.Dimension( 275, 85 ) )
     border = sandf.getBorder()
     tborder = sborder.TitledBorder( border )
     tborder.setTitle( "Derive Searches and Filters" )
     sandf.setBorder( tborder )
     bpanel.add( sandf )
     spl.putConstraint( spl.NORTH, sandf, 5, spl.SOUTH, executebox )
     
     b1 = swing.JButton( "+ as Search" )
     b1.setActionCommand( "search" )
     b1.actionPerformed = self.addAsSearchOrExclude
     b2 = swing.JButton( "+ as Filter" )
     b2.setActionCommand( "filter" )
     b2.actionPerformed = self.addAsSearchOrExclude
     sandf.add( b1 ); sandf.add( b2 )
     spl2.putConstraint( spl2.NORTH, b1, 5, spl2.NORTH, executebox )
     spl2.putConstraint( spl2.NORTH, b2, 5, spl2.SOUTH, b1 )
     b3 = swing.JButton( "+ as Regex-Search" )
     b3.setActionCommand( "regex-search" )
     b3.actionPerformed = self.addAsSearchOrExclude
     sandf.add( b3 )
     spl2.putConstraint( spl2.NORTH, b3,5, spl2.NORTH, executebox )
     spl2.putConstraint( spl2.WEST, b3,5, spl2.EAST, b1 )
     #spl2.putConstraint( spl2.EAST, b3, 5, spl2.EAST, executebox )
     b4 = swing.JButton( "+ as Regex-Filter" )
     b4.setActionCommand( "regex-filter" )
     b4.actionPerformed = self.addAsSearchOrExclude
     sandf.add( b4 )
     spl2.putConstraint( spl2.NORTH, b4, 5, spl2.SOUTH, b1 )
     spl2.putConstraint( spl2.WEST, b4, 5, spl2.EAST, b2 )
     clear = swing.JButton( "Clear Text" )
     def clear_txt( event, text = jta ):
         
         jta.setText( "" )
     clear.actionPerformed = clear_txt
     bpanel.add( clear )
     spl.putConstraint( spl.NORTH, clear, 5, spl.SOUTH, sandf )
     
     
     clnpanel.add( bpanel )
     tp.setPreferredSize( awt.Dimension( 200, 100 ) )
     clnpanel.setPreferredSize( awt.Dimension( 200, 100 )) 
     
     class dtm2( stable.DefaultTableModel ):
         
         def __int__( self ):
             stable.DefaultTableModel.__init__( self )
             
         def isCellEditable( self, a, b ):
             if b == 1:
                 return False
             return True
         
     self.dtm = dtm = dtm2()
     dtm.addColumn( "Text" )
     dtm.addColumn( "Type" )
     jp = swing.JPanel( awt.BorderLayout() )
     self.table = jt = swing.JTable( dtm )
     jt.getColumn( "Text" ).setCellEditor( self._LeoTableCellEditor() )
     jt.getColumn( "Text" ).setCellRenderer( self._LeoTableCellRenderer() )
     
     rmv = swing.JButton( "Remove" )
     def rmv_row( event, jt = jt, dtm = dtm ):
         
         row = jt.getSelectedRow()
         if row != -1:
             dtm.removeRow( row )
         
     rmv.actionPerformed = rmv_row
     rmva = swing.JButton( "Clear" )
     def rmv_all( event, jt = jt, dtm = dtm ):
         
         rc = dtm.getRowCount()
         for z in xrange( rc ):
             dtm.removeRow( 0 )       
         
     rmva.actionPerformed = rmv_all   
     rmvp = swing.Box.createVerticalBox()
     rmvp.add( rmv )
     rmvp.add( rmva )
     jp.add( rmvp, awt.BorderLayout.EAST )
     jtsp = swing.JScrollPane( jt )
     border = jtsp.getBorder()
     tborder = sborder.TitledBorder( border )
     tborder.setTitle( "Searchers and Filters" )
     jtsp.setBorder( tborder )
     jp.add( jtsp )
 
     jp.setPreferredSize( clnpanel.getPreferredSize() )
     oclnpanel.add( jp, awt.BorderLayout.SOUTH )