def __init__(self,h): from javafx.scene.control import TableView self.ctrl = TableView() self.Initialize(h) if h.get('columns'): self.SetColumn(h['columns']) if h.get('widths'): self.SetColumnWidth(h['widths']) if h.get('rwidths'): self.SetColumnWidthPercent(h['rwidths']) if h.get('aligns'): self.SetColumnAlign(h['aligns']) if h.get('handler'): self.ctrl.getSelectionModel().selectedItemProperty().addListener(h['handler'])
class EzTableView(EzControl): def __init__(self,h): from javafx.scene.control import TableView self.ctrl = TableView() self.Initialize(h) if h.get('columns'): self.SetColumn(h['columns']) if h.get('widths'): self.SetColumnWidth(h['widths']) if h.get('rwidths'): self.SetColumnWidthPercent(h['rwidths']) if h.get('aligns'): self.SetColumnAlign(h['aligns']) if h.get('handler'): self.ctrl.getSelectionModel().selectedItemProperty().addListener(h['handler']) def SetColumn(self,labels): from javafx.scene.control import TableColumn for label in labels: self.AddColumn(label) def AddColumn(self,label): from javafx.scene.control import TableColumn index = self.ctrl.getColumns().size() column = TableColumn(label) column.setCellValueFactory(lambda row : row.getValue().values[index]) self.ctrl.getColumns().add(column); def AddRow(self,row): self.ctrl.getItems().add(FxTableRow(row)) def SetColumnWidth(self,widths): from javafx.scene.control import TableView self.ctrl.setColumnResizePolicy( TableView.UNCONSTRAINED_RESIZE_POLICY ) for i in range(len(widths)): column = self.ctrl.getColumns().get(i) column.setPrefWidth( widths[i] ) def SetColumnWidthPercent(self,widths): from javafx.scene.control import TableView self.ctrl.setColumnResizePolicy( TableView.CONSTRAINED_RESIZE_POLICY ) for i in range(len(widths)): column = self.ctrl.getColumns().get(i) column.setMaxWidth( widths[i] * 100000 ) def SetColumnAlign(self,aligns): for i in range(len(aligns)): column = self.ctrl.getColumns().get(i) if aligns[i] < 0: column.setStyle( "-fx-alignment: CENTER-LEFT;") elif aligns[i] == 0: column.setStyle( "-fx-alignment: CENTER;") elif aligns[i] > 0: column.setStyle( "-fx-alignment: CENTER-RIGHT;") def ClearSelection(self): self.ctrl.getSelectionModel().clearSelection() def SelectFirst(self): self.ctrl.getSelectionModel().selectFirst() def SelectLast(self): self.ctrl.getSelectionModel().selectLast(); def EnableMultiSelection(self): from javafx.scene.control import SelectionMode self.ctrl.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE) def GetSelectedIndex(self): return self.ctrl.getSelectionModel().getSelectedIndex() def GetSelectedItem(self): index = self.ctrl.getSelectionModel().getSelectedIndex() return self.ctrl.getItems().get(index).values def GetSelectedItems(self): items = [] for item in self.ctrl.getSelectionModel().getSelectedItems(): items.append( item.values ) return items; def RemoveSelectedItems(self): self.ctrl.getItems().removeAll(self.ctrl.getSelectionModel().getSelectedItems());