package org.geogebra.desktop.gui.view.spreadsheet;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellEditor;
import org.geogebra.common.kernel.StringTemplate;
import org.geogebra.common.kernel.geos.GeoButton;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.desktop.awt.GColorD;
public class MyCellEditorButton extends AbstractCellEditor
implements TableCellEditor {
private static final long serialVersionUID = 1L;
private JButton delegate = new JButton();
private GeoButton editGeo;
// Font fontPoint = app.getPlainFont().deriveFont(Font.PLAIN, fontSize);
public MyCellEditorButton() {
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
editGeo.runClickScripts(null);
}
});
}
};
delegate.addActionListener(actionListener);
}
@Override
public Object getCellEditorValue() {
return editGeo;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
editGeo = (GeoButton) value;
// show hide label by setting text
if (editGeo.isLabelVisible()) {
// get caption to show r
String caption = editGeo.getCaption(StringTemplate.defaultTemplate);
caption = GeoElement.indicesToHTML(caption, true);
delegate.setText(caption);
} else {
delegate.setText(" ");
}
delegate.setOpaque(true);
delegate.setHorizontalAlignment(SwingConstants.CENTER);
// delegate.setFont(view.fontPoint);
delegate.setForeground(GColorD.getAwtColor(editGeo.getObjectColor()));
return delegate;
}
}