importPackage(Packages.javax.swing); importPackage(Packages.javax.swing.table); importPackage(Packages.javax.swing.event); importPackage(Packages.de.elo.client.scripting.constants); //@include lib_Class.js /** * Sord select table * * @author ELO Digital Office GmbH * @version 1.0 * * @requires sol.common.SordUtils * * @elojc */ sol.define("sol.common.jc.SordSelectTable", { /** * @cfg {Array} columnsDefinition * Columns defintion */ /** * @cfg {String} translationFileName * Translation file nama */ initialize: function (params) { var me = this; me.$super("sol.Base", "initialize", [params]); }, /** * Creates a Java Client table * @returns {com.sciapp.table.AdvancedJTable} Table */ createSwingTable: function () { var me = this, tableStateParts = [], i, columnDefinition, language, shortDateFormat; if (!me.sords) { throw "Sords are empty"; } me.selected = new Array(me.sords.length); me.model = new JavaAdapter(Packages.com.sciapp.table.ObjectTableModel, { isCellEditable: function (row, column) { var definition; definition = me.columnsDefinition[column]; if (definition.type == "SELECT") { return true; } else { return false; } }, getColumnCount: function () { return me.columnsDefinition.length; }, getColumnName: function (column) { var definition, headerTranslationKey, columnName; definition = me.columnsDefinition[column]; headerTranslationKey = definition.headerTranslationKey; if (!me.translationFileName) { throw "Translation file name is empty"; } columnName = utils.getText(me.translationFileName, headerTranslationKey); return columnName; }, getColumnClass: function (columnIndex) { var definition; definition = me.columnsDefinition[columnIndex]; if (definition.type == "SELECT") { return java.lang.Boolean; } else if (definition.format == "DATE") { return java.util.Date; } else { return java.lang.String; } }, getValueAt: function (param1, columnIndex) { var sord, definition, value, selected, rowIndex, date; if (typeof param1 == "number") { rowIndex = param1; sord = this.getRows().get(rowIndex); } else { sord = param1; } definition = me.columnsDefinition[columnIndex]; if (definition.type == "SELECT") { selected = !!me.selected[rowIndex]; return java.lang.Boolean(selected); } else { value = (sol.common.SordUtils.getValue(sord, definition) || "") + ""; if (definition.format == "DATE") { date = ixConnect.isoToDate(value); return date; } return java.lang.String(value); } }, setValueAt: function (value, rowIndex, columnIndex) { var definition; definition = me.columnsDefinition[columnIndex]; if (definition.type == "SELECT") { me.selected[rowIndex] = !me.selected[rowIndex]; } } }); me.model.addRows(me.sords); for (i = 0; i < me.columnsDefinition.length; i++) { columnDefinition = me.columnsDefinition[i]; tableStateParts.push(i + ":" + columnDefinition.state); } me.table = new Packages.com.sciapp.table.AdvancedJTable(); language = ixConnect.loginResult.clientInfo.language; shortDateFormat = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT, new java.util.Locale(language)); me.table.setDefaultRenderer(java.util.Date, new Packages.com.sciapp.renderers.DateRenderer(shortDateFormat)); me.sortTableModel = new Packages.com.sciapp.table.SortTableModel(me.model, me.table.tableHeader); me.table.model = me.sortTableModel; me.table.tableState = tableStateParts.join(","); me.table.rowSelectionAllowed = false; me.table.tableHeader.defaultRenderer.horizontalAlignment = javax.swing.JLabel.LEFT; me.adjustColumnHeaderWidth(); me.table.showVerticalLines = false; me.table.showHorizontalLines = false; me.table.showGrid = false; me.table.fillsViewportHeight = true; me.scrollPane = new Packages.com.sciapp.table.AdvancedJScrollPane(me.table); me.scrollPane.viewportView = me.table; me.table.preferredScrollableViewportSize = new java.awt.Dimension(200, 200); me.deselectColumns(); return me.table; }, /** * @private * Adjusts the column header width */ adjustColumnHeaderWidth: function () { var me = this, headerColumnModel, component, header, headerColumn, headerRenderer, width, newWidth, i; header = me.table.tableHeader; headerColumnModel = me.table.tableHeader.columnModel; for (i = 0; i < headerColumnModel.columnCount; i++) { headerColumn = headerColumnModel.getColumn(i); headerRenderer = headerColumn.headerRenderer; if (!headerRenderer) { headerRenderer = header.defaultRenderer; } component = headerRenderer.getTableCellRendererComponent(me.table, headerColumn.headerValue, false, false, -1, i); width = headerColumnModel.getColumn(i).width; newWidth = component.getPreferredSize().width + (2 * headerColumnModel.columnMargin) + 10; if (newWidth > width) { headerColumnModel.getColumn(i).preferredWidth = newWidth; } } }, /** * @private * Hides columns */ deselectColumns: function () { var me = this, columnDefinition, tableAssistant, i; tableAssistant = me.table.tableAssistant; for (i = 0; i < me.columnsDefinition.length; i++) { columnDefinition = me.columnsDefinition[i]; if (columnDefinition.deselect) { tableAssistant.deselect(i); } } }, /** * Returns the scroll pane * @returns {javax.swing.JScrollPane} Scroll pane */ getScrollPane: function () { var me = this; return me.scrollPane; }, /** * Select all */ selectAll: function () { var me = this; me.setAll(true); }, /** * Deselect all */ deselectAll: function () { var me = this; me.setAll(false); }, /** * Set all * @param {Boolean} select */ setAll: function (select) { var me = this, i; for (i = 0; i < me.selected.length; i++) { me.selected[i] = select; } me.model.fireTableDataChanged(); }, /** * Returns the ObjIds of the selected Sords * @returns {String} ObjIds of the selcted Sords */ getSelectedObjIds: function () { var me = this, objIds = [], selectedSords, i, sord; selectedSords = me.getSelectedSords(); for (i = 0; i < selectedSords.length; i++) { sord = selectedSords[i]; objIds.push(sord.id); } return objIds; }, /** * Returns the selected Sords * @returns {de.elo.ix.client.Sord[]} Selected sords */ getSelectedSords: function () { var me = this, sords = [], selected, i; for (i = 0; i < me.selected.length; i++) { selected = !!me.selected[i]; if (selected) { sords.push(me.sords[i]); } } return sords; }, /** * Returns a localized formated date string * @param {String} isoDate ISO date * @returns {String} Localized date string */ formatLocalDate: function (isoDate) { var me = this, localPattern, date, localDateString; if (!isoDate) { return ""; } date = Packages.org.apache.commons.lang.time.DateUtils.parseDate(isoDate, ["yyyyMMddHHmmss", "yyyyMMdd"]); localPattern = me.getLocalDateFormatPattern(); localDateString = Packages.org.apache.commons.lang.time.DateFormatUtils.format(date, localPattern); return new java.lang.String(localDateString); }, /** * Returns the local date format pattern * @param {Object} params Parameters * @param {String} [params.style=SHORT] Date format style * @returns {String} Local pattern */ getLocalDateFormatPattern: function (params) { var formatter, locale, dateFormatStyle, localPattern; params = params || {}; params.style = params.style || "SHORT"; params.language = params.language || ixConnect.loginResult.clientInfo.language; locale = new java.util.Locale(params.language); dateFormatStyle = java.text.DateFormat[params.style]; formatter = java.text.DateFormat.getDateInstance(dateFormatStyle, locale); localPattern = formatter.toPattern(); return localPattern; } });