class TableMainFeaturesExample(VerticalLayout): def __init__(self): super(TableMainFeaturesExample, self).__init__() self._markedRows = set() self._table = Table('ISO-3166 Country Codes and flags') self.addComponent(self._table) # Label to indicate current selection selected = Label('No selection') self.addComponent(selected) # set a style name, so we can style rows and cells self._table.setStyleName('iso3166') # size self._table.setWidth('100%') self._table.setHeight('170px') # selectable self._table.setSelectable(True) self._table.setMultiSelect(True) # react at once when something is selected self._table.setImmediate(True) # connect data source self._table.setContainerDataSource(ExampleUtil.getISO3166Container()) # turn on column reordering and collapsing self._table.setColumnReorderingAllowed(True) self._table.setColumnCollapsingAllowed(True) # set column headers self._table.setColumnHeaders(['Country', 'Code', 'Icon file']) # Icons for column headers self._table.setColumnIcon( ExampleUtil.iso3166_PROPERTY_FLAG, ThemeResource('../sampler/icons/action_save.gif')) self._table.setColumnIcon( ExampleUtil.iso3166_PROPERTY_NAME, ThemeResource('../sampler/icons/icon_get_world.gif')) self._table.setColumnIcon( ExampleUtil.iso3166_PROPERTY_SHORT, ThemeResource('../sampler/icons/page_code.gif')) # Column alignment self._table.setColumnAlignment(ExampleUtil.iso3166_PROPERTY_SHORT, Table.ALIGN_CENTER) # Column width self._table.setColumnExpandRatio(ExampleUtil.iso3166_PROPERTY_NAME, 1) self._table.setColumnWidth(ExampleUtil.iso3166_PROPERTY_SHORT, 70) # Collapse one column - the user can make it visible again self._table.setColumnCollapsed(ExampleUtil.iso3166_PROPERTY_FLAG, True) # show row header w/ icon self._table.setRowHeaderMode(Table.ROW_HEADER_MODE_ICON_ONLY) self._table.setItemIconPropertyId(ExampleUtil.iso3166_PROPERTY_FLAG) # Actions (a.k.a context menu) self._table.addActionHandler(TableActionHandler(self)) # style generator self._table.setCellStyleGenerator(TableStyleGenerator(self)) # listen for valueChange, a.k.a 'select' and update the label self._table.addListener(TableChangeListener(self, selected), IValueChangeListener)
class TableMainFeaturesExample(VerticalLayout): def __init__(self): super(TableMainFeaturesExample, self).__init__() self._markedRows = set() self._table = Table('ISO-3166 Country Codes and flags') self.addComponent(self._table) # Label to indicate current selection selected = Label('No selection') self.addComponent(selected) # set a style name, so we can style rows and cells self._table.setStyleName('iso3166') # size self._table.setWidth('100%') self._table.setHeight('170px') # selectable self._table.setSelectable(True) self._table.setMultiSelect(True) # react at once when something is selected self._table.setImmediate(True) # connect data source self._table.setContainerDataSource(ExampleUtil.getISO3166Container()) # turn on column reordering and collapsing self._table.setColumnReorderingAllowed(True) self._table.setColumnCollapsingAllowed(True) # set column headers self._table.setColumnHeaders(['Country', 'Code', 'Icon file']) # Icons for column headers self._table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_FLAG, ThemeResource('../sampler/icons/action_save.gif')) self._table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_NAME, ThemeResource('../sampler/icons/icon_get_world.gif')) self._table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_SHORT, ThemeResource('../sampler/icons/page_code.gif')) # Column alignment self._table.setColumnAlignment(ExampleUtil.iso3166_PROPERTY_SHORT, Table.ALIGN_CENTER) # Column width self._table.setColumnExpandRatio(ExampleUtil.iso3166_PROPERTY_NAME, 1) self._table.setColumnWidth(ExampleUtil.iso3166_PROPERTY_SHORT, 70) # Collapse one column - the user can make it visible again self._table.setColumnCollapsed(ExampleUtil.iso3166_PROPERTY_FLAG, True) # show row header w/ icon self._table.setRowHeaderMode(Table.ROW_HEADER_MODE_ICON_ONLY) self._table.setItemIconPropertyId(ExampleUtil.iso3166_PROPERTY_FLAG) # Actions (a.k.a context menu) self._table.addActionHandler( TableActionHandler(self) ) # style generator self._table.setCellStyleGenerator( TableStyleGenerator(self) ) # listen for valueChange, a.k.a 'select' and update the label self._table.addListener(TableChangeListener(self, selected), IValueChangeListener)
class MuntjacTableView(MuntjacControl, AbstractTkTableView): """ A Muntjac implementation of TableView. See Also -------- TableView """ #: The underlying model. model_wrapper = None #-------------------------------------------------------------------------- # Setup methods #-------------------------------------------------------------------------- def create(self, parent): """ Create the underlying Table control. """ self.widget = Table() parent.addComponent(self.widget) def initialize(self): """ Initialize the widget with the attributes of this instance. """ super(MuntjacTableView, self).initialize() shell = self.shell_obj self.set_table_model(shell.item_model) self.set_vertical_header_vis(shell.vertical_header_visible) self.set_horizontal_header_vis(shell.horizontal_header_visible) #-------------------------------------------------------------------------- # Implementation #-------------------------------------------------------------------------- def shell_item_model_changed(self, item_model): """ The change handler for the 'item_model' attribute. """ self.set_table_model(item_model) def shell_vertical_header_visible_changed(self, visible): self.set_vertical_header_vis(visible) def shell_horizontal_header_visible_changed(self, visible): self.set_horizontal_header_vis(visible) def set_table_model(self, model): """ Set the table view's model. """ model_wrapper = AbstractItemModelWrapper(model) self.widget.setContainerDataSource(model_wrapper) self.model_wrapper = model_wrapper def set_vertical_header_vis(self, visible): if visible: self.widget.setRowHeaderMode(Table.ROW_HEADER_MODE_EXPLICIT) else: self.widget.setRowHeaderMode(Table.ROW_HEADER_MODE_HIDDEN) def set_horizontal_header_vis(self, visible): if visible: self.widget.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_EXPLICIT) else: self.widget.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_HIDDEN)