/**
*
*/
package org.geogebra.desktop.gui.view.algebra;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import org.geogebra.common.kernel.StringTemplate;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.desktop.main.AppD;
//this is needed to distinguish between the editing
// of independent and dependent objects
/**
* Editor for AV
*/
public class MyCellEditorD extends DefaultCellEditor {
private static final long serialVersionUID = 1L;
private AppD app;
/**
* @param textField
* text field
* @param app
* application
*/
public MyCellEditorD(final JTextField textField, AppD app) {
super(textField);
this.app = app;
}
/** Implements the <code>TreeCellEditor</code> interface. */
@Override
public Component getTreeCellEditorComponent(JTree tree, Object value,
boolean isSelected, boolean expanded, boolean leaf, int row) {
String str = null;
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object ob = node.getUserObject();
if (ob instanceof GeoElement) {
GeoElement geo = (GeoElement) ob;
StringTemplate tpl = StringTemplate.defaultTemplate;
if ((geo.isPointOnPath() || geo.isPointInRegion())
&& geo.isChangeable()) {
str = geo.toString(tpl);
} else if (geo.isChangeable()) {
str = geo.getDefinitionForInputBar();
} else {
str = geo.getDefinition(tpl);
}
}
}
String stringValue;
if (str == null) {
stringValue = (value == null) ? "" : value.toString();
} else {
stringValue = str;
}
delegate.setValue(stringValue);
// make sure we use a font that can display the text
editorComponent.setFont(app.getFontCanDisplayAwt(str));
return editorComponent;
}
}