package agg.attribute.gui.impl;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.DefaultCellEditor;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
import agg.attribute.AttrInstance;
import agg.attribute.AttrInstanceMember;
import agg.attribute.AttrTuple;
import agg.attribute.AttrTypeMember;
//import agg.attribute.handler.HandlerExpr;
import agg.attribute.handler.gui.HandlerExprEditor;
/**
* Calls the appropriate editors for table cells.
*
* @version $Id: MemberEditorDispatcher.java,v 1.1 2005/08/25 11:56:58 enrico
* Exp $
* @author $Author: olga $
*/
public class MemberEditorDispatcher extends DefaultCellEditor implements
TableCellEditor, TupleTableModelConstants {
static final long serialVersionUID = -8476624634642847534L;
/**
* Owning editor, serves e.g. for accessing of the edited tuple, the view
* setting and the table.
*/
protected BasicTupleEditor editor = null;
public MemberEditorDispatcher(BasicTupleEditor editor) {
super(new JTextField("test", 10));
// Temporarily disabled.
// this.editor = editor;
// editor.getTableView().setCellEditor( this );
}
/** Dispatches to the appropriate cell editor. */
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
TupleTableModel tableModel = this.editor.getTableModel();
int key = tableModel.getItemKeyAt(column);
TableCellEditor defaultEditor = this.editor.getTableView().getDefaultEditor(
tableModel.getItemClass(key));
if (key == HANDLER) {
return (this.editor.getHandlerSelectionEditor().getComponent());
} else if (key == EXPR) {
AttrTuple tuple = this.editor.getTuple();
if ((tuple != null && row >= tuple.getNumberOfEntries())
|| !(tuple instanceof AttrInstance)) {
return defaultEditor.getTableCellEditorComponent(table, value,
isSelected, row, column);
}
AttrInstance inst = (AttrInstance) tuple;
AttrInstanceMember member = (AttrInstanceMember) inst.getMemberAt(
this.editor.getViewSetting(), row);
AttrTypeMember decl = member.getDeclaration();
// HandlerExpr expr = member.getExpr();
HandlerExprEditor hee = this.editor.getHandlerEditorManager()
.getExprEditor(decl.getHandler(), decl.getType(),
member.getExpr());
if (hee == null) {
return defaultEditor.getTableCellEditorComponent(table, value,
isSelected, row, column);
}
return hee.getEditorComponent(decl.getType(), member.getExpr(),
new Dimension(100, 10));
} else {
return defaultEditor.getTableCellEditorComponent(table, value,
isSelected, row, column);
}
}
}
/*
* $Log: MemberEditorDispatcher.java,v $
* Revision 1.4 2010/09/23 08:13:17 olga
* tuning
*
* Revision 1.3 2007/11/05 09:18:19 olga
* code tuning
*
* Revision 1.2 2007/09/10 13:05:30 olga
* In this update:
* - package xerces2.5.0 is not used anymore;
* - class com.objectspace.jgl.Pair is replaced by the agg own generic class agg.util.Pair;
* - bugs fixed in: usage of PACs in rules; match completion;
* usage of static method calls in attr. conditions
* - graph editing: added some new features
* Revision 1.1 2005/08/25 11:56:58 enrico
* *** empty log message ***
*
* Revision 1.1 2005/05/30 12:58:04 olga Version with Eclipse
*
* Revision 1.3 2003/03/05 18:24:11 komm sorted/optimized import statements
*
* Revision 1.2 2002/09/23 12:23:51 komm added type graph in xt_basis, editor
* and GUI
*
* Revision 1.1.1.1 2002/07/11 12:16:57 olga Imported sources
*
* Revision 1.5 2000/04/05 12:07:56 shultzke serialVersionUID aus V1.0.0
* generiert
*
*/