package es.icarto.gvsig.navtableforms.gui.tables.handler;
import java.util.HashMap;
import javax.swing.JComponent;
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
import es.icarto.gvsig.navtableforms.gui.i18n.I18nResourceManager;
import es.icarto.gvsig.navtableforms.gui.tables.AbstractSubForm;
import es.icarto.gvsig.navtableforms.gui.tables.menu.AlphanumericUpdateJTableContextualMenu;
import es.icarto.gvsig.navtableforms.gui.tables.model.AlphanumericTableModel;
import es.icarto.gvsig.navtableforms.gui.tables.model.TableModelFactory;
import es.icarto.gvsig.navtableforms.utils.FormFactory;
/**
* AlphanumericNotEditableNNRelTableHandler
*
* Handler for n:n relationships tables that simply link to a subform.
*
* @author Jorge L�pez Fern�ndez <jlopez@cartolab.es>
*/
public class AlphanumericNotEditableNNRelTableHandler extends
BaseNNRelTableHandler {
private AbstractSubForm form;
public AlphanumericNotEditableNNRelTableHandler(String sourceTableName,
HashMap<String, JComponent> widgets, String dbSchema,
String originKey, String relTable, String destinationKey,
String[] colNames, String[] colAliases) {
super(sourceTableName, widgets, dbSchema, originKey, relTable,
destinationKey, colNames, colAliases);
FormFactory.checkAndLoadTableRegistered(sourceTableName);
form = FormFactory.createSubFormRegistered(sourceTableName);
}
/**
* Constructor w/o the column aliases, which will be retrieved from
* the form's i18n resources.
*/
public AlphanumericNotEditableNNRelTableHandler(String sourceTableName,
HashMap<String, JComponent> widgets, String dbSchema,
String originKey, String relTable, String destinationKey,
String[] colNames) {
super(sourceTableName, widgets, dbSchema, originKey, relTable,
destinationKey, colNames, new String[colNames.length]);
FormFactory.checkAndLoadTableRegistered(sourceTableName);
form = FormFactory.createSubFormRegistered(sourceTableName);
I18nResourceManager i18nManager = form.getI18nHandler().getResourceManager();
for (int i = 0, len = colNames.length; i<len; i++) {
colAliases[i] = i18nManager.getString(colNames[i]);
}
}
protected void createTableModel() throws ReadDriverException {
if (form != null) {
model = TableModelFactory.createFromTableWithOrFilter(sourceTableName,
destinationKey, destinationKeyValues, colNames, colAliases,
form.getI18nHandler().getResourceManager().getResources());
form.setModel((AlphanumericTableModel) model);
} else {
model = TableModelFactory.createFromTableWithOrFilter(sourceTableName,
destinationKey, destinationKeyValues, colNames, colAliases);
}
jtable.setModel(model);
}
@Deprecated
public void reload(AbstractSubForm form) {
this.form = form;
reload();
}
protected void createTableListener() {
listener = new AlphanumericUpdateJTableContextualMenu(form);
}
}