Java tutorial
package se.cambio.cds.gdl.editor.view.tables; import org.apache.commons.jxpath.JXPathContext; import se.cambio.cds.gdl.editor.util.GDLEditorLanguageManager; import javax.swing.*; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.util.Vector; public class TerminologyTable extends JTable { /** * */ private static final long serialVersionUID = 1L; private JXPathContext _context = null; public TerminologyTable(JXPathContext context) { _context = context; this.setModel(new TerminologyTableModel()); Vector<String> columnIdentifiers = new Vector<String>(); columnIdentifiers.add(GDLEditorLanguageManager.getMessage("Code")); columnIdentifiers.add(GDLEditorLanguageManager.getMessage("Text")); columnIdentifiers.add(GDLEditorLanguageManager.getMessage("Description")); getTerminologyTableModel().setColumnIdentifiers(columnIdentifiers); this.getColumnModel().getColumn(0).setMaxWidth(80); final TerminologyTableCellEditor cellEditor = new TerminologyTableCellEditor(); this.getColumnModel().getColumn(1).setCellEditor(cellEditor); this.getColumnModel().getColumn(2).setCellEditor(cellEditor); this.putClientProperty("terminateEditOnFocusLost", true); /* this.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { super.focusLost(e); cellEditor.stopCellEditing(); } });*/ } public TerminologyTableModel getTerminologyTableModel() { return (TerminologyTableModel) getModel(); } public boolean isCellEditable(int row, int column) { if (column == 0) { return false; } else { return true; } } public class TerminologyTableModel extends DefaultTableModel { private static final long serialVersionUID = 1L; } public void updateResults(TerminologyTableCellEditor otce) { String value = (String) otce.getCellEditorValue(); int row = otce.getRow(); int column = otce.getColumn(); String gtCode = (String) getTerminologyTableModel().getValueAt(row, 0); String attribute = column == 1 ? "text" : "description"; _context.setValue(gtCode + "/" + attribute, value); } private class TerminologyTableCellEditor extends DefaultCellEditor { private int _row; private int _column; public TerminologyTableCellEditor() { super(new JTextField()); this.addCellEditorListener(new CellEditorListener() { public void editingStopped(ChangeEvent e) { Object obj = e.getSource(); if (obj instanceof TerminologyTableCellEditor) { updateResults((TerminologyTableCellEditor) obj); } } public void editingCanceled(ChangeEvent e) { } }); } public int getRow() { return _row; } public int getColumn() { return _column; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { _row = row; _column = column; return super.getTableCellEditorComponent(table, value, isSelected, row, column); } } } /* * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 2.0/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 2.0 (the 'License'); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an 'AS IS' basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * * The Initial Developers of the Original Code are Iago Corbal and Rong Chen. * Portions created by the Initial Developer are Copyright (C) 2012-2013 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Software distributed under the License is distributed on an 'AS IS' basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * ***** END LICENSE BLOCK ***** */