def run(self): frame = JFrame('SecConfigReport_07', size=(500, 300), locationRelativeTo=None, componentResized=self.frameResized, defaultCloseOperation=JFrame.EXIT_ON_CLOSE) data = [] text = AdminTask.generateSecConfigReport() #----------------------------------------------------------------------- # The RegExp was added to replace multiple blanks with a single one #----------------------------------------------------------------------- for line in text.splitlines()[2:]: data.append([ re.sub(' +', ' ', info.strip()) for info in line[:-2].split(';') ]) self.table = table = JTable( reportTableModel( data, ';;;'.split(';'), ), selectionMode=ListSelectionModel.SINGLE_SELECTION) table.setDefaultRenderer(String, reportRenderer()) self.setColumnWidths(table) frame.add(JScrollPane(table)) frame.pack() frame.setVisible(1) frame.setMinimumSize(frame.getSize()) print 'frame:', frame.getSize() print 'vPort:', table.getParent().getExtentSize()
def run(self): frame = JFrame('AdminTask commandGroups', locationRelativeTo=None, defaultCloseOperation=JFrame.EXIT_ON_CLOSE) tree = self.groupTree() tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION) frame.add(JScrollPane(tree, preferredSize=(300, 300)), BorderLayout.CENTER) frame.pack() print frame.getSize() frame.setVisible(1)
def run( self ) : frame = JFrame( 'WSAShelp_01', locationRelativeTo = None, defaultCloseOperation = JFrame.EXIT_ON_CLOSE ) # text = Help.help() # tabs = text.count( '\t' ) # text = Help.help().expandtabs() # rows = text.count( '\n' ) + 1 # cols = max( [ len( x ) for x in text.splitlines() ] ) # cols = max( [ len( x.expandtabs() ) for x in text.splitlines() ] ) # print '\nrows: %d cols: %d tabs: %d' % ( rows, cols, tabs ) frame.add( JScrollPane( JTextArea( # text, Help.help().expandtabs(), 20, 80, font = Font( 'Courier' , Font.PLAIN, 12 ) ) ) ) frame.pack() size = frame.getSize() # print 'frame.getSize():', size loc = frame.getLocation() # print 'frame.getLocation():', loc loc.x -= ( size.width >> 1 ) loc.y -= ( size.height >> 1 ) frame.setLocation( loc ) frame.setVisible( 1 )
def __init__(self, title, display, panel): from java.awt import Toolkit from javax.swing import JFrame self.display = display frame = JFrame(title, windowClosing=self.desty) frame.getContentPane().add(panel) frame.pack() frame.invalidate() fSize = frame.getSize() screensize = Toolkit.getDefaultToolkit().getScreenSize() frame.setLocation((screensize.width - fSize.width)/2, (screensize.height - fSize.height)/2) frame.setVisible(1)
def __init__(self, title, display, panel): from java.awt import Toolkit from javax.swing import JFrame self.display = display frame = JFrame(title, windowClosing=self.desty) frame.getContentPane().add(panel) frame.pack() frame.invalidate() fSize = frame.getSize() screensize = Toolkit.getDefaultToolkit().getScreenSize() frame.setLocation((screensize.width - fSize.width) / 2, (screensize.height - fSize.height) / 2) frame.setVisible(1)
def run(self): frame = JFrame('KeyBindings', locationRelativeTo=None, defaultCloseOperation=JFrame.EXIT_ON_CLOSE) headings = ('KeyStroke,Unmodified,Ctrl,Shift,Shift-Ctrl').split(',') table = JTable(myTM(self.data(), headings), columnSelectionAllowed=1) table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF) setColumnWidths(table) frame.add(JScrollPane(table)) frame.pack() size = frame.getSize() loc = frame.getLocation() frame.setLocation( Point(loc.x - (size.width >> 1), loc.y - (size.height >> 1))) frame.setVisible(1)
def geom_viewer(dsm2file = "dsm2.inp"): """ geom_viewer(dsm2file = "dsm2.inp") starts off a dsm2 geometry viewer for dsm2 input data Irregular xsections are plotted if available otherwise regular xsections are plotted. """ dgv = DSM2GeomViewer(dsm2file) mp = dgv.gui() fr = JFrame() fr.setTitle('Geom Viewer') fr.getContentPane().add(mp) fr.setLocation(300,100) fr.pack() sz = fr.getSize() fr.setSize(250,sz.height) fr.setVisible(1)
def run(self): frame = JFrame('SecConfigReport_06', size=(500, 300), locationRelativeTo=None, defaultCloseOperation=JFrame.EXIT_ON_CLOSE) data = [] text = AdminTask.generateSecConfigReport() for line in text.splitlines()[2:]: data.append([info.strip() for info in line[:-2].split(';')]) table = JTable(reportTableModel( data, ';;;'.split(';'), ), selectionMode=ListSelectionModel.SINGLE_SELECTION) table.setDefaultRenderer(String, reportRenderer()) self.setColumnWidths(table) frame.add(JScrollPane(table)) frame.pack() frame.setVisible(1) print 'frame:', frame.getSize() print 'vPort:', table.getParent().getExtentSize()
class PropertyEditor(WindowAdapter): """ Edits Tabular Properties of a given WindowAdapter """ instances = {} last_location = None locations = {} last_size = None sizes = {} NEW_WINDOW_OFFSET = 32 offset = NEW_WINDOW_OFFSET @staticmethod def get_instance(text="Property Editor", columns=None, data=None, empty=None, add_actions=True, actions=None): """ Singleton Method based on the text property. It tries to generate only one property configuration page per text. :param text: getinstance key :param columns: proparty columns it should be an array alike :param data: it contains the current property rows :param empty: empty row property when adding a new one :param add_actions: include or not new actions :param actions: default set of actions to be appended to Add and Delete Rows :return: a new instance of PropertyEditor or a reused one. """ if not actions: actions = [] if not columns: columns = [] if data == None: data = [] if not empty: empty = [] try: PropertyEditor.instances[text] except KeyError: PropertyEditor.instances[text] = \ PropertyEditor().__private_init__(text, columns, data, empty, add_actions, actions) try: PropertyEditor.instances[text].this.setLocation( PropertyEditor.locations[text]) except KeyError: if PropertyEditor.last_location: PropertyEditor.instances[text].this.setLocation( PropertyEditor.last_location.x + PropertyEditor.offset, PropertyEditor.last_location.y + PropertyEditor.offset) PropertyEditor.offset = PropertyEditor.NEW_WINDOW_OFFSET try: PropertyEditor.instances[text].this.setSize( PropertyEditor.sizes[text]) except KeyError: if PropertyEditor.last_size: PropertyEditor.instances[text].this.setSize( PropertyEditor.last_size) PropertyEditor.last_location = PropertyEditor.instances[ text].this.getLocation() PropertyEditor.last_size = PropertyEditor.instances[ text].this.getSize() ## Hack ON: Bring on Front PropertyEditor.instances[text].this.setAlwaysOnTop(True) PropertyEditor.instances[text].this.setAlwaysOnTop(False) ## Hack OFF return PropertyEditor.instances[text] 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 _add_row(self): """ Add a new row the selection :return: None """ self._dtm.addRow(self._empty) def _remove_row(self): """ Remove all the selected rows from the selection :return: """ rows = self._table.getSelectedRows() for i in range(0, len(rows)): self._dtm.removeRow(rows[i] - i) def windowClosing(self, evt): """ Overrides WindowAdapter method :param evt: unused :return: None """ PropertyEditor.locations[self._text] = self.this.getLocation() PropertyEditor.sizes[self._text] = self.this.getSize() PropertyEditor.last_location = self.this.getLocation() PropertyEditor.last_size = self.this.getSize() PropertyEditor.offset = 0 self.this.setVisible(False) self.this.dispose() del PropertyEditor.instances[self._text] def _update_model(self): """ Update the data content with the updated rows :return: None """ del self._data[:] nRow = self._dtm.getRowCount() nCol = self._dtm.getColumnCount() for i in range(0, nRow): self._data.append([None] * nCol) for j in range(0, nCol): d = str(self._dtm.getValueAt(i, j)).lower() if d == 'none' or d == '': self._data[i][j] = None elif d == 'true' or d == 't': self._data[i][j] = True elif d == 'false' or d == 'f': self._data[i][j] = False else: try: self._data[i][j] = int(self._dtm.getValueAt(i, j)) except ValueError: self._data[i][j] = self._dtm.getValueAt(i, j)