public Component getDemoPanel() { TableModel model = new SampleTableModel(); _sortableTable = new SortableTable(model); _sortableTable.setAutoResizeMode(JideTable.AUTO_RESIZE_FILL); _sortableTable.setNestedTableHeader(true); _sortableTable.setFillsGrids(false); TableColumnGroup longText = new TableColumnGroup( "This is a very long column header title. You can resize the table header column and see how this long text automatically wraps according to the column width. " + "The current configuration specified {minimum two rows:f:red} and {maximum five rows:f:blue}. You could take a look at StyledLabelBuilderDemo to see what other annotations are available in the text.@r:3:2:5"); longText.add(_sortableTable.getColumnModel().getColumn(0)); longText.add(_sortableTable.getColumnModel().getColumn(1)); longText.add(_sortableTable.getColumnModel().getColumn(2)); longText.add(_sortableTable.getColumnModel().getColumn(3)); longText.add(_sortableTable.getColumnModel().getColumn(4)); longText.add(_sortableTable.getColumnModel().getColumn(5)); longText.add(_sortableTable.getColumnModel().getColumn(6)); if (_sortableTable.getTableHeader() instanceof NestedTableHeader) { NestedTableHeader header = (NestedTableHeader) _sortableTable.getTableHeader(); header.addColumnGroup(longText); } TableHeaderPopupMenuInstaller installer = new TableHeaderPopupMenuInstaller(_sortableTable); installer.addTableHeaderPopupMenuCustomizer(new TableColumnChooserPopupMenuCustomizer()); TableUtils.autoResizeAllColumns(_sortableTable); return new JScrollPane(_sortableTable); }
void loadRightTable(final LocalDate from, final LocalDate to) { if (listValues != null) { listValues.clear(); } listValues = ResValueTools.getResValuesNoEdits(resident, ResValueTypesTools.LIQUIDBALANCE, from, to); Object[][] data = new Object[listValues.size()][5]; int row = 0; for (ResValue val : listValues) { data[row][0] = df.format(val.getPit()); data[row][1] = nf.format(val.getVal1()); data[row][2] = val.getText(); data[row][3] = SYSTools.anonymizeUser(val.getUser().getUID()); data[row][4] = SYSConst.icon22delete; row++; } Object[] headers = new Object[] { SYSTools.xx("misc.msg.Date"), SYSTools.xx("misc.msg.amount"), SYSTools.xx("misc.msg.Text"), SYSTools.xx("misc.msg.user"), SYSTools.xx("misc.msg.delete") }; final DefaultTableModel tmRight = new DefaultTableModel(data, headers) { @Override public boolean isCellEditable(int row, int column) { return column == 4; // only the del-button } }; tmRight.setColumnCount(5); tblRight.setModel(tmRight); tblRight.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); rightRenderer.setHorizontalAlignment(JLabel.RIGHT); tblRight.getColumnModel().getColumn(1).setCellRenderer(rightRenderer); TableUtils.autoResizeAllColumns( tblRight, null, new int[] {200, 200, 200, 200, 100}, true, false); TableUtils.autoResizeAllRows(tblRight); /** * * ____ _ _ | _ \ ___| | ___| |_ ___ | | | |/ _ \ |/ _ \ __/ _ \ | |_| | __/ | __/ || __/ * |____/ \___|_|\___|\__\___| */ ButtonColumn bc = new ButtonColumn( tblRight, new AbstractAction() { @Override public void actionPerformed(ActionEvent ae) { final int row = Integer.parseInt(ae.getActionCommand()); final ResValue val2Delete = listValues.get(row); new DlgYesNo( SYSTools.xx("misc.questions.delete1") + "<br/><i>" + "<br/><i>" + df.format(val2Delete.getPit()) + "<br/>" + nf.format(val2Delete.getVal1()) + " ml<br/>" + val2Delete.getUser().toString() + "</i><br/>" + SYSTools.xx("misc.questions.delete2"), SYSConst.icon48delete, new Closure() { @Override public void execute(Object answer) { if (answer.equals(JOptionPane.YES_OPTION)) { EntityManager em = OPDE.createEM(); try { em.getTransaction().begin(); ResValue myValue = em.merge(val2Delete); em.lock(myValue, LockModeType.OPTIMISTIC); myValue.setDeletedBy(em.merge(OPDE.getLogin().getUser())); for (SYSVAL2FILE file : myValue.getAttachedFilesConnections()) { em.remove(file); } myValue.getAttachedFilesConnections().clear(); for (SYSVAL2PROCESS connObj : myValue.getAttachedProcessConnections()) { em.remove(connObj); } myValue.getAttachedProcessConnections().clear(); myValue.getAttachedProcesses().clear(); em.getTransaction().commit(); listValues.remove(row); tmRight.removeRow(row); loadLeftTable(); } catch (OptimisticLockException ole) { OPDE.warn(ole); if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } if (ole.getMessage().indexOf("Class> entity.info.Resident") > -1) { OPDE.getMainframe().emptyFrame(); OPDE.getMainframe().afterLogin(); } OPDE.getDisplayManager().addSubMessage(DisplayManager.getLockMessage()); } catch (Exception e) { if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } OPDE.fatal(e); } finally { em.close(); } } } }); } }, 4); bc.setMnemonic(KeyEvent.VK_DELETE); }