def refresh(self, payload): """ Refresh the textarea content with a new payload, if present :param payload: :return: None """ self._refresh_queries(payload) self._refresh_raw(payload) inherits_popup_menu(self.this)
def _refresh_queries(self, payload): """ Refresh the textarea content with a new payload, if present :param payload: :return: None """ graphql_tabs = [] for i in range(0, self.this.getTabCount()): if self.this.getTitleAt(i).startswith("GraphQL #"): graphql_tabs.append(self.this.getTitleAt(i)) if payload: # Check if the payload contains a GraphQL query object queries = self._graphql_queries(payload) if queries: # Generate and append GraphQL tab to the tabs for query_key in queries.keys(): qname = "gql_query#%s" % query_key vname = "gql_variables#%s" % query_key tname = "GraphQL #%s" % query_key queryeditor = self._create_texteditor(name=qname, label="Query:") self._textareas[qname].setText(queries[query_key]['query']) variableseditor = self._create_texteditor( name=vname, label="Variables:") this = self._get_tab_component_by_name(tname) if tname in graphql_tabs: graphql_tabs.remove(tname) if not this: this = JSplitPane(JSplitPane.VERTICAL_SPLIT, queryeditor, variableseditor) self.this.addTab(tname, this) this.setOneTouchExpandable(True) this.setDividerLocation(0.66) if 'variables' in queries[query_key]: this.getBottomComponent().setVisible(True) self._textareas[vname].setText( json.dumps(queries[query_key]['variables'], indent=4)) else: this.getBottomComponent().setVisible(False) self._textareas[vname].setText("{}") # Remove empty graphql tabs try: for tab in graphql_tabs: for i in range(0, self.this.getTabCount()): if self.this.getTitleAt(i) == tab: self.this.remove(i) except: # Do nothing if you cannot remove an entry pass inherits_popup_menu(self.this)
def __private_init__(self, text="Property Editor", columns=None, data=None, empty=None, add_actions=True, actions=None): if not actions: actions = [] if not columns: columns = [] if data == None: data = [] if not empty: empty = [] self._text = text self.this = JFrame(text) self._table = JTable() self._dtm = DefaultTableModel(0, 0) self._dtm.setColumnIdentifiers(columns) self._table.setModel(self._dtm) self._data = data for d in data: self._dtm.addRow(d) self._pane = JScrollPane(self._table) self.this.add(self._pane) self._empty = empty self.this.addWindowListener(self) self._dtm.addTableModelListener(lambda _: self._update_model()) self.this.setLocation(PropertyEditor.NEW_WINDOW_OFFSET, PropertyEditor.NEW_WINDOW_OFFSET) if add_actions: self._popup = JPopupMenu() self._pane.setComponentPopupMenu(self._popup) inherits_popup_menu(self._pane) self._actions = actions self._actions.append( ExecutorAction('Remove Selected Rows', action=lambda e: self._remove_row())) self._actions.append( ExecutorAction('Add New Row', action=lambda e: self._add_row())) for action in self._actions: self._popup.add(action.menuitem) self.this.setForeground(Color.black) self.this.setBackground(Color.lightGray) self.this.pack() self.this.setVisible(True) self.this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) return self
def _refresh_raw(self, payload): """ Refresh the textarea content with a new payload, if present :param payload: :return: None """ if payload: self.this.addTab("Raw", self._create_texteditor(name="raw", label='Raw')) self._textareas['raw'].setText(payload) if self._listener: self.add_listener(self._listener) inherits_popup_menu(self.this)
def __init__(self, actions=[], restore=None, proxy=None, http_mutator=None, texteditor_factory=None, requests=None, stub_responses=None): self._requests = requests if requests is not None else {} self._stub_responses = stub_responses if stub_responses is not None else {} self._actions = actions self._load_headers = [] self._run_config = [['Proxy', proxy], ['Authorization Key', None], ['Load Placeholders', True], ['Generate HTML DOC', True], ['Generate Schema DOC', False], ['Generate Stub Queries', True], ['Accept Invalid SSL Certificate', True], ['Generate Cycles Report', False], ['Cycles Report Timeout', 60], ['Generate TSV', False]] self._init_config = json.loads(json.dumps(self._run_config)) self._default_config = {} for k, v in self._run_config: self._default_config[k] = v self._old_config_hash = None self._actions.insert(0, BrowserAction()) self._actions.insert( 0, ExecutorAction("Configure", lambda _: self._setup())) self._actions.insert(0, ExecutorAction("Load", self._loadurl)) self._http_mutator = http_mutator self.this = JPanel() self.this.setLayout(BorderLayout()) self._omnibar = Omnibar(hint=DEFAULT_LOAD_URL, label="Load", action=self._loadurl) self.this.add(BorderLayout.PAGE_START, self._omnibar.this) self._fileview = FileView( dir=os.getcwd(), filetree_label="Queries, Mutations and Subscriptions", texteditor_factory=texteditor_factory) self.this.add(BorderLayout.CENTER, self._fileview.this) self._fileview.addTreeListener(self._tree_listener) self._fileview.addPayloadListener(self._payload_listener) self._popup = JPopupMenu() self.this.setComponentPopupMenu(self._popup) inherits_popup_menu(self.this) for action in self._actions: self._popup.add(action.menuitem) self._state = {'runs': []} try: if restore: cfg = json.loads(restore) if 'runs' in cfg: for target, key, proxy, headers, load_placeholer, generate_html, generate_schema, generate_queries, generate_cycles, cycles_timeout, generate_tsv, accept_invalid_certificate, flag in cfg[ 'runs']: self._run(target=target, key=key, proxy=proxy, headers=headers, load_placeholer=load_placeholer, generate_html=generate_html, generate_schema=generate_schema, generate_queries=generate_queries, generate_cycles=generate_cycles, cycles_timeout=cycles_timeout, generate_tsv=generate_tsv, accept_invalid_certificate= accept_invalid_certificate, flag=flag) self._run_config = cfg['config'] except Exception as ex: print( "Cannot Load old configuration: starting with a clean state: %s" % ex) sys.stdout.flush() self._state['config'] = self._run_config
def __init__(self, actions=[], restore=None): self._actions = actions self._load_headers = [] self._run_config = [['Proxy', None], ['Authorization Key', None], ['Load Placeholders', True], ['Generate HTML DOC', False], ['Generate Schema DOC', False], ['Generate Stub Queries', True], ['Accept Invalid SSL Certificate', False]] self._default_config = {} for k, v in self._run_config: self._default_config[k] = v self._old_config_hash = None self._actions.append(BrowserAction()) self._actions.append( ExecutorAction("Configure", lambda _: self._setup())) self._actions.append(ExecutorAction("Load", self._loadurl)) self._actions = [a for a in reversed(self._actions)] self.this = JPanel() self.this.setLayout(BorderLayout()) self._omnibar = Omnibar(hint=DEFAULT_LOAD_URL, label="Load", action=self._loadurl) self.this.add(BorderLayout.PAGE_START, self._omnibar.this) self._fileview = FileView( dir=os.getcwd(), filetree_label="Queries, Mutations and Subscriptions", payloadview_label="Query Template") self.this.add(BorderLayout.CENTER, self._fileview.this) self._fileview.addTreeListener(self._tree_listener) self._fileview.addPayloadListener(self._payload_listener) self._popup = JPopupMenu() self.this.setComponentPopupMenu(self._popup) inherits_popup_menu(self.this) for action in self._actions: self._popup.add(action.menuitem) self._state = {'runs': []} try: if restore: cfg = json.loads(restore) for target, key, proxy, headers, load_placeholer, generate_html, generate_schema, generate_queries, accept_invalid_certificate, flag in cfg[ 'runs']: self._run( target=target, key=key, proxy=proxy, headers=headers, load_placeholer=load_placeholer, generate_html=generate_html, generate_schema=generate_schema, generate_queries=generate_queries, accept_invalid_certificate=accept_invalid_certificate, flag=flag) self._run_config = cfg['config'] except Exception as ex: print( "Cannot Load old configuration: starting with a clean state: %s" % ex) sys.stdout.flush() self._state['config'] = self._run_config